From mboxrd@z Thu Jan 1 00:00:00 1970 From: "james qian wang (Arm Technology China)" Subject: [PATCH v4 7/9] drm/komeda: Attach komeda_dev to DRM-KMS Date: Thu, 3 Jan 2019 11:41:30 +0000 Message-ID: <20190103113841.15403-8-james.qian.wang@arm.com> References: <20190103113841.15403-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: <20190103113841.15403-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 , "daniel.vetter@ffwll.ch" , "rdunlap@infradead.org" , "robh+dt@kernel.org" 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 RnJvbTogImphbWVzIHFpYW4gd2FuZyAoQXJtIFRlY2hub2xvZ3kgQ2hpbmEpIiA8amFtZXMucWlh bi53YW5nQGFybS5jb20+CgpBZGQga29tZWRhX2ttcyBhYnN0cmFjdG9uIHRvIGF0dGFjaCBrb21l ZGFfZGV2IHRvIERSTS1LTVMKICBDUlRDOiBhY2NvcmRpbmcgdG8gdGhlIGtvbWVkYV9waXBlbGlu ZQogIFBMQU5FOiBhY2NvcmRpbmcgdG8ga29tZWRhX2xheWVyIChsYXllciBpbnB1dCBwaXBlbGlu ZSkKICBQUklWQVRFX09CSlM6IGtvbWVkYV9waXBlbGluZS9jb21wb25lbnQgYWxsIHdpbGwgYmUg dHJlYXQgYXMgcHJpdmF0ZV9vYmpzCgprb21lZGFfa21zIGlzIGZvciBjb25uZWN0aW5nIERSTS1L TVMgYW5kIGtvbWVkYV9kZXYsIGxpa2UgcmVwb3J0aW5nIHRoZQprbXMgb2JqZWN0IHByb3BlcnRp ZXMgYWNjb3JkaW5nIHRvIHRoZSBrb21lZGFfZGV2LCBhbmQgcGFzcy9jb252ZXJ0IEtNUydzCnJl cXVpcmVtZW50IHRvIGtvbWVkYV9kZXYuCgpDaGFuZ2VzIGluIHY0OgotIFNldCBkcm1fYXRvbWlj X2hlbHBlcl9jaGVjayBhcyBtb2RlX2NvbmZpZy0+YXRvbWljX2NoZWNrLgoKQ2hhbmdlcyBpbiB2 MzoKLSBGaXhlZCBzdHlsZSBwcm9ibGVtIGZvdW5kIGJ5IGNoZWNrcGF0Y2gucGwgLS1zdHJpY3Qu CgpDaGFuZ2VzIGluIHYyOgotIFVuaWZpZWQgYWJicmV2aWF0aW9uIG9mICJwaXBlbGluZSIgdG8g InBpcGUiLgoKU2lnbmVkLW9mZi1ieTogSmFtZXMgUWlhbiBXYW5nIChBcm0gVGVjaG5vbG9neSBD aGluYSkgPGphbWVzLnFpYW4ud2FuZ0Bhcm0uY29tPgpSZXZpZXdlZC1ieTogTGl2aXUgRHVkYXUg PGxpdml1LmR1ZGF1QGFybS5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tv bWVkYS9NYWtlZmlsZSAgIHwgICA2ICstCiAuLi4vZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEv a29tZWRhX2NydGMuYyAgfCAxMDYgKysrKysrKysrKysKIC4uLi9ncHUvZHJtL2FybS9kaXNwbGF5 L2tvbWVkYS9rb21lZGFfZHJ2LmMgICB8ICAxMiArKwogLi4uL2dwdS9kcm0vYXJtL2Rpc3BsYXkv a29tZWRhL2tvbWVkYV9rbXMuYyAgIHwgMTY5ICsrKysrKysrKysrKysrKysrKwogLi4uL2dwdS9k cm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9rbXMuaCAgIHwgMTEzICsrKysrKysrKysrKwog Li4uL2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3BpcGVsaW5lLmggIHwgICAzICsKIC4u Li9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGxhbmUuYyB8IDEwOSArKysrKysr KysrKwogLi4uL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcHJpdmF0ZV9vYmouYyAgIHwgIDg4 ICsrKysrKysrKwogOCBmaWxlcyBjaGFuZ2VkLCA2MDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv bigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21l ZGEva29tZWRhX2NydGMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hcm0v ZGlzcGxheS9rb21lZGEva29tZWRhX2ttcy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n cHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfa21zLmgKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9wbGFuZS5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFf cHJpdmF0ZV9vYmouYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9r b21lZGEvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL01ha2Vm aWxlCmluZGV4IDI1YmVhZTkwMGVkMi4uMWI4NzVlNWRjMGY2IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hcm0vZGlzcGxheS9rb21lZGEvTWFrZWZpbGUKQEAgLTksNyArOSwxMSBAQCBrb21lZGEteSA6 PSBcCiAJa29tZWRhX2Rldi5vIFwKIAlrb21lZGFfZm9ybWF0X2NhcHMubyBcCiAJa29tZWRhX3Bp cGVsaW5lLm8gXAotCWtvbWVkYV9mcmFtZWJ1ZmZlci5vCisJa29tZWRhX2ZyYW1lYnVmZmVyLm8g XAorCWtvbWVkYV9rbXMubyBcCisJa29tZWRhX2NydGMubyBcCisJa29tZWRhX3BsYW5lLm8gXAor CWtvbWVkYV9wcml2YXRlX29iai5vCiAKIGtvbWVkYS15ICs9IFwKIAlkNzEvZDcxX2Rldi5vCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9jcnRj LmMgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9jcnRjLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41YmI1YTU1ZjZiMzEKLS0tIC9k ZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9j cnRjLmMKQEAgLTAsMCArMSwxMDYgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wCisvKgorICogKEMpIENPUFlSSUdIVCAyMDE4IEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJl c2VydmVkLgorICogQXV0aG9yOiBKYW1lcy5RaWFuLldhbmcgPGphbWVzLnFpYW4ud2FuZ0Bhcm0u Y29tPgorICoKKyAqLworI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgorI2luY2x1ZGUgPGxpbnV4L3Nw aW5sb2NrLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KKyNpbmNsdWRlIDxkcm0vZHJt X2F0b21pY19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3BsYW5lX2hlbHBlci5oPgorI2lu Y2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9wbV9ydW50aW1l Lmg+CisjaW5jbHVkZSAia29tZWRhX2Rldi5oIgorI2luY2x1ZGUgImtvbWVkYV9rbXMuaCIKKwor c3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyBrb21lZGFfY3J0Y19oZWxwZXJfZnVuY3MgPSB7 Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2Z1bmNzIGtvbWVkYV9jcnRjX2Z1 bmNzID0geworfTsKKworaW50IGtvbWVkYV9rbXNfc2V0dXBfY3J0Y3Moc3RydWN0IGtvbWVkYV9r bXNfZGV2ICprbXMsCisJCQkgICBzdHJ1Y3Qga29tZWRhX2RldiAqbWRldikKK3sKKwlzdHJ1Y3Qg a29tZWRhX2NydGMgKmNydGM7CisJc3RydWN0IGtvbWVkYV9waXBlbGluZSAqbWFzdGVyOworCWNo YXIgc3RyWzE2XTsKKwlpbnQgaTsKKworCWttcy0+bl9jcnRjcyA9IDA7CisKKwlmb3IgKGkgPSAw OyBpIDwgbWRldi0+bl9waXBlbGluZXM7IGkrKykgeworCQljcnRjID0gJmttcy0+Y3J0Y3Nba21z LT5uX2NydGNzXTsKKwkJbWFzdGVyID0gbWRldi0+cGlwZWxpbmVzW2ldOworCisJCWNydGMtPm1h c3RlciA9IG1hc3RlcjsKKwkJY3J0Yy0+c2xhdmUgID0gTlVMTDsKKworCQlpZiAoY3J0Yy0+c2xh dmUpCisJCQlzcHJpbnRmKHN0ciwgInBpcGUtJWQiLCBjcnRjLT5zbGF2ZS0+aWQpOworCQllbHNl CisJCQlzcHJpbnRmKHN0ciwgIk5vbmUiKTsKKworCQlEUk1fSU5GTygiY3J0YyVkOiBtYXN0ZXIo cGlwZS0lZCkgc2xhdmUoJXMpIG91dHB1dDogJXMuXG4iLAorCQkJIGttcy0+bl9jcnRjcywgbWFz dGVyLT5pZCwgc3RyLAorCQkJIG1hc3Rlci0+b2Zfb3V0cHV0X2RldiA/CisJCQkgbWFzdGVyLT5v Zl9vdXRwdXRfZGV2LT5mdWxsX25hbWUgOiAiTm9uZSIpOworCisJCWttcy0+bl9jcnRjcysrOwor CX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IGRybV9wbGFuZSAqCitnZXRfY3J0 Y19wcmltYXJ5KHN0cnVjdCBrb21lZGFfa21zX2RldiAqa21zLCBzdHJ1Y3Qga29tZWRhX2NydGMg KmNydGMpCit7CisJc3RydWN0IGtvbWVkYV9wbGFuZSAqa3BsYW5lOworCXN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lOworCisJZHJtX2Zvcl9lYWNoX3BsYW5lKHBsYW5lLCAma21zLT5iYXNlKSB7CisJ CWlmIChwbGFuZS0+dHlwZSAhPSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKQorCQkJY29udGludWU7 CisKKwkJa3BsYW5lID0gdG9fa3BsYW5lKHBsYW5lKTsKKwkJLyogb25seSBtYXN0ZXIgY2FuIGJl IHByaW1hcnkgKi8KKwkJaWYgKGtwbGFuZS0+bGF5ZXItPmJhc2UucGlwZWxpbmUgPT0gY3J0Yy0+ bWFzdGVyKQorCQkJcmV0dXJuIHBsYW5lOworCX0KKworCXJldHVybiBOVUxMOworfQorCitzdGF0 aWMgaW50IGtvbWVkYV9jcnRjX2FkZChzdHJ1Y3Qga29tZWRhX2ttc19kZXYgKmttcywKKwkJCSAg IHN0cnVjdCBrb21lZGFfY3J0YyAqa2NydGMpCit7CisJc3RydWN0IGRybV9jcnRjICpjcnRjID0g JmtjcnRjLT5iYXNlOworCWludCBlcnI7CisKKwllcnIgPSBkcm1fY3J0Y19pbml0X3dpdGhfcGxh bmVzKCZrbXMtPmJhc2UsIGNydGMsCisJCQkJCWdldF9jcnRjX3ByaW1hcnkoa21zLCBrY3J0Yyks IE5VTEwsCisJCQkJCSZrb21lZGFfY3J0Y19mdW5jcywgTlVMTCk7CisJaWYgKGVycikKKwkJcmV0 dXJuIGVycjsKKworCWRybV9jcnRjX2hlbHBlcl9hZGQoY3J0YywgJmtvbWVkYV9jcnRjX2hlbHBl cl9mdW5jcyk7CisJZHJtX2NydGNfdmJsYW5rX3Jlc2V0KGNydGMpOworCisJY3J0Yy0+cG9ydCA9 IGtjcnRjLT5tYXN0ZXItPm9mX291dHB1dF9wb3J0OworCisJcmV0dXJuIDA7Cit9CisKK2ludCBr b21lZGFfa21zX2FkZF9jcnRjcyhzdHJ1Y3Qga29tZWRhX2ttc19kZXYgKmttcywgc3RydWN0IGtv bWVkYV9kZXYgKm1kZXYpCit7CisJaW50IGksIGVycjsKKworCWZvciAoaSA9IDA7IGkgPCBrbXMt Pm5fY3J0Y3M7IGkrKykgeworCQllcnIgPSBrb21lZGFfY3J0Y19hZGQoa21zLCAma21zLT5jcnRj c1tpXSk7CisJCWlmIChlcnIpCisJCQlyZXR1cm4gZXJyOworCX0KKworCXJldHVybiAwOworfQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfZHJ2 LmMgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9kcnYuYwppbmRl eCBkZDM4NmQ4MmQxNDMuLjJiZGQxODliMDQxZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2Fy bS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfZHJ2LmMKQEAgLTEwLDkgKzEwLDExIEBACiAjaW5jbHVk ZSA8bGludXgvY29tcG9uZW50Lmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9vZi5oPgogI2luY2x1ZGUg ImtvbWVkYV9kZXYuaCIKKyNpbmNsdWRlICJrb21lZGFfa21zLmgiCiAKIHN0cnVjdCBrb21lZGFf ZHJ2IHsKIAlzdHJ1Y3Qga29tZWRhX2RldiAqbWRldjsKKwlzdHJ1Y3Qga29tZWRhX2ttc19kZXYg KmttczsKIH07CiAKIHN0YXRpYyB2b2lkIGtvbWVkYV91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2 KQpAQCAtMjIsNiArMjQsNyBAQCBzdGF0aWMgdm9pZCBrb21lZGFfdW5iaW5kKHN0cnVjdCBkZXZp Y2UgKmRldikKIAlpZiAoIW1kcnYpCiAJCXJldHVybjsKIAorCWtvbWVkYV9rbXNfZGV0YWNoKG1k cnYtPmttcyk7CiAJa29tZWRhX2Rldl9kZXN0cm95KG1kcnYtPm1kZXYpOwogCiAJZGV2X3NldF9k cnZkYXRhKGRldiwgTlVMTCk7CkBAIC00MywxMCArNDYsMTkgQEAgc3RhdGljIGludCBrb21lZGFf YmluZChzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJCWdvdG8gZnJlZV9tZHJ2OwogCX0KIAorCW1kcnYt PmttcyA9IGtvbWVkYV9rbXNfYXR0YWNoKG1kcnYtPm1kZXYpOworCWlmIChJU19FUlIobWRydi0+ a21zKSkgeworCQllcnIgPSBQVFJfRVJSKG1kcnYtPmttcyk7CisJCWdvdG8gZGVzdHJveV9tZGV2 OworCX0KKwogCWRldl9zZXRfZHJ2ZGF0YShkZXYsIG1kcnYpOwogCiAJcmV0dXJuIDA7CiAKK2Rl c3Ryb3lfbWRldjoKKwlrb21lZGFfZGV2X2Rlc3Ryb3kobWRydi0+bWRldik7CisKIGZyZWVfbWRy djoKIAlkZXZtX2tmcmVlKGRldiwgbWRydik7CiAJcmV0dXJuIGVycjsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2ttcy5jIGIvZHJpdmVycy9n cHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfa21zLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mNDFiMjAyMzUxMzAKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9rbXMuYwpAQCAtMCwwICsx LDE2OSBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8qCisgKiAoQykg Q09QWVJJR0hUIDIwMTggQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBBdXRo b3I6IEphbWVzLlFpYW4uV2FuZyA8amFtZXMucWlhbi53YW5nQGFybS5jb20+CisgKgorICovCisj aW5jbHVkZSA8bGludXgvY29tcG9uZW50Lmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4K KyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2dl bV9mcmFtZWJ1ZmZlcl9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9jbWFfaGVscGVy Lmg+CisjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9pbnRl cnJ1cHQuaD4KKyNpbmNsdWRlICJrb21lZGFfZGV2LmgiCisjaW5jbHVkZSAia29tZWRhX2ttcy5o IgorI2luY2x1ZGUgImtvbWVkYV9mcmFtZWJ1ZmZlci5oIgorCitERUZJTkVfRFJNX0dFTV9DTUFf Rk9QUyhrb21lZGFfY21hX2ZvcHMpOworCitzdGF0aWMgaW50IGtvbWVkYV9nZW1fY21hX2R1bWJf Y3JlYXRlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwKKwkJCQkgICAgICBzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAorCQkJCSAgICAgIHN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfZHVtYiAqYXJncykKK3sK Kwl1MzIgYWxpZ25tZW50ID0gMTY7IC8qIFRPRE8gZ2V0IGFsaWdubWVudCBmcm9tIGRldiAqLwor CisJYXJncy0+cGl0Y2ggPSBBTElHTihESVZfUk9VTkRfVVAoYXJncy0+d2lkdGggKiBhcmdzLT5i cHAsIDgpLAorCQkJICAgIGFsaWdubWVudCk7CisKKwlyZXR1cm4gZHJtX2dlbV9jbWFfZHVtYl9j cmVhdGVfaW50ZXJuYWwoZmlsZSwgZGV2LCBhcmdzKTsKK30KKworc3RhdGljIHN0cnVjdCBkcm1f ZHJpdmVyIGtvbWVkYV9rbXNfZHJpdmVyID0geworCS5kcml2ZXJfZmVhdHVyZXMgPSBEUklWRVJf R0VNIHwgRFJJVkVSX01PREVTRVQgfCBEUklWRVJfQVRPTUlDIHwKKwkJCSAgIERSSVZFUl9QUklN RSwKKwkubGFzdGNsb3NlCQkJPSBkcm1fZmJfaGVscGVyX2xhc3RjbG9zZSwKKwkuZ2VtX2ZyZWVf b2JqZWN0X3VubG9ja2VkCT0gZHJtX2dlbV9jbWFfZnJlZV9vYmplY3QsCisJLmdlbV92bV9vcHMJ CQk9ICZkcm1fZ2VtX2NtYV92bV9vcHMsCisJLmR1bWJfY3JlYXRlCQkJPSBrb21lZGFfZ2VtX2Nt YV9kdW1iX2NyZWF0ZSwKKwkucHJpbWVfaGFuZGxlX3RvX2ZkCQk9IGRybV9nZW1fcHJpbWVfaGFu ZGxlX3RvX2ZkLAorCS5wcmltZV9mZF90b19oYW5kbGUJCT0gZHJtX2dlbV9wcmltZV9mZF90b19o YW5kbGUsCisJLmdlbV9wcmltZV9leHBvcnQJCT0gZHJtX2dlbV9wcmltZV9leHBvcnQsCisJLmdl bV9wcmltZV9pbXBvcnQJCT0gZHJtX2dlbV9wcmltZV9pbXBvcnQsCisJLmdlbV9wcmltZV9nZXRf c2dfdGFibGUJCT0gZHJtX2dlbV9jbWFfcHJpbWVfZ2V0X3NnX3RhYmxlLAorCS5nZW1fcHJpbWVf aW1wb3J0X3NnX3RhYmxlCT0gZHJtX2dlbV9jbWFfcHJpbWVfaW1wb3J0X3NnX3RhYmxlLAorCS5n ZW1fcHJpbWVfdm1hcAkJCT0gZHJtX2dlbV9jbWFfcHJpbWVfdm1hcCwKKwkuZ2VtX3ByaW1lX3Z1 bm1hcAkJPSBkcm1fZ2VtX2NtYV9wcmltZV92dW5tYXAsCisJLmdlbV9wcmltZV9tbWFwCQkJPSBk cm1fZ2VtX2NtYV9wcmltZV9tbWFwLAorCS5mb3BzID0gJmtvbWVkYV9jbWFfZm9wcywKKwkubmFt ZSA9ICJrb21lZGEiLAorCS5kZXNjID0gIkFybSBLb21lZGEgRGlzcGxheSBQcm9jZXNzb3IgZHJp dmVyIiwKKwkuZGF0ZSA9ICIyMDE4MTEwMSIsCisJLm1ham9yID0gMCwKKwkubWlub3IgPSAxLAor fTsKKworc3RhdGljIHZvaWQga29tZWRhX2ttc19jb21taXRfdGFpbChzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqb2xkX3N0YXRlKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvbGRfc3Rh dGUtPmRldjsKKworCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9tb2Rlc2V0X2Rpc2FibGVzKGRl diwgb2xkX3N0YXRlKTsKKworCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXMoZGV2LCBv bGRfc3RhdGUsIDApOworCisJZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X21vZGVzZXRfZW5hYmxl cyhkZXYsIG9sZF9zdGF0ZSk7CisKKwlkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl9mbGlwX2Rv bmUoZGV2LCBvbGRfc3RhdGUpOworCisJZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X2h3X2RvbmUo b2xkX3N0YXRlKTsKKworCWRybV9hdG9taWNfaGVscGVyX2NsZWFudXBfcGxhbmVzKGRldiwgb2xk X3N0YXRlKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9jb25maWdfaGVscGVy X2Z1bmNzIGtvbWVkYV9tb2RlX2NvbmZpZ19oZWxwZXJzID0geworCS5hdG9taWNfY29tbWl0X3Rh aWwgPSBrb21lZGFfa21zX2NvbW1pdF90YWlsLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBk cm1fbW9kZV9jb25maWdfZnVuY3Mga29tZWRhX21vZGVfY29uZmlnX2Z1bmNzID0geworCS5mYl9j cmVhdGUJCT0ga29tZWRhX2ZiX2NyZWF0ZSwKKwkuYXRvbWljX2NoZWNrCQk9IGRybV9hdG9taWNf aGVscGVyX2NoZWNrLAorCS5hdG9taWNfY29tbWl0CQk9IGRybV9hdG9taWNfaGVscGVyX2NvbW1p dCwKK307CisKK3N0YXRpYyB2b2lkIGtvbWVkYV9rbXNfbW9kZV9jb25maWdfaW5pdChzdHJ1Y3Qg a29tZWRhX2ttc19kZXYgKmttcywKKwkJCQkJc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYpCit7CisJ c3RydWN0IGRybV9tb2RlX2NvbmZpZyAqY29uZmlnID0gJmttcy0+YmFzZS5tb2RlX2NvbmZpZzsK KworCWRybV9tb2RlX2NvbmZpZ19pbml0KCZrbXMtPmJhc2UpOworCisJa29tZWRhX2ttc19zZXR1 cF9jcnRjcyhrbXMsIG1kZXYpOworCisJLyogR2V0IHZhbHVlIGZyb20gZGV2ICovCisJY29uZmln LT5taW5fd2lkdGgJPSAwOworCWNvbmZpZy0+bWluX2hlaWdodAk9IDA7CisJY29uZmlnLT5tYXhf d2lkdGgJPSA0MDk2OworCWNvbmZpZy0+bWF4X2hlaWdodAk9IDQwOTY7CisJY29uZmlnLT5hbGxv d19mYl9tb2RpZmllcnMgPSBmYWxzZTsKKworCWNvbmZpZy0+ZnVuY3MgPSAma29tZWRhX21vZGVf Y29uZmlnX2Z1bmNzOworCWNvbmZpZy0+aGVscGVyX3ByaXZhdGUgPSAma29tZWRhX21vZGVfY29u ZmlnX2hlbHBlcnM7Cit9CisKK3N0cnVjdCBrb21lZGFfa21zX2RldiAqa29tZWRhX2ttc19hdHRh Y2goc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYpCit7CisJc3RydWN0IGtvbWVkYV9rbXNfZGV2ICpr bXMgPSBremFsbG9jKHNpemVvZigqa21zKSwgR0ZQX0tFUk5FTCk7CisJc3RydWN0IGRybV9kZXZp Y2UgKmRybTsKKwlpbnQgZXJyOworCisJaWYgKCFrbXMpCisJCXJldHVybiBFUlJfUFRSKC1FTk9N RU0pOworCisJZHJtID0gJmttcy0+YmFzZTsKKwllcnIgPSBkcm1fZGV2X2luaXQoZHJtLCAma29t ZWRhX2ttc19kcml2ZXIsIG1kZXYtPmRldik7CisJaWYgKGVycikKKwkJZ290byBmcmVlX2ttczsK KworCWRybS0+ZGV2X3ByaXZhdGUgPSBtZGV2OworCisJa29tZWRhX2ttc19tb2RlX2NvbmZpZ19p bml0KGttcywgbWRldik7CisKKwllcnIgPSBrb21lZGFfa21zX2FkZF9wcml2YXRlX29ianMoa21z LCBtZGV2KTsKKwlpZiAoZXJyKQorCQlnb3RvIGNsZWFudXBfbW9kZV9jb25maWc7CisKKwllcnIg PSBrb21lZGFfa21zX2FkZF9wbGFuZXMoa21zLCBtZGV2KTsKKwlpZiAoZXJyKQorCQlnb3RvIGNs ZWFudXBfbW9kZV9jb25maWc7CisKKwllcnIgPSBkcm1fdmJsYW5rX2luaXQoZHJtLCBrbXMtPm5f Y3J0Y3MpOworCWlmIChlcnIpCisJCWdvdG8gY2xlYW51cF9tb2RlX2NvbmZpZzsKKworCWVyciA9 IGtvbWVkYV9rbXNfYWRkX2NydGNzKGttcywgbWRldik7CisJaWYgKGVycikKKwkJZ290byBjbGVh bnVwX21vZGVfY29uZmlnOworCisJZXJyID0gY29tcG9uZW50X2JpbmRfYWxsKG1kZXYtPmRldiwg a21zKTsKKwlpZiAoZXJyKQorCQlnb3RvIGNsZWFudXBfbW9kZV9jb25maWc7CisKKwlkcm1fbW9k ZV9jb25maWdfcmVzZXQoZHJtKTsKKworCWVyciA9IGRybV9kZXZfcmVnaXN0ZXIoZHJtLCAwKTsK KwlpZiAoZXJyKQorCQlnb3RvIHVuaW5zdGFsbF9pcnE7CisKKwlyZXR1cm4ga21zOworCit1bmlu c3RhbGxfaXJxOgorCWRybV9pcnFfdW5pbnN0YWxsKGRybSk7CitjbGVhbnVwX21vZGVfY29uZmln OgorCWRybV9tb2RlX2NvbmZpZ19jbGVhbnVwKGRybSk7CitmcmVlX2ttczoKKwlrZnJlZShrbXMp OworCXJldHVybiBFUlJfUFRSKGVycik7Cit9CisKK3ZvaWQga29tZWRhX2ttc19kZXRhY2goc3Ry dWN0IGtvbWVkYV9rbXNfZGV2ICprbXMpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRybSA9ICZr bXMtPmJhc2U7CisJc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYgPSBkcm0tPmRldl9wcml2YXRlOwor CisJZHJtX2Rldl91bnJlZ2lzdGVyKGRybSk7CisJY29tcG9uZW50X3VuYmluZF9hbGwobWRldi0+ ZGV2LCBkcm0pOworCWtvbWVkYV9rbXNfY2xlYW51cF9wcml2YXRlX29ianMobWRldik7CisJZHJt X21vZGVfY29uZmlnX2NsZWFudXAoZHJtKTsKKwlkcm0tPmRldl9wcml2YXRlID0gTlVMTDsKKwlk cm1fZGV2X3B1dChkcm0pOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNw bGF5L2tvbWVkYS9rb21lZGFfa21zLmggYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29t ZWRhL2tvbWVkYV9rbXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LmYxMzY2NjAwNGE0MgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlz cGxheS9rb21lZGEva29tZWRhX2ttcy5oCkBAIC0wLDAgKzEsMTEzIEBACisvKiBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLworLyoKKyAqIChDKSBDT1BZUklHSFQgMjAxOCBBUk0g TGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIEF1dGhvcjogSmFtZXMuUWlhbi5XYW5n IDxqYW1lcy5xaWFuLndhbmdAYXJtLmNvbT4KKyAqCisgKi8KKyNpZm5kZWYgX0tPTUVEQV9LTVNf SF8KKyNkZWZpbmUgX0tPTUVEQV9LTVNfSF8KKworI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+ CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9j cnRjX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fd3JpdGViYWNrLmg+CisKKy8qKiBzdHJ1 Y3Qga29tZWRhX3BsYW5lIC0ga29tZWRhIGluc3RhbmNlIG9mIGRybV9wbGFuZSAqLworc3RydWN0 IGtvbWVkYV9wbGFuZSB7CisJLyoqIEBiYXNlOiAmZHJtX3BsYW5lICovCisJc3RydWN0IGRybV9w bGFuZSBiYXNlOworCS8qKgorCSAqIEBsYXllcjoKKwkgKgorCSAqIHJlcHJlc2VudHMgYXZhaWxh YmxlIGxheWVyIGlucHV0IHBpcGVsaW5lcyBmb3IgdGhpcyBwbGFuZS4KKwkgKgorCSAqIE5PVEU6 CisJICogdGhlIGxheWVyIGlzIG5vdCBmb3IgYSBzcGVjaWZpYyBMYXllciwgYnV0IGluZGljYXRl IGEgZ3JvdXAgb2YKKwkgKiBMYXllcnMgd2l0aCBzYW1lIGNhcGFiaWxpdGllcy4KKwkgKi8KKwlz dHJ1Y3Qga29tZWRhX2xheWVyICpsYXllcjsKK307CisKKy8qKgorICogc3RydWN0IGtvbWVkYV9w bGFuZV9zdGF0ZQorICoKKyAqIFRoZSBwbGFuZV9zdGF0ZSBjYW4gYmUgc3BsaXQgaW50byB0d28g ZGF0YSBmbG93IChsZWZ0L3JpZ2h0KSBhbmQgaGFuZGxlZAorICogYnkgdHdvIGxheWVycyAma29t ZWRhX3BsYW5lLmxheWVyIGFuZCAma29tZWRhX3BsYW5lLmxheWVyLnJpZ2h0CisgKi8KK3N0cnVj dCBrb21lZGFfcGxhbmVfc3RhdGUgeworCS8qKiBAYmFzZTogJmRybV9wbGFuZV9zdGF0ZSAqLwor CXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgYmFzZTsKKworCS8qIHByaXZhdGUgcHJvcGVydGllcyAq LworfTsKKworLyoqCisgKiBzdHJ1Y3Qga29tZWRhX3diX2Nvbm5lY3RvcgorICovCitzdHJ1Y3Qg a29tZWRhX3diX2Nvbm5lY3RvciB7CisJLyoqIEBiYXNlOiAmZHJtX3dyaXRlYmFja19jb25uZWN0 b3IgKi8KKwlzdHJ1Y3QgZHJtX3dyaXRlYmFja19jb25uZWN0b3IgYmFzZTsKKworCS8qKiBAd2Jf bGF5ZXI6IHJlcHJlc2VudHMgYXNzb2NpYXRlZCB3cml0ZWJhY2sgcGlwZWxpbmUgb2Yga29tZWRh ICovCisJc3RydWN0IGtvbWVkYV9sYXllciAqd2JfbGF5ZXI7Cit9OworCisvKioKKyAqIHN0cnVj dCBrb21lZGFfY3J0YworICovCitzdHJ1Y3Qga29tZWRhX2NydGMgeworCS8qKiBAYmFzZTogJmRy bV9jcnRjICovCisJc3RydWN0IGRybV9jcnRjIGJhc2U7CisJLyoqIEBtYXN0ZXI6IG9ubHkgbWFz dGVyIGhhcyBkaXNwbGF5IG91dHB1dCAqLworCXN0cnVjdCBrb21lZGFfcGlwZWxpbmUgKm1hc3Rl cjsKKwkvKioKKwkgKiBAc2xhdmU6IG9wdGlvbmFsCisJICoKKwkgKiBEb2Vzbid0IGhhdmUgaXRz IG93biBkaXNwbGF5IG91dHB1dCwgdGhlIGhhbmRsZWQgZGF0YSBmbG93IHdpbGwKKwkgKiBtZXJn ZSBpbnRvIHRoZSBtYXN0ZXIuCisJICovCisJc3RydWN0IGtvbWVkYV9waXBlbGluZSAqc2xhdmU7 Cit9OworCisvKiogc3RydWN0IGtvbWVkYV9jcnRjX3N0YXRlICovCitzdHJ1Y3Qga29tZWRhX2Ny dGNfc3RhdGUgeworCS8qKiBAYmFzZTogJmRybV9jcnRjX3N0YXRlICovCisJc3RydWN0IGRybV9j cnRjX3N0YXRlIGJhc2U7CisKKwkvKiBwcml2YXRlIHByb3BlcnRpZXMgKi8KKworCS8qIGNvbXB1 dGVkIHN0YXRlIHdoaWNoIGFyZSB1c2VkIGJ5IHZhbGlkYXRlL2NoZWNrICovCisJdTMyIGFmZmVj dGVkX3BpcGVzOworCXUzMiBhY3RpdmVfcGlwZXM7Cit9OworCisvKiogc3RydWN0IGtvbWVkYV9r bXNfZGV2IC0gZm9yIGdhdGhlciBLTVMgcmVsYXRlZCB0aGluZ3MgKi8KK3N0cnVjdCBrb21lZGFf a21zX2RldiB7CisJLyoqIEBiYXNlOiAmZHJtX2RldmljZSAqLworCXN0cnVjdCBkcm1fZGV2aWNl IGJhc2U7CisKKwkvKiogQG5fY3J0Y3M6IHZhbGlkIG51bWJlcnMgb2YgY3J0Y3MgaW4gJmtvbWVk YV9rbXNfZGV2LmNydGNzICovCisJaW50IG5fY3J0Y3M7CisJLyoqIEBjcnRjczogY3J0Y3MgbGlz dCAqLworCXN0cnVjdCBrb21lZGFfY3J0YyBjcnRjc1tLT01FREFfTUFYX1BJUEVMSU5FU107Cit9 OworCisjZGVmaW5lIHRvX2twbGFuZShwKQljb250YWluZXJfb2YocCwgc3RydWN0IGtvbWVkYV9w bGFuZSwgYmFzZSkKKyNkZWZpbmUgdG9fa3BsYW5lX3N0KHApCWNvbnRhaW5lcl9vZihwLCBzdHJ1 Y3Qga29tZWRhX3BsYW5lX3N0YXRlLCBiYXNlKQorI2RlZmluZSB0b19rY29ubihwKQljb250YWlu ZXJfb2YocCwgc3RydWN0IGtvbWVkYV93Yl9jb25uZWN0b3IsIGJhc2UpCisjZGVmaW5lIHRvX2tj cnRjKHApCWNvbnRhaW5lcl9vZihwLCBzdHJ1Y3Qga29tZWRhX2NydGMsIGJhc2UpCisjZGVmaW5l IHRvX2tjcnRjX3N0KHApCWNvbnRhaW5lcl9vZihwLCBzdHJ1Y3Qga29tZWRhX2NydGNfc3RhdGUs IGJhc2UpCisjZGVmaW5lIHRvX2tkZXYocCkJY29udGFpbmVyX29mKHAsIHN0cnVjdCBrb21lZGFf a21zX2RldiwgYmFzZSkKKworaW50IGtvbWVkYV9rbXNfc2V0dXBfY3J0Y3Moc3RydWN0IGtvbWVk YV9rbXNfZGV2ICprbXMsIHN0cnVjdCBrb21lZGFfZGV2ICptZGV2KTsKKworaW50IGtvbWVkYV9r bXNfYWRkX2NydGNzKHN0cnVjdCBrb21lZGFfa21zX2RldiAqa21zLCBzdHJ1Y3Qga29tZWRhX2Rl diAqbWRldik7CitpbnQga29tZWRhX2ttc19hZGRfcGxhbmVzKHN0cnVjdCBrb21lZGFfa21zX2Rl diAqa21zLCBzdHJ1Y3Qga29tZWRhX2RldiAqbWRldik7CitpbnQga29tZWRhX2ttc19hZGRfcHJp dmF0ZV9vYmpzKHN0cnVjdCBrb21lZGFfa21zX2RldiAqa21zLAorCQkJCXN0cnVjdCBrb21lZGFf ZGV2ICptZGV2KTsKK3ZvaWQga29tZWRhX2ttc19jbGVhbnVwX3ByaXZhdGVfb2JqcyhzdHJ1Y3Qg a29tZWRhX2RldiAqbWRldik7CisKK3N0cnVjdCBrb21lZGFfa21zX2RldiAqa29tZWRhX2ttc19h dHRhY2goc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYpOwordm9pZCBrb21lZGFfa21zX2RldGFjaChz dHJ1Y3Qga29tZWRhX2ttc19kZXYgKmttcyk7CisKKyNlbmRpZiAvKl9LT01FREFfS01TX0hfKi8K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3Bp cGVsaW5lLmggYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9waXBl bGluZS5oCmluZGV4IDM1ZGM3MWFjZDdlYy4uOGM5NTBiYzhhZTk2IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9waXBlbGluZS5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3BpcGVsaW5lLmgKQEAgLTMz MSw2ICszMzEsOSBAQCBzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lX3N0YXRlIHsKICNkZWZpbmUgdG9f aW1wcm9jX3N0KGMpCWNvbnRhaW5lcl9vZihjLCBzdHJ1Y3Qga29tZWRhX2ltcHJvY19zdGF0ZSwg YmFzZSkKICNkZWZpbmUgdG9fY3RybHJfc3QoYykJY29udGFpbmVyX29mKGMsIHN0cnVjdCBrb21l ZGFfdGltaW5nX2N0cmxyX3N0YXRlLCBiYXNlKQogCisjZGVmaW5lIHByaXZfdG9fY29tcF9zdChv KSBjb250YWluZXJfb2Yobywgc3RydWN0IGtvbWVkYV9jb21wb25lbnRfc3RhdGUsIG9iaikKKyNk ZWZpbmUgcHJpdl90b19waXBlX3N0KG8pICBjb250YWluZXJfb2Yobywgc3RydWN0IGtvbWVkYV9w aXBlbGluZV9zdGF0ZSwgb2JqKQorCiAvKiBwaXBlbGluZSBBUElzICovCiBzdHJ1Y3Qga29tZWRh X3BpcGVsaW5lICoKIGtvbWVkYV9waXBlbGluZV9hZGQoc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYs IHNpemVfdCBzaXplLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tv bWVkYS9rb21lZGFfcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEv a29tZWRhX3BsYW5lLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4w YTQ5NTNhOWE5MDkKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3Bs YXkva29tZWRhL2tvbWVkYV9wbGFuZS5jCkBAIC0wLDAgKzEsMTA5IEBACisvLyBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMAorLyoKKyAqIChDKSBDT1BZUklHSFQgMjAxOCBBUk0gTGlt aXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIEF1dGhvcjogSmFtZXMuUWlhbi5XYW5nIDxq YW1lcy5xaWFuLndhbmdAYXJtLmNvbT4KKyAqCisgKi8KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21p Yy5oPgorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9k cm1fcGxhbmVfaGVscGVyLmg+CisjaW5jbHVkZSAia29tZWRhX2Rldi5oIgorI2luY2x1ZGUgImtv bWVkYV9rbXMuaCIKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNz IGtvbWVkYV9wbGFuZV9oZWxwZXJfZnVuY3MgPSB7Cit9OworCitzdGF0aWMgdm9pZCBrb21lZGFf cGxhbmVfZGVzdHJveShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKK3sKKwlkcm1fcGxhbmVfY2xl YW51cChwbGFuZSk7CisKKwlrZnJlZSh0b19rcGxhbmUocGxhbmUpKTsKK30KKworc3RhdGljIGNv bnN0IHN0cnVjdCBkcm1fcGxhbmVfZnVuY3Mga29tZWRhX3BsYW5lX2Z1bmNzID0geworfTsKKwor LyogZm9yIGtvbWVkYSwgd2hpY2ggaXMgcGlwZWxpbmUgY2FuIGJlIHNoYXJlIGJldHdlZW4gY3J0 Y3MgKi8KK3N0YXRpYyB1MzIgZ2V0X3Bvc3NpYmxlX2NydGNzKHN0cnVjdCBrb21lZGFfa21zX2Rl diAqa21zLAorCQkJICAgICAgc3RydWN0IGtvbWVkYV9waXBlbGluZSAqcGlwZSkKK3sKKwlzdHJ1 Y3Qga29tZWRhX2NydGMgKmNydGM7CisJdTMyIHBvc3NpYmxlX2NydGNzID0gMDsKKwlpbnQgaTsK KworCWZvciAoaSA9IDA7IGkgPCBrbXMtPm5fY3J0Y3M7IGkrKykgeworCQljcnRjID0gJmttcy0+ Y3J0Y3NbaV07CisKKwkJaWYgKChwaXBlID09IGNydGMtPm1hc3RlcikgfHwgKHBpcGUgPT0gY3J0 Yy0+c2xhdmUpKQorCQkJcG9zc2libGVfY3J0Y3MgfD0gQklUKGkpOworCX0KKworCXJldHVybiBw b3NzaWJsZV9jcnRjczsKK30KKworLyogdXNlIExheWVyMCBhcyBwcmltYXJ5ICovCitzdGF0aWMg dTMyIGdldF9wbGFuZV90eXBlKHN0cnVjdCBrb21lZGFfa21zX2RldiAqa21zLAorCQkJICBzdHJ1 Y3Qga29tZWRhX2NvbXBvbmVudCAqYykKK3sKKwlib29sIGlzX3ByaW1hcnkgPSAoYy0+aWQgPT0g S09NRURBX0NPTVBPTkVOVF9MQVlFUjApOworCisJcmV0dXJuIGlzX3ByaW1hcnkgPyBEUk1fUExB TkVfVFlQRV9QUklNQVJZIDogRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWTsKK30KKworc3RhdGljIGlu dCBrb21lZGFfcGxhbmVfYWRkKHN0cnVjdCBrb21lZGFfa21zX2RldiAqa21zLAorCQkJICAgIHN0 cnVjdCBrb21lZGFfbGF5ZXIgKmxheWVyKQoreworCXN0cnVjdCBrb21lZGFfZGV2ICptZGV2ID0g a21zLT5iYXNlLmRldl9wcml2YXRlOworCXN0cnVjdCBrb21lZGFfY29tcG9uZW50ICpjID0gJmxh eWVyLT5iYXNlOworCXN0cnVjdCBrb21lZGFfcGxhbmUgKmtwbGFuZTsKKwlzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZTsKKwl1MzIgKmZvcm1hdHMsIG5fZm9ybWF0cyA9IDA7CisJaW50IGVycjsKKwor CWtwbGFuZSA9IGt6YWxsb2Moc2l6ZW9mKCprcGxhbmUpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWtw bGFuZSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlwbGFuZSA9ICZrcGxhbmUtPmJhc2U7CisJa3Bs YW5lLT5sYXllciA9IGxheWVyOworCisJZm9ybWF0cyA9IGtvbWVkYV9nZXRfbGF5ZXJfZm91cmNj X2xpc3QoJm1kZXYtPmZtdF90YmwsCisJCQkJCSAgICAgICBsYXllci0+bGF5ZXJfdHlwZSwgJm5f Zm9ybWF0cyk7CisKKwllcnIgPSBkcm1fdW5pdmVyc2FsX3BsYW5lX2luaXQoJmttcy0+YmFzZSwg cGxhbmUsCisJCQlnZXRfcG9zc2libGVfY3J0Y3Moa21zLCBjLT5waXBlbGluZSksCisJCQkma29t ZWRhX3BsYW5lX2Z1bmNzLAorCQkJZm9ybWF0cywgbl9mb3JtYXRzLCBOVUxMLAorCQkJZ2V0X3Bs YW5lX3R5cGUoa21zLCBjKSwKKwkJCSIlcyIsIGMtPm5hbWUpOworCisJa29tZWRhX3B1dF9mb3Vy Y2NfbGlzdChmb3JtYXRzKTsKKworCWlmIChlcnIpCisJCWdvdG8gY2xlYW51cDsKKworCWRybV9w bGFuZV9oZWxwZXJfYWRkKHBsYW5lLCAma29tZWRhX3BsYW5lX2hlbHBlcl9mdW5jcyk7CisKKwly ZXR1cm4gMDsKK2NsZWFudXA6CisJa29tZWRhX3BsYW5lX2Rlc3Ryb3kocGxhbmUpOworCXJldHVy biBlcnI7Cit9CisKK2ludCBrb21lZGFfa21zX2FkZF9wbGFuZXMoc3RydWN0IGtvbWVkYV9rbXNf ZGV2ICprbXMsIHN0cnVjdCBrb21lZGFfZGV2ICptZGV2KQoreworCXN0cnVjdCBrb21lZGFfcGlw ZWxpbmUgKnBpcGU7CisJaW50IGksIGosIGVycjsKKworCWZvciAoaSA9IDA7IGkgPCBtZGV2LT5u X3BpcGVsaW5lczsgaSsrKSB7CisJCXBpcGUgPSBtZGV2LT5waXBlbGluZXNbaV07CisKKwkJZm9y IChqID0gMDsgaiA8IHBpcGUtPm5fbGF5ZXJzOyBqKyspIHsKKwkJCWVyciA9IGtvbWVkYV9wbGFu ZV9hZGQoa21zLCBwaXBlLT5sYXllcnNbal0pOworCQkJaWYgKGVycikKKwkJCQlyZXR1cm4gZXJy OworCQl9CisJfQorCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9wcml2YXRlX29iai5jIGIvZHJpdmVycy9ncHUvZHJt L2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcHJpdmF0ZV9vYmouYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjllZGZkNmFiMGMxMgotLS0gL2Rldi9udWxsCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3ByaXZhdGVfb2JqLmMK QEAgLTAsMCArMSw4OCBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8q CisgKiAoQykgQ09QWVJJR0hUIDIwMTggQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu CisgKiBBdXRob3I6IEphbWVzLlFpYW4uV2FuZyA8amFtZXMucWlhbi53YW5nQGFybS5jb20+Cisg KgorICovCisjaW5jbHVkZSAia29tZWRhX2Rldi5oIgorI2luY2x1ZGUgImtvbWVkYV9rbXMuaCIK Kworc3RhdGljIHN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZSAqCitrb21lZGFfcGlwZWxpbmVfYXRv bWljX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX3ByaXZhdGVfb2JqICpvYmopCit7CisJc3Ry dWN0IGtvbWVkYV9waXBlbGluZV9zdGF0ZSAqc3Q7CisKKwlzdCA9IGttZW1kdXAob2JqLT5zdGF0 ZSwgc2l6ZW9mKCpzdCksIEdGUF9LRVJORUwpOworCWlmICghc3QpCisJCXJldHVybiBOVUxMOwor CisJc3QtPmFjdGl2ZV9jb21wcyA9IDA7CisKKwlfX2RybV9hdG9taWNfaGVscGVyX3ByaXZhdGVf b2JqX2R1cGxpY2F0ZV9zdGF0ZShvYmosICZzdC0+b2JqKTsKKworCXJldHVybiAmc3QtPm9iajsK K30KKworc3RhdGljIHZvaWQKK2tvbWVkYV9waXBlbGluZV9hdG9taWNfZGVzdHJveV9zdGF0ZShz dHJ1Y3QgZHJtX3ByaXZhdGVfb2JqICpvYmosCisJCQkJICAgICBzdHJ1Y3QgZHJtX3ByaXZhdGVf c3RhdGUgKnN0YXRlKQoreworCWtmcmVlKHByaXZfdG9fcGlwZV9zdChzdGF0ZSkpOworfQorCitz dGF0aWMgY29uc3Qgc3RydWN0IGRybV9wcml2YXRlX3N0YXRlX2Z1bmNzIGtvbWVkYV9waXBlbGlu ZV9vYmpfZnVuY3MgPSB7CisJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUJPSBrb21lZGFfcGlwZWxp bmVfYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSwKKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUJPSBrb21l ZGFfcGlwZWxpbmVfYXRvbWljX2Rlc3Ryb3lfc3RhdGUsCit9OworCitzdGF0aWMgaW50IGtvbWVk YV9waXBlbGluZV9vYmpfYWRkKHN0cnVjdCBrb21lZGFfa21zX2RldiAqa21zLAorCQkJCSAgIHN0 cnVjdCBrb21lZGFfcGlwZWxpbmUgKnBpcGUpCit7CisJc3RydWN0IGtvbWVkYV9waXBlbGluZV9z dGF0ZSAqc3Q7CisKKwlzdCA9IGt6YWxsb2Moc2l6ZW9mKCpzdCksIEdGUF9LRVJORUwpOworCWlm ICghc3QpCisJCXJldHVybiAtRU5PTUVNOworCisJc3QtPnBpcGUgPSBwaXBlOworCWRybV9hdG9t aWNfcHJpdmF0ZV9vYmpfaW5pdCgmcGlwZS0+b2JqLCAmc3QtPm9iaiwKKwkJCQkgICAgJmtvbWVk YV9waXBlbGluZV9vYmpfZnVuY3MpOworCisJcmV0dXJuIDA7Cit9CisKK2ludCBrb21lZGFfa21z X2FkZF9wcml2YXRlX29ianMoc3RydWN0IGtvbWVkYV9rbXNfZGV2ICprbXMsCisJCQkJc3RydWN0 IGtvbWVkYV9kZXYgKm1kZXYpCit7CisJc3RydWN0IGtvbWVkYV9waXBlbGluZSAqcGlwZTsKKwlp bnQgaSwgZXJyOworCisJZm9yIChpID0gMDsgaSA8IG1kZXYtPm5fcGlwZWxpbmVzOyBpKyspIHsK KwkJcGlwZSA9IG1kZXYtPnBpcGVsaW5lc1tpXTsKKworCQllcnIgPSBrb21lZGFfcGlwZWxpbmVf b2JqX2FkZChrbXMsIHBpcGUpOworCQlpZiAoZXJyKQorCQkJcmV0dXJuIGVycjsKKworCQkvKiBB ZGQgY29tcG9uZW50ICovCisJfQorCisJcmV0dXJuIDA7Cit9CisKK3ZvaWQga29tZWRhX2ttc19j bGVhbnVwX3ByaXZhdGVfb2JqcyhzdHJ1Y3Qga29tZWRhX2RldiAqbWRldikKK3sKKwlzdHJ1Y3Qg a29tZWRhX3BpcGVsaW5lICpwaXBlOworCXN0cnVjdCBrb21lZGFfY29tcG9uZW50ICpjOworCWlu dCBpLCBpZDsKKworCWZvciAoaSA9IDA7IGkgPCBtZGV2LT5uX3BpcGVsaW5lczsgaSsrKSB7CisJ CXBpcGUgPSBtZGV2LT5waXBlbGluZXNbaV07CisJCWRwX2Zvcl9lYWNoX3NldF9iaXQoaWQsIHBp cGUtPmF2YWlsX2NvbXBzKSB7CisJCQljID0ga29tZWRhX3BpcGVsaW5lX2dldF9jb21wb25lbnQo cGlwZSwgaWQpOworCisJCQlkcm1fYXRvbWljX3ByaXZhdGVfb2JqX2ZpbmkoJmMtPm9iaik7CisJ CX0KKwkJZHJtX2F0b21pY19wcml2YXRlX29ial9maW5pKCZwaXBlLT5vYmopOworCX0KK30KLS0g CjIuMTcuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K ZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==