From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thierry Reding Subject: [PATCH 04/21] drm/dp: Track link capabilities alongside settings Date: Mon, 5 Aug 2019 14:23:33 +0200 Message-ID: <20190805122350.8838-4-thierry.reding@gmail.com> References: <20190805122350.8838-1-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com [IPv6:2a00:1450:4864:20::542]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9182E89D66 for ; Mon, 5 Aug 2019 12:23:58 +0000 (UTC) Received: by mail-ed1-x542.google.com with SMTP id m10so78452348edv.6 for ; Mon, 05 Aug 2019 05:23:58 -0700 (PDT) In-Reply-To: <20190805122350.8838-1-thierry.reding@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KClN0b3JlIGNhcGFiaWxp dGllcyBpbiBtYXhfKiBmaWVsZHMgYW5kIGFkZCBzZXBhcmF0ZSBmaWVsZHMgZm9yIHRoZQpjdXJy ZW50bHkgc2VsZWN0ZWQgc2V0dGluZ3MuCgpDYzogUm9iIENsYXJrIDxyb2JkY2xhcmtAZ21haWwu Y29tPgpTaWduZWQtb2ZmLWJ5OiBUaGllcnJ5IFJlZGluZyA8dHJlZGluZ0BudmlkaWEuY29tPgot LS0KIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvdGMzNTg3NjcuYyAgICAgIHwgMTQgKysrKysrLS0t LS0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9kcF9oZWxwZXIuYyAgICAgICAgfCAxNiArKysrKysr KysrLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZWRwL2VkcF9jdHJsLmMgICAgIHwgIDggKysr Ky0tLS0KIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9jZG4tZHAtY29yZS5jIHwgIDggKysrKy0t LS0KIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9jZG4tZHAtcmVnLmMgIHwgMTMgKysrKysrLS0t LS0tCiBkcml2ZXJzL2dwdS9kcm0vdGVncmEvZHBhdXguYyAgICAgICAgICB8ICA4ICsrKystLS0t CiBkcml2ZXJzL2dwdS9kcm0vdGVncmEvc29yLmMgICAgICAgICAgICB8IDI4ICsrKysrKysrKysr KystLS0tLS0tLS0tLS0tCiBpbmNsdWRlL2RybS9kcm1fZHBfaGVscGVyLmggICAgICAgICAgICB8 IDE1ICsrKysrKysrKy0tLS0tCiA4IGZpbGVzIGNoYW5nZWQsIDYwIGluc2VydGlvbnMoKyksIDUw IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvdGMzNTg3 NjcuYyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvdGMzNTg3NjcuYwppbmRleCA0MmYwM2E5ODVh YzAuLmEzOTAzNmU4OWNmNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS90YzM1 ODc2Ny5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvdGMzNTg3NjcuYwpAQCAtNDM3LDcg KzQzNyw3IEBAIHN0YXRpYyB1MzIgdGNfc3JjY3RybChzdHJ1Y3QgdGNfZGF0YSAqdGMpCiAJCXJl ZyB8PSBEUDBfU1JDQ1RSTF9TQ1JNQkxESVM7CS8qIFNjcmFtYmxlciBEaXNhYmxlZCAqLwogCWlm ICh0Yy0+bGluay5zcHJlYWQpCiAJCXJlZyB8PSBEUDBfU1JDQ1RSTF9TU0NHOwkvKiBTcHJlYWQg U3BlY3RydW0gRW5hYmxlICovCi0JaWYgKHRjLT5saW5rLmJhc2UubnVtX2xhbmVzID09IDIpCisJ aWYgKHRjLT5saW5rLmJhc2UubGFuZXMgPT0gMikKIAkJcmVnIHw9IERQMF9TUkNDVFJMX0xBTkVT XzI7CS8qIFR3byBNYWluIENoYW5uZWwgTGFuZXMgKi8KIAlpZiAodGMtPmxpbmsuYmFzZS5yYXRl ICE9IDE2MjAwMCkKIAkJcmVnIHw9IERQMF9TUkNDVFJMX0JXMjc7CS8qIDIuNyBHYnBzIGxpbmsg Ki8KQEAgLTY3NCw5ICs2NzQsOSBAQCBzdGF0aWMgaW50IHRjX2dldF9kaXNwbGF5X3Byb3BzKHN0 cnVjdCB0Y19kYXRhICp0YykKIAkJdGMtPmxpbmsuYmFzZS5yYXRlID0gMjcwMDAwOwogCX0KIAot CWlmICh0Yy0+bGluay5iYXNlLm51bV9sYW5lcyA+IDIpIHsKKwlpZiAodGMtPmxpbmsuYmFzZS5s YW5lcyA+IDIpIHsKIAkJZGV2X2RiZyh0Yy0+ZGV2LCAiRmFsbGluZyB0byAyIGxhbmVzXG4iKTsK LQkJdGMtPmxpbmsuYmFzZS5udW1fbGFuZXMgPSAyOworCQl0Yy0+bGluay5iYXNlLmxhbmVzID0g MjsKIAl9CiAKIAlyZXQgPSBkcm1fZHBfZHBjZF9yZWFkYigmdGMtPmF1eCwgRFBfTUFYX0RPV05T UFJFQUQsICZyZWcpOwpAQCAtNjk4LDcgKzY5OCw3IEBAIHN0YXRpYyBpbnQgdGNfZ2V0X2Rpc3Bs YXlfcHJvcHMoc3RydWN0IHRjX2RhdGEgKnRjKQogCWRldl9kYmcodGMtPmRldiwgIkRQQ0QgcmV2 OiAlZC4lZCwgcmF0ZTogJXMsIGxhbmVzOiAlZCwgZnJhbWluZzogJXNcbiIsCiAJCXRjLT5saW5r LmJhc2UucmV2aXNpb24gPj4gNCwgdGMtPmxpbmsuYmFzZS5yZXZpc2lvbiAmIDB4MGYsCiAJCSh0 Yy0+bGluay5iYXNlLnJhdGUgPT0gMTYyMDAwKSA/ICIxLjYyR2JwcyIgOiAiMi43R2JwcyIsCi0J CXRjLT5saW5rLmJhc2UubnVtX2xhbmVzLAorCQl0Yy0+bGluay5iYXNlLmxhbmVzLAogCQkodGMt PmxpbmsuYmFzZS5jYXBhYmlsaXRpZXMgJiBEUF9MSU5LX0NBUF9FTkhBTkNFRF9GUkFNSU5HKSA/ CiAJCSJlbmhhbmNlZCIgOiAibm9uLWVuaGFuY2VkIik7CiAJZGV2X2RiZyh0Yy0+ZGV2LCAiRG93 bnNwcmVhZDogJXMsIHNjcmFtYmxlcjogJXNcbiIsCkBAIC05MDYsNyArOTA2LDcgQEAgc3RhdGlj IGludCB0Y19tYWluX2xpbmtfZW5hYmxlKHN0cnVjdCB0Y19kYXRhICp0YykKIAogCS8qIFNldHVw IE1haW4gTGluayAqLwogCWRwX3BoeV9jdHJsID0gQkdSRU4gfCBQV1JfU1dfRU4gfCBQSFlfQTBf RU4gfCBQSFlfTTBfRU47Ci0JaWYgKHRjLT5saW5rLmJhc2UubnVtX2xhbmVzID09IDIpCisJaWYg KHRjLT5saW5rLmJhc2UubGFuZXMgPT0gMikKIAkJZHBfcGh5X2N0cmwgfD0gUEhZXzJMQU5FOwog CiAJcmV0ID0gcmVnbWFwX3dyaXRlKHRjLT5yZWdtYXAsIERQX1BIWV9DVFJMLCBkcF9waHlfY3Ry bCk7CkBAIC0xMDk0LDcgKzEwOTQsNyBAQCBzdGF0aWMgaW50IHRjX21haW5fbGlua19lbmFibGUo c3RydWN0IHRjX2RhdGEgKnRjKQogCQlyZXQgPSAtRU5PREVWOwogCX0KIAotCWlmICh0Yy0+bGlu ay5iYXNlLm51bV9sYW5lcyA9PSAyKSB7CisJaWYgKHRjLT5saW5rLmJhc2UubGFuZXMgPT0gMikg ewogCQl2YWx1ZSA9ICh0bXBbMF0gPj4gNCkgJiBEUF9DSEFOTkVMX0VRX0JJVFM7CiAKIAkJaWYg KHZhbHVlICE9IERQX0NIQU5ORUxfRVFfQklUUykgewpAQCAtMTI5MSw3ICsxMjkxLDcgQEAgc3Rh dGljIGVudW0gZHJtX21vZGVfc3RhdHVzIHRjX21vZGVfdmFsaWQoc3RydWN0IGRybV9icmlkZ2Ug KmJyaWRnZSwKIAkJcmV0dXJuIE1PREVfQ0xPQ0tfSElHSDsKIAogCXJlcSA9IG1vZGUtPmNsb2Nr ICogYml0c19wZXJfcGl4ZWwgLyA4OwotCWF2YWlsID0gdGMtPmxpbmsuYmFzZS5udW1fbGFuZXMg KiB0Yy0+bGluay5iYXNlLnJhdGU7CisJYXZhaWwgPSB0Yy0+bGluay5iYXNlLmxhbmVzICogdGMt PmxpbmsuYmFzZS5yYXRlOwogCiAJaWYgKHJlcSA+IGF2YWlsKQogCQlyZXR1cm4gTU9ERV9CQUQ7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2RwX2hlbHBlci5jIGIvZHJpdmVycy9n cHUvZHJtL2RybV9kcF9oZWxwZXIuYwppbmRleCBmNWFmNzFlYzFiN2QuLjM2NWRlNjNhMDJmYiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9oZWxwZXIuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX2RwX2hlbHBlci5jCkBAIC0zNDIsOSArMzQyLDEyIEBAIHN0YXRpYyB2b2lk IGRybV9kcF9saW5rX3Jlc2V0KHN0cnVjdCBkcm1fZHBfbGluayAqbGluaykKIAkJcmV0dXJuOwog CiAJbGluay0+cmV2aXNpb24gPSAwOwotCWxpbmstPnJhdGUgPSAwOwotCWxpbmstPm51bV9sYW5l cyA9IDA7CisJbGluay0+bWF4X3JhdGUgPSAwOworCWxpbmstPm1heF9sYW5lcyA9IDA7CiAJbGlu ay0+Y2FwYWJpbGl0aWVzID0gMDsKKworCWxpbmstPnJhdGUgPSAwOworCWxpbmstPmxhbmVzID0g MDsKIH0KIAogLyoqCkBAIC0zNzAsMTIgKzM3MywxNSBAQCBpbnQgZHJtX2RwX2xpbmtfcHJvYmUo c3RydWN0IGRybV9kcF9hdXggKmF1eCwgc3RydWN0IGRybV9kcF9saW5rICpsaW5rKQogCQlyZXR1 cm4gZXJyOwogCiAJbGluay0+cmV2aXNpb24gPSB2YWx1ZXNbMF07Ci0JbGluay0+cmF0ZSA9IGRy bV9kcF9id19jb2RlX3RvX2xpbmtfcmF0ZSh2YWx1ZXNbMV0pOwotCWxpbmstPm51bV9sYW5lcyA9 IHZhbHVlc1syXSAmIERQX01BWF9MQU5FX0NPVU5UX01BU0s7CisJbGluay0+bWF4X3JhdGUgPSBk cm1fZHBfYndfY29kZV90b19saW5rX3JhdGUodmFsdWVzWzFdKTsKKwlsaW5rLT5tYXhfbGFuZXMg PSB2YWx1ZXNbMl0gJiBEUF9NQVhfTEFORV9DT1VOVF9NQVNLOwogCiAJaWYgKHZhbHVlc1syXSAm IERQX0VOSEFOQ0VEX0ZSQU1FX0NBUCkKIAkJbGluay0+Y2FwYWJpbGl0aWVzIHw9IERQX0xJTktf Q0FQX0VOSEFOQ0VEX0ZSQU1JTkc7CiAKKwlsaW5rLT5yYXRlID0gbGluay0+bWF4X3JhdGU7CisJ bGluay0+bGFuZXMgPSBsaW5rLT5tYXhfbGFuZXM7CisKIAlyZXR1cm4gMDsKIH0KIEVYUE9SVF9T WU1CT0woZHJtX2RwX2xpbmtfcHJvYmUpOwpAQCAtNDYyLDcgKzQ2OCw3IEBAIGludCBkcm1fZHBf bGlua19jb25maWd1cmUoc3RydWN0IGRybV9kcF9hdXggKmF1eCwgc3RydWN0IGRybV9kcF9saW5r ICpsaW5rKQogCWludCBlcnI7CiAKIAl2YWx1ZXNbMF0gPSBkcm1fZHBfbGlua19yYXRlX3RvX2J3 X2NvZGUobGluay0+cmF0ZSk7Ci0JdmFsdWVzWzFdID0gbGluay0+bnVtX2xhbmVzOworCXZhbHVl c1sxXSA9IGxpbmstPmxhbmVzOwogCiAJaWYgKGxpbmstPmNhcGFiaWxpdGllcyAmIERQX0xJTktf Q0FQX0VOSEFOQ0VEX0ZSQU1JTkcpCiAJCXZhbHVlc1sxXSB8PSBEUF9MQU5FX0NPVU5UX0VOSEFO Q0VEX0ZSQU1FX0VOOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9lZHAvZWRwX2N0 cmwuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZWRwL2VkcF9jdHJsLmMKaW5kZXggN2YzZGQzZmZl MmM5Li40YjMxYmMzMGJlMmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZWRwL2Vk cF9jdHJsLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9lZHAvZWRwX2N0cmwuYwpAQCAtNDAz LDcgKzQwMyw3IEBAIHN0YXRpYyB2b2lkIGVkcF9maWxsX2xpbmtfY2ZnKHN0cnVjdCBlZHBfY3Ry bCAqY3RybCkKIAl1MzIgcHJhdGU7CiAJdTMyIGxyYXRlOwogCXUzMiBicHA7Ci0JdTggbWF4X2xh bmUgPSBjdHJsLT5kcF9saW5rLm51bV9sYW5lczsKKwl1OCBtYXhfbGFuZSA9IGN0cmwtPmRwX2xp bmsubWF4X2xhbmVzOwogCXU4IGxhbmU7CiAKIAlwcmF0ZSA9IGN0cmwtPnBpeGVsX3JhdGU7CkBA IC00MTMsNyArNDEzLDcgQEAgc3RhdGljIHZvaWQgZWRwX2ZpbGxfbGlua19jZmcoc3RydWN0IGVk cF9jdHJsICpjdHJsKQogCSAqIEJ5IGRlZmF1bHQsIHVzZSB0aGUgbWF4aW11bSBsaW5rIHJhdGUg YW5kIG1pbmltdW0gbGFuZSBjb3VudCwKIAkgKiBzbyB0aGF0IHdlIGNhbiBkbyByYXRlIGRvd24g c2hpZnQgZHVyaW5nIGxpbmsgdHJhaW5pbmcuCiAJICovCi0JY3RybC0+bGlua19yYXRlID0gZHJt X2RwX2xpbmtfcmF0ZV90b19id19jb2RlKGN0cmwtPmRwX2xpbmsucmF0ZSk7CisJY3RybC0+bGlu a19yYXRlID0gZHJtX2RwX2xpbmtfcmF0ZV90b19id19jb2RlKGN0cmwtPmRwX2xpbmsubWF4X3Jh dGUpOwogCiAJcHJhdGUgKj0gYnBwOwogCXByYXRlIC89IDg7IC8qIGluIGtCeXRlICovCkBAIC03 MDEsNyArNzAxLDcgQEAgc3RhdGljIGludCBlZHBfbGlua19yYXRlX2Rvd25fc2hpZnQoc3RydWN0 IGVkcF9jdHJsICpjdHJsKQogCiAJcmF0ZSA9IGN0cmwtPmxpbmtfcmF0ZTsKIAlsYW5lID0gY3Ry bC0+bGFuZV9jbnQ7Ci0JbWF4X2xhbmUgPSBjdHJsLT5kcF9saW5rLm51bV9sYW5lczsKKwltYXhf bGFuZSA9IGN0cmwtPmRwX2xpbmsubWF4X2xhbmVzOwogCiAJYnBwID0gY3RybC0+Y29sb3JfZGVw dGggKiAzOwogCXByYXRlID0gY3RybC0+cGl4ZWxfcmF0ZTsKQEAgLTc1OSw3ICs3NTksNyBAQCBz dGF0aWMgaW50IGVkcF9kb19saW5rX3RyYWluKHN0cnVjdCBlZHBfY3RybCAqY3RybCkKIAkgKiBT ZXQgdGhlIGN1cnJlbnQgbGluayByYXRlIGFuZCBsYW5lIGNudCB0byBwYW5lbC4gVGhleSBtYXkg aGF2ZSBiZWVuCiAJICogYWRqdXN0ZWQgYW5kIHRoZSB2YWx1ZXMgYXJlIGRpZmZlcmVudCBmcm9t IHRoZW0gaW4gRFBDRCBDQVAKIAkgKi8KLQlkcF9saW5rLm51bV9sYW5lcyA9IGN0cmwtPmxhbmVf Y250OworCWRwX2xpbmsubGFuZXMgPSBjdHJsLT5sYW5lX2NudDsKIAlkcF9saW5rLnJhdGUgPSBk cm1fZHBfYndfY29kZV90b19saW5rX3JhdGUoY3RybC0+bGlua19yYXRlKTsKIAlkcF9saW5rLmNh cGFiaWxpdGllcyA9IGN0cmwtPmRwX2xpbmsuY2FwYWJpbGl0aWVzOwogCWlmIChkcm1fZHBfbGlu a19jb25maWd1cmUoY3RybC0+ZHJtX2F1eCwgJmRwX2xpbmspIDwgMCkKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9jZG4tZHAtY29yZS5jIGIvZHJpdmVycy9ncHUvZHJtL3Jv Y2tjaGlwL2Nkbi1kcC1jb3JlLmMKaW5kZXggZDUwNWVhN2Q1Mzg0Li5jNTAwYmU4OTVlNjQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9jZG4tZHAtY29yZS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9jZG4tZHAtY29yZS5jCkBAIC00NzgsNyArNDc4LDcgQEAg c3RhdGljIGludCBjZG5fZHBfZGlzYWJsZShzdHJ1Y3QgY2RuX2RwX2RldmljZSAqZHApCiAJY2Ru X2RwX2Nsa19kaXNhYmxlKGRwKTsKIAlkcC0+YWN0aXZlID0gZmFsc2U7CiAJZHAtPmxpbmsucmF0 ZSA9IDA7Ci0JZHAtPmxpbmsubnVtX2xhbmVzID0gMDsKKwlkcC0+bGluay5sYW5lcyA9IDA7CiAJ aWYgKCFkcC0+Y29ubmVjdGVkKSB7CiAJCWtmcmVlKGRwLT5lZGlkKTsKIAkJZHAtPmVkaWQgPSBO VUxMOwpAQCAtNTcwLDcgKzU3MCw3IEBAIHN0YXRpYyBib29sIGNkbl9kcF9jaGVja19saW5rX3N0 YXR1cyhzdHJ1Y3QgY2RuX2RwX2RldmljZSAqZHApCiAJc3RydWN0IGNkbl9kcF9wb3J0ICpwb3J0 ID0gY2RuX2RwX2Nvbm5lY3RlZF9wb3J0KGRwKTsKIAl1OCBzaW5rX2xhbmVzID0gZHJtX2RwX21h eF9sYW5lX2NvdW50KGRwLT5kcGNkKTsKIAotCWlmICghcG9ydCB8fCAhZHAtPmxpbmsucmF0ZSB8 fCAhZHAtPmxpbmsubnVtX2xhbmVzKQorCWlmICghcG9ydCB8fCAhZHAtPmxpbmsucmF0ZSB8fCAh ZHAtPmxpbmsubGFuZXMpCiAJCXJldHVybiBmYWxzZTsKIAogCWlmIChjZG5fZHBfZHBjZF9yZWFk KGRwLCBEUF9MQU5FMF8xX1NUQVRVUywgbGlua19zdGF0dXMsCkBAIC05NTMsNyArOTUzLDcgQEAg c3RhdGljIHZvaWQgY2RuX2RwX3BkX2V2ZW50X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3Jr KQogCS8qIEVuYWJsZWQgYW5kIGNvbm5lY3RlZCB3aXRoIGEgc2luaywgcmUtdHJhaW4gaWYgcmVx dWVzdGVkICovCiAJfSBlbHNlIGlmICghY2RuX2RwX2NoZWNrX2xpbmtfc3RhdHVzKGRwKSkgewog CQl1bnNpZ25lZCBpbnQgcmF0ZSA9IGRwLT5saW5rLnJhdGU7Ci0JCXVuc2lnbmVkIGludCBsYW5l cyA9IGRwLT5saW5rLm51bV9sYW5lczsKKwkJdW5zaWduZWQgaW50IGxhbmVzID0gZHAtPmxpbmsu bGFuZXM7CiAJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gJmRwLT5tb2RlOwogCiAJ CURSTV9ERVZfSU5GTyhkcC0+ZGV2LCAiQ29ubmVjdGVkIHdpdGggc2luay4gUmUtdHJhaW4gbGlu a1xuIik7CkBAIC05NjYsNyArOTY2LDcgQEAgc3RhdGljIHZvaWQgY2RuX2RwX3BkX2V2ZW50X3dv cmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCiAJCS8qIElmIHRyYWluaW5nIHJlc3VsdCBp cyBjaGFuZ2VkLCB1cGRhdGUgdGhlIHZpZGVvIGNvbmZpZyAqLwogCQlpZiAobW9kZS0+Y2xvY2sg JiYKLQkJICAgIChyYXRlICE9IGRwLT5saW5rLnJhdGUgfHwgbGFuZXMgIT0gZHAtPmxpbmsubnVt X2xhbmVzKSkgeworCQkgICAgKHJhdGUgIT0gZHAtPmxpbmsucmF0ZSB8fCBsYW5lcyAhPSBkcC0+ bGluay5sYW5lcykpIHsKIAkJCXJldCA9IGNkbl9kcF9jb25maWdfdmlkZW8oZHApOwogCQkJaWYg KHJldCkgewogCQkJCWRwLT5jb25uZWN0ZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9yb2NrY2hpcC9jZG4tZHAtcmVnLmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAv Y2RuLWRwLXJlZy5jCmluZGV4IDA3N2M4NzAyMTkwOC4uN2IyNTRkMGQwYmEyIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvY2RuLWRwLXJlZy5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9yb2NrY2hpcC9jZG4tZHAtcmVnLmMKQEAgLTUzNiw3ICs1MzYsNyBAQCBzdGF0aWMgaW50 IGNkbl9kcF9nZXRfdHJhaW5pbmdfc3RhdHVzKHN0cnVjdCBjZG5fZHBfZGV2aWNlICpkcCkKIAkJ Z290byBlcnJfZ2V0X3RyYWluaW5nX3N0YXR1czsKIAogCWRwLT5saW5rLnJhdGUgPSBkcm1fZHBf YndfY29kZV90b19saW5rX3JhdGUoc3RhdHVzWzBdKTsKLQlkcC0+bGluay5udW1fbGFuZXMgPSBz dGF0dXNbMV07CisJZHAtPmxpbmsubGFuZXMgPSBzdGF0dXNbMV07CiAKIGVycl9nZXRfdHJhaW5p bmdfc3RhdHVzOgogCWlmIChyZXQpCkBAIC01NjEsNyArNTYxLDcgQEAgaW50IGNkbl9kcF90cmFp bl9saW5rKHN0cnVjdCBjZG5fZHBfZGV2aWNlICpkcCkKIAl9CiAKIAlEUk1fREVWX0RFQlVHX0tN UyhkcC0+ZGV2LCAicmF0ZToweCV4LCBsYW5lczolZFxuIiwgZHAtPmxpbmsucmF0ZSwKLQkJCSAg ZHAtPmxpbmsubnVtX2xhbmVzKTsKKwkJCSAgZHAtPmxpbmsubGFuZXMpOwogCXJldHVybiByZXQ7 CiB9CiAKQEAgLTY1OSwxNCArNjU5LDEzIEBAIGludCBjZG5fZHBfY29uZmlnX3ZpZGVvKHN0cnVj dCBjZG5fZHBfZGV2aWNlICpkcCkKIAlkbyB7CiAJCXR1X3NpemVfcmVnICs9IDI7CiAJCXN5bWJv bCA9IHR1X3NpemVfcmVnICogbW9kZS0+Y2xvY2sgKiBiaXRfcGVyX3BpeDsKLQkJZG9fZGl2KHN5 bWJvbCwgZHAtPmxpbmsubnVtX2xhbmVzICogbGlua19yYXRlICogOCk7CisJCWRvX2RpdihzeW1i b2wsIGRwLT5saW5rLmxhbmVzICogbGlua19yYXRlICogOCk7CiAJCXJlbSA9IGRvX2RpdihzeW1i b2wsIDEwMDApOwogCQlpZiAodHVfc2l6ZV9yZWcgPiA2NCkgewogCQkJcmV0ID0gLUVJTlZBTDsK IAkJCURSTV9ERVZfRVJST1IoZHAtPmRldiwKIAkJCQkgICAgICAidHUgZXJyb3IsIGNsazolZCwg bGFuZXM6JWQsIHJhdGU6JWRcbiIsCi0JCQkJICAgICAgbW9kZS0+Y2xvY2ssIGRwLT5saW5rLm51 bV9sYW5lcywKLQkJCQkgICAgICBsaW5rX3JhdGUpOworCQkJCSAgICAgIG1vZGUtPmNsb2NrLCBk cC0+bGluay5sYW5lcywgbGlua19yYXRlKTsKIAkJCWdvdG8gZXJyX2NvbmZpZ192aWRlbzsKIAkJ fQogCX0gd2hpbGUgKChzeW1ib2wgPD0gMSkgfHwgKHR1X3NpemVfcmVnIC0gc3ltYm9sIDwgNCkg fHwKQEAgLTY4MCw3ICs2NzksNyBAQCBpbnQgY2RuX2RwX2NvbmZpZ192aWRlbyhzdHJ1Y3QgY2Ru X2RwX2RldmljZSAqZHApCiAKIAkvKiBzZXQgdGhlIEZJRk8gQnVmZmVyIHNpemUgKi8KIAl2YWwg PSBkaXZfdTY0KG1vZGUtPmNsb2NrICogKHN5bWJvbCArIDEpLCAxMDAwKSArIGxpbmtfcmF0ZTsK LQl2YWwgLz0gKGRwLT5saW5rLm51bV9sYW5lcyAqIGxpbmtfcmF0ZSk7CisJdmFsIC89IChkcC0+ bGluay5sYW5lcyAqIGxpbmtfcmF0ZSk7CiAJdmFsID0gZGl2X3U2NCg4ICogKHN5bWJvbCArIDEp LCBiaXRfcGVyX3BpeCkgLSB2YWw7CiAJdmFsICs9IDI7CiAJcmV0ID0gY2RuX2RwX3JlZ193cml0 ZShkcCwgRFBfVkNfVEFCTEUoMTUpLCB2YWwpOwpAQCAtODMzLDcgKzgzMiw3IEBAIHN0YXRpYyB2 b2lkIGNkbl9kcF9hdWRpb19jb25maWdfaTJzKHN0cnVjdCBjZG5fZHBfZGV2aWNlICpkcCwKIAl1 MzIgdmFsOwogCiAJaWYgKGF1ZGlvLT5jaGFubmVscyA9PSAyKSB7Ci0JCWlmIChkcC0+bGluay5u dW1fbGFuZXMgPT0gMSkKKwkJaWYgKGRwLT5saW5rLmxhbmVzID09IDEpCiAJCQlzdWJfcGNrdF9u dW0gPSAyOwogCQllbHNlCiAJCQlzdWJfcGNrdF9udW0gPSA0OwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3RlZ3JhL2RwYXV4LmMgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZHBhdXguYwpp bmRleCAyZDk0ZGEyMjVlNTEuLmMxODYxNjdiMGIzZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3RlZ3JhL2RwYXV4LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RwYXV4LmMKQEAg LTc5MSwxNCArNzkxLDE0IEBAIGludCBkcm1fZHBfYXV4X3RyYWluKHN0cnVjdCBkcm1fZHBfYXV4 ICphdXgsIHN0cnVjdCBkcm1fZHBfbGluayAqbGluaywKIAlpZiAodHAgPT0gRFBfVFJBSU5JTkdf UEFUVEVSTl9ESVNBQkxFKQogCQlyZXR1cm4gMDsKIAotCWZvciAoaSA9IDA7IGkgPCBsaW5rLT5u dW1fbGFuZXM7IGkrKykKKwlmb3IgKGkgPSAwOyBpIDwgbGluay0+bGFuZXM7IGkrKykKIAkJdmFs dWVzW2ldID0gRFBfVFJBSU5fTUFYX1BSRV9FTVBIQVNJU19SRUFDSEVEIHwKIAkJCSAgICBEUF9U UkFJTl9QUkVfRU1QSF9MRVZFTF8wIHwKIAkJCSAgICBEUF9UUkFJTl9NQVhfU1dJTkdfUkVBQ0hF RCB8CiAJCQkgICAgRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8wOwogCiAJZXJyID0gZHJt X2RwX2RwY2Rfd3JpdGUoYXV4LCBEUF9UUkFJTklOR19MQU5FMF9TRVQsIHZhbHVlcywKLQkJCQls aW5rLT5udW1fbGFuZXMpOworCQkJCWxpbmstPmxhbmVzKTsKIAlpZiAoZXJyIDwgMCkKIAkJcmV0 dXJuIGVycjsKIApAQCAtODEwLDEzICs4MTAsMTMgQEAgaW50IGRybV9kcF9hdXhfdHJhaW4oc3Ry dWN0IGRybV9kcF9hdXggKmF1eCwgc3RydWN0IGRybV9kcF9saW5rICpsaW5rLAogCiAJc3dpdGNo ICh0cCkgewogCWNhc2UgRFBfVFJBSU5JTkdfUEFUVEVSTl8xOgotCQlpZiAoIWRybV9kcF9jbG9j a19yZWNvdmVyeV9vayhzdGF0dXMsIGxpbmstPm51bV9sYW5lcykpCisJCWlmICghZHJtX2RwX2Ns b2NrX3JlY292ZXJ5X29rKHN0YXR1cywgbGluay0+bGFuZXMpKQogCQkJcmV0dXJuIC1FQUdBSU47 CiAKIAkJYnJlYWs7CiAKIAljYXNlIERQX1RSQUlOSU5HX1BBVFRFUk5fMjoKLQkJaWYgKCFkcm1f ZHBfY2hhbm5lbF9lcV9vayhzdGF0dXMsIGxpbmstPm51bV9sYW5lcykpCisJCWlmICghZHJtX2Rw X2NoYW5uZWxfZXFfb2soc3RhdHVzLCBsaW5rLT5sYW5lcykpCiAJCQlyZXR1cm4gLUVBR0FJTjsK IAogCQlicmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9zb3IuYyBiL2Ry aXZlcnMvZ3B1L2RybS90ZWdyYS9zb3IuYwppbmRleCA0ZmZlMzc5NGU2ZDMuLjdiNzk1MTYyZDdi MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL3Nvci5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS90ZWdyYS9zb3IuYwpAQCAtNjQ2LDcgKzY0Niw3IEBAIHN0YXRpYyBpbnQgdGVncmFf c29yX2RwX3RyYWluX2Zhc3Qoc3RydWN0IHRlZ3JhX3NvciAqc29yLAogCWlmIChlcnIgPCAwKQog CQlyZXR1cm4gZXJyOwogCi0JZm9yIChpID0gMCwgdmFsdWUgPSAwOyBpIDwgbGluay0+bnVtX2xh bmVzOyBpKyspIHsKKwlmb3IgKGkgPSAwLCB2YWx1ZSA9IDA7IGkgPCBsaW5rLT5sYW5lczsgaSsr KSB7CiAJCXVuc2lnbmVkIGxvbmcgbGFuZSA9IFNPUl9EUF9UUEdfQ0hBTk5FTF9DT0RJTkcgfAog CQkJCSAgICAgU09SX0RQX1RQR19TQ1JBTUJMRVJfTk9ORSB8CiAJCQkJICAgICBTT1JfRFBfVFBH X1BBVFRFUk5fVFJBSU4xOwpAQCAtNjY3LDcgKzY2Nyw3IEBAIHN0YXRpYyBpbnQgdGVncmFfc29y X2RwX3RyYWluX2Zhc3Qoc3RydWN0IHRlZ3JhX3NvciAqc29yLAogCXZhbHVlIHw9IFNPUl9EUF9T UEFSRV9NQUNST19TT1JfQ0xLOwogCXRlZ3JhX3Nvcl93cml0ZWwoc29yLCB2YWx1ZSwgU09SX0RQ X1NQQVJFMCk7CiAKLQlmb3IgKGkgPSAwLCB2YWx1ZSA9IDA7IGkgPCBsaW5rLT5udW1fbGFuZXM7 IGkrKykgeworCWZvciAoaSA9IDAsIHZhbHVlID0gMDsgaSA8IGxpbmstPmxhbmVzOyBpKyspIHsK IAkJdW5zaWduZWQgbG9uZyBsYW5lID0gU09SX0RQX1RQR19DSEFOTkVMX0NPRElORyB8CiAJCQkJ ICAgICBTT1JfRFBfVFBHX1NDUkFNQkxFUl9OT05FIHwKIAkJCQkgICAgIFNPUl9EUF9UUEdfUEFU VEVSTl9UUkFJTjI7CkBAIC02ODIsNyArNjgyLDcgQEAgc3RhdGljIGludCB0ZWdyYV9zb3JfZHBf dHJhaW5fZmFzdChzdHJ1Y3QgdGVncmFfc29yICpzb3IsCiAJaWYgKGVyciA8IDApCiAJCXJldHVy biBlcnI7CiAKLQlmb3IgKGkgPSAwLCB2YWx1ZSA9IDA7IGkgPCBsaW5rLT5udW1fbGFuZXM7IGkr KykgeworCWZvciAoaSA9IDAsIHZhbHVlID0gMDsgaSA8IGxpbmstPmxhbmVzOyBpKyspIHsKIAkJ dW5zaWduZWQgbG9uZyBsYW5lID0gU09SX0RQX1RQR19DSEFOTkVMX0NPRElORyB8CiAJCQkJICAg ICBTT1JfRFBfVFBHX1NDUkFNQkxFUl9HQUxJT1MgfAogCQkJCSAgICAgU09SX0RQX1RQR19QQVRU RVJOX05PTkU7CkBAIC05MDksMTEgKzkwOSwxMSBAQCBzdGF0aWMgaW50IHRlZ3JhX3Nvcl9jb21w dXRlX2NvbmZpZyhzdHJ1Y3QgdGVncmFfc29yICpzb3IsCiAJdTMyIG51bV9zeW1zX3Blcl9saW5l OwogCXVuc2lnbmVkIGludCBpOwogCi0JaWYgKCFsaW5rX3JhdGUgfHwgIWxpbmstPm51bV9sYW5l cyB8fCAhcGNsayB8fCAhY29uZmlnLT5iaXRzX3Blcl9waXhlbCkKKwlpZiAoIWxpbmtfcmF0ZSB8 fCAhbGluay0+bGFuZXMgfHwgIXBjbGsgfHwgIWNvbmZpZy0+Yml0c19wZXJfcGl4ZWwpCiAJCXJl dHVybiAtRUlOVkFMOwogCi0Jb3V0cHV0ID0gbGlua19yYXRlICogOCAqIGxpbmstPm51bV9sYW5l czsKIAlpbnB1dCA9IHBjbGsgKiBjb25maWctPmJpdHNfcGVyX3BpeGVsOworCW91dHB1dCA9IGxp bmtfcmF0ZSAqIDggKiBsaW5rLT5sYW5lczsKIAogCWlmIChpbnB1dCA+PSBvdXRwdXQpCiAJCXJl dHVybiAtRVJBTkdFOwpAQCAtOTU2LDcgKzk1Niw3IEBAIHN0YXRpYyBpbnQgdGVncmFfc29yX2Nv bXB1dGVfY29uZmlnKHN0cnVjdCB0ZWdyYV9zb3IgKnNvciwKIAl3YXRlcm1hcmsgPSBkaXZfdTY0 KHdhdGVybWFyayArIHBhcmFtcy5lcnJvciwgZik7CiAJY29uZmlnLT53YXRlcm1hcmsgPSB3YXRl cm1hcmsgKyAoY29uZmlnLT5iaXRzX3Blcl9waXhlbCAvIDgpICsgMjsKIAludW1fc3ltc19wZXJf bGluZSA9IChtb2RlLT5oZGlzcGxheSAqIGNvbmZpZy0+Yml0c19wZXJfcGl4ZWwpICoKLQkJCSAg ICAobGluay0+bnVtX2xhbmVzICogOCk7CisJCQkgICAgKGxpbmstPmxhbmVzICogOCk7CiAKIAlp ZiAoY29uZmlnLT53YXRlcm1hcmsgPiAzMCkgewogCQljb25maWctPndhdGVybWFyayA9IDMwOwpA QCAtOTc2LDEyICs5NzYsMTIgQEAgc3RhdGljIGludCB0ZWdyYV9zb3JfY29tcHV0ZV9jb25maWco c3RydWN0IHRlZ3JhX3NvciAqc29yLAogCWlmIChsaW5rLT5jYXBhYmlsaXRpZXMgJiBEUF9MSU5L X0NBUF9FTkhBTkNFRF9GUkFNSU5HKQogCQljb25maWctPmhibGFua19zeW1ib2xzIC09IDM7CiAK LQljb25maWctPmhibGFua19zeW1ib2xzIC09IDEyIC8gbGluay0+bnVtX2xhbmVzOworCWNvbmZp Zy0+aGJsYW5rX3N5bWJvbHMgLT0gMTIgLyBsaW5rLT5sYW5lczsKIAogCS8qIGNvbXB1dGUgdGhl IG51bWJlciBvZiBzeW1ib2xzIHBlciB2ZXJ0aWNhbCBibGFua2luZyBpbnRlcnZhbCAqLwogCW51 bSA9IChtb2RlLT5oZGlzcGxheSAtIDI1KSAqIGxpbmtfcmF0ZTsKIAljb25maWctPnZibGFua19z eW1ib2xzID0gZGl2X3U2NChudW0sIHBjbGspOwotCWNvbmZpZy0+dmJsYW5rX3N5bWJvbHMgLT0g MzYgLyBsaW5rLT5udW1fbGFuZXMgKyA0OworCWNvbmZpZy0+dmJsYW5rX3N5bWJvbHMgLT0gMzYg LyBsaW5rLT5sYW5lcyArIDQ7CiAKIAlkZXZfZGJnKHNvci0+ZGV2LCAiYmxhbmsgc3ltYm9sczog SDoldSBWOiV1XG4iLCBjb25maWctPmhibGFua19zeW1ib2xzLAogCQljb25maWctPnZibGFua19z eW1ib2xzKTsKQEAgLTE4MjcsMTcgKzE4MjcsMTcgQEAgc3RhdGljIHZvaWQgdGVncmFfc29yX2Vk cF9lbmFibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogCS8qIHBvd2VyIERQIGxhbmVz ICovCiAJdmFsdWUgPSB0ZWdyYV9zb3JfcmVhZGwoc29yLCBzb3ItPnNvYy0+cmVncy0+ZHBfcGFk Y3RsMCk7CiAKLQlpZiAobGluay5udW1fbGFuZXMgPD0gMikKKwlpZiAobGluay5sYW5lcyA8PSAy KQogCQl2YWx1ZSAmPSB+KFNPUl9EUF9QQURDVExfUERfVFhEXzMgfCBTT1JfRFBfUEFEQ1RMX1BE X1RYRF8yKTsKIAllbHNlCiAJCXZhbHVlIHw9IFNPUl9EUF9QQURDVExfUERfVFhEXzMgfCBTT1Jf RFBfUEFEQ1RMX1BEX1RYRF8yOwogCi0JaWYgKGxpbmsubnVtX2xhbmVzIDw9IDEpCisJaWYgKGxp bmsubGFuZXMgPD0gMSkKIAkJdmFsdWUgJj0gflNPUl9EUF9QQURDVExfUERfVFhEXzE7CiAJZWxz ZQogCQl2YWx1ZSB8PSBTT1JfRFBfUEFEQ1RMX1BEX1RYRF8xOwogCi0JaWYgKGxpbmsubnVtX2xh bmVzID09IDApCisJaWYgKGxpbmsubGFuZXMgPT0gMCkKIAkJdmFsdWUgJj0gflNPUl9EUF9QQURD VExfUERfVFhEXzA7CiAJZWxzZQogCQl2YWx1ZSB8PSBTT1JfRFBfUEFEQ1RMX1BEX1RYRF8wOwpA QCAtMTg0Niw3ICsxODQ2LDcgQEAgc3RhdGljIHZvaWQgdGVncmFfc29yX2VkcF9lbmFibGUoc3Ry dWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogCiAJdmFsdWUgPSB0ZWdyYV9zb3JfcmVhZGwoc29y LCBTT1JfRFBfTElOS0NUTDApOwogCXZhbHVlICY9IH5TT1JfRFBfTElOS0NUTF9MQU5FX0NPVU5U X01BU0s7Ci0JdmFsdWUgfD0gU09SX0RQX0xJTktDVExfTEFORV9DT1VOVChsaW5rLm51bV9sYW5l cyk7CisJdmFsdWUgfD0gU09SX0RQX0xJTktDVExfTEFORV9DT1VOVChsaW5rLmxhbmVzKTsKIAl0 ZWdyYV9zb3Jfd3JpdGVsKHNvciwgdmFsdWUsIFNPUl9EUF9MSU5LQ1RMMCk7CiAKIAkvKiBzdGFy dCBsYW5lIHNlcXVlbmNlciAqLwpAQCAtMTkwMyw3ICsxOTAzLDcgQEAgc3RhdGljIHZvaWQgdGVn cmFfc29yX2VkcF9lbmFibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogCQlkZXZfZXJy KHNvci0+ZGV2LCAiZmFpbGVkIHRvIGNvbmZpZ3VyZSBlRFAgbGluazogJWRcbiIsIGVycik7CiAK IAlyYXRlID0gZHJtX2RwX2xpbmtfcmF0ZV90b19id19jb2RlKGxpbmsucmF0ZSk7Ci0JbGFuZXMg PSBsaW5rLm51bV9sYW5lczsKKwlsYW5lcyA9IGxpbmsubGFuZXM7CiAKIAl2YWx1ZSA9IHRlZ3Jh X3Nvcl9yZWFkbChzb3IsIFNPUl9DTEtfQ05UUkwpOwogCXZhbHVlICY9IH5TT1JfQ0xLX0NOVFJM X0RQX0xJTktfU1BFRURfTUFTSzsKQEAgLTE5MjEsNyArMTkyMSw3IEBAIHN0YXRpYyB2b2lkIHRl Z3JhX3Nvcl9lZHBfZW5hYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIAogCS8qIGRp c2FibGUgdHJhaW5pbmcgcGF0dGVybiBnZW5lcmF0b3IgKi8KIAotCWZvciAoaSA9IDA7IGkgPCBs aW5rLm51bV9sYW5lczsgaSsrKSB7CisJZm9yIChpID0gMDsgaSA8IGxpbmsubGFuZXM7IGkrKykg ewogCQl1bnNpZ25lZCBsb25nIGxhbmUgPSBTT1JfRFBfVFBHX0NIQU5ORUxfQ09ESU5HIHwKIAkJ CQkgICAgIFNPUl9EUF9UUEdfU0NSQU1CTEVSX0dBTElPUyB8CiAJCQkJICAgICBTT1JfRFBfVFBH X1BBVFRFUk5fTk9ORTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9kcF9oZWxwZXIuaCBi L2luY2x1ZGUvZHJtL2RybV9kcF9oZWxwZXIuaAppbmRleCA5MzVmMzMxZTZlNzIuLjljNjc1YmRl MTFlOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oCisrKyBiL2luY2x1 ZGUvZHJtL2RybV9kcF9oZWxwZXIuaApAQCAtMTM1OSwxNyArMTM1OSwyMiBAQCBpbnQgZHJtX2Rw X2RwY2RfcmVhZF9saW5rX3N0YXR1cyhzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LAogI2RlZmluZSBE UF9MSU5LX0NBUF9FTkhBTkNFRF9GUkFNSU5HICgxIDw8IDApCiAKIC8qKgotICogc3RydWN0IGRy bV9kcF9saW5rIC0gRFAgbGluayBjYXBhYmlsaXRpZXMKKyAqIHN0cnVjdCBkcm1fZHBfbGluayAt IERQIGxpbmsgY2FwYWJpbGl0aWVzIGFuZCBjb25maWd1cmF0aW9uCiAgKiBAcmV2aXNpb246IERQ IHNwZWNpZmljYXRpb24gcmV2aXNpb24gc3VwcG9ydGVkIG9uIHRoZSBsaW5rCi0gKiBAcmF0ZTog bWF4aW11bSBjbG9jayByYXRlIHN1cHBvcnRlZCBvbiB0aGUgbGluawotICogQG51bV9sYW5lczog bWF4aW11bSBudW1iZXIgb2YgbGFuZXMgc3VwcG9ydGVkIG9uIHRoZSBsaW5rCisgKiBAbWF4X3Jh dGU6IG1heGltdW0gY2xvY2sgcmF0ZSBzdXBwb3J0ZWQgb24gdGhlIGxpbmsKKyAqIEBtYXhfbGFu ZXM6IG1heGltdW0gbnVtYmVyIG9mIGxhbmVzIHN1cHBvcnRlZCBvbiB0aGUgbGluawogICogQGNh cGFiaWxpdGllczogYml0bWFzayBvZiBjYXBhYmlsaXRpZXMgc3VwcG9ydGVkIG9uIHRoZSBsaW5r CisgKiBAcmF0ZTogY3VycmVudGx5IGNvbmZpZ3VyZWQgbGluayByYXRlCisgKiBAbGFuZXM6IGN1 cnJlbnRseSBjb25maWd1cmVkIG51bWJlciBvZiBsYW5lcwogICovCiBzdHJ1Y3QgZHJtX2RwX2xp bmsgewogCXVuc2lnbmVkIGNoYXIgcmV2aXNpb247Ci0JdW5zaWduZWQgaW50IHJhdGU7Ci0JdW5z aWduZWQgaW50IG51bV9sYW5lczsKKwl1bnNpZ25lZCBpbnQgbWF4X3JhdGU7CisJdW5zaWduZWQg aW50IG1heF9sYW5lczsKIAl1bnNpZ25lZCBsb25nIGNhcGFiaWxpdGllczsKKworCXVuc2lnbmVk IGludCByYXRlOworCXVuc2lnbmVkIGludCBsYW5lczsKIH07CiAKIGludCBkcm1fZHBfbGlua19w cm9iZShzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LCBzdHJ1Y3QgZHJtX2RwX2xpbmsgKmxpbmspOwot LSAKMi4yMi4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=