From mboxrd@z Thu Jan 1 00:00:00 1970 From: "james qian wang (Arm Technology China)" Subject: [PATCH v2 7/9] drm/komeda: Attach komeda_dev to DRM-KMS Date: Wed, 19 Dec 2018 12:34:33 +0000 Message-ID: <20181219123147.16090-8-james.qian.wang@arm.com> References: <20181219123147.16090-1-james.qian.wang@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181219123147.16090-1-james.qian.wang@arm.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Liviu Dudau Cc: Mark Rutland , "linux-doc@vger.kernel.org" , "maxime.ripard@bootlin.com" , "Jonathan Chai (Arm Technology China)" , Alexandru-Cosmin Gheorghe , "dri-devel@lists.freedesktop.org" , "linux-kernel@vger.kernel.org" , "yamada.masahiro@socionext.com" , "Yiqi Kang (Arm Technology China)" , "mchehab+samsung@kernel.org" , "Tiannan Zhu (Arm Technology China)" , "corbet@lwn.net" , "airlied@linux.ie" , "malidp@foss.arm.com" , "thomas Sun (Arm Technology China)" , Ayan Halder , devicetree List-Id: devicetree@vger.kernel.org QWRkIGtvbWVkYV9rbXMgYWJzdHJhY3RvbiB0byBhdHRhY2gga29tZWRhX2RldiB0byBEUk0tS01T CiAgQ1JUQzogYWNjb3JkaW5nIHRvIHRoZSBrb21lZGFfcGlwZWxpbmUKICBQTEFORTogYWNjb3Jk aW5nIHRvIGtvbWVkYV9sYXllciAobGF5ZXIgaW5wdXQgcGlwZWxpbmUpCiAgUFJJVkFURV9PQkpT OiBrb21lZGFfcGlwZWxpbmUvY29tcG9uZW50IGFsbCB3aWxsIGJlIHRyZWF0IGFzIHByaXZhdGVf b2JqcwoKa29tZWRhX2ttcyBpcyBmb3IgY29ubmVjdGluZyBEUk0tS01TIGFuZCBrb21lZGFfZGV2 LCBsaWtlIHJlcG9ydGluZyB0aGUKa21zIG9iamVjdCBwcm9wZXJ0aWVzIGFjY29yZGluZyB0byB0 aGUga29tZWRhX2RldiwgYW5kIHBhc3MvY29udmVydCBLTVMncwpyZXF1aXJlbWVudCB0byBrb21l ZGFfZGV2LgoKU2lnbmVkLW9mZi1ieTogSmFtZXMgKFFpYW4pIFdhbmcgPGphbWVzLnFpYW4ud2Fu Z0Bhcm0uY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEvTWFrZWZp bGUgICB8ICAgNiArLQogLi4uL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9jcnRj LmMgIHwgMTA2ICsrKysrKysrKysrCiAuLi4vZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29t ZWRhX2Rydi5jICAgfCAgMjIgKystCiAuLi4vZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29t ZWRhX2ttcy5jICAgfCAxNjggKysrKysrKysrKysrKysrKysrCiAuLi4vZ3B1L2RybS9hcm0vZGlz cGxheS9rb21lZGEva29tZWRhX2ttcy5oICAgfCAxMTMgKysrKysrKysrKysrCiAuLi4vZHJtL2Fy bS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGlwZWxpbmUuaCAgfCAgIDMgKwogLi4uL2dwdS9kcm0v YXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9wbGFuZS5jIHwgMTA5ICsrKysrKysrKysrKwogLi4u L2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcHJpdmF0ZV9vYmouYyAgIHwgIDg3ICsrKysrKysr KwogOCBmaWxlcyBjaGFuZ2VkLCA2MDggaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVk YV9jcnRjLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkv a29tZWRhL2tvbWVkYV9rbXMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9h cm0vZGlzcGxheS9rb21lZGEva29tZWRhX2ttcy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGxhbmUuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3ByaXZhdGVf b2JqLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL01h a2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9NYWtlZmlsZQppbmRl eCBkMzY5MzE3ZjcyYWIuLjEzNzRjMDFkMTc5ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FybS9kaXNwbGF5L2tvbWVkYS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rp c3BsYXkva29tZWRhL01ha2VmaWxlCkBAIC05LDcgKzksMTEgQEAga29tZWRhLXkgOj0gXAogCWtv bWVkYV9kZXYubyBcCiAJa29tZWRhX2Zvcm1hdF9jYXBzLm8gXAogCWtvbWVkYV9waXBlbGluZS5v IFwKLQlrb21lZGFfZnJhbWVidWZmZXIubworCWtvbWVkYV9mcmFtZWJ1ZmZlci5vIFwKKwlrb21l ZGFfa21zLm8gXAorCWtvbWVkYV9jcnRjLm8gXAorCWtvbWVkYV9wbGFuZS5vIFwKKwlrb21lZGFf cHJpdmF0ZV9vYmoubwogCiBrb21lZGEteSArPSBcCiAJZDcxL2Q3MV9kZXYubwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfY3J0Yy5jIGIvZHJp dmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfY3J0Yy5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNWJiNWE1NWY2YjMxCi0tLSAvZGV2L251bGwK KysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfY3J0Yy5jCkBA IC0wLDAgKzEsMTA2IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorLyoK KyAqIChDKSBDT1BZUklHSFQgMjAxOCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K KyAqIEF1dGhvcjogSmFtZXMuUWlhbi5XYW5nIDxqYW1lcy5xaWFuLndhbmdAYXJtLmNvbT4KKyAq CisgKi8KKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KKyNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5o PgorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNf aGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9wbGFuZV9oZWxwZXIuaD4KKyNpbmNsdWRlIDxk cm0vZHJtX2NydGNfaGVscGVyLmg+CisjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5oPgorI2lu Y2x1ZGUgImtvbWVkYV9kZXYuaCIKKyNpbmNsdWRlICJrb21lZGFfa21zLmgiCisKK3N0cnVjdCBk cm1fY3J0Y19oZWxwZXJfZnVuY3Mga29tZWRhX2NydGNfaGVscGVyX2Z1bmNzID0geworfTsKKwor c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19mdW5jcyBrb21lZGFfY3J0Y19mdW5jcyA9IHsK K307CisKK2ludCBrb21lZGFfa21zX3NldHVwX2NydGNzKHN0cnVjdCBrb21lZGFfa21zX2RldiAq a21zLAorCQkJICAgc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYpCit7CisJc3RydWN0IGtvbWVkYV9j cnRjICpjcnRjOworCXN0cnVjdCBrb21lZGFfcGlwZWxpbmUgKm1hc3RlcjsKKwljaGFyIHN0clsx Nl07CisJaW50IGk7CisKKwlrbXMtPm5fY3J0Y3MgPSAwOworCisJZm9yIChpID0gMDsgaSA8IG1k ZXYtPm5fcGlwZWxpbmVzOyBpKyspIHsKKwkJY3J0YyA9ICZrbXMtPmNydGNzW2ttcy0+bl9jcnRj c107CisJCW1hc3RlciA9IG1kZXYtPnBpcGVsaW5lc1tpXTsKKworCQljcnRjLT5tYXN0ZXIgPSBt YXN0ZXI7CisJCWNydGMtPnNsYXZlICA9IE5VTEw7CisKKwkJaWYgKGNydGMtPnNsYXZlKQorCQkJ c3ByaW50ZihzdHIsICJwaXBlLSVkIiwgY3J0Yy0+c2xhdmUtPmlkKTsKKwkJZWxzZQorCQkJc3By aW50ZihzdHIsICJOb25lIik7CisKKwkJRFJNX0lORk8oImNydGMlZDogbWFzdGVyKHBpcGUtJWQp IHNsYXZlKCVzKSBvdXRwdXQ6ICVzLlxuIiwKKwkJCSBrbXMtPm5fY3J0Y3MsIG1hc3Rlci0+aWQs IHN0ciwKKwkJCSBtYXN0ZXItPm9mX291dHB1dF9kZXYgPworCQkJIG1hc3Rlci0+b2Zfb3V0cHV0 X2Rldi0+ZnVsbF9uYW1lIDogIk5vbmUiKTsKKworCQlrbXMtPm5fY3J0Y3MrKzsKKwl9CisKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBkcm1fcGxhbmUgKgorZ2V0X2NydGNfcHJpbWFy eShzdHJ1Y3Qga29tZWRhX2ttc19kZXYgKmttcywgc3RydWN0IGtvbWVkYV9jcnRjICpjcnRjKQor eworCXN0cnVjdCBrb21lZGFfcGxhbmUgKmtwbGFuZTsKKwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZTsKKworCWRybV9mb3JfZWFjaF9wbGFuZShwbGFuZSwgJmttcy0+YmFzZSkgeworCQlpZiAocGxh bmUtPnR5cGUgIT0gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSkKKwkJCWNvbnRpbnVlOworCisJCWtw bGFuZSA9IHRvX2twbGFuZShwbGFuZSk7CisJCS8qIG9ubHkgbWFzdGVyIGNhbiBiZSBwcmltYXJ5 ICovCisJCWlmIChrcGxhbmUtPmxheWVyLT5iYXNlLnBpcGVsaW5lID09IGNydGMtPm1hc3RlcikK KwkJCXJldHVybiBwbGFuZTsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGludCBr b21lZGFfY3J0Y19hZGQoc3RydWN0IGtvbWVkYV9rbXNfZGV2ICprbXMsCisJCQkgICBzdHJ1Y3Qg a29tZWRhX2NydGMgKmtjcnRjKQoreworCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZrY3J0Yy0+ YmFzZTsKKwlpbnQgZXJyOworCisJZXJyID0gZHJtX2NydGNfaW5pdF93aXRoX3BsYW5lcygma21z LT5iYXNlLCBjcnRjLAorCQkJCQlnZXRfY3J0Y19wcmltYXJ5KGttcywga2NydGMpLCBOVUxMLAor CQkJCQkma29tZWRhX2NydGNfZnVuY3MsIE5VTEwpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7 CisKKwlkcm1fY3J0Y19oZWxwZXJfYWRkKGNydGMsICZrb21lZGFfY3J0Y19oZWxwZXJfZnVuY3Mp OworCWRybV9jcnRjX3ZibGFua19yZXNldChjcnRjKTsKKworCWNydGMtPnBvcnQgPSBrY3J0Yy0+ bWFzdGVyLT5vZl9vdXRwdXRfcG9ydDsKKworCXJldHVybiAwOworfQorCitpbnQga29tZWRhX2tt c19hZGRfY3J0Y3Moc3RydWN0IGtvbWVkYV9rbXNfZGV2ICprbXMsIHN0cnVjdCBrb21lZGFfZGV2 ICptZGV2KQoreworCWludCBpLCBlcnI7CisKKwlmb3IgKGkgPSAwOyBpIDwga21zLT5uX2NydGNz OyBpKyspIHsKKwkJZXJyID0ga29tZWRhX2NydGNfYWRkKGttcywgJmttcy0+Y3J0Y3NbaV0pOwor CQlpZiAoZXJyKQorCQkJcmV0dXJuIGVycjsKKwl9CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2Rydi5jIGIvZHJp dmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfZHJ2LmMKaW5kZXggYmYzMmQz MzRkMjBkLi4xMWVjMGQyNzU5MTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlz cGxheS9rb21lZGEva29tZWRhX2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxh eS9rb21lZGEva29tZWRhX2Rydi5jCkBAIC0xMCwyMiArMTAsMjYgQEAKICNpbmNsdWRlIDxsaW51 eC9jb21wb25lbnQuaD4KICNpbmNsdWRlIDxkcm0vZHJtX29mLmg+CiAjaW5jbHVkZSAia29tZWRh X2Rldi5oIgorI2luY2x1ZGUgImtvbWVkYV9rbXMuaCIKIAogc3RydWN0IGtvbWVkYV9kcnYgewog CXN0cnVjdCBrb21lZGFfZGV2ICptZGV2OworCXN0cnVjdCBrb21lZGFfa21zX2RldiAqa21zOwog fTsKIAogc3RhdGljIHZvaWQga29tZWRhX3VuYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYpCiB7CiAJ c3RydWN0IGtvbWVkYV9kcnYgKm1kcnYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKIAotCWRldl9z ZXRfZHJ2ZGF0YShkZXYsIE5VTEwpOwotCiAJaWYgKG1kcnYgPT0gTlVMTCkKIAkJcmV0dXJuOwog CisJa29tZWRhX2ttc19kZXRhY2gobWRydi0+a21zKTsKKwogCWtvbWVkYV9kZXZfZGVzdHJveSht ZHJ2LT5tZGV2KTsKLQlrZnJlZShtZHJ2KTsKKworCWRldl9zZXRfZHJ2ZGF0YShkZXYsIE5VTEwp OworCWRldm1fa2ZyZWUoZGV2LCBtZHJ2KTsKIH0KIAogc3RhdGljIGludCBrb21lZGFfYmluZChz dHJ1Y3QgZGV2aWNlICpkZXYpCkBAIC0zMyw3ICszNyw3IEBAIHN0YXRpYyBpbnQga29tZWRhX2Jp bmQoc3RydWN0IGRldmljZSAqZGV2KQogCXN0cnVjdCBrb21lZGFfZHJ2ICptZHJ2OwogCWludCBl cnI7CiAKLQltZHJ2ID0ga3phbGxvYyhzaXplb2YoKm1kcnYpLCBHRlBfS0VSTkVMKTsKKwltZHJ2 ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCptZHJ2KSwgR0ZQX0tFUk5FTCk7CiAJaWYgKG1k cnYgPT0gTlVMTCkKIAkJcmV0dXJuIC1FTk9NRU07CiAKQEAgLTQ1LDEwICs0OSwxOCBAQCBzdGF0 aWMgaW50IGtvbWVkYV9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldikKIAogCWRldl9zZXRfZHJ2ZGF0 YShkZXYsIG1kcnYpOwogCisJbWRydi0+a21zID0ga29tZWRhX2ttc19hdHRhY2gobWRydi0+bWRl dik7CisJaWYgKElTX0VSUihtZHJ2LT5rbXMpKSB7CisJCWVyciA9IFBUUl9FUlIobWRydi0+a21z KTsKKwkJZ290byBkZXN0cm95X21kZXY7CisJfQorCiAJcmV0dXJuIDA7CiAKK2Rlc3Ryb3lfbWRl djoKKwlrb21lZGFfZGV2X2Rlc3Ryb3kobWRydi0+bWRldik7CiBmcmVlX21kcnY6Ci0Ja2ZyZWUo bWRydik7CisJZGV2bV9rZnJlZShkZXYsIG1kcnYpOwogCXJldHVybiBlcnI7CiB9CiAKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2ttcy5jIGIv ZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfa21zLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44NDFlZTg0MDI4MTIKLS0tIC9kZXYvbnVs bAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9rbXMuYwpA QCAtMCwwICsxLDE2OCBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8q CisgKiAoQykgQ09QWVJJR0hUIDIwMTggQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu CisgKiBBdXRob3I6IEphbWVzLlFpYW4uV2FuZyA8amFtZXMucWlhbi53YW5nQGFybS5jb20+Cisg KgorICovCisjaW5jbHVkZSA8bGludXgvY29tcG9uZW50Lmg+CisjaW5jbHVkZSA8ZHJtL2RybV9h dG9taWMuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KKyNpbmNsdWRlIDxk cm0vZHJtX2dlbV9mcmFtZWJ1ZmZlcl9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9j bWFfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4KKyNpbmNsdWRlIDxs aW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlICJrb21lZGFfZGV2LmgiCisjaW5jbHVkZSAia29t ZWRhX2ttcy5oIgorI2luY2x1ZGUgImtvbWVkYV9mcmFtZWJ1ZmZlci5oIgorCitERUZJTkVfRFJN X0dFTV9DTUFfRk9QUyhrb21lZGFfY21hX2ZvcHMpOworCitzdGF0aWMgaW50IGtvbWVkYV9nZW1f Y21hX2R1bWJfY3JlYXRlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwKKwkJCQkgICAgICBzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAorCQkJCSAgICAgIHN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfZHVtYiAq YXJncykKK3sKKwl1MzIgYWxpZ25tZW50ID0gMTY7IC8qIFRPRE8gZ2V0IGFsaWdubWVudCBmcm9t IGRldiAqLworCisJYXJncy0+cGl0Y2ggPSBBTElHTihESVZfUk9VTkRfVVAoYXJncy0+d2lkdGgg KiBhcmdzLT5icHAsIDgpLCBhbGlnbm1lbnQpOworCisJcmV0dXJuIGRybV9nZW1fY21hX2R1bWJf Y3JlYXRlX2ludGVybmFsKGZpbGUsIGRldiwgYXJncyk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZHJt X2RyaXZlciBrb21lZGFfa21zX2RyaXZlciA9IHsKKwkuZHJpdmVyX2ZlYXR1cmVzID0gRFJJVkVS X0dFTSB8IERSSVZFUl9NT0RFU0VUIHwgRFJJVkVSX0FUT01JQyB8CisJCQkgICBEUklWRVJfUFJJ TUUsCisJLmxhc3RjbG9zZQkJCT0gZHJtX2ZiX2hlbHBlcl9sYXN0Y2xvc2UsCisJLmdlbV9mcmVl X29iamVjdF91bmxvY2tlZAk9IGRybV9nZW1fY21hX2ZyZWVfb2JqZWN0LAorCS5nZW1fdm1fb3Bz CQkJPSAmZHJtX2dlbV9jbWFfdm1fb3BzLAorCS5kdW1iX2NyZWF0ZQkJCT0ga29tZWRhX2dlbV9j bWFfZHVtYl9jcmVhdGUsCisJLnByaW1lX2hhbmRsZV90b19mZAkJPSBkcm1fZ2VtX3ByaW1lX2hh bmRsZV90b19mZCwKKwkucHJpbWVfZmRfdG9faGFuZGxlCQk9IGRybV9nZW1fcHJpbWVfZmRfdG9f aGFuZGxlLAorCS5nZW1fcHJpbWVfZXhwb3J0CQk9IGRybV9nZW1fcHJpbWVfZXhwb3J0LAorCS5n ZW1fcHJpbWVfaW1wb3J0CQk9IGRybV9nZW1fcHJpbWVfaW1wb3J0LAorCS5nZW1fcHJpbWVfZ2V0 X3NnX3RhYmxlCQk9IGRybV9nZW1fY21hX3ByaW1lX2dldF9zZ190YWJsZSwKKwkuZ2VtX3ByaW1l X2ltcG9ydF9zZ190YWJsZQk9IGRybV9nZW1fY21hX3ByaW1lX2ltcG9ydF9zZ190YWJsZSwKKwku Z2VtX3ByaW1lX3ZtYXAJCQk9IGRybV9nZW1fY21hX3ByaW1lX3ZtYXAsCisJLmdlbV9wcmltZV92 dW5tYXAJCT0gZHJtX2dlbV9jbWFfcHJpbWVfdnVubWFwLAorCS5nZW1fcHJpbWVfbW1hcAkJCT0g ZHJtX2dlbV9jbWFfcHJpbWVfbW1hcCwKKwkuZm9wcyA9ICZrb21lZGFfY21hX2ZvcHMsCisJLm5h bWUgPSAia29tZWRhIiwKKwkuZGVzYyA9ICJBUk0gTWFsaSBLb21lZGEgRGlzcGxheSBQcm9jZXNz b3IgZHJpdmVyIiwKKwkuZGF0ZSA9ICIyMDE4MTEwMSIsCisJLm1ham9yID0gMSwKKwkubWlub3Ig PSAwLAorfTsKKworc3RhdGljIHZvaWQga29tZWRhX2ttc19jb21taXRfdGFpbChzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBv bGRfc3RhdGUtPmRldjsKKworCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9tb2Rlc2V0X2Rpc2Fi bGVzKGRldiwgb2xkX3N0YXRlKTsKKworCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXMo ZGV2LCBvbGRfc3RhdGUsIDApOworCisJZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X21vZGVzZXRf ZW5hYmxlcyhkZXYsIG9sZF9zdGF0ZSk7CisKKwlkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl9m bGlwX2RvbmUoZGV2LCBvbGRfc3RhdGUpOworCisJZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X2h3 X2RvbmUob2xkX3N0YXRlKTsKKworCWRybV9hdG9taWNfaGVscGVyX2NsZWFudXBfcGxhbmVzKGRl diwgb2xkX3N0YXRlKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9jb25maWdf aGVscGVyX2Z1bmNzIGtvbWVkYV9tb2RlX2NvbmZpZ19oZWxwZXJzID0geworCS5hdG9taWNfY29t bWl0X3RhaWwgPSBrb21lZGFfa21zX2NvbW1pdF90YWlsLAorfTsKKworc3RhdGljIGNvbnN0IHN0 cnVjdCBkcm1fbW9kZV9jb25maWdfZnVuY3Mga29tZWRhX21vZGVfY29uZmlnX2Z1bmNzID0gewor CS5mYl9jcmVhdGUJCT0ga29tZWRhX2ZiX2NyZWF0ZSwKKwkuYXRvbWljX2NoZWNrCQk9IE5VTEws Lyprb21lZGFfa21zX2NoZWNrKi8KKwkuYXRvbWljX2NvbW1pdAkJPSBkcm1fYXRvbWljX2hlbHBl cl9jb21taXQsCit9OworCitzdGF0aWMgdm9pZCBrb21lZGFfa21zX21vZGVfY29uZmlnX2luaXQo c3RydWN0IGtvbWVkYV9rbXNfZGV2ICprbXMsCisJCQkJCXN0cnVjdCBrb21lZGFfZGV2ICptZGV2 KQoreworCXN0cnVjdCBkcm1fbW9kZV9jb25maWcgKmNvbmZpZyA9ICZrbXMtPmJhc2UubW9kZV9j b25maWc7CisKKwlkcm1fbW9kZV9jb25maWdfaW5pdCgma21zLT5iYXNlKTsKKworCWtvbWVkYV9r bXNfc2V0dXBfY3J0Y3Moa21zLCBtZGV2KTsKKworCS8qIEdldCB2YWx1ZSBmcm9tIGRldiAqLwor CWNvbmZpZy0+bWluX3dpZHRoCT0gMDsKKwljb25maWctPm1pbl9oZWlnaHQJPSAwOworCWNvbmZp Zy0+bWF4X3dpZHRoCT0gNDA5NjsKKwljb25maWctPm1heF9oZWlnaHQJPSA0MDk2OworCWNvbmZp Zy0+YWxsb3dfZmJfbW9kaWZpZXJzID0gdHJ1ZTsKKworCWNvbmZpZy0+ZnVuY3MgPSAma29tZWRh X21vZGVfY29uZmlnX2Z1bmNzOworCWNvbmZpZy0+aGVscGVyX3ByaXZhdGUgPSAma29tZWRhX21v ZGVfY29uZmlnX2hlbHBlcnM7Cit9CisKK3N0cnVjdCBrb21lZGFfa21zX2RldiAqa29tZWRhX2tt c19hdHRhY2goc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYpCit7CisJc3RydWN0IGtvbWVkYV9rbXNf ZGV2ICprbXMgPSBremFsbG9jKHNpemVvZigqa21zKSwgR0ZQX0tFUk5FTCk7CisJc3RydWN0IGRy bV9kZXZpY2UgKmRybTsKKwlpbnQgZXJyOworCisJaWYgKGttcyA9PSBOVUxMKQorCQlyZXR1cm4g RVJSX1BUUigtRU5PTUVNKTsKKworCWRybSA9ICZrbXMtPmJhc2U7CisJZXJyID0gZHJtX2Rldl9p bml0KGRybSwgJmtvbWVkYV9rbXNfZHJpdmVyLCBtZGV2LT5kZXYpOworCWlmIChlcnIpCisJCWdv dG8gZnJlZV9rbXM7CisKKwlkcm0tPmRldl9wcml2YXRlID0gbWRldjsKKworCWtvbWVkYV9rbXNf bW9kZV9jb25maWdfaW5pdChrbXMsIG1kZXYpOworCisJZXJyID0ga29tZWRhX2ttc19hZGRfcHJp dmF0ZV9vYmpzKGttcywgbWRldik7CisJaWYgKGVycikKKwkJZ290byBjbGVhbnVwX21vZGVfY29u ZmlnOworCisJZXJyID0ga29tZWRhX2ttc19hZGRfcGxhbmVzKGttcywgbWRldik7CisJaWYgKGVy cikKKwkJZ290byBjbGVhbnVwX21vZGVfY29uZmlnOworCisJZXJyID0gZHJtX3ZibGFua19pbml0 KGRybSwga21zLT5uX2NydGNzKTsKKwlpZiAoZXJyKQorCQlnb3RvIGNsZWFudXBfbW9kZV9jb25m aWc7CisKKwllcnIgPSBrb21lZGFfa21zX2FkZF9jcnRjcyhrbXMsIG1kZXYpOworCWlmIChlcnIp CisJCWdvdG8gY2xlYW51cF9tb2RlX2NvbmZpZzsKKworCWVyciA9IGNvbXBvbmVudF9iaW5kX2Fs bChtZGV2LT5kZXYsIGttcyk7CisJaWYgKGVycikKKwkJZ290byBjbGVhbnVwX21vZGVfY29uZmln OworCisJZHJtX21vZGVfY29uZmlnX3Jlc2V0KGRybSk7CisKKwllcnIgPSBkcm1fZGV2X3JlZ2lz dGVyKGRybSwgMCk7CisJaWYgKGVycikKKwkJZ290byB1bmluc3RhbGxfaXJxOworCisJcmV0dXJu IGttczsKKwordW5pbnN0YWxsX2lycToKKwlkcm1faXJxX3VuaW5zdGFsbChkcm0pOworY2xlYW51 cF9tb2RlX2NvbmZpZzoKKwlkcm1fbW9kZV9jb25maWdfY2xlYW51cChkcm0pOworZnJlZV9rbXM6 CisJa2ZyZWUoa21zKTsKKwlyZXR1cm4gRVJSX1BUUihlcnIpOworfQorCit2b2lkIGtvbWVkYV9r bXNfZGV0YWNoKHN0cnVjdCBrb21lZGFfa21zX2RldiAqa21zKQoreworCXN0cnVjdCBkcm1fZGV2 aWNlICpkcm0gPSAma21zLT5iYXNlOworCXN0cnVjdCBrb21lZGFfZGV2ICptZGV2ID0gZHJtLT5k ZXZfcHJpdmF0ZTsKKworCWRybV9kZXZfdW5yZWdpc3Rlcihkcm0pOworCWNvbXBvbmVudF91bmJp bmRfYWxsKG1kZXYtPmRldiwgZHJtKTsKKwlrb21lZGFfa21zX2NsZWFudXBfcHJpdmF0ZV9vYmpz KG1kZXYpOworCWRybV9tb2RlX2NvbmZpZ19jbGVhbnVwKGRybSk7CisJZHJtLT5kZXZfcHJpdmF0 ZSA9IE5VTEw7CisJZHJtX2Rldl9wdXQoZHJtKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2ttcy5oIGIvZHJpdmVycy9ncHUvZHJtL2Fy bS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfa21zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi44ODEwZTk4NmJjYmMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dw dS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9rbXMuaApAQCAtMCwwICsxLDExMyBAQAor LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KKy8qCisgKiAoQykgQ09QWVJJ R0hUIDIwMTggQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBBdXRob3I6IEph bWVzLlFpYW4uV2FuZyA8amFtZXMucWlhbi53YW5nQGFybS5jb20+CisgKgorICovCisjaWZuZGVm IF9LT01FREFfS01TX0hfCisjZGVmaW5lIF9LT01FREFfS01TX0hfCisKKyNpbmNsdWRlIDxkcm0v ZHJtX2F0b21pYy5oPgorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgorI2luY2x1 ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3dyaXRlYmFjay5o PgorCisvKiogc3RydWN0IGtvbWVkYV9wbGFuZSAtIGtvbWVkYSBpbnN0YW5jZSBvZiBkcm1fcGxh bmUgKi8KK3N0cnVjdCBrb21lZGFfcGxhbmUgeworCS8qKiBAYmFzZTogJmRybV9wbGFuZSAqLwor CXN0cnVjdCBkcm1fcGxhbmUgYmFzZTsKKwkvKioKKwkgKiBAbGF5ZXI6CisJICoKKwkgKiByZXBy ZXNlbnRzIGF2YWlsYWJsZSBsYXllciBpbnB1dCBwaXBlbGluZXMgZm9yIHRoaXMgcGxhbmUuCisJ ICoKKwkgKiBOT1RFOgorCSAqIHRoZSBsYXllciBpcyBub3QgZm9yIGEgc3BlY2lmaWMgTGF5ZXIs IGJ1dCBpbmRpY2F0ZSBhIGdyb3VwIG9mCisJICogTGF5ZXJzIHdpdGggc2FtZSBjYXBhYmlsaXRp ZXMuCisJICovCisJc3RydWN0IGtvbWVkYV9sYXllciAqbGF5ZXI7Cit9OworCisvKioKKyAqIHN0 cnVjdCBrb21lZGFfcGxhbmVfc3RhdGUKKyAqCisgKiBUaGUgcGxhbmVfc3RhdGUgY2FuIGJlIHNw bGl0dGVkIGludG8gdHdvIGRhdGEgZmxvdyAobGVmdC9yaWdodCkgYW5kIGhhbmRsZWQKKyAqIGJ5 IHR3byBsYXllcnMgJmtvbWVkYV9wbGFuZS5sYXllciBhbmQgJmtvbWVkYV9wbGFuZS5sYXllci5y aWdodAorICovCitzdHJ1Y3Qga29tZWRhX3BsYW5lX3N0YXRlIHsKKwkvKiogQGJhc2U6ICZkcm1f cGxhbmVfc3RhdGUgKi8KKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIGJhc2U7CisKKwkvKiBwcml2 YXRlIHByb3BlcnRpZXMgKi8KK307CisKKy8qKgorICogc3RydWN0IGtvbWVkYV93Yl9jb25uZWN0 b3IKKyAqLworc3RydWN0IGtvbWVkYV93Yl9jb25uZWN0b3IgeworCS8qKiBAYmFzZTogJmRybV93 cml0ZWJhY2tfY29ubmVjdG9yICovCisJc3RydWN0IGRybV93cml0ZWJhY2tfY29ubmVjdG9yIGJh c2U7CisKKwkvKiogQHdiX2xheWVyOiByZXByZXNlbnRzIGFzc29jaWF0ZWQgd3JpdGViYWNrIHBp cGVsaW5lIG9mIGtvbWVkYSAqLworCXN0cnVjdCBrb21lZGFfbGF5ZXIgKndiX2xheWVyOworfTsK KworLyoqCisgKiBzdHJ1Y3Qga29tZWRhX2NydGMKKyAqLworc3RydWN0IGtvbWVkYV9jcnRjIHsK KwkvKiogQGJhc2U6ICZkcm1fY3J0YyAqLworCXN0cnVjdCBkcm1fY3J0YyBiYXNlOworCS8qKiBA bWFzdGVyOiBvbmx5IG1hc3RlciBoYXMgZGlzcGxheSBvdXRwdXQgKi8KKwlzdHJ1Y3Qga29tZWRh X3BpcGVsaW5lICptYXN0ZXI7CisJLyoqCisJICogQHNsYXZlOiBvcHRpb25hbAorCSAqCisJICog RG9lc24ndCBoYXZlIGl0cyBvd24gZGlzcGxheSBvdXRwdXQsIHRoZSBoYW5kbGVkIGRhdGEgZmxv dyB3aWxsCisJICogbWVyZ2UgaW50byB0aGUgbWFzdGVyLgorCSAqLworCXN0cnVjdCBrb21lZGFf cGlwZWxpbmUgKnNsYXZlOworfTsKKworLyoqIHN0cnVjdCBrb21lZGFfY3J0Y19zdGF0ZSAqLwor c3RydWN0IGtvbWVkYV9jcnRjX3N0YXRlIHsKKwkvKiogQGJhc2U6ICZkcm1fY3J0Y19zdGF0ZSAq LworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSBiYXNlOworCisJLyogcHJpdmF0ZSBwcm9wZXJ0aWVz ICovCisKKwkvKiBjb21wdXRlZCBzdGF0ZSB3aGljaCBhcmUgdXNlZCBieSB2YWxpZGF0ZS9jaGVj ayAqLworCXUzMiBhZmZlY3RlZF9waXBlczsKKwl1MzIgYWN0aXZlX3BpcGVzOworfTsKKworLyoq IHN0cnVjdCBrb21lZGFfa21zX2RldiAtIGZvciBnYXRoZXIgS01TIHJlbGF0ZWQgdGhpbmdzICov CitzdHJ1Y3Qga29tZWRhX2ttc19kZXYgeworCS8qKiBAYmFzZTogJmRybV9kZXZpY2UgKi8KKwlz dHJ1Y3QgZHJtX2RldmljZSBiYXNlOworCisJLyoqIEBuX2NydGNzOiB2YWxpZCBudW1iZXJzIG9m IGNydGNzIGluICZrb21lZGFfa21zX2Rldi5jcnRjcyAqLworCWludCBuX2NydGNzOworCS8qKiBA Y3J0Y3M6IGNydGNzIGxpc3QgKi8KKwlzdHJ1Y3Qga29tZWRhX2NydGMgY3J0Y3NbS09NRURBX01B WF9QSVBFTElORVNdOworfTsKKworI2RlZmluZSB0b19rcGxhbmUocCkJY29udGFpbmVyX29mKHAs IHN0cnVjdCBrb21lZGFfcGxhbmUsIGJhc2UpCisjZGVmaW5lIHRvX2twbGFuZV9zdChwKQljb250 YWluZXJfb2YocCwgc3RydWN0IGtvbWVkYV9wbGFuZV9zdGF0ZSwgYmFzZSkKKyNkZWZpbmUgdG9f a2Nvbm4ocCkJY29udGFpbmVyX29mKHAsIHN0cnVjdCBrb21lZGFfd2JfY29ubmVjdG9yLCBiYXNl KQorI2RlZmluZSB0b19rY3J0YyhwKQljb250YWluZXJfb2YocCwgc3RydWN0IGtvbWVkYV9jcnRj LCBiYXNlKQorI2RlZmluZSB0b19rY3J0Y19zdChwKQljb250YWluZXJfb2YocCwgc3RydWN0IGtv bWVkYV9jcnRjX3N0YXRlLCBiYXNlKQorI2RlZmluZSB0b19rZGV2KHApCWNvbnRhaW5lcl9vZihw LCBzdHJ1Y3Qga29tZWRhX2ttc19kZXYsIGJhc2UpCisKK2ludCBrb21lZGFfa21zX3NldHVwX2Ny dGNzKHN0cnVjdCBrb21lZGFfa21zX2RldiAqa21zLCBzdHJ1Y3Qga29tZWRhX2RldiAqbWRldik7 CisKK2ludCBrb21lZGFfa21zX2FkZF9jcnRjcyhzdHJ1Y3Qga29tZWRhX2ttc19kZXYgKmttcywg c3RydWN0IGtvbWVkYV9kZXYgKm1kZXYpOworaW50IGtvbWVkYV9rbXNfYWRkX3BsYW5lcyhzdHJ1 Y3Qga29tZWRhX2ttc19kZXYgKmttcywgc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYpOworaW50IGtv bWVkYV9rbXNfYWRkX3ByaXZhdGVfb2JqcyhzdHJ1Y3Qga29tZWRhX2ttc19kZXYgKmttcywKKwkJ CQlzdHJ1Y3Qga29tZWRhX2RldiAqbWRldik7Cit2b2lkIGtvbWVkYV9rbXNfY2xlYW51cF9wcml2 YXRlX29ianMoc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYpOworCitzdHJ1Y3Qga29tZWRhX2ttc19k ZXYgKmtvbWVkYV9rbXNfYXR0YWNoKHN0cnVjdCBrb21lZGFfZGV2ICptZGV2KTsKK3ZvaWQga29t ZWRhX2ttc19kZXRhY2goc3RydWN0IGtvbWVkYV9rbXNfZGV2ICprbXMpOworCisjZW5kaWYgLypf S09NRURBX0tNU19IXyovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkv a29tZWRhL2tvbWVkYV9waXBlbGluZS5oIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tv bWVkYS9rb21lZGFfcGlwZWxpbmUuaAppbmRleCBlYWQ4OTc3MjBlMWEuLjQ5ZGQ4NjljYjQ2MiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGlw ZWxpbmUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9w aXBlbGluZS5oCkBAIC0zMjgsNiArMzI4LDkgQEAgc3RydWN0IGtvbWVkYV9waXBlbGluZV9zdGF0 ZSB7CiAjZGVmaW5lIHRvX2ltcHJvY19zdChjKQljb250YWluZXJfb2YoYywgc3RydWN0IGtvbWVk YV9pbXByb2Nfc3RhdGUsIGJhc2UpCiAjZGVmaW5lIHRvX2N0cmxyX3N0KGMpCWNvbnRhaW5lcl9v ZihjLCBzdHJ1Y3Qga29tZWRhX3RpbWluZ19jdHJscl9zdGF0ZSwgYmFzZSkKIAorI2RlZmluZSBw cml2X3RvX2NvbXBfc3QobykgY29udGFpbmVyX29mKG8sIHN0cnVjdCBrb21lZGFfY29tcG9uZW50 X3N0YXRlLCBvYmopCisjZGVmaW5lIHByaXZfdG9fcGlwZV9zdChvKSAgY29udGFpbmVyX29mKG8s IHN0cnVjdCBrb21lZGFfcGlwZWxpbmVfc3RhdGUsIG9iaikKKwogLyogcGlwZWxpbmUgQVBJcyAq Lwogc3RydWN0IGtvbWVkYV9waXBlbGluZSAqCiBrb21lZGFfcGlwZWxpbmVfYWRkKHN0cnVjdCBr b21lZGFfZGV2ICptZGV2LCBzaXplX3Qgc2l6ZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vYXJt L2Rpc3BsYXkva29tZWRhL2tvbWVkYV9wbGFuZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMC4uOTM3YmM4MDBjODFlCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9n cHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGxhbmUuYwpAQCAtMCwwICsxLDEwOSBA QAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8qCisgKiAoQykgQ09QWVJJ R0hUIDIwMTggQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBBdXRob3I6IEph bWVzLlFpYW4uV2FuZyA8amFtZXMucWlhbi53YW5nQGFybS5jb20+CisgKgorICovCisjaW5jbHVk ZSA8ZHJtL2RybV9hdG9taWMuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4K KyNpbmNsdWRlIDxkcm0vZHJtX3BsYW5lX2hlbHBlci5oPgorI2luY2x1ZGUgImtvbWVkYV9kZXYu aCIKKyNpbmNsdWRlICJrb21lZGFfa21zLmgiCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3Bs YW5lX2hlbHBlcl9mdW5jcyBrb21lZGFfcGxhbmVfaGVscGVyX2Z1bmNzID0geworfTsKKworc3Rh dGljIHZvaWQga29tZWRhX3BsYW5lX2Rlc3Ryb3koc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCit7 CisJZHJtX3BsYW5lX2NsZWFudXAocGxhbmUpOworCisJa2ZyZWUodG9fa3BsYW5lKHBsYW5lKSk7 Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIGtvbWVkYV9wbGFuZV9m dW5jcyA9IHsKK307CisKKy8qIGZvciBrb21lZGEsIHdoaWNoIGlzIHBpcGVsaW5lIGNhbiBiZSBz aGFyZSBiZXR3ZWVuIGNydGNzICovCitzdGF0aWMgdTMyIGdldF9wb3NzaWJsZV9jcnRjcyhzdHJ1 Y3Qga29tZWRhX2ttc19kZXYgKmttcywKKwkJCSAgICAgIHN0cnVjdCBrb21lZGFfcGlwZWxpbmUg KnBpcGUpCit7CisJc3RydWN0IGtvbWVkYV9jcnRjICpjcnRjOworCXUzMiBwb3NzaWJsZV9jcnRj cyA9IDA7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwga21zLT5uX2NydGNzOyBpKyspIHsK KwkJY3J0YyA9ICZrbXMtPmNydGNzW2ldOworCisJCWlmICgocGlwZSA9PSBjcnRjLT5tYXN0ZXIp IHx8IChwaXBlID09IGNydGMtPnNsYXZlKSkKKwkJCXBvc3NpYmxlX2NydGNzIHw9IEJJVChpKTsK Kwl9CisKKwlyZXR1cm4gcG9zc2libGVfY3J0Y3M7Cit9CisKKy8qIHVzZSBMYXllcjAgYXMgcHJp bWFyeSAqLworc3RhdGljIHUzMiBnZXRfcGxhbmVfdHlwZShzdHJ1Y3Qga29tZWRhX2ttc19kZXYg KmttcywKKwkJCSAgc3RydWN0IGtvbWVkYV9jb21wb25lbnQgKmMpCit7CisJYm9vbCBpc19wcmlt YXJ5ID0gKGMtPmlkID09IEtPTUVEQV9DT01QT05FTlRfTEFZRVIwKTsKKworCXJldHVybiBpc19w cmltYXJ5ID8gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSA6IERSTV9QTEFORV9UWVBFX09WRVJMQVk7 Cit9CisKK3N0YXRpYyBpbnQga29tZWRhX3BsYW5lX2FkZChzdHJ1Y3Qga29tZWRhX2ttc19kZXYg KmttcywKKwkJCSAgICBzdHJ1Y3Qga29tZWRhX2xheWVyICpsYXllcikKK3sKKwlzdHJ1Y3Qga29t ZWRhX2RldiAqbWRldiA9IGttcy0+YmFzZS5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3Qga29tZWRhX2Nv bXBvbmVudCAqYyA9ICZsYXllci0+YmFzZTsKKwlzdHJ1Y3Qga29tZWRhX3BsYW5lICprcGxhbmU7 CisJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7CisJdTMyICpmb3JtYXRzLCBuX2Zvcm1hdHMgPSAw OworCWludCBlcnI7CisKKwlrcGxhbmUgPSBremFsbG9jKHNpemVvZigqa3BsYW5lKSwgR0ZQX0tF Uk5FTCk7CisJaWYgKGtwbGFuZSA9PSBOVUxMKQorCQlyZXR1cm4gLUVOT01FTTsKKworCXBsYW5l ID0gJmtwbGFuZS0+YmFzZTsKKwlrcGxhbmUtPmxheWVyID0gbGF5ZXI7CisKKwlmb3JtYXRzID0g a29tZWRhX2dldF9sYXllcl9mb3VyY2NfbGlzdCgmbWRldi0+Zm10X3RibCwKKwkJCQkJICAgICAg IGxheWVyLT5sYXllcl90eXBlLCAmbl9mb3JtYXRzKTsKKworCWVyciA9IGRybV91bml2ZXJzYWxf cGxhbmVfaW5pdCgma21zLT5iYXNlLCBwbGFuZSwKKwkJCWdldF9wb3NzaWJsZV9jcnRjcyhrbXMs IGMtPnBpcGVsaW5lKSwKKwkJCSZrb21lZGFfcGxhbmVfZnVuY3MsCisJCQlmb3JtYXRzLCBuX2Zv cm1hdHMsIE5VTEwsCisJCQlnZXRfcGxhbmVfdHlwZShrbXMsIGMpLAorCQkJIiVzIiwgYy0+bmFt ZSk7CisKKwlrb21lZGFfcHV0X2ZvdXJjY19saXN0KGZvcm1hdHMpOworCisJaWYgKGVycikKKwkJ Z290byBjbGVhbnVwOworCisJZHJtX3BsYW5lX2hlbHBlcl9hZGQocGxhbmUsICZrb21lZGFfcGxh bmVfaGVscGVyX2Z1bmNzKTsKKworCXJldHVybiAwOworY2xlYW51cDoKKwlrb21lZGFfcGxhbmVf ZGVzdHJveShwbGFuZSk7CisJcmV0dXJuIGVycjsKK30KKworaW50IGtvbWVkYV9rbXNfYWRkX3Bs YW5lcyhzdHJ1Y3Qga29tZWRhX2ttc19kZXYgKmttcywgc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYp Cit7CisJc3RydWN0IGtvbWVkYV9waXBlbGluZSAqcGlwZTsKKwlpbnQgaSwgaiwgZXJyOworCisJ Zm9yIChpID0gMDsgaSA8IG1kZXYtPm5fcGlwZWxpbmVzOyBpKyspIHsKKwkJcGlwZSA9IG1kZXYt PnBpcGVsaW5lc1tpXTsKKworCQlmb3IgKGogPSAwOyBqIDwgcGlwZS0+bl9sYXllcnM7IGorKykg eworCQkJZXJyID0ga29tZWRhX3BsYW5lX2FkZChrbXMsIHBpcGUtPmxheWVyc1tqXSk7CisJCQlp ZiAoZXJyKQorCQkJCXJldHVybiBlcnI7CisJCX0KKwl9CisKKwlyZXR1cm4gMDsKK30KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3ByaXZhdGVf b2JqLmMgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9wcml2YXRl X29iai5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNmYwZGI4Zjgx OWYyCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVk YS9rb21lZGFfcHJpdmF0ZV9vYmouYwpAQCAtMCwwICsxLDg3IEBACisvLyBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMAorLyoKKyAqIChDKSBDT1BZUklHSFQgMjAxOCBBUk0gTGltaXRl ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIEF1dGhvcjogSmFtZXMuUWlhbi5XYW5nIDxqYW1l cy5xaWFuLndhbmdAYXJtLmNvbT4KKyAqCisgKi8KKyNpbmNsdWRlICJrb21lZGFfZGV2LmgiCisj aW5jbHVkZSAia29tZWRhX2ttcy5oIgorCitzdGF0aWMgc3RydWN0IGRybV9wcml2YXRlX3N0YXRl ICoKK2tvbWVkYV9waXBlbGluZV9hdG9taWNfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fcHJp dmF0ZV9vYmogKm9iaikKK3sKKwlzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lX3N0YXRlICpzdDsKKwor CXN0ID0ga21lbWR1cChvYmotPnN0YXRlLCBzaXplb2YoKnN0KSwgR0ZQX0tFUk5FTCk7CisJaWYg KHN0ID09IE5VTEwpCisJCXJldHVybiBOVUxMOworCisJc3QtPmFjdGl2ZV9jb21wcyA9IDA7CisK KwlfX2RybV9hdG9taWNfaGVscGVyX3ByaXZhdGVfb2JqX2R1cGxpY2F0ZV9zdGF0ZShvYmosICZz dC0+b2JqKTsKKworCXJldHVybiAmc3QtPm9iajsKK30KKworc3RhdGljIHZvaWQKK2tvbWVkYV9w aXBlbGluZV9hdG9taWNfZGVzdHJveV9zdGF0ZShzdHJ1Y3QgZHJtX3ByaXZhdGVfb2JqICpvYmos CisJCQkJICAgICBzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUgKnN0YXRlKQoreworCWtmcmVlKHBy aXZfdG9fcGlwZV9zdChzdGF0ZSkpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wcml2 YXRlX3N0YXRlX2Z1bmNzIGtvbWVkYV9waXBlbGluZV9vYmpfZnVuY3MgPSB7CisJLmF0b21pY19k dXBsaWNhdGVfc3RhdGUJPSBrb21lZGFfcGlwZWxpbmVfYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSwK KwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUJPSBrb21lZGFfcGlwZWxpbmVfYXRvbWljX2Rlc3Ryb3lf c3RhdGUsCit9OworCitzdGF0aWMgaW50IGtvbWVkYV9waXBlbGluZV9vYmpfYWRkKHN0cnVjdCBr b21lZGFfa21zX2RldiAqa21zLAorCQkJCSAgIHN0cnVjdCBrb21lZGFfcGlwZWxpbmUgKnBpcGUp Cit7CisJc3RydWN0IGtvbWVkYV9waXBlbGluZV9zdGF0ZSAqc3Q7CisKKwlzdCA9IGt6YWxsb2Mo c2l6ZW9mKCpzdCksIEdGUF9LRVJORUwpOworCWlmIChzdCA9PSBOVUxMKQorCQlyZXR1cm4gLUVO T01FTTsKKwlzdC0+cGlwZSA9IHBpcGU7CisJZHJtX2F0b21pY19wcml2YXRlX29ial9pbml0KCZw aXBlLT5vYmosICZzdC0+b2JqLAorCQkJCSAgICAma29tZWRhX3BpcGVsaW5lX29ial9mdW5jcyk7 CisKKwlyZXR1cm4gMDsKK30KKworaW50IGtvbWVkYV9rbXNfYWRkX3ByaXZhdGVfb2JqcyhzdHJ1 Y3Qga29tZWRhX2ttc19kZXYgKmttcywKKwkJCQlzdHJ1Y3Qga29tZWRhX2RldiAqbWRldikKK3sK KwlzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lICpwaXBlOworCWludCBpLCBlcnI7CisKKwlmb3IgKGkg PSAwOyBpIDwgbWRldi0+bl9waXBlbGluZXM7IGkrKykgeworCQlwaXBlID0gbWRldi0+cGlwZWxp bmVzW2ldOworCisJCWVyciA9IGtvbWVkYV9waXBlbGluZV9vYmpfYWRkKGttcywgcGlwZSk7CisJ CWlmIChlcnIpCisJCQlyZXR1cm4gZXJyOworCisJCS8qIEFkZCBjb21wb25lbnQgKi8KKwl9CisK KwlyZXR1cm4gMDsKK30KKwordm9pZCBrb21lZGFfa21zX2NsZWFudXBfcHJpdmF0ZV9vYmpzKHN0 cnVjdCBrb21lZGFfZGV2ICptZGV2KQoreworCXN0cnVjdCBrb21lZGFfcGlwZWxpbmUgKnBpcGU7 CisJc3RydWN0IGtvbWVkYV9jb21wb25lbnQgKmM7CisJaW50IGksIGlkOworCisJZm9yIChpID0g MDsgaSA8IG1kZXYtPm5fcGlwZWxpbmVzOyBpKyspIHsKKwkJcGlwZSA9IG1kZXYtPnBpcGVsaW5l c1tpXTsKKwkJZHBfZm9yX2VhY2hfc2V0X2JpdChpZCwgcGlwZS0+YXZhaWxfY29tcHMpIHsKKwkJ CWMgPSBrb21lZGFfcGlwZWxpbmVfZ2V0X2NvbXBvbmVudChwaXBlLCBpZCk7CisKKwkJCWRybV9h dG9taWNfcHJpdmF0ZV9vYmpfZmluaSgmYy0+b2JqKTsKKwkJfQorCQlkcm1fYXRvbWljX3ByaXZh dGVfb2JqX2ZpbmkoJnBpcGUtPm9iaik7CisJfQorfQotLSAKMi4xNy4xCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0 CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK