From mboxrd@z Thu Jan 1 00:00:00 1970 From: "james qian wang (Arm Technology China)" Subject: [PATCH v3 7/9] drm/komeda: Attach komeda_dev to DRM-KMS Date: Fri, 21 Dec 2018 11:48:20 +0000 Message-ID: <20181221114742.25060-1-james.qian.wang@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: 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 ZGFfZGV2LgoKQ2hhbmdlcyBpbiB2MzoKLSBGaXhlZCBzdHlsZSBwcm9ibGVtIGZvdW5kIGJ5IGNo ZWNrcGF0Y2gucGwgLS1zdHJpY3QuCgpDaGFuZ2VzIGluIHYyOgotIFVuaWZpZWQgYWJicmV2aWF0 aW9uIG9mICJwaXBlbGluZSIgdG8gInBpcGUiLgoKU2lnbmVkLW9mZi1ieTogSmFtZXMgKFFpYW4p IFdhbmcgPGphbWVzLnFpYW4ud2FuZ0Bhcm0uY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hcm0v ZGlzcGxheS9rb21lZGEvTWFrZWZpbGUgICB8ICAgNiArLQogLi4uL2dwdS9kcm0vYXJtL2Rpc3Bs YXkva29tZWRhL2tvbWVkYV9jcnRjLmMgIHwgMTA2ICsrKysrKysrKysrCiAuLi4vZ3B1L2RybS9h cm0vZGlzcGxheS9rb21lZGEva29tZWRhX2Rydi5jICAgfCAgMjAgKystCiAuLi4vZ3B1L2RybS9h cm0vZGlzcGxheS9rb21lZGEva29tZWRhX2ttcy5jICAgfCAxNjkgKysrKysrKysrKysrKysrKysr CiAuLi4vZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2ttcy5oICAgfCAxMTMgKysr KysrKysrKysrCiAuLi4vZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGlwZWxpbmUuaCAg fCAgIDMgKwogLi4uL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9wbGFuZS5jIHwg MTA5ICsrKysrKysrKysrCiAuLi4vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9wcml2YXRlX29i ai5jICAgfCAgODggKysrKysrKysrCiA4IGZpbGVzIGNoYW5nZWQsIDYwOSBpbnNlcnRpb25zKCsp LCA1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hcm0v ZGlzcGxheS9rb21lZGEva29tZWRhX2NydGMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2ttcy5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfa21zLmgKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9w bGFuZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tv bWVkYS9rb21lZGFfcHJpdmF0ZV9vYmouYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h cm0vZGlzcGxheS9rb21lZGEvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkv a29tZWRhL01ha2VmaWxlCmluZGV4IDI1YmVhZTkwMGVkMi4uMWI4NzVlNWRjMGY2IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL01ha2VmaWxlCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEvTWFrZWZpbGUKQEAgLTksNyArOSwxMSBA QCBrb21lZGEteSA6PSBcCiAJa29tZWRhX2Rldi5vIFwKIAlrb21lZGFfZm9ybWF0X2NhcHMubyBc CiAJa29tZWRhX3BpcGVsaW5lLm8gXAotCWtvbWVkYV9mcmFtZWJ1ZmZlci5vCisJa29tZWRhX2Zy YW1lYnVmZmVyLm8gXAorCWtvbWVkYV9rbXMubyBcCisJa29tZWRhX2NydGMubyBcCisJa29tZWRh X3BsYW5lLm8gXAorCWtvbWVkYV9wcml2YXRlX29iai5vCiAKIGtvbWVkYS15ICs9IFwKIAlkNzEv ZDcxX2Rldi5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRh L2tvbWVkYV9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVk YV9jcnRjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41YmI1YTU1 ZjZiMzEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29t ZWRhL2tvbWVkYV9jcnRjLmMKQEAgLTAsMCArMSwxMDYgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBHUEwtMi4wCisvKgorICogKEMpIENPUFlSSUdIVCAyMDE4IEFSTSBMaW1pdGVkLiBB bGwgcmlnaHRzIHJlc2VydmVkLgorICogQXV0aG9yOiBKYW1lcy5RaWFuLldhbmcgPGphbWVzLnFp YW4ud2FuZ0Bhcm0uY29tPgorICoKKyAqLworI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgorI2luY2x1 ZGUgPGxpbnV4L3NwaW5sb2NrLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KKyNpbmNs dWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3BsYW5lX2hl bHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KKyNpbmNsdWRlIDxsaW51 eC9wbV9ydW50aW1lLmg+CisjaW5jbHVkZSAia29tZWRhX2Rldi5oIgorI2luY2x1ZGUgImtvbWVk YV9rbXMuaCIKKworc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyBrb21lZGFfY3J0Y19oZWxw ZXJfZnVuY3MgPSB7Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2Z1bmNzIGtv bWVkYV9jcnRjX2Z1bmNzID0geworfTsKKworaW50IGtvbWVkYV9rbXNfc2V0dXBfY3J0Y3Moc3Ry dWN0IGtvbWVkYV9rbXNfZGV2ICprbXMsCisJCQkgICBzdHJ1Y3Qga29tZWRhX2RldiAqbWRldikK K3sKKwlzdHJ1Y3Qga29tZWRhX2NydGMgKmNydGM7CisJc3RydWN0IGtvbWVkYV9waXBlbGluZSAq bWFzdGVyOworCWNoYXIgc3RyWzE2XTsKKwlpbnQgaTsKKworCWttcy0+bl9jcnRjcyA9IDA7CisK Kwlmb3IgKGkgPSAwOyBpIDwgbWRldi0+bl9waXBlbGluZXM7IGkrKykgeworCQljcnRjID0gJmtt cy0+Y3J0Y3Nba21zLT5uX2NydGNzXTsKKwkJbWFzdGVyID0gbWRldi0+cGlwZWxpbmVzW2ldOwor CisJCWNydGMtPm1hc3RlciA9IG1hc3RlcjsKKwkJY3J0Yy0+c2xhdmUgID0gTlVMTDsKKworCQlp ZiAoY3J0Yy0+c2xhdmUpCisJCQlzcHJpbnRmKHN0ciwgInBpcGUtJWQiLCBjcnRjLT5zbGF2ZS0+ aWQpOworCQllbHNlCisJCQlzcHJpbnRmKHN0ciwgIk5vbmUiKTsKKworCQlEUk1fSU5GTygiY3J0 YyVkOiBtYXN0ZXIocGlwZS0lZCkgc2xhdmUoJXMpIG91dHB1dDogJXMuXG4iLAorCQkJIGttcy0+ bl9jcnRjcywgbWFzdGVyLT5pZCwgc3RyLAorCQkJIG1hc3Rlci0+b2Zfb3V0cHV0X2RldiA/CisJ CQkgbWFzdGVyLT5vZl9vdXRwdXRfZGV2LT5mdWxsX25hbWUgOiAiTm9uZSIpOworCisJCWttcy0+ bl9jcnRjcysrOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IGRybV9wbGFu ZSAqCitnZXRfY3J0Y19wcmltYXJ5KHN0cnVjdCBrb21lZGFfa21zX2RldiAqa21zLCBzdHJ1Y3Qg a29tZWRhX2NydGMgKmNydGMpCit7CisJc3RydWN0IGtvbWVkYV9wbGFuZSAqa3BsYW5lOworCXN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lOworCisJZHJtX2Zvcl9lYWNoX3BsYW5lKHBsYW5lLCAma21z LT5iYXNlKSB7CisJCWlmIChwbGFuZS0+dHlwZSAhPSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKQor CQkJY29udGludWU7CisKKwkJa3BsYW5lID0gdG9fa3BsYW5lKHBsYW5lKTsKKwkJLyogb25seSBt YXN0ZXIgY2FuIGJlIHByaW1hcnkgKi8KKwkJaWYgKGtwbGFuZS0+bGF5ZXItPmJhc2UucGlwZWxp bmUgPT0gY3J0Yy0+bWFzdGVyKQorCQkJcmV0dXJuIHBsYW5lOworCX0KKworCXJldHVybiBOVUxM OworfQorCitzdGF0aWMgaW50IGtvbWVkYV9jcnRjX2FkZChzdHJ1Y3Qga29tZWRhX2ttc19kZXYg KmttcywKKwkJCSAgIHN0cnVjdCBrb21lZGFfY3J0YyAqa2NydGMpCit7CisJc3RydWN0IGRybV9j cnRjICpjcnRjID0gJmtjcnRjLT5iYXNlOworCWludCBlcnI7CisKKwllcnIgPSBkcm1fY3J0Y19p bml0X3dpdGhfcGxhbmVzKCZrbXMtPmJhc2UsIGNydGMsCisJCQkJCWdldF9jcnRjX3ByaW1hcnko a21zLCBrY3J0YyksIE5VTEwsCisJCQkJCSZrb21lZGFfY3J0Y19mdW5jcywgTlVMTCk7CisJaWYg KGVycikKKwkJcmV0dXJuIGVycjsKKworCWRybV9jcnRjX2hlbHBlcl9hZGQoY3J0YywgJmtvbWVk YV9jcnRjX2hlbHBlcl9mdW5jcyk7CisJZHJtX2NydGNfdmJsYW5rX3Jlc2V0KGNydGMpOworCisJ Y3J0Yy0+cG9ydCA9IGtjcnRjLT5tYXN0ZXItPm9mX291dHB1dF9wb3J0OworCisJcmV0dXJuIDA7 Cit9CisKK2ludCBrb21lZGFfa21zX2FkZF9jcnRjcyhzdHJ1Y3Qga29tZWRhX2ttc19kZXYgKmtt cywgc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYpCit7CisJaW50IGksIGVycjsKKworCWZvciAoaSA9 IDA7IGkgPCBrbXMtPm5fY3J0Y3M7IGkrKykgeworCQllcnIgPSBrb21lZGFfY3J0Y19hZGQoa21z LCAma21zLT5jcnRjc1tpXSk7CisJCWlmIChlcnIpCisJCQlyZXR1cm4gZXJyOworCX0KKworCXJl dHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVk YS9rb21lZGFfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVk YV9kcnYuYwppbmRleCAzMjZhZTI2NDQ4MWYuLmQ0MjFkMTNlOTc0MiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfZHJ2LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfZHJ2LmMKQEAgLTEwLDIxICsxMCwy NSBAQAogI2luY2x1ZGUgPGxpbnV4L2NvbXBvbmVudC5oPgogI2luY2x1ZGUgPGRybS9kcm1fb2Yu aD4KICNpbmNsdWRlICJrb21lZGFfZGV2LmgiCisjaW5jbHVkZSAia29tZWRhX2ttcy5oIgogCiBz dHJ1Y3Qga29tZWRhX2RydiB7CiAJc3RydWN0IGtvbWVkYV9kZXYgKm1kZXY7CisJc3RydWN0IGtv bWVkYV9rbXNfZGV2ICprbXM7CiB9OwogCiBzdGF0aWMgdm9pZCBrb21lZGFfdW5iaW5kKHN0cnVj dCBkZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3Qga29tZWRhX2RydiAqbWRydiA9IGRldl9nZXRfZHJ2 ZGF0YShkZXYpOwogCi0JZGV2X3NldF9kcnZkYXRhKGRldiwgTlVMTCk7Ci0KIAlpZiAoIW1kcnYp CiAJCXJldHVybjsKIAorCWtvbWVkYV9rbXNfZGV0YWNoKG1kcnYtPmttcyk7CisKIAlrb21lZGFf ZGV2X2Rlc3Ryb3kobWRydi0+bWRldik7CisKKwlkZXZfc2V0X2RydmRhdGEoZGV2LCBOVUxMKTsK IAlrZnJlZShtZHJ2KTsKIH0KIApAQCAtMzMsNyArMzcsNyBAQCBzdGF0aWMgaW50IGtvbWVkYV9i aW5kKHN0cnVjdCBkZXZpY2UgKmRldikKIAlzdHJ1Y3Qga29tZWRhX2RydiAqbWRydjsKIAlpbnQg ZXJyOwogCi0JbWRydiA9IGt6YWxsb2Moc2l6ZW9mKCptZHJ2KSwgR0ZQX0tFUk5FTCk7CisJbWRy diA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqbWRydiksIEdGUF9LRVJORUwpOwogCWlmICgh bWRydikKIAkJcmV0dXJuIC1FTk9NRU07CiAKQEAgLTQ1LDEwICs0OSwxOCBAQCBzdGF0aWMgaW50 IGtvbWVkYV9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldikKIAogCWRldl9zZXRfZHJ2ZGF0YShkZXYs IG1kcnYpOwogCisJbWRydi0+a21zID0ga29tZWRhX2ttc19hdHRhY2gobWRydi0+bWRldik7CisJ aWYgKElTX0VSUihtZHJ2LT5rbXMpKSB7CisJCWVyciA9IFBUUl9FUlIobWRydi0+a21zKTsKKwkJ Z290byBkZXN0cm95X21kZXY7CisJfQorCiAJcmV0dXJuIDA7CiAKK2Rlc3Ryb3lfbWRldjoKKwlr b21lZGFfZGV2X2Rlc3Ryb3kobWRydi0+bWRldik7CiBmcmVlX21kcnY6Ci0Ja2ZyZWUobWRydik7 CisJZGV2bV9rZnJlZShkZXYsIG1kcnYpOwogCXJldHVybiBlcnI7CiB9CiAKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2ttcy5jIGIvZHJpdmVy cy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfa21zLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mZDQ4MzYwY2E1MjQKLS0tIC9kZXYvbnVsbAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9rbXMuYwpAQCAtMCww ICsxLDE2OSBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8qCisgKiAo QykgQ09QWVJJR0hUIDIwMTggQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBB dXRob3I6IEphbWVzLlFpYW4uV2FuZyA8amFtZXMucWlhbi53YW5nQGFybS5jb20+CisgKgorICov CisjaW5jbHVkZSA8bGludXgvY29tcG9uZW50Lmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMu aD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJt X2dlbV9mcmFtZWJ1ZmZlcl9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9jbWFfaGVs cGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9p bnRlcnJ1cHQuaD4KKyNpbmNsdWRlICJrb21lZGFfZGV2LmgiCisjaW5jbHVkZSAia29tZWRhX2tt cy5oIgorI2luY2x1ZGUgImtvbWVkYV9mcmFtZWJ1ZmZlci5oIgorCitERUZJTkVfRFJNX0dFTV9D TUFfRk9QUyhrb21lZGFfY21hX2ZvcHMpOworCitzdGF0aWMgaW50IGtvbWVkYV9nZW1fY21hX2R1 bWJfY3JlYXRlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwKKwkJCQkgICAgICBzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAorCQkJCSAgICAgIHN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfZHVtYiAqYXJncykK K3sKKwl1MzIgYWxpZ25tZW50ID0gMTY7IC8qIFRPRE8gZ2V0IGFsaWdubWVudCBmcm9tIGRldiAq LworCisJYXJncy0+cGl0Y2ggPSBBTElHTihESVZfUk9VTkRfVVAoYXJncy0+d2lkdGggKiBhcmdz LT5icHAsIDgpLAorCQkJICAgIGFsaWdubWVudCk7CisKKwlyZXR1cm4gZHJtX2dlbV9jbWFfZHVt Yl9jcmVhdGVfaW50ZXJuYWwoZmlsZSwgZGV2LCBhcmdzKTsKK30KKworc3RhdGljIHN0cnVjdCBk cm1fZHJpdmVyIGtvbWVkYV9rbXNfZHJpdmVyID0geworCS5kcml2ZXJfZmVhdHVyZXMgPSBEUklW RVJfR0VNIHwgRFJJVkVSX01PREVTRVQgfCBEUklWRVJfQVRPTUlDIHwKKwkJCSAgIERSSVZFUl9Q UklNRSwKKwkubGFzdGNsb3NlCQkJPSBkcm1fZmJfaGVscGVyX2xhc3RjbG9zZSwKKwkuZ2VtX2Zy ZWVfb2JqZWN0X3VubG9ja2VkCT0gZHJtX2dlbV9jbWFfZnJlZV9vYmplY3QsCisJLmdlbV92bV9v cHMJCQk9ICZkcm1fZ2VtX2NtYV92bV9vcHMsCisJLmR1bWJfY3JlYXRlCQkJPSBrb21lZGFfZ2Vt X2NtYV9kdW1iX2NyZWF0ZSwKKwkucHJpbWVfaGFuZGxlX3RvX2ZkCQk9IGRybV9nZW1fcHJpbWVf aGFuZGxlX3RvX2ZkLAorCS5wcmltZV9mZF90b19oYW5kbGUJCT0gZHJtX2dlbV9wcmltZV9mZF90 b19oYW5kbGUsCisJLmdlbV9wcmltZV9leHBvcnQJCT0gZHJtX2dlbV9wcmltZV9leHBvcnQsCisJ LmdlbV9wcmltZV9pbXBvcnQJCT0gZHJtX2dlbV9wcmltZV9pbXBvcnQsCisJLmdlbV9wcmltZV9n ZXRfc2dfdGFibGUJCT0gZHJtX2dlbV9jbWFfcHJpbWVfZ2V0X3NnX3RhYmxlLAorCS5nZW1fcHJp bWVfaW1wb3J0X3NnX3RhYmxlCT0gZHJtX2dlbV9jbWFfcHJpbWVfaW1wb3J0X3NnX3RhYmxlLAor CS5nZW1fcHJpbWVfdm1hcAkJCT0gZHJtX2dlbV9jbWFfcHJpbWVfdm1hcCwKKwkuZ2VtX3ByaW1l X3Z1bm1hcAkJPSBkcm1fZ2VtX2NtYV9wcmltZV92dW5tYXAsCisJLmdlbV9wcmltZV9tbWFwCQkJ PSBkcm1fZ2VtX2NtYV9wcmltZV9tbWFwLAorCS5mb3BzID0gJmtvbWVkYV9jbWFfZm9wcywKKwku bmFtZSA9ICJrb21lZGEiLAorCS5kZXNjID0gIkFSTSBNYWxpIEtvbWVkYSBEaXNwbGF5IFByb2Nl c3NvciBkcml2ZXIiLAorCS5kYXRlID0gIjIwMTgxMTAxIiwKKwkubWFqb3IgPSAwLAorCS5taW5v ciA9IDEsCit9OworCitzdGF0aWMgdm9pZCBrb21lZGFfa21zX2NvbW1pdF90YWlsKHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IG9sZF9zdGF0ZS0+ZGV2OworCisJZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X21vZGVzZXRfZGlz YWJsZXMoZGV2LCBvbGRfc3RhdGUpOworCisJZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3BsYW5l cyhkZXYsIG9sZF9zdGF0ZSwgMCk7CisKKwlkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfbW9kZXNl dF9lbmFibGVzKGRldiwgb2xkX3N0YXRlKTsKKworCWRybV9hdG9taWNfaGVscGVyX3dhaXRfZm9y X2ZsaXBfZG9uZShkZXYsIG9sZF9zdGF0ZSk7CisKKwlkcm1fYXRvbWljX2hlbHBlcl9jb21taXRf aHdfZG9uZShvbGRfc3RhdGUpOworCisJZHJtX2F0b21pY19oZWxwZXJfY2xlYW51cF9wbGFuZXMo ZGV2LCBvbGRfc3RhdGUpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9tb2RlX2NvbmZp Z19oZWxwZXJfZnVuY3Mga29tZWRhX21vZGVfY29uZmlnX2hlbHBlcnMgPSB7CisJLmF0b21pY19j b21taXRfdGFpbCA9IGtvbWVkYV9rbXNfY29tbWl0X3RhaWwsCit9OworCitzdGF0aWMgY29uc3Qg c3RydWN0IGRybV9tb2RlX2NvbmZpZ19mdW5jcyBrb21lZGFfbW9kZV9jb25maWdfZnVuY3MgPSB7 CisJLmZiX2NyZWF0ZQkJPSBrb21lZGFfZmJfY3JlYXRlLAorCS5hdG9taWNfY2hlY2sJCT0gTlVM TCwvKmtvbWVkYV9rbXNfY2hlY2sqLworCS5hdG9taWNfY29tbWl0CQk9IGRybV9hdG9taWNfaGVs cGVyX2NvbW1pdCwKK307CisKK3N0YXRpYyB2b2lkIGtvbWVkYV9rbXNfbW9kZV9jb25maWdfaW5p dChzdHJ1Y3Qga29tZWRhX2ttc19kZXYgKmttcywKKwkJCQkJc3RydWN0IGtvbWVkYV9kZXYgKm1k ZXYpCit7CisJc3RydWN0IGRybV9tb2RlX2NvbmZpZyAqY29uZmlnID0gJmttcy0+YmFzZS5tb2Rl X2NvbmZpZzsKKworCWRybV9tb2RlX2NvbmZpZ19pbml0KCZrbXMtPmJhc2UpOworCisJa29tZWRh X2ttc19zZXR1cF9jcnRjcyhrbXMsIG1kZXYpOworCisJLyogR2V0IHZhbHVlIGZyb20gZGV2ICov CisJY29uZmlnLT5taW5fd2lkdGgJPSAwOworCWNvbmZpZy0+bWluX2hlaWdodAk9IDA7CisJY29u ZmlnLT5tYXhfd2lkdGgJPSA0MDk2OworCWNvbmZpZy0+bWF4X2hlaWdodAk9IDQwOTY7CisJY29u ZmlnLT5hbGxvd19mYl9tb2RpZmllcnMgPSB0cnVlOworCisJY29uZmlnLT5mdW5jcyA9ICZrb21l ZGFfbW9kZV9jb25maWdfZnVuY3M7CisJY29uZmlnLT5oZWxwZXJfcHJpdmF0ZSA9ICZrb21lZGFf bW9kZV9jb25maWdfaGVscGVyczsKK30KKworc3RydWN0IGtvbWVkYV9rbXNfZGV2ICprb21lZGFf a21zX2F0dGFjaChzdHJ1Y3Qga29tZWRhX2RldiAqbWRldikKK3sKKwlzdHJ1Y3Qga29tZWRhX2tt c19kZXYgKmttcyA9IGt6YWxsb2Moc2l6ZW9mKCprbXMpLCBHRlBfS0VSTkVMKTsKKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZHJtOworCWludCBlcnI7CisKKwlpZiAoIWttcykKKwkJcmV0dXJuIEVSUl9Q VFIoLUVOT01FTSk7CisKKwlkcm0gPSAma21zLT5iYXNlOworCWVyciA9IGRybV9kZXZfaW5pdChk cm0sICZrb21lZGFfa21zX2RyaXZlciwgbWRldi0+ZGV2KTsKKwlpZiAoZXJyKQorCQlnb3RvIGZy ZWVfa21zOworCisJZHJtLT5kZXZfcHJpdmF0ZSA9IG1kZXY7CisKKwlrb21lZGFfa21zX21vZGVf Y29uZmlnX2luaXQoa21zLCBtZGV2KTsKKworCWVyciA9IGtvbWVkYV9rbXNfYWRkX3ByaXZhdGVf b2JqcyhrbXMsIG1kZXYpOworCWlmIChlcnIpCisJCWdvdG8gY2xlYW51cF9tb2RlX2NvbmZpZzsK KworCWVyciA9IGtvbWVkYV9rbXNfYWRkX3BsYW5lcyhrbXMsIG1kZXYpOworCWlmIChlcnIpCisJ CWdvdG8gY2xlYW51cF9tb2RlX2NvbmZpZzsKKworCWVyciA9IGRybV92YmxhbmtfaW5pdChkcm0s IGttcy0+bl9jcnRjcyk7CisJaWYgKGVycikKKwkJZ290byBjbGVhbnVwX21vZGVfY29uZmlnOwor CisJZXJyID0ga29tZWRhX2ttc19hZGRfY3J0Y3Moa21zLCBtZGV2KTsKKwlpZiAoZXJyKQorCQln b3RvIGNsZWFudXBfbW9kZV9jb25maWc7CisKKwllcnIgPSBjb21wb25lbnRfYmluZF9hbGwobWRl di0+ZGV2LCBrbXMpOworCWlmIChlcnIpCisJCWdvdG8gY2xlYW51cF9tb2RlX2NvbmZpZzsKKwor CWRybV9tb2RlX2NvbmZpZ19yZXNldChkcm0pOworCisJZXJyID0gZHJtX2Rldl9yZWdpc3Rlcihk cm0sIDApOworCWlmIChlcnIpCisJCWdvdG8gdW5pbnN0YWxsX2lycTsKKworCXJldHVybiBrbXM7 CisKK3VuaW5zdGFsbF9pcnE6CisJZHJtX2lycV91bmluc3RhbGwoZHJtKTsKK2NsZWFudXBfbW9k ZV9jb25maWc6CisJZHJtX21vZGVfY29uZmlnX2NsZWFudXAoZHJtKTsKK2ZyZWVfa21zOgorCWtm cmVlKGttcyk7CisJcmV0dXJuIEVSUl9QVFIoZXJyKTsKK30KKwordm9pZCBrb21lZGFfa21zX2Rl dGFjaChzdHJ1Y3Qga29tZWRhX2ttc19kZXYgKmttcykKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZHJtID0gJmttcy0+YmFzZTsKKwlzdHJ1Y3Qga29tZWRhX2RldiAqbWRldiA9IGRybS0+ZGV2X3By aXZhdGU7CisKKwlkcm1fZGV2X3VucmVnaXN0ZXIoZHJtKTsKKwljb21wb25lbnRfdW5iaW5kX2Fs bChtZGV2LT5kZXYsIGRybSk7CisJa29tZWRhX2ttc19jbGVhbnVwX3ByaXZhdGVfb2JqcyhtZGV2 KTsKKwlkcm1fbW9kZV9jb25maWdfY2xlYW51cChkcm0pOworCWRybS0+ZGV2X3ByaXZhdGUgPSBO VUxMOworCWRybV9kZXZfcHV0KGRybSk7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9rbXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlz cGxheS9rb21lZGEva29tZWRhX2ttcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uZjEzNjY2MDA0YTQyCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJt L2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfa21zLmgKQEAgLTAsMCArMSwxMTMgQEAKKy8qIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCisvKgorICogKEMpIENPUFlSSUdIVCAy MDE4IEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQXV0aG9yOiBKYW1lcy5R aWFuLldhbmcgPGphbWVzLnFpYW4ud2FuZ0Bhcm0uY29tPgorICoKKyAqLworI2lmbmRlZiBfS09N RURBX0tNU19IXworI2RlZmluZSBfS09NRURBX0tNU19IXworCisjaW5jbHVkZSA8ZHJtL2RybV9h dG9taWMuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KKyNpbmNsdWRlIDxk cm0vZHJtX2NydGNfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV93cml0ZWJhY2suaD4KKwor LyoqIHN0cnVjdCBrb21lZGFfcGxhbmUgLSBrb21lZGEgaW5zdGFuY2Ugb2YgZHJtX3BsYW5lICov CitzdHJ1Y3Qga29tZWRhX3BsYW5lIHsKKwkvKiogQGJhc2U6ICZkcm1fcGxhbmUgKi8KKwlzdHJ1 Y3QgZHJtX3BsYW5lIGJhc2U7CisJLyoqCisJICogQGxheWVyOgorCSAqCisJICogcmVwcmVzZW50 cyBhdmFpbGFibGUgbGF5ZXIgaW5wdXQgcGlwZWxpbmVzIGZvciB0aGlzIHBsYW5lLgorCSAqCisJ ICogTk9URToKKwkgKiB0aGUgbGF5ZXIgaXMgbm90IGZvciBhIHNwZWNpZmljIExheWVyLCBidXQg aW5kaWNhdGUgYSBncm91cCBvZgorCSAqIExheWVycyB3aXRoIHNhbWUgY2FwYWJpbGl0aWVzLgor CSAqLworCXN0cnVjdCBrb21lZGFfbGF5ZXIgKmxheWVyOworfTsKKworLyoqCisgKiBzdHJ1Y3Qg a29tZWRhX3BsYW5lX3N0YXRlCisgKgorICogVGhlIHBsYW5lX3N0YXRlIGNhbiBiZSBzcGxpdCBp bnRvIHR3byBkYXRhIGZsb3cgKGxlZnQvcmlnaHQpIGFuZCBoYW5kbGVkCisgKiBieSB0d28gbGF5 ZXJzICZrb21lZGFfcGxhbmUubGF5ZXIgYW5kICZrb21lZGFfcGxhbmUubGF5ZXIucmlnaHQKKyAq Lworc3RydWN0IGtvbWVkYV9wbGFuZV9zdGF0ZSB7CisJLyoqIEBiYXNlOiAmZHJtX3BsYW5lX3N0 YXRlICovCisJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBiYXNlOworCisJLyogcHJpdmF0ZSBwcm9w ZXJ0aWVzICovCit9OworCisvKioKKyAqIHN0cnVjdCBrb21lZGFfd2JfY29ubmVjdG9yCisgKi8K K3N0cnVjdCBrb21lZGFfd2JfY29ubmVjdG9yIHsKKwkvKiogQGJhc2U6ICZkcm1fd3JpdGViYWNr X2Nvbm5lY3RvciAqLworCXN0cnVjdCBkcm1fd3JpdGViYWNrX2Nvbm5lY3RvciBiYXNlOworCisJ LyoqIEB3Yl9sYXllcjogcmVwcmVzZW50cyBhc3NvY2lhdGVkIHdyaXRlYmFjayBwaXBlbGluZSBv ZiBrb21lZGEgKi8KKwlzdHJ1Y3Qga29tZWRhX2xheWVyICp3Yl9sYXllcjsKK307CisKKy8qKgor ICogc3RydWN0IGtvbWVkYV9jcnRjCisgKi8KK3N0cnVjdCBrb21lZGFfY3J0YyB7CisJLyoqIEBi YXNlOiAmZHJtX2NydGMgKi8KKwlzdHJ1Y3QgZHJtX2NydGMgYmFzZTsKKwkvKiogQG1hc3Rlcjog b25seSBtYXN0ZXIgaGFzIGRpc3BsYXkgb3V0cHV0ICovCisJc3RydWN0IGtvbWVkYV9waXBlbGlu ZSAqbWFzdGVyOworCS8qKgorCSAqIEBzbGF2ZTogb3B0aW9uYWwKKwkgKgorCSAqIERvZXNuJ3Qg aGF2ZSBpdHMgb3duIGRpc3BsYXkgb3V0cHV0LCB0aGUgaGFuZGxlZCBkYXRhIGZsb3cgd2lsbAor CSAqIG1lcmdlIGludG8gdGhlIG1hc3Rlci4KKwkgKi8KKwlzdHJ1Y3Qga29tZWRhX3BpcGVsaW5l ICpzbGF2ZTsKK307CisKKy8qKiBzdHJ1Y3Qga29tZWRhX2NydGNfc3RhdGUgKi8KK3N0cnVjdCBr b21lZGFfY3J0Y19zdGF0ZSB7CisJLyoqIEBiYXNlOiAmZHJtX2NydGNfc3RhdGUgKi8KKwlzdHJ1 Y3QgZHJtX2NydGNfc3RhdGUgYmFzZTsKKworCS8qIHByaXZhdGUgcHJvcGVydGllcyAqLworCisJ LyogY29tcHV0ZWQgc3RhdGUgd2hpY2ggYXJlIHVzZWQgYnkgdmFsaWRhdGUvY2hlY2sgKi8KKwl1 MzIgYWZmZWN0ZWRfcGlwZXM7CisJdTMyIGFjdGl2ZV9waXBlczsKK307CisKKy8qKiBzdHJ1Y3Qg a29tZWRhX2ttc19kZXYgLSBmb3IgZ2F0aGVyIEtNUyByZWxhdGVkIHRoaW5ncyAqLworc3RydWN0 IGtvbWVkYV9rbXNfZGV2IHsKKwkvKiogQGJhc2U6ICZkcm1fZGV2aWNlICovCisJc3RydWN0IGRy bV9kZXZpY2UgYmFzZTsKKworCS8qKiBAbl9jcnRjczogdmFsaWQgbnVtYmVycyBvZiBjcnRjcyBp biAma29tZWRhX2ttc19kZXYuY3J0Y3MgKi8KKwlpbnQgbl9jcnRjczsKKwkvKiogQGNydGNzOiBj cnRjcyBsaXN0ICovCisJc3RydWN0IGtvbWVkYV9jcnRjIGNydGNzW0tPTUVEQV9NQVhfUElQRUxJ TkVTXTsKK307CisKKyNkZWZpbmUgdG9fa3BsYW5lKHApCWNvbnRhaW5lcl9vZihwLCBzdHJ1Y3Qg a29tZWRhX3BsYW5lLCBiYXNlKQorI2RlZmluZSB0b19rcGxhbmVfc3QocCkJY29udGFpbmVyX29m KHAsIHN0cnVjdCBrb21lZGFfcGxhbmVfc3RhdGUsIGJhc2UpCisjZGVmaW5lIHRvX2tjb25uKHAp CWNvbnRhaW5lcl9vZihwLCBzdHJ1Y3Qga29tZWRhX3diX2Nvbm5lY3RvciwgYmFzZSkKKyNkZWZp bmUgdG9fa2NydGMocCkJY29udGFpbmVyX29mKHAsIHN0cnVjdCBrb21lZGFfY3J0YywgYmFzZSkK KyNkZWZpbmUgdG9fa2NydGNfc3QocCkJY29udGFpbmVyX29mKHAsIHN0cnVjdCBrb21lZGFfY3J0 Y19zdGF0ZSwgYmFzZSkKKyNkZWZpbmUgdG9fa2RldihwKQljb250YWluZXJfb2YocCwgc3RydWN0 IGtvbWVkYV9rbXNfZGV2LCBiYXNlKQorCitpbnQga29tZWRhX2ttc19zZXR1cF9jcnRjcyhzdHJ1 Y3Qga29tZWRhX2ttc19kZXYgKmttcywgc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYpOworCitpbnQg a29tZWRhX2ttc19hZGRfY3J0Y3Moc3RydWN0IGtvbWVkYV9rbXNfZGV2ICprbXMsIHN0cnVjdCBr b21lZGFfZGV2ICptZGV2KTsKK2ludCBrb21lZGFfa21zX2FkZF9wbGFuZXMoc3RydWN0IGtvbWVk YV9rbXNfZGV2ICprbXMsIHN0cnVjdCBrb21lZGFfZGV2ICptZGV2KTsKK2ludCBrb21lZGFfa21z X2FkZF9wcml2YXRlX29ianMoc3RydWN0IGtvbWVkYV9rbXNfZGV2ICprbXMsCisJCQkJc3RydWN0 IGtvbWVkYV9kZXYgKm1kZXYpOwordm9pZCBrb21lZGFfa21zX2NsZWFudXBfcHJpdmF0ZV9vYmpz KHN0cnVjdCBrb21lZGFfZGV2ICptZGV2KTsKKworc3RydWN0IGtvbWVkYV9rbXNfZGV2ICprb21l ZGFfa21zX2F0dGFjaChzdHJ1Y3Qga29tZWRhX2RldiAqbWRldik7Cit2b2lkIGtvbWVkYV9rbXNf ZGV0YWNoKHN0cnVjdCBrb21lZGFfa21zX2RldiAqa21zKTsKKworI2VuZGlmIC8qX0tPTUVEQV9L TVNfSF8qLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9r b21lZGFfcGlwZWxpbmUuaCBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29t ZWRhX3BpcGVsaW5lLmgKaW5kZXggMmQ2OGZmZWFlMjVkLi4xMTQxMjlkOTY4NTEgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3BpcGVsaW5lLmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGlwZWxpbmUu aApAQCAtMzMzLDYgKzMzMyw5IEBAIHN0cnVjdCBrb21lZGFfcGlwZWxpbmVfc3RhdGUgewogI2Rl ZmluZSB0b19pbXByb2Nfc3QoYykJY29udGFpbmVyX29mKGMsIHN0cnVjdCBrb21lZGFfaW1wcm9j X3N0YXRlLCBiYXNlKQogI2RlZmluZSB0b19jdHJscl9zdChjKQljb250YWluZXJfb2YoYywgc3Ry dWN0IGtvbWVkYV90aW1pbmdfY3RybHJfc3RhdGUsIGJhc2UpCiAKKyNkZWZpbmUgcHJpdl90b19j b21wX3N0KG8pIGNvbnRhaW5lcl9vZihvLCBzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudF9zdGF0ZSwg b2JqKQorI2RlZmluZSBwcml2X3RvX3BpcGVfc3QobykgIGNvbnRhaW5lcl9vZihvLCBzdHJ1Y3Qg a29tZWRhX3BpcGVsaW5lX3N0YXRlLCBvYmopCisKIC8qIHBpcGVsaW5lIEFQSXMgKi8KIHN0cnVj dCBrb21lZGFfcGlwZWxpbmUgKgoga29tZWRhX3BpcGVsaW5lX2FkZChzdHJ1Y3Qga29tZWRhX2Rl diAqbWRldiwgc2l6ZV90IHNpemUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rp c3BsYXkva29tZWRhL2tvbWVkYV9wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5 L2tvbWVkYS9rb21lZGFfcGxhbmUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLjBhNDk1M2E5YTkwOQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9h cm0vZGlzcGxheS9rb21lZGEva29tZWRhX3BsYW5lLmMKQEAgLTAsMCArMSwxMDkgQEAKKy8vIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCisvKgorICogKEMpIENPUFlSSUdIVCAyMDE4 IEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQXV0aG9yOiBKYW1lcy5RaWFu LldhbmcgPGphbWVzLnFpYW4ud2FuZ0Bhcm0uY29tPgorICoKKyAqLworI2luY2x1ZGUgPGRybS9k cm1fYXRvbWljLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+CisjaW5jbHVk ZSA8ZHJtL2RybV9wbGFuZV9oZWxwZXIuaD4KKyNpbmNsdWRlICJrb21lZGFfZGV2LmgiCisjaW5j bHVkZSAia29tZWRhX2ttcy5oIgorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxw ZXJfZnVuY3Mga29tZWRhX3BsYW5lX2hlbHBlcl9mdW5jcyA9IHsKK307CisKK3N0YXRpYyB2b2lk IGtvbWVkYV9wbGFuZV9kZXN0cm95KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQoreworCWRybV9w bGFuZV9jbGVhbnVwKHBsYW5lKTsKKworCWtmcmVlKHRvX2twbGFuZShwbGFuZSkpOworfQorCitz dGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBrb21lZGFfcGxhbmVfZnVuY3MgPSB7 Cit9OworCisvKiBmb3Iga29tZWRhLCB3aGljaCBpcyBwaXBlbGluZSBjYW4gYmUgc2hhcmUgYmV0 d2VlbiBjcnRjcyAqLworc3RhdGljIHUzMiBnZXRfcG9zc2libGVfY3J0Y3Moc3RydWN0IGtvbWVk YV9rbXNfZGV2ICprbXMsCisJCQkgICAgICBzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lICpwaXBlKQor eworCXN0cnVjdCBrb21lZGFfY3J0YyAqY3J0YzsKKwl1MzIgcG9zc2libGVfY3J0Y3MgPSAwOwor CWludCBpOworCisJZm9yIChpID0gMDsgaSA8IGttcy0+bl9jcnRjczsgaSsrKSB7CisJCWNydGMg PSAma21zLT5jcnRjc1tpXTsKKworCQlpZiAoKHBpcGUgPT0gY3J0Yy0+bWFzdGVyKSB8fCAocGlw ZSA9PSBjcnRjLT5zbGF2ZSkpCisJCQlwb3NzaWJsZV9jcnRjcyB8PSBCSVQoaSk7CisJfQorCisJ cmV0dXJuIHBvc3NpYmxlX2NydGNzOworfQorCisvKiB1c2UgTGF5ZXIwIGFzIHByaW1hcnkgKi8K K3N0YXRpYyB1MzIgZ2V0X3BsYW5lX3R5cGUoc3RydWN0IGtvbWVkYV9rbXNfZGV2ICprbXMsCisJ CQkgIHN0cnVjdCBrb21lZGFfY29tcG9uZW50ICpjKQoreworCWJvb2wgaXNfcHJpbWFyeSA9IChj LT5pZCA9PSBLT01FREFfQ09NUE9ORU5UX0xBWUVSMCk7CisKKwlyZXR1cm4gaXNfcHJpbWFyeSA/ IERSTV9QTEFORV9UWVBFX1BSSU1BUlkgOiBEUk1fUExBTkVfVFlQRV9PVkVSTEFZOworfQorCitz dGF0aWMgaW50IGtvbWVkYV9wbGFuZV9hZGQoc3RydWN0IGtvbWVkYV9rbXNfZGV2ICprbXMsCisJ CQkgICAgc3RydWN0IGtvbWVkYV9sYXllciAqbGF5ZXIpCit7CisJc3RydWN0IGtvbWVkYV9kZXYg Km1kZXYgPSBrbXMtPmJhc2UuZGV2X3ByaXZhdGU7CisJc3RydWN0IGtvbWVkYV9jb21wb25lbnQg KmMgPSAmbGF5ZXItPmJhc2U7CisJc3RydWN0IGtvbWVkYV9wbGFuZSAqa3BsYW5lOworCXN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lOworCXUzMiAqZm9ybWF0cywgbl9mb3JtYXRzID0gMDsKKwlpbnQg ZXJyOworCisJa3BsYW5lID0ga3phbGxvYyhzaXplb2YoKmtwbGFuZSksIEdGUF9LRVJORUwpOwor CWlmICgha3BsYW5lKQorCQlyZXR1cm4gLUVOT01FTTsKKworCXBsYW5lID0gJmtwbGFuZS0+YmFz ZTsKKwlrcGxhbmUtPmxheWVyID0gbGF5ZXI7CisKKwlmb3JtYXRzID0ga29tZWRhX2dldF9sYXll cl9mb3VyY2NfbGlzdCgmbWRldi0+Zm10X3RibCwKKwkJCQkJICAgICAgIGxheWVyLT5sYXllcl90 eXBlLCAmbl9mb3JtYXRzKTsKKworCWVyciA9IGRybV91bml2ZXJzYWxfcGxhbmVfaW5pdCgma21z LT5iYXNlLCBwbGFuZSwKKwkJCWdldF9wb3NzaWJsZV9jcnRjcyhrbXMsIGMtPnBpcGVsaW5lKSwK KwkJCSZrb21lZGFfcGxhbmVfZnVuY3MsCisJCQlmb3JtYXRzLCBuX2Zvcm1hdHMsIE5VTEwsCisJ CQlnZXRfcGxhbmVfdHlwZShrbXMsIGMpLAorCQkJIiVzIiwgYy0+bmFtZSk7CisKKwlrb21lZGFf cHV0X2ZvdXJjY19saXN0KGZvcm1hdHMpOworCisJaWYgKGVycikKKwkJZ290byBjbGVhbnVwOwor CisJZHJtX3BsYW5lX2hlbHBlcl9hZGQocGxhbmUsICZrb21lZGFfcGxhbmVfaGVscGVyX2Z1bmNz KTsKKworCXJldHVybiAwOworY2xlYW51cDoKKwlrb21lZGFfcGxhbmVfZGVzdHJveShwbGFuZSk7 CisJcmV0dXJuIGVycjsKK30KKworaW50IGtvbWVkYV9rbXNfYWRkX3BsYW5lcyhzdHJ1Y3Qga29t ZWRhX2ttc19kZXYgKmttcywgc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYpCit7CisJc3RydWN0IGtv bWVkYV9waXBlbGluZSAqcGlwZTsKKwlpbnQgaSwgaiwgZXJyOworCisJZm9yIChpID0gMDsgaSA8 IG1kZXYtPm5fcGlwZWxpbmVzOyBpKyspIHsKKwkJcGlwZSA9IG1kZXYtPnBpcGVsaW5lc1tpXTsK KworCQlmb3IgKGogPSAwOyBqIDwgcGlwZS0+bl9sYXllcnM7IGorKykgeworCQkJZXJyID0ga29t ZWRhX3BsYW5lX2FkZChrbXMsIHBpcGUtPmxheWVyc1tqXSk7CisJCQlpZiAoZXJyKQorCQkJCXJl dHVybiBlcnI7CisJCX0KKwl9CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3ByaXZhdGVfb2JqLmMgYi9kcml2ZXJz L2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9wcml2YXRlX29iai5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOWVkZmQ2YWIwYzEyCi0tLSAvZGV2L251 bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcHJpdmF0 ZV9vYmouYwpAQCAtMCwwICsxLDg4IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMAorLyoKKyAqIChDKSBDT1BZUklHSFQgMjAxOCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC4KKyAqIEF1dGhvcjogSmFtZXMuUWlhbi5XYW5nIDxqYW1lcy5xaWFuLndhbmdAYXJt LmNvbT4KKyAqCisgKi8KKyNpbmNsdWRlICJrb21lZGFfZGV2LmgiCisjaW5jbHVkZSAia29tZWRh X2ttcy5oIgorCitzdGF0aWMgc3RydWN0IGRybV9wcml2YXRlX3N0YXRlICoKK2tvbWVkYV9waXBl bGluZV9hdG9taWNfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fcHJpdmF0ZV9vYmogKm9iaikK K3sKKwlzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lX3N0YXRlICpzdDsKKworCXN0ID0ga21lbWR1cChv YmotPnN0YXRlLCBzaXplb2YoKnN0KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFzdCkKKwkJcmV0dXJu IE5VTEw7CisKKwlzdC0+YWN0aXZlX2NvbXBzID0gMDsKKworCV9fZHJtX2F0b21pY19oZWxwZXJf cHJpdmF0ZV9vYmpfZHVwbGljYXRlX3N0YXRlKG9iaiwgJnN0LT5vYmopOworCisJcmV0dXJuICZz dC0+b2JqOworfQorCitzdGF0aWMgdm9pZAora29tZWRhX3BpcGVsaW5lX2F0b21pY19kZXN0cm95 X3N0YXRlKHN0cnVjdCBkcm1fcHJpdmF0ZV9vYmogKm9iaiwKKwkJCQkgICAgIHN0cnVjdCBkcm1f cHJpdmF0ZV9zdGF0ZSAqc3RhdGUpCit7CisJa2ZyZWUocHJpdl90b19waXBlX3N0KHN0YXRlKSk7 Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGVfZnVuY3Mga29tZWRh X3BpcGVsaW5lX29ial9mdW5jcyA9IHsKKwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZQk9IGtvbWVk YV9waXBlbGluZV9hdG9taWNfZHVwbGljYXRlX3N0YXRlLAorCS5hdG9taWNfZGVzdHJveV9zdGF0 ZQk9IGtvbWVkYV9waXBlbGluZV9hdG9taWNfZGVzdHJveV9zdGF0ZSwKK307CisKK3N0YXRpYyBp bnQga29tZWRhX3BpcGVsaW5lX29ial9hZGQoc3RydWN0IGtvbWVkYV9rbXNfZGV2ICprbXMsCisJ CQkJICAgc3RydWN0IGtvbWVkYV9waXBlbGluZSAqcGlwZSkKK3sKKwlzdHJ1Y3Qga29tZWRhX3Bp cGVsaW5lX3N0YXRlICpzdDsKKworCXN0ID0ga3phbGxvYyhzaXplb2YoKnN0KSwgR0ZQX0tFUk5F TCk7CisJaWYgKCFzdCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlzdC0+cGlwZSA9IHBpcGU7CisJ ZHJtX2F0b21pY19wcml2YXRlX29ial9pbml0KCZwaXBlLT5vYmosICZzdC0+b2JqLAorCQkJCSAg ICAma29tZWRhX3BpcGVsaW5lX29ial9mdW5jcyk7CisKKwlyZXR1cm4gMDsKK30KKworaW50IGtv bWVkYV9rbXNfYWRkX3ByaXZhdGVfb2JqcyhzdHJ1Y3Qga29tZWRhX2ttc19kZXYgKmttcywKKwkJ CQlzdHJ1Y3Qga29tZWRhX2RldiAqbWRldikKK3sKKwlzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lICpw aXBlOworCWludCBpLCBlcnI7CisKKwlmb3IgKGkgPSAwOyBpIDwgbWRldi0+bl9waXBlbGluZXM7 IGkrKykgeworCQlwaXBlID0gbWRldi0+cGlwZWxpbmVzW2ldOworCisJCWVyciA9IGtvbWVkYV9w aXBlbGluZV9vYmpfYWRkKGttcywgcGlwZSk7CisJCWlmIChlcnIpCisJCQlyZXR1cm4gZXJyOwor CisJCS8qIEFkZCBjb21wb25lbnQgKi8KKwl9CisKKwlyZXR1cm4gMDsKK30KKwordm9pZCBrb21l ZGFfa21zX2NsZWFudXBfcHJpdmF0ZV9vYmpzKHN0cnVjdCBrb21lZGFfZGV2ICptZGV2KQorewor CXN0cnVjdCBrb21lZGFfcGlwZWxpbmUgKnBpcGU7CisJc3RydWN0IGtvbWVkYV9jb21wb25lbnQg KmM7CisJaW50IGksIGlkOworCisJZm9yIChpID0gMDsgaSA8IG1kZXYtPm5fcGlwZWxpbmVzOyBp KyspIHsKKwkJcGlwZSA9IG1kZXYtPnBpcGVsaW5lc1tpXTsKKwkJZHBfZm9yX2VhY2hfc2V0X2Jp dChpZCwgcGlwZS0+YXZhaWxfY29tcHMpIHsKKwkJCWMgPSBrb21lZGFfcGlwZWxpbmVfZ2V0X2Nv bXBvbmVudChwaXBlLCBpZCk7CisKKwkJCWRybV9hdG9taWNfcHJpdmF0ZV9vYmpfZmluaSgmYy0+ b2JqKTsKKwkJfQorCQlkcm1fYXRvbWljX3ByaXZhdGVfb2JqX2ZpbmkoJnBpcGUtPm9iaik7CisJ fQorfQotLSAKMi4xNy4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmkt ZGV2ZWwK