From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shawn Guo Subject: [PATCH] drm: zte: add overlay plane support Date: Thu, 8 Dec 2016 11:12:41 +0800 Message-ID: <1481166761-5100-1-git-send-email-shawnguo@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 79B0A6E017 for ; Thu, 8 Dec 2016 03:14:14 +0000 (UTC) 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 Cc: Daniel Vetter , Baoyou Xie , Jun Nie , Shawn Guo , linux-arm-kernel@lists.infradead.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogU2hhd24gR3VvIDxzaGF3bi5ndW9AbGluYXJvLm9yZz4KCkl0IGVuYWJsZXMgVk9VIFZM IChWaWRlbyBMYXllcikgdG8gc3VwcG9ydCBvdmVybGF5IHBsYW5lIHdpdGggc2NhbGluZwpmdW5j dGlvbi4gIFZMMCBoYXMgc29tZSBxdWlya3Mgb24gc2NhbGluZyBzdXBwb3J0LiAgV2UgY2hvc2Ug dG8gc2tpcCBpdAphbmQgb25seSBhZGRzIFZMMSBhbmQgVkwyIGludG8gRFJNIGNvcmUgZm9yIG5v dy4KClNpZ25lZC1vZmYtYnk6IFNoYXduIEd1byA8c2hhd24uZ3VvQGxpbmFyby5vcmc+Ci0tLQog ZHJpdmVycy9ncHUvZHJtL3p0ZS96eF9wbGFuZS5jICAgICAgfCAyOTAgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tCiBkcml2ZXJzL2dwdS9kcm0venRlL3p4X3BsYW5lX3JlZ3Mu aCB8ICA1MSArKysrKysrCiBkcml2ZXJzL2dwdS9kcm0venRlL3p4X3ZvdS5jICAgICAgICB8IDE0 OSArKysrKysrKysrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91LmggICAgICAg IHwgICAzICsKIGRyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91X3JlZ3MuaCAgIHwgIDE4ICsrKwog NSBmaWxlcyBjaGFuZ2VkLCA0OTQgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF9wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJt L3p0ZS96eF9wbGFuZS5jCmluZGV4IDU0NmViOTJhOTRlOC4uMGRkNDhjNjZhMDJlIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0venRlL3p4X3BsYW5lLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L3p0ZS96eF9wbGFuZS5jCkBAIC00MCw2ICs0MCwyNjYgQEAgc3RydWN0IHp4X3BsYW5lIHsKIAlE Uk1fRk9STUFUX0FSR0I0NDQ0LAogfTsKIAorc3RhdGljIGNvbnN0IHVpbnQzMl90IHZsX2Zvcm1h dHNbXSA9IHsKKwlEUk1fRk9STUFUX05WMTIsCS8qIFNlbWktcGxhbmFyIFlVVjQyMCAqLworCURS TV9GT1JNQVRfWVVWNDIwLAkvKiBQbGFuYXIgWVVWNDIwICovCisJRFJNX0ZPUk1BVF9ZVVlWLAkv KiBQYWNrZWQgWVVWNDIyICovCisJRFJNX0ZPUk1BVF9ZVllVLAorCURSTV9GT1JNQVRfVVlWWSwK KwlEUk1fRk9STUFUX1ZZVVksCisJRFJNX0ZPUk1BVF9ZVVY0NDQsCS8qIFlVVjQ0NCA4Yml0ICov CisJLyoKKwkgKiBUT0RPOiBhZGQgZm9ybWF0cyBiZWxvdyB0aGF0IEhXIHN1cHBvcnRzOgorCSAq ICAtIFlVVjQyMCBQMDEwCisJICogIC0gWVVWNDIwIEhhbnRybworCSAqICAtIFlVVjQ0NCAxMGJp dAorCSAqLworfTsKKworI2RlZmluZSBGUkFDXzE2XzE2KG11bHQsIGRpdikgICAgKCgobXVsdCkg PDwgMTYpIC8gKGRpdikpCisKK3N0YXRpYyBpbnQgenhfdmxfcGxhbmVfYXRvbWljX2NoZWNrKHN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJCSAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpw bGFuZV9zdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRl LT5mYjsKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBwbGFuZV9zdGF0ZS0+Y3J0YzsKKwlzdHJ1 Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7CisJc3RydWN0IGRybV9yZWN0IGNsaXA7CisJ aW50IG1pbl9zY2FsZSA9IEZSQUNfMTZfMTYoMSwgOCk7CisJaW50IG1heF9zY2FsZSA9IEZSQUNf MTZfMTYoOCwgMSk7CisKKwlpZiAoIWNydGMgfHwgIWZiKQorCQlyZXR1cm4gMDsKKworCWNydGNf c3RhdGUgPSBkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHBsYW5lX3N0YXRlLT5z dGF0ZSwKKwkJCQkJCQljcnRjKTsKKwlpZiAoV0FSTl9PTighY3J0Y19zdGF0ZSkpCisJCXJldHVy biAtRUlOVkFMOworCisJLyogbm90aGluZyB0byBjaGVjayB3aGVuIGRpc2FibGluZyBvciBkaXNh YmxlZCAqLworCWlmICghY3J0Y19zdGF0ZS0+ZW5hYmxlKQorCQlyZXR1cm4gMDsKKworCS8qIHBs YW5lIG11c3QgYmUgZW5hYmxlZCAqLworCWlmICghcGxhbmVfc3RhdGUtPmNydGMpCisJCXJldHVy biAtRUlOVkFMOworCisJY2xpcC54MSA9IDA7CisJY2xpcC55MSA9IDA7CisJY2xpcC54MiA9IGNy dGNfc3RhdGUtPmFkanVzdGVkX21vZGUuaGRpc3BsYXk7CisJY2xpcC55MiA9IGNydGNfc3RhdGUt PmFkanVzdGVkX21vZGUudmRpc3BsYXk7CisKKwlyZXR1cm4gZHJtX3BsYW5lX2hlbHBlcl9jaGVj a19zdGF0ZShwbGFuZV9zdGF0ZSwgJmNsaXAsCisJCQkJCSAgICBtaW5fc2NhbGUsIG1heF9zY2Fs ZSwKKwkJCQkJICAgIHRydWUsIHRydWUpOworfQorCitzdGF0aWMgdTMyIHp4X3ZsX2dldF9mbXQo dWludDMyX3QgZm9ybWF0KQoreworCXUzMiB2YWwgPSAwOworCisJc3dpdGNoIChmb3JtYXQpIHsK KwljYXNlIERSTV9GT1JNQVRfTlYxMjoKKwkJdmFsID0gVkxfRk1UX1lVVjQyMDsKKwkJYnJlYWs7 CisJY2FzZSBEUk1fRk9STUFUX1lVVjQyMDoKKwkJdmFsID0gVkxfWVVWNDIwX1BMQU5BUiB8IFZM X0ZNVF9ZVVY0MjA7CisJCWJyZWFrOworCWNhc2UgRFJNX0ZPUk1BVF9ZVVlWOgorCQl2YWwgPSBW TF9ZVVY0MjJfWVVZViB8IFZMX0ZNVF9ZVVY0MjI7CisJCWJyZWFrOworCWNhc2UgRFJNX0ZPUk1B VF9ZVllVOgorCQl2YWwgPSBWTF9ZVVY0MjJfWVZZVSB8IFZMX0ZNVF9ZVVY0MjI7CisJCWJyZWFr OworCWNhc2UgRFJNX0ZPUk1BVF9VWVZZOgorCQl2YWwgPSBWTF9ZVVY0MjJfVVlWWSB8IFZMX0ZN VF9ZVVY0MjI7CisJCWJyZWFrOworCWNhc2UgRFJNX0ZPUk1BVF9WWVVZOgorCQl2YWwgPSBWTF9Z VVY0MjJfVllVWSB8IFZMX0ZNVF9ZVVY0MjI7CisJCWJyZWFrOworCWNhc2UgRFJNX0ZPUk1BVF9Z VVY0NDQ6CisJCXZhbCA9IFZMX0ZNVF9ZVVY0NDRfOEJJVDsKKwkJYnJlYWs7CisJZGVmYXVsdDoK KwkJV0FSTl9PTkNFKDEsICJpbnZhbGlkIHBpeGVsIGZvcm1hdCAlZFxuIiwgZm9ybWF0KTsKKwl9 CisKKwlyZXR1cm4gdmFsOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgenhfdmxfc2V0X3VwZGF0 ZShzdHJ1Y3QgenhfcGxhbmUgKnpwbGFuZSkKK3sKKwl2b2lkIF9faW9tZW0gKmxheWVyID0genBs YW5lLT5sYXllcjsKKworCXp4X3dyaXRlbF9tYXNrKGxheWVyICsgVkxfQ1RSTDAsIFZMX1VQREFU RSwgVkxfVVBEQVRFKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHp4X3ZsX3Jzel9zZXRfdXBk YXRlKHN0cnVjdCB6eF9wbGFuZSAqenBsYW5lKQoreworCXp4X3dyaXRlbCh6cGxhbmUtPnJzeiAr IFJTWl9WTF9FTkFCTEVfQ0ZHLCAxKTsKK30KKworc3RhdGljIHUzMiB6eF92bF9yc3pfZ2V0X2Zt dCh1aW50MzJfdCBmb3JtYXQpCit7CisJdTMyIHZhbCA9IDA7CisKKwlzd2l0Y2ggKGZvcm1hdCkg eworCWNhc2UgRFJNX0ZPUk1BVF9OVjEyOgorCWNhc2UgRFJNX0ZPUk1BVF9ZVVY0MjA6CisJCXZh bCA9IFJTWl9WTF9GTVRfWUNCQ1I0MjA7CisJCWJyZWFrOworCWNhc2UgRFJNX0ZPUk1BVF9ZVVlW OgorCWNhc2UgRFJNX0ZPUk1BVF9ZVllVOgorCWNhc2UgRFJNX0ZPUk1BVF9VWVZZOgorCWNhc2Ug RFJNX0ZPUk1BVF9WWVVZOgorCQl2YWwgPSBSU1pfVkxfRk1UX1lDQkNSNDIyOworCQlicmVhazsK KwljYXNlIERSTV9GT1JNQVRfWVVWNDQ0OgorCQl2YWwgPSBSU1pfVkxfRk1UX1lDQkNSNDQ0Owor CQlicmVhazsKKwlkZWZhdWx0OgorCQlXQVJOX09OQ0UoMSwgImludmFsaWQgcGl4ZWwgZm9ybWF0 ICVkXG4iLCBmb3JtYXQpOworCX0KKworCXJldHVybiB2YWw7Cit9CisKK3N0YXRpYyBpbmxpbmUg dTMyIHJzel9zdGVwX3ZhbHVlKHUzMiBzcmMsIHUzMiBkc3QpCit7CisJdTMyIHZhbCA9IDA7CisK KwlpZiAoc3JjID09IGRzdCkKKwkJdmFsID0gMDsKKwllbHNlIGlmIChzcmMgPCBkc3QpCisJCXZh bCA9IFJTWl9QQVJBX1NURVAoKHNyYyA8PCAxNikgLyBkc3QpOworCWVsc2UgaWYgKHNyYyA+IGRz dCkKKwkJdmFsID0gUlNaX0RBVEFfU1RFUChzcmMgLyBkc3QpIHwKKwkJICAgICAgUlNaX1BBUkFf U1RFUCgoKHNyYyA8PCAxNikgLyBkc3QpICYgMHhmZmZmKTsKKworCXJldHVybiB2YWw7Cit9CisK K3N0YXRpYyB2b2lkIHp4X3ZsX3Jzel9zZXR1cChzdHJ1Y3QgenhfcGxhbmUgKnpwbGFuZSwgdWlu dDMyX3QgZm9ybWF0LAorCQkJICAgIHUzMiBzcmNfdywgdTMyIHNyY19oLCB1MzIgZHN0X3csIHUz MiBkc3RfaCkKK3sKKwl2b2lkIF9faW9tZW0gKnJzeiA9IHpwbGFuZS0+cnN6OworCXUzMiBzcmNf Y2hyb21hX3cgPSBzcmNfdzsKKwl1MzIgc3JjX2Nocm9tYV9oID0gc3JjX2g7CisJdTMyIGZtdDsK KworCS8qIFNldCB1cCBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHJlc29sdXRpb24gKi8KKwl6eF93 cml0ZWwocnN6ICsgUlNaX1NSQ19DRkcsIFJTWl9WRVIoc3JjX2ggLSAxKSB8IFJTWl9IT1Ioc3Jj X3cgLSAxKSk7CisJenhfd3JpdGVsKHJzeiArIFJTWl9ERVNUX0NGRywgUlNaX1ZFUihkc3RfaCAt IDEpIHwgUlNaX0hPUihkc3RfdyAtIDEpKTsKKworCS8qIENvbmZpZ3VyZSBkYXRhIGZvcm1hdCBm b3IgVkwgUlNaICovCisJZm10ID0genhfdmxfcnN6X2dldF9mbXQoZm9ybWF0KTsKKwl6eF93cml0 ZWxfbWFzayhyc3ogKyBSU1pfVkxfQ1RSTF9DRkcsIFJTWl9WTF9GTVRfTUFTSywgZm10KTsKKwor CS8qIENhbGN1bGF0ZSBDaHJvbWEgaGVpZ3RoIGFuZCB3aWR0aCAqLworCWlmIChmbXQgPT0gUlNa X1ZMX0ZNVF9ZQ0JDUjQyMCkgeworCQlzcmNfY2hyb21hX3cgPSBzcmNfdyA+PiAxOworCQlzcmNf Y2hyb21hX2ggPSBzcmNfaCA+PiAxOworCX0gZWxzZSBpZiAoZm10ID09IFJTWl9WTF9GTVRfWUNC Q1I0MjIpIHsKKwkJc3JjX2Nocm9tYV93ID0gc3JjX3cgPj4gMTsKKwl9CisKKwkvKiBTZXQgdXAg THVtYSBhbmQgQ2hyb21hIHN0ZXAgcmVnaXN0ZXJzICovCisJenhfd3JpdGVsKHJzeiArIFJTWl9W TF9MVU1BX0hPUiwgcnN6X3N0ZXBfdmFsdWUoc3JjX3csIGRzdF93KSk7CisJenhfd3JpdGVsKHJz eiArIFJTWl9WTF9MVU1BX1ZFUiwgcnN6X3N0ZXBfdmFsdWUoc3JjX2gsIGRzdF9oKSk7CisJenhf d3JpdGVsKHJzeiArIFJTWl9WTF9DSFJPTUFfSE9SLCByc3pfc3RlcF92YWx1ZShzcmNfY2hyb21h X3csIGRzdF93KSk7CisJenhfd3JpdGVsKHJzeiArIFJTWl9WTF9DSFJPTUFfVkVSLCByc3pfc3Rl cF92YWx1ZShzcmNfY2hyb21hX2gsIGRzdF9oKSk7CisKKwl6eF92bF9yc3pfc2V0X3VwZGF0ZSh6 cGxhbmUpOworfQorCitzdGF0aWMgdm9pZCB6eF92bF9wbGFuZV9hdG9taWNfdXBkYXRlKHN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJCSAgICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9s ZF9zdGF0ZSkKK3sKKwlzdHJ1Y3QgenhfcGxhbmUgKnpwbGFuZSA9IHRvX3p4X3BsYW5lKHBsYW5l KTsKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lLT5zdGF0ZS0+ZmI7CisJc3Ry dWN0IGRybV9nZW1fY21hX29iamVjdCAqY21hX29iajsKKwl2b2lkIF9faW9tZW0gKmxheWVyID0g enBsYW5lLT5sYXllcjsKKwl2b2lkIF9faW9tZW0gKmhic2MgPSB6cGxhbmUtPmhic2M7CisJdm9p ZCBfX2lvbWVtICpwYWRkcl9yZWc7CisJZG1hX2FkZHJfdCBwYWRkcjsKKwl1MzIgc3JjX3gsIHNy Y195LCBzcmNfdywgc3JjX2g7CisJdTMyIGRzdF94LCBkc3RfeSwgZHN0X3csIGRzdF9oOworCXVp bnQzMl90IGZvcm1hdDsKKwl1MzIgZm10OworCWludCBudW1fcGxhbmVzOworCWludCBpOworCisJ aWYgKCFmYikKKwkJcmV0dXJuOworCisJZm9ybWF0ID0gZmItPnBpeGVsX2Zvcm1hdDsKKworCXNy Y194ID0gcGxhbmUtPnN0YXRlLT5zcmNfeCA+PiAxNjsKKwlzcmNfeSA9IHBsYW5lLT5zdGF0ZS0+ c3JjX3kgPj4gMTY7CisJc3JjX3cgPSBwbGFuZS0+c3RhdGUtPnNyY193ID4+IDE2OworCXNyY19o ID0gcGxhbmUtPnN0YXRlLT5zcmNfaCA+PiAxNjsKKworCWRzdF94ID0gcGxhbmUtPnN0YXRlLT5j cnRjX3g7CisJZHN0X3kgPSBwbGFuZS0+c3RhdGUtPmNydGNfeTsKKwlkc3RfdyA9IHBsYW5lLT5z dGF0ZS0+Y3J0Y193OworCWRzdF9oID0gcGxhbmUtPnN0YXRlLT5jcnRjX2g7CisKKwkvKiBTZXQg dXAgZGF0YSBhZGRyZXNzIHJlZ2lzdGVycyBmb3IgWSwgQ2IgYW5kIENyIHBsYW5lcyAqLworCW51 bV9wbGFuZXMgPSBkcm1fZm9ybWF0X251bV9wbGFuZXMoZm9ybWF0KTsKKwlwYWRkcl9yZWcgPSBs YXllciArIFZMX1k7CisJZm9yIChpID0gMDsgaSA8IG51bV9wbGFuZXM7IGkrKykgeworCQljbWFf b2JqID0gZHJtX2ZiX2NtYV9nZXRfZ2VtX29iaihmYiwgaSk7CisJCXBhZGRyID0gY21hX29iai0+ cGFkZHIgKyBmYi0+b2Zmc2V0c1tpXTsKKwkJcGFkZHIgKz0gc3JjX3kgKiBmYi0+cGl0Y2hlc1tp XTsKKwkJcGFkZHIgKz0gc3JjX3ggKiBkcm1fZm9ybWF0X3BsYW5lX2NwcChmb3JtYXQsIGkpOwor CQl6eF93cml0ZWwocGFkZHJfcmVnLCBwYWRkcik7CisJCXBhZGRyX3JlZyArPSA0OworCX0KKwor CS8qIFNldCB1cCBzb3VyY2UgaGVpZ2h0L3dpZHRoIHJlZ2lzdGVyICovCisJenhfd3JpdGVsKGxh eWVyICsgVkxfU1JDX1NJWkUsIEdMX1NSQ19XKHNyY193KSB8IEdMX1NSQ19IKHNyY19oKSk7CisK KwkvKiBTZXQgdXAgc3RhcnQgcG9zaXRpb24gcmVnaXN0ZXIgKi8KKwl6eF93cml0ZWwobGF5ZXIg KyBWTF9QT1NfU1RBUlQsIEdMX1BPU19YKGRzdF94KSB8IEdMX1BPU19ZKGRzdF95KSk7CisKKwkv KiBTZXQgdXAgZW5kIHBvc2l0aW9uIHJlZ2lzdGVyICovCisJenhfd3JpdGVsKGxheWVyICsgVkxf UE9TX0VORCwKKwkJICBHTF9QT1NfWChkc3RfeCArIGRzdF93KSB8IEdMX1BPU19ZKGRzdF95ICsg ZHN0X2gpKTsKKworCS8qIFN0cmlkZXMgb2YgQ2IgYW5kIENyIHBsYW5lcyBzaG91bGQgYmUgaWRl bnRpY2FsICovCisJenhfd3JpdGVsKGxheWVyICsgVkxfU1RSSURFLCBMVU1BX1NUUklERShmYi0+ cGl0Y2hlc1swXSkgfAorCQkgIENIUk9NQV9TVFJJREUoZmItPnBpdGNoZXNbMV0pKTsKKworCS8q IFNldCB1cCB2aWRlbyBsYXllciBkYXRhIGZvcm1hdCAqLworCWZtdCA9IHp4X3ZsX2dldF9mbXQo Zm9ybWF0KTsKKwl6eF93cml0ZWwobGF5ZXIgKyBWTF9DVFJMMSwgZm10KTsKKworCS8qIEFsd2F5 cyB1c2Ugc2NhbGVyIHNpbmNlIGl0IGV4aXN0cyAoc2V0IGZvciBub3QgYnlwYXNzKSAqLworCXp4 X3dyaXRlbF9tYXNrKGxheWVyICsgVkxfQ1RSTDIsIFZMX1NDQUxFUl9CWVBBU1NfTU9ERSwKKwkJ ICAgICAgIFZMX1NDQUxFUl9CWVBBU1NfTU9ERSk7CisKKwl6eF92bF9yc3pfc2V0dXAoenBsYW5l LCBmb3JtYXQsIHNyY193LCBzcmNfaCwgZHN0X3csIGRzdF9oKTsKKworCS8qIEVuYWJsZSBIQlND IGJsb2NrICovCisJenhfd3JpdGVsX21hc2soaGJzYyArIEhCU0NfQ1RSTDAsIEhCU0NfQ1RSTF9F TiwgSEJTQ19DVFJMX0VOKTsKKworCXp4X292ZXJsYXlfZW5hYmxlKHBsYW5lKTsKKworCXp4X3Zs X3NldF91cGRhdGUoenBsYW5lKTsKK30KKworc3RhdGljIHZvaWQgenhfdmxfcGxhbmVfYXRvbWlj X2Rpc2FibGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCisJCQkJICAgICAgIHN0cnVjdCBkcm1f cGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSkKK3sKKwl6eF9vdmVybGF5X2Rpc2FibGUocGxhbmUpOwor fQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgenhfdmxfcGxh bmVfaGVscGVyX2Z1bmNzID0geworCS5hdG9taWNfY2hlY2sgPSB6eF92bF9wbGFuZV9hdG9taWNf Y2hlY2ssCisJLmF0b21pY191cGRhdGUgPSB6eF92bF9wbGFuZV9hdG9taWNfdXBkYXRlLAorCS5h dG9taWNfZGlzYWJsZSA9IHp4X3ZsX3BsYW5lX2F0b21pY19kaXNhYmxlLAorfTsKKwogc3RhdGlj IGludCB6eF9nbF9wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJ CQkJICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewpAQCAtMTA3LDE0 ICszNjcsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgenhfZ2xfcnN6X3NldF91cGRhdGUoc3RydWN0 IHp4X3BsYW5lICp6cGxhbmUpCiAJenhfd3JpdGVsKHpwbGFuZS0+cnN6ICsgUlNaX0VOQUJMRV9D RkcsIDEpOwogfQogCi12b2lkIHp4X3BsYW5lX3NldF91cGRhdGUoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUpCi17Ci0Jc3RydWN0IHp4X3BsYW5lICp6cGxhbmUgPSB0b196eF9wbGFuZShwbGFuZSk7 Ci0KLQl6eF9nbF9yc3pfc2V0X3VwZGF0ZSh6cGxhbmUpOwotCXp4X2dsX3NldF91cGRhdGUoenBs YW5lKTsKLX0KLQogc3RhdGljIHZvaWQgenhfZ2xfcnN6X3NldHVwKHN0cnVjdCB6eF9wbGFuZSAq enBsYW5lLCB1MzIgc3JjX3csIHUzMiBzcmNfaCwKIAkJCSAgICB1MzIgZHN0X3csIHUzMiBkc3Rf aCkKIHsKQEAgLTIzMCw2ICs0ODIsMjQgQEAgc3RhdGljIHZvaWQgenhfcGxhbmVfZGVzdHJveShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKIAkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRv bWljX2hlbHBlcl9wbGFuZV9kZXN0cm95X3N0YXRlLAogfTsKIAordm9pZCB6eF9wbGFuZV9zZXRf dXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQoreworCXN0cnVjdCB6eF9wbGFuZSAqenBs YW5lID0gdG9fenhfcGxhbmUocGxhbmUpOworCisJc3dpdGNoIChwbGFuZS0+dHlwZSkgeworCWNh c2UgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWToKKwkJenhfZ2xfcnN6X3NldF91cGRhdGUoenBsYW5l KTsKKwkJenhfZ2xfc2V0X3VwZGF0ZSh6cGxhbmUpOworCQlicmVhazsKKwljYXNlIERSTV9QTEFO RV9UWVBFX09WRVJMQVk6CisJCXp4X3ZsX3Jzel9zZXRfdXBkYXRlKHpwbGFuZSk7CisJCXp4X3Zs X3NldF91cGRhdGUoenBsYW5lKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJV0FSTl9PTkNFKDEs ICJ1bnN1cHBvcnRlZCBwbGFuZSB0eXBlICVkXG4iLCBwbGFuZS0+dHlwZSk7CisJfQorfQorCiBz dGF0aWMgdm9pZCB6eF9wbGFuZV9oYnNjX2luaXQoc3RydWN0IHp4X3BsYW5lICp6cGxhbmUpCiB7 CiAJdm9pZCBfX2lvbWVtICpoYnNjID0genBsYW5lLT5oYnNjOwpAQCAtMjc5LDcgKzU0OSw5IEBA IHN0cnVjdCBkcm1fcGxhbmUgKnp4X3BsYW5lX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRybSwg c3RydWN0IGRldmljZSAqZGV2LAogCQlmb3JtYXRfY291bnQgPSBBUlJBWV9TSVpFKGdsX2Zvcm1h dHMpOwogCQlicmVhazsKIAljYXNlIERSTV9QTEFORV9UWVBFX09WRVJMQVk6Ci0JCS8qIFRPRE86 IGFkZCB2aWRlbyBsYXllciAodmwpIHN1cHBvcnQgKi8KKwkJaGVscGVyID0gJnp4X3ZsX3BsYW5l X2hlbHBlcl9mdW5jczsKKwkJZm9ybWF0cyA9IHZsX2Zvcm1hdHM7CisJCWZvcm1hdF9jb3VudCA9 IEFSUkFZX1NJWkUodmxfZm9ybWF0cyk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXJldHVybiBF UlJfUFRSKC1FTk9ERVYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF9wbGFu ZV9yZWdzLmggYi9kcml2ZXJzL2dwdS9kcm0venRlL3p4X3BsYW5lX3JlZ3MuaAppbmRleCAzZGRl NjcxNmE1NTguLjY1ZjI3MWFlYWJlZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3p0ZS96 eF9wbGFuZV9yZWdzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF9wbGFuZV9yZWdzLmgK QEAgLTQ2LDYgKzQ2LDM3IEBACiAjZGVmaW5lIEdMX1BPU19YKHgpCSgoKHgpIDw8IEdMX1BPU19Y X1NISUZUKSAmIEdMX1BPU19YX01BU0spCiAjZGVmaW5lIEdMX1BPU19ZKHgpCSgoKHgpIDw8IEdM X1BPU19ZX1NISUZUKSAmIEdMX1BPU19ZX01BU0spCiAKKy8qIFZMIHJlZ2lzdGVycyAqLworI2Rl ZmluZSBWTF9DVFJMMAkJCTB4MDAKKyNkZWZpbmUgVkxfVVBEQVRFCQkJQklUKDMpCisjZGVmaW5l IFZMX0NUUkwxCQkJMHgwNAorI2RlZmluZSBWTF9ZVVY0MjBfUExBTkFSCQlCSVQoNSkKKyNkZWZp bmUgVkxfWVVWNDIyX1NISUZUCQkJMworI2RlZmluZSBWTF9ZVVY0MjJfWVVZVgkJCSgwIDw8IFZM X1lVVjQyMl9TSElGVCkKKyNkZWZpbmUgVkxfWVVWNDIyX1lWWVUJCQkoMSA8PCBWTF9ZVVY0MjJf U0hJRlQpCisjZGVmaW5lIFZMX1lVVjQyMl9VWVZZCQkJKDIgPDwgVkxfWVVWNDIyX1NISUZUKQor I2RlZmluZSBWTF9ZVVY0MjJfVllVWQkJCSgzIDw8IFZMX1lVVjQyMl9TSElGVCkKKyNkZWZpbmUg VkxfRk1UX1lVVjQyMAkJCTAKKyNkZWZpbmUgVkxfRk1UX1lVVjQyMgkJCTEKKyNkZWZpbmUgVkxf Rk1UX1lVVjQyMF9QMDEwCQkyCisjZGVmaW5lIFZMX0ZNVF9ZVVY0MjBfSEFOVFJPCQkzCisjZGVm aW5lIFZMX0ZNVF9ZVVY0NDRfOEJJVAkJNAorI2RlZmluZSBWTF9GTVRfWVVWNDQ0XzEwQklUCQk1 CisjZGVmaW5lIFZMX0NUUkwyCQkJMHgwOAorI2RlZmluZSBWTF9TQ0FMRVJfQllQQVNTX01PREUJ CUJJVCgwKQorI2RlZmluZSBWTF9TVFJJREUJCQkweDBjCisjZGVmaW5lIExVTUFfU1RSSURFX1NI SUZUCQkxNgorI2RlZmluZSBMVU1BX1NUUklERV9NQVNLCQkoMHhmZmZmIDw8IExVTUFfU1RSSURF X1NISUZUKQorI2RlZmluZSBDSFJPTUFfU1RSSURFX1NISUZUCQkwCisjZGVmaW5lIENIUk9NQV9T VFJJREVfTUFTSwkJKDB4ZmZmZiA8PCBDSFJPTUFfU1RSSURFX1NISUZUKQorI2RlZmluZSBWTF9T UkNfU0laRQkJCTB4MTAKKyNkZWZpbmUgVkxfWQkJCQkweDE0CisjZGVmaW5lIFZMX1BPU19TVEFS VAkJCTB4MzAKKyNkZWZpbmUgVkxfUE9TX0VORAkJCTB4MzQKKworI2RlZmluZSBMVU1BX1NUUklE RSh4KQkgKCgoeCkgPDwgTFVNQV9TVFJJREVfU0hJRlQpICYgTFVNQV9TVFJJREVfTUFTSykKKyNk ZWZpbmUgQ0hST01BX1NUUklERSh4KSAoKCh4KSA8PCBDSFJPTUFfU1RSSURFX1NISUZUKSAmIENI Uk9NQV9TVFJJREVfTUFTSykKKwogLyogQ1NDIHJlZ2lzdGVycyAqLwogI2RlZmluZSBDU0NfQ1RS TDAJCQkweDMwCiAjZGVmaW5lIENTQ19DT1ZfTU9ERV9TSElGVAkJMTYKQEAgLTY5LDYgKzEwMCwx OCBAQAogI2RlZmluZSBSU1pfREVTVF9DRkcJCQkweDA0CiAjZGVmaW5lIFJTWl9FTkFCTEVfQ0ZH CQkJMHgxNAogCisjZGVmaW5lIFJTWl9WTF9MVU1BX0hPUgkJCTB4MDgKKyNkZWZpbmUgUlNaX1ZM X0xVTUFfVkVSCQkJMHgwYworI2RlZmluZSBSU1pfVkxfQ0hST01BX0hPUgkJMHgxMAorI2RlZmlu ZSBSU1pfVkxfQ0hST01BX1ZFUgkJMHgxNAorI2RlZmluZSBSU1pfVkxfQ1RSTF9DRkcJCQkweDE4 CisjZGVmaW5lIFJTWl9WTF9GTVRfU0hJRlQJCTMKKyNkZWZpbmUgUlNaX1ZMX0ZNVF9NQVNLCQkJ KDB4MyA8PCBSU1pfVkxfRk1UX1NISUZUKQorI2RlZmluZSBSU1pfVkxfRk1UX1lDQkNSNDIwCQko MHgwIDw8IFJTWl9WTF9GTVRfU0hJRlQpCisjZGVmaW5lIFJTWl9WTF9GTVRfWUNCQ1I0MjIJCSgw eDEgPDwgUlNaX1ZMX0ZNVF9TSElGVCkKKyNkZWZpbmUgUlNaX1ZMX0ZNVF9ZQ0JDUjQ0NAkJKDB4 MiA8PCBSU1pfVkxfRk1UX1NISUZUKQorI2RlZmluZSBSU1pfVkxfRU5BQkxFX0NGRwkJMHgxYwor CiAjZGVmaW5lIFJTWl9WRVJfU0hJRlQJCQkxNgogI2RlZmluZSBSU1pfVkVSX01BU0sJCQkoMHhm ZmZmIDw8IFJTWl9WRVJfU0hJRlQpCiAjZGVmaW5lIFJTWl9IT1JfU0hJRlQJCQkwCkBAIC03Nyw2 ICsxMjAsMTQgQEAKICNkZWZpbmUgUlNaX1ZFUih4KQkoKCh4KSA8PCBSU1pfVkVSX1NISUZUKSAm IFJTWl9WRVJfTUFTSykKICNkZWZpbmUgUlNaX0hPUih4KQkoKCh4KSA8PCBSU1pfSE9SX1NISUZU KSAmIFJTWl9IT1JfTUFTSykKIAorI2RlZmluZSBSU1pfREFUQV9TVEVQX1NISUZUCQkxNgorI2Rl ZmluZSBSU1pfREFUQV9TVEVQX01BU0sJCSgweGZmZmYgPDwgUlNaX0RBVEFfU1RFUF9TSElGVCkK KyNkZWZpbmUgUlNaX1BBUkFfU1RFUF9TSElGVAkJMAorI2RlZmluZSBSU1pfUEFSQV9TVEVQX01B U0sJCSgweGZmZmYgPDwgUlNaX1BBUkFfU1RFUF9TSElGVCkKKworI2RlZmluZSBSU1pfREFUQV9T VEVQKHgpICgoKHgpIDw8IFJTWl9EQVRBX1NURVBfU0hJRlQpICYgUlNaX0RBVEFfU1RFUF9NQVNL KQorI2RlZmluZSBSU1pfUEFSQV9TVEVQKHgpICgoKHgpIDw8IFJTWl9QQVJBX1NURVBfU0hJRlQp ICYgUlNaX1BBUkFfU1RFUF9NQVNLKQorCiAvKiBIQlNDIHJlZ2lzdGVycyAqLwogI2RlZmluZSBI QlNDX1NBVFVSQVRJT04JCQkweDAwCiAjZGVmaW5lIEhCU0NfSFVFCQkJMHgwNApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF92b3UuYyBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhf dm91LmMKaW5kZXggNzNmZTE1YzE3YzMyLi44Y2E5YzRiZGVlYWYgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS96dGUvenhfdm91LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF92b3Uu YwpAQCAtOTMsMTAgKzkzLDM4IEBAIHN0cnVjdCB6eF9jcnRjIHsKIAljb25zdCBzdHJ1Y3Qgenhf Y3J0Y19iaXRzICpiaXRzOwogCWVudW0gdm91X2Nobl90eXBlIGNobl90eXBlOwogCXN0cnVjdCBj bGsgKnBpeGNsazsKKwl1MzIgb3ZlcmxheV9iaXRtYXA7CiB9OwogCiAjZGVmaW5lIHRvX3p4X2Ny dGMoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCB6eF9jcnRjLCBjcnRjKQogCitzdHJ1Y3Qgenhf dmxfYml0cyB7CisJdTMyIGVuYWJsZTsKKwl1MzIgY2huc2VsOworCXUzMiBjbGtzZWw7Cit9Owor CitzdGF0aWMgY29uc3Qgc3RydWN0IHp4X3ZsX2JpdHMgenhfdmxfYml0c1tWTF9OVU1dID0gewor CXsKKwkJLmVuYWJsZSA9IE9TRF9DVFJMMF9WTDBfRU4sCisJCS5jaG5zZWwgPSBPU0RfQ1RSTDBf VkwwX1NFTCwKKwkJLmNsa3NlbCA9IFZPVV9DTEtfVkwwX1NFTCwKKwl9LCB7CisJCS5lbmFibGUg PSBPU0RfQ1RSTDBfVkwxX0VOLAorCQkuY2huc2VsID0gT1NEX0NUUkwwX1ZMMV9TRUwsCisJCS5j bGtzZWwgPSBWT1VfQ0xLX1ZMMV9TRUwsCisJfSwgeworCQkuZW5hYmxlID0gT1NEX0NUUkwwX1ZM Ml9FTiwKKwkJLmNobnNlbCA9IE9TRF9DVFJMMF9WTDJfU0VMLAorCQkuY2xrc2VsID0gVk9VX0NM S19WTDJfU0VMLAorCX0sCit9OworCitzdHJ1Y3Qgenhfb3ZlcmxheSB7CisJc3RydWN0IGRybV9w bGFuZSAqcGxhbmU7CisJY29uc3Qgc3RydWN0IHp4X3ZsX2JpdHMgKmJpdHM7Cit9OworCiBzdHJ1 Y3Qgenhfdm91X2h3IHsKIAlzdHJ1Y3QgZGV2aWNlICpkZXY7CiAJdm9pZCBfX2lvbWVtICpvc2Q7 CkBAIC0xMTAsNiArMTM4LDcgQEAgc3RydWN0IHp4X3ZvdV9odyB7CiAJc3RydWN0IGNsayAqYXV4 X2NsazsKIAlzdHJ1Y3QgenhfY3J0YyAqbWFpbl9jcnRjOwogCXN0cnVjdCB6eF9jcnRjICphdXhf Y3J0YzsKKwlzdHJ1Y3Qgenhfb3ZlcmxheSBvdmVybGF5c1tWTF9OVU1dOwogfTsKIAogc3RhdGlj IGlubGluZSBzdHJ1Y3Qgenhfdm91X2h3ICpjcnRjX3RvX3ZvdShzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpCkBAIC00MDQsNiArNDMzLDExMiBAQCB2b2lkIHp4X3ZvdV9kaXNhYmxlX3ZibGFuayhzdHJ1 Y3QgZHJtX2RldmljZSAqZHJtLCB1bnNpZ25lZCBpbnQgcGlwZSkKIAkJICAgICAgIHpjcnRjLT5i aXRzLT5pbnRfZnJhbWVfbWFzaywgMCk7CiB9CiAKK3N0YXRpYyBpbnQgenhfb3ZlcmxheV9maW5k X3ZsX2lkeChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJCQkgIHN0cnVjdCB6eF92b3VfaHcg KnZvdSkKK3sKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBWTF9OVU07IGkrKykgeworCQlp ZiAodm91LT5vdmVybGF5c1tpXS5wbGFuZSA9PSBwbGFuZSkKKwkJCWJyZWFrOworCX0KKworCWlm IChpID09IFZMX05VTSkgeworCQlEUk1fREVWX0VSUk9SKHZvdS0+ZGV2LCAiZmFpbGVkIHRvIGZp bmQgVkxcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXR1cm4gaTsKK30KKwordm9p ZCB6eF9vdmVybGF5X2VuYWJsZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKK3sKKwlzdHJ1Y3Qg enhfY3J0YyAqemNydGMgPSB0b196eF9jcnRjKHBsYW5lLT5zdGF0ZS0+Y3J0Yyk7CisJc3RydWN0 IHp4X3ZvdV9odyAqdm91ID0gemNydGMtPnZvdTsKKwljb25zdCBzdHJ1Y3QgenhfdmxfYml0cyAq Yml0czsKKwlpbnQgaWR4OworCisJaWR4ID0genhfb3ZlcmxheV9maW5kX3ZsX2lkeChwbGFuZSwg dm91KTsKKwlpZiAoaWR4IDwgMCkKKwkJcmV0dXJuOworCisJYml0cyA9IHZvdS0+b3ZlcmxheXNb aWR4XS5iaXRzOworCXpjcnRjLT5vdmVybGF5X2JpdG1hcCB8PSAxIDw8IGlkeDsKKworCWlmICh6 Y3J0Yy0+Y2huX3R5cGUgPT0gVk9VX0NITl9NQUlOKSB7CisJCXp4X3dyaXRlbF9tYXNrKHZvdS0+ b3NkICsgT1NEX0NUUkwwLCBiaXRzLT5jaG5zZWwsIDApOworCQl6eF93cml0ZWxfbWFzayh2b3Ut PnZvdWN0bCArIFZPVV9DTEtfU0VMLCBiaXRzLT5jbGtzZWwsIDApOworCX0gZWxzZSB7CisJCXp4 X3dyaXRlbF9tYXNrKHZvdS0+b3NkICsgT1NEX0NUUkwwLCBiaXRzLT5jaG5zZWwsCisJCQkgICAg ICAgYml0cy0+Y2huc2VsKTsKKwkJenhfd3JpdGVsX21hc2sodm91LT52b3VjdGwgKyBWT1VfQ0xL X1NFTCwgYml0cy0+Y2xrc2VsLAorCQkJICAgICAgIGJpdHMtPmNsa3NlbCk7CisJfQorCisJenhf d3JpdGVsX21hc2sodm91LT5vc2QgKyBPU0RfQ1RSTDAsIGJpdHMtPmVuYWJsZSwgYml0cy0+ZW5h YmxlKTsKK30KKwordm9pZCB6eF9vdmVybGF5X2Rpc2FibGUoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUpCit7CisJc3RydWN0IHp4X2NydGMgKnpjcnRjID0gdG9fenhfY3J0YyhwbGFuZS0+Y3J0Yyk7 CisJc3RydWN0IHp4X3ZvdV9odyAqdm91ID0gemNydGMtPnZvdTsKKwljb25zdCBzdHJ1Y3Qgenhf dmxfYml0cyAqYml0czsKKwlpbnQgaWR4OworCisJaWR4ID0genhfb3ZlcmxheV9maW5kX3ZsX2lk eChwbGFuZSwgdm91KTsKKwlpZiAoaWR4IDwgMCkKKwkJcmV0dXJuOworCisJYml0cyA9IHZvdS0+ b3ZlcmxheXNbaWR4XS5iaXRzOworCXpjcnRjLT5vdmVybGF5X2JpdG1hcCAmPSB+KDEgPDwgaWR4 KTsKKworCXp4X3dyaXRlbF9tYXNrKHZvdS0+b3NkICsgT1NEX0NUUkwwLCBiaXRzLT5lbmFibGUs IDApOworfQorCitzdGF0aWMgdm9pZCB6eF9vdmVybGF5X2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRybSwgc3RydWN0IHp4X3ZvdV9odyAqdm91KQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9IHZv dS0+ZGV2OworCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOworCXN0cnVjdCB6eF9sYXllcl9kYXRh IGRhdGE7CisJaW50IGk7CisKKwkvKgorCSAqIFZMMCBoYXMgc29tZSBxdWlya3Mgb24gc2NhbGlu ZyBzdXBwb3J0IHdoaWNoIG5lZWQgc3BlY2lhbCBoYW5kbGluZy4KKwkgKiBMZXQncyBsZWF2ZSBp dCBvdXQgZm9yIG5vdy4KKwkgKi8KKwlmb3IgKGkgPSAxOyBpIDwgVkxfTlVNOyBpKyspIHsKKwkJ ZGF0YS5sYXllciA9IHZvdS0+b3NkICsgT1NEX1ZMX09GRlNFVChpKTsKKwkJZGF0YS5oYnNjID0g dm91LT5vc2QgKyBIQlNDX1ZMX09GRlNFVChpKTsKKwkJZGF0YS5yc3ogPSB2b3UtPm90ZnBwdSAr IFJTWl9WTF9PRkZTRVQoaSk7CisKKwkJcGxhbmUgPSB6eF9wbGFuZV9pbml0KGRybSwgZGV2LCAm ZGF0YSwgRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWSk7CisJCWlmIChJU19FUlIocGxhbmUpKSB7CisJ CQlEUk1fREVWX0VSUk9SKGRldiwgImZhaWxlZCB0byBpbml0IG92ZXJsYXkgJWRcbiIsIGkpOwor CQkJY29udGludWU7CisJCX0KKworCQl2b3UtPm92ZXJsYXlzW2ldLnBsYW5lID0gcGxhbmU7CisJ CXZvdS0+b3ZlcmxheXNbaV0uYml0cyA9ICZ6eF92bF9iaXRzW2ldOworCX0KK30KKworc3RhdGlj IGlubGluZSB2b2lkIHp4X29zZF9pbnRfdXBkYXRlKHN0cnVjdCB6eF9jcnRjICp6Y3J0YykKK3sK Kwl1MzIgYml0bWFwID0gemNydGMtPm92ZXJsYXlfYml0bWFwOworCWludCBpOworCisJdm91X2No bl9zZXRfdXBkYXRlKHpjcnRjKTsKKwl6eF9wbGFuZV9zZXRfdXBkYXRlKHpjcnRjLT5wcmltYXJ5 KTsKKworCWlmIChiaXRtYXApIHsKKwkJZm9yIChpID0gMDsgaSA8IFZMX05VTTsgaSsrKSAgewor CQkJaWYgKChiaXRtYXAgJiAoMSA8PCBpKSkgPT0gMCkKKwkJCQljb250aW51ZTsKKwkJCXp4X3Bs YW5lX3NldF91cGRhdGUoemNydGMtPnZvdS0+b3ZlcmxheXNbaV0ucGxhbmUpOworCQl9CisJfQor fQorCiBzdGF0aWMgaXJxcmV0dXJuX3Qgdm91X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRl dl9pZCkKIHsKIAlzdHJ1Y3Qgenhfdm91X2h3ICp2b3UgPSBkZXZfaWQ7CkBAIC00MjMsMTUgKzU1 OCwxMSBAQCBzdGF0aWMgaXJxcmV0dXJuX3Qgdm91X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQg KmRldl9pZCkKIAlzdGF0ZSA9IHp4X3JlYWRsKHZvdS0+b3NkICsgT1NEX0lOVF9TVEEpOwogCXp4 X3dyaXRlbCh2b3UtPm9zZCArIE9TRF9JTlRfQ0xSU1RBLCBzdGF0ZSk7CiAKLQlpZiAoc3RhdGUg JiBPU0RfSU5UX01BSU5fVVBUKSB7Ci0JCXZvdV9jaG5fc2V0X3VwZGF0ZSh2b3UtPm1haW5fY3J0 Yyk7Ci0JCXp4X3BsYW5lX3NldF91cGRhdGUodm91LT5tYWluX2NydGMtPnByaW1hcnkpOwotCX0K KwlpZiAoc3RhdGUgJiBPU0RfSU5UX01BSU5fVVBUKQorCQl6eF9vc2RfaW50X3VwZGF0ZSh2b3Ut Pm1haW5fY3J0Yyk7CiAKLQlpZiAoc3RhdGUgJiBPU0RfSU5UX0FVWF9VUFQpIHsKLQkJdm91X2No bl9zZXRfdXBkYXRlKHZvdS0+YXV4X2NydGMpOwotCQl6eF9wbGFuZV9zZXRfdXBkYXRlKHZvdS0+ YXV4X2NydGMtPnByaW1hcnkpOwotCX0KKwlpZiAoc3RhdGUgJiBPU0RfSU5UX0FVWF9VUFQpCisJ CXp4X29zZF9pbnRfdXBkYXRlKHZvdS0+YXV4X2NydGMpOwogCiAJaWYgKHN0YXRlICYgT1NEX0lO VF9FUlJPUikKIAkJRFJNX0RFVl9FUlJPUih2b3UtPmRldiwgIk9TRCBFUlJPUjogMHglMDh4IVxu Iiwgc3RhdGUpOwpAQCAtNjExLDYgKzc0Miw4IEBAIHN0YXRpYyBpbnQgenhfY3J0Y19iaW5kKHN0 cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLCB2b2lkICpkYXRhKQogCQln b3RvIGRpc2FibGVfcHB1X2NsazsKIAl9CiAKKwl6eF9vdmVybGF5X2luaXQoZHJtLCB2b3UpOwor CiAJcmV0dXJuIDA7CiAKIGRpc2FibGVfcHB1X2NsazoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS96dGUvenhfdm91LmggYi9kcml2ZXJzL2dwdS9kcm0venRlL3p4X3ZvdS5oCmluZGV4IDM0 OWUwNmNkODZmNC4uMTU1OWMxZjc5ZGI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0venRl L3p4X3ZvdS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91LmgKQEAgLTQzLDQgKzQz LDcgQEAgc3RydWN0IHZvdV9pbmYgewogaW50IHp4X3ZvdV9lbmFibGVfdmJsYW5rKHN0cnVjdCBk cm1fZGV2aWNlICpkcm0sIHVuc2lnbmVkIGludCBwaXBlKTsKIHZvaWQgenhfdm91X2Rpc2FibGVf dmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIHVuc2lnbmVkIGludCBwaXBlKTsKIAordm9p ZCB6eF9vdmVybGF5X2VuYWJsZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSk7Cit2b2lkIHp4X292 ZXJsYXlfZGlzYWJsZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSk7CisKICNlbmRpZiAvKiBfX1pY X1ZPVV9IX18gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91X3JlZ3Mu aCBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91X3JlZ3MuaAppbmRleCBmNDRlN2E0YWU0NDEu LjE5M2MxY2UwMWZlNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF92b3VfcmVn cy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91X3JlZ3MuaApAQCAtMjIsNiArMjIs MTUgQEAKICNkZWZpbmUgQVVYX0hCU0NfT0ZGU0VUCQkJMHg4NjAKICNkZWZpbmUgQVVYX1JTWl9P RkZTRVQJCQkweDgwMAogCisjZGVmaW5lIE9TRF9WTDBfT0ZGU0VUCQkJMHgwNDAKKyNkZWZpbmUg T1NEX1ZMX09GRlNFVChpKQkJKE9TRF9WTDBfT0ZGU0VUICsgMHgwNTAgKiAoaSkpCisKKyNkZWZp bmUgSEJTQ19WTDBfT0ZGU0VUCQkJMHg3NjAKKyNkZWZpbmUgSEJTQ19WTF9PRkZTRVQoaSkJCShI QlNDX1ZMMF9PRkZTRVQgKyAweDA0MCAqIChpKSkKKworI2RlZmluZSBSU1pfVkwxX1UwCQkJMHhh MDAKKyNkZWZpbmUgUlNaX1ZMX09GRlNFVChpKQkJKFJTWl9WTDFfVTAgKyAweDIwMCAqIChpKSkK KwogLyogT1NEIChHUENfR0xPQkFMKSByZWdpc3RlcnMgKi8KICNkZWZpbmUgT1NEX0lOVF9TVEEJ CQkweDA0CiAjZGVmaW5lIE9TRF9JTlRfQ0xSU1RBCQkJMHgwOApAQCAtNDIsNiArNTEsMTIgQEAK ICkKICNkZWZpbmUgT1NEX0lOVF9FTkFCTEUgKE9TRF9JTlRfRVJST1IgfCBPU0RfSU5UX0FVWF9V UFQgfCBPU0RfSU5UX01BSU5fVVBUKQogI2RlZmluZSBPU0RfQ1RSTDAJCQkweDEwCisjZGVmaW5l IE9TRF9DVFJMMF9WTDBfRU4JCUJJVCgxMykKKyNkZWZpbmUgT1NEX0NUUkwwX1ZMMF9TRUwJCUJJ VCgxMikKKyNkZWZpbmUgT1NEX0NUUkwwX1ZMMV9FTgkJQklUKDExKQorI2RlZmluZSBPU0RfQ1RS TDBfVkwxX1NFTAkJQklUKDEwKQorI2RlZmluZSBPU0RfQ1RSTDBfVkwyX0VOCQlCSVQoOSkKKyNk ZWZpbmUgT1NEX0NUUkwwX1ZMMl9TRUwJCUJJVCg4KQogI2RlZmluZSBPU0RfQ1RSTDBfR0wwX0VO CQlCSVQoNykKICNkZWZpbmUgT1NEX0NUUkwwX0dMMF9TRUwJCUJJVCg2KQogI2RlZmluZSBPU0Rf Q1RSTDBfR0wxX0VOCQlCSVQoNSkKQEAgLTE0Niw2ICsxNjEsOSBAQAogI2RlZmluZSBWT1VfSU5G X0RBVEFfU0VMCQkweDA4CiAjZGVmaW5lIFZPVV9TT0ZUX1JTVAkJCTB4MTQKICNkZWZpbmUgVk9V X0NMS19TRUwJCQkweDE4CisjZGVmaW5lIFZPVV9DTEtfVkwyX1NFTAkJCUJJVCg4KQorI2RlZmlu ZSBWT1VfQ0xLX1ZMMV9TRUwJCQlCSVQoNykKKyNkZWZpbmUgVk9VX0NMS19WTDBfU0VMCQkJQklU KDYpCiAjZGVmaW5lIFZPVV9DTEtfR0wxX1NFTAkJCUJJVCg1KQogI2RlZmluZSBWT1VfQ0xLX0dM MF9TRUwJCQlCSVQoNCkKICNkZWZpbmUgVk9VX0NMS19SRVFFTgkJCTB4MjAKLS0gCjEuOS4xCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwg bWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK