From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shawn Guo Subject: [PATCH v3 3/3] drm: zte: add overlay plane support Date: Thu, 29 Dec 2016 10:37:28 +0800 Message-ID: <1482979048-32037-4-git-send-email-shawnguo@kernel.org> References: <1482979048-32037-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 265896E07F for ; Thu, 29 Dec 2016 02:39:35 +0000 (UTC) In-Reply-To: <1482979048-32037-1-git-send-email-shawnguo@kernel.org> 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 , linux-arm-kernel@lists.infradead.org, Jun Nie , Shawn Guo List-Id: dri-devel@lists.freedesktop.org RnJvbTogU2hhd24gR3VvIDxzaGF3bi5ndW9AbGluYXJvLm9yZz4KCkl0IGVuYWJsZXMgVk9VIFZM IChWaWRlbyBMYXllcikgdG8gc3VwcG9ydCBvdmVybGF5IHBsYW5lIHdpdGggc2NhbGluZwpmdW5j dGlvbi4gIFZMMCBoYXMgc29tZSBxdWlya3Mgb24gc2NhbGluZyBzdXBwb3J0LiAgV2UgY2hvb3Nl IHRvIHNraXAgaXQKYW5kIG9ubHkgYWRkcyBWTDEgYW5kIFZMMiBpbnRvIERSTSBjb3JlIGZvciBu b3cuCgpGdW5jdGlvbiB6eF9wbGFuZV9hdG9taWNfZGlzYWJsZSgpIGdldHMgbW92ZWQgYXJvdW5k IHdpdGggbm8gY2hhbmdlcyB0bwpzYXZlIGEgZm9yd2FyZCBkZWNsYXJhdGlvbi4KClNpZ25lZC1v ZmYtYnk6IFNoYXduIEd1byA8c2hhd24uZ3VvQGxpbmFyby5vcmc+Ci0tLQogZHJpdmVycy9ncHUv ZHJtL3p0ZS96eF9wbGFuZS5jICAgICAgfCAzMTEgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tCiBkcml2ZXJzL2dwdS9kcm0venRlL3p4X3BsYW5lX3JlZ3MuaCB8ICA1MSArKysr KysKIGRyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91LmMgICAgICAgIHwgIDgwICsrKysrKysrKy0K IGRyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91X3JlZ3MuaCAgIHwgIDE4ICsrKwogNCBmaWxlcyBj aGFuZ2VkLCA0MzEgaW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3p0ZS96eF9wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF9w bGFuZS5jCmluZGV4IDU0NDVlZWJmODMwZi4uYzVhYzQyNjQ3NzM1IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0venRlL3p4X3BsYW5lLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF9w bGFuZS5jCkBAIC0zMCw2ICszMCwyNzUgQEAKIAlEUk1fRk9STUFUX0FSR0I0NDQ0LAogfTsKIAor c3RhdGljIGNvbnN0IHVpbnQzMl90IHZsX2Zvcm1hdHNbXSA9IHsKKwlEUk1fRk9STUFUX05WMTIs CS8qIFNlbWktcGxhbmFyIFlVVjQyMCAqLworCURSTV9GT1JNQVRfWVVWNDIwLAkvKiBQbGFuYXIg WVVWNDIwICovCisJRFJNX0ZPUk1BVF9ZVVlWLAkvKiBQYWNrZWQgWVVWNDIyICovCisJRFJNX0ZP Uk1BVF9ZVllVLAorCURSTV9GT1JNQVRfVVlWWSwKKwlEUk1fRk9STUFUX1ZZVVksCisJRFJNX0ZP Uk1BVF9ZVVY0NDQsCS8qIFlVVjQ0NCA4Yml0ICovCisJLyoKKwkgKiBUT0RPOiBhZGQgZm9ybWF0 cyBiZWxvdyB0aGF0IEhXIHN1cHBvcnRzOgorCSAqICAtIFlVVjQyMCBQMDEwCisJICogIC0gWVVW NDIwIEhhbnRybworCSAqICAtIFlVVjQ0NCAxMGJpdAorCSAqLworfTsKKworI2RlZmluZSBGUkFD XzE2XzE2KG11bHQsIGRpdikgICAgKCgobXVsdCkgPDwgMTYpIC8gKGRpdikpCisKK3N0YXRpYyBp bnQgenhfdmxfcGxhbmVfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJ CSAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5mYjsKKwlzdHJ1Y3QgZHJtX2NydGMgKmNy dGMgPSBwbGFuZV9zdGF0ZS0+Y3J0YzsKKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3Rh dGU7CisJc3RydWN0IGRybV9yZWN0IGNsaXA7CisJaW50IG1pbl9zY2FsZSA9IEZSQUNfMTZfMTYo MSwgOCk7CisJaW50IG1heF9zY2FsZSA9IEZSQUNfMTZfMTYoOCwgMSk7CisKKwlpZiAoIWNydGMg fHwgIWZiKQorCQlyZXR1cm4gMDsKKworCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9leGlz dGluZ19jcnRjX3N0YXRlKHBsYW5lX3N0YXRlLT5zdGF0ZSwKKwkJCQkJCQljcnRjKTsKKwlpZiAo V0FSTl9PTighY3J0Y19zdGF0ZSkpCisJCXJldHVybiAtRUlOVkFMOworCisJLyogbm90aGluZyB0 byBjaGVjayB3aGVuIGRpc2FibGluZyBvciBkaXNhYmxlZCAqLworCWlmICghY3J0Y19zdGF0ZS0+ ZW5hYmxlKQorCQlyZXR1cm4gMDsKKworCS8qIHBsYW5lIG11c3QgYmUgZW5hYmxlZCAqLworCWlm ICghcGxhbmVfc3RhdGUtPmNydGMpCisJCXJldHVybiAtRUlOVkFMOworCisJY2xpcC54MSA9IDA7 CisJY2xpcC55MSA9IDA7CisJY2xpcC54MiA9IGNydGNfc3RhdGUtPmFkanVzdGVkX21vZGUuaGRp c3BsYXk7CisJY2xpcC55MiA9IGNydGNfc3RhdGUtPmFkanVzdGVkX21vZGUudmRpc3BsYXk7CisK KwlyZXR1cm4gZHJtX3BsYW5lX2hlbHBlcl9jaGVja19zdGF0ZShwbGFuZV9zdGF0ZSwgJmNsaXAs CisJCQkJCSAgICBtaW5fc2NhbGUsIG1heF9zY2FsZSwKKwkJCQkJICAgIHRydWUsIHRydWUpOwor fQorCitzdGF0aWMgdTMyIHp4X3ZsX2dldF9mbXQodWludDMyX3QgZm9ybWF0KQoreworCXUzMiB2 YWwgPSAwOworCisJc3dpdGNoIChmb3JtYXQpIHsKKwljYXNlIERSTV9GT1JNQVRfTlYxMjoKKwkJ dmFsID0gVkxfRk1UX1lVVjQyMDsKKwkJYnJlYWs7CisJY2FzZSBEUk1fRk9STUFUX1lVVjQyMDoK KwkJdmFsID0gVkxfWVVWNDIwX1BMQU5BUiB8IFZMX0ZNVF9ZVVY0MjA7CisJCWJyZWFrOworCWNh c2UgRFJNX0ZPUk1BVF9ZVVlWOgorCQl2YWwgPSBWTF9ZVVY0MjJfWVVZViB8IFZMX0ZNVF9ZVVY0 MjI7CisJCWJyZWFrOworCWNhc2UgRFJNX0ZPUk1BVF9ZVllVOgorCQl2YWwgPSBWTF9ZVVY0MjJf WVZZVSB8IFZMX0ZNVF9ZVVY0MjI7CisJCWJyZWFrOworCWNhc2UgRFJNX0ZPUk1BVF9VWVZZOgor CQl2YWwgPSBWTF9ZVVY0MjJfVVlWWSB8IFZMX0ZNVF9ZVVY0MjI7CisJCWJyZWFrOworCWNhc2Ug RFJNX0ZPUk1BVF9WWVVZOgorCQl2YWwgPSBWTF9ZVVY0MjJfVllVWSB8IFZMX0ZNVF9ZVVY0MjI7 CisJCWJyZWFrOworCWNhc2UgRFJNX0ZPUk1BVF9ZVVY0NDQ6CisJCXZhbCA9IFZMX0ZNVF9ZVVY0 NDRfOEJJVDsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJV0FSTl9PTkNFKDEsICJpbnZhbGlkIHBp eGVsIGZvcm1hdCAlZFxuIiwgZm9ybWF0KTsKKwl9CisKKwlyZXR1cm4gdmFsOworfQorCitzdGF0 aWMgaW5saW5lIHZvaWQgenhfdmxfc2V0X3VwZGF0ZShzdHJ1Y3QgenhfcGxhbmUgKnpwbGFuZSkK K3sKKwl2b2lkIF9faW9tZW0gKmxheWVyID0genBsYW5lLT5sYXllcjsKKworCXp4X3dyaXRlbF9t YXNrKGxheWVyICsgVkxfQ1RSTDAsIFZMX1VQREFURSwgVkxfVVBEQVRFKTsKK30KKworc3RhdGlj IGlubGluZSB2b2lkIHp4X3ZsX3Jzel9zZXRfdXBkYXRlKHN0cnVjdCB6eF9wbGFuZSAqenBsYW5l KQoreworCXp4X3dyaXRlbCh6cGxhbmUtPnJzeiArIFJTWl9WTF9FTkFCTEVfQ0ZHLCAxKTsKK30K Kworc3RhdGljIHUzMiB6eF92bF9yc3pfZ2V0X2ZtdCh1aW50MzJfdCBmb3JtYXQpCit7CisJdTMy IHZhbCA9IDA7CisKKwlzd2l0Y2ggKGZvcm1hdCkgeworCWNhc2UgRFJNX0ZPUk1BVF9OVjEyOgor CWNhc2UgRFJNX0ZPUk1BVF9ZVVY0MjA6CisJCXZhbCA9IFJTWl9WTF9GTVRfWUNCQ1I0MjA7CisJ CWJyZWFrOworCWNhc2UgRFJNX0ZPUk1BVF9ZVVlWOgorCWNhc2UgRFJNX0ZPUk1BVF9ZVllVOgor CWNhc2UgRFJNX0ZPUk1BVF9VWVZZOgorCWNhc2UgRFJNX0ZPUk1BVF9WWVVZOgorCQl2YWwgPSBS U1pfVkxfRk1UX1lDQkNSNDIyOworCQlicmVhazsKKwljYXNlIERSTV9GT1JNQVRfWVVWNDQ0Ogor CQl2YWwgPSBSU1pfVkxfRk1UX1lDQkNSNDQ0OworCQlicmVhazsKKwlkZWZhdWx0OgorCQlXQVJO X09OQ0UoMSwgImludmFsaWQgcGl4ZWwgZm9ybWF0ICVkXG4iLCBmb3JtYXQpOworCX0KKworCXJl dHVybiB2YWw7Cit9CisKK3N0YXRpYyBpbmxpbmUgdTMyIHJzel9zdGVwX3ZhbHVlKHUzMiBzcmMs IHUzMiBkc3QpCit7CisJdTMyIHZhbCA9IDA7CisKKwlpZiAoc3JjID09IGRzdCkKKwkJdmFsID0g MDsKKwllbHNlIGlmIChzcmMgPCBkc3QpCisJCXZhbCA9IFJTWl9QQVJBX1NURVAoKHNyYyA8PCAx NikgLyBkc3QpOworCWVsc2UgaWYgKHNyYyA+IGRzdCkKKwkJdmFsID0gUlNaX0RBVEFfU1RFUChz cmMgLyBkc3QpIHwKKwkJICAgICAgUlNaX1BBUkFfU1RFUCgoKHNyYyA8PCAxNikgLyBkc3QpICYg MHhmZmZmKTsKKworCXJldHVybiB2YWw7Cit9CisKK3N0YXRpYyB2b2lkIHp4X3ZsX3Jzel9zZXR1 cChzdHJ1Y3QgenhfcGxhbmUgKnpwbGFuZSwgdWludDMyX3QgZm9ybWF0LAorCQkJICAgIHUzMiBz cmNfdywgdTMyIHNyY19oLCB1MzIgZHN0X3csIHUzMiBkc3RfaCkKK3sKKwl2b2lkIF9faW9tZW0g KnJzeiA9IHpwbGFuZS0+cnN6OworCXUzMiBzcmNfY2hyb21hX3cgPSBzcmNfdzsKKwl1MzIgc3Jj X2Nocm9tYV9oID0gc3JjX2g7CisJdTMyIGZtdDsKKworCS8qIFNldCB1cCBzb3VyY2UgYW5kIGRl c3RpbmF0aW9uIHJlc29sdXRpb24gKi8KKwl6eF93cml0ZWwocnN6ICsgUlNaX1NSQ19DRkcsIFJT Wl9WRVIoc3JjX2ggLSAxKSB8IFJTWl9IT1Ioc3JjX3cgLSAxKSk7CisJenhfd3JpdGVsKHJzeiAr IFJTWl9ERVNUX0NGRywgUlNaX1ZFUihkc3RfaCAtIDEpIHwgUlNaX0hPUihkc3RfdyAtIDEpKTsK KworCS8qIENvbmZpZ3VyZSBkYXRhIGZvcm1hdCBmb3IgVkwgUlNaICovCisJZm10ID0genhfdmxf cnN6X2dldF9mbXQoZm9ybWF0KTsKKwl6eF93cml0ZWxfbWFzayhyc3ogKyBSU1pfVkxfQ1RSTF9D RkcsIFJTWl9WTF9GTVRfTUFTSywgZm10KTsKKworCS8qIENhbGN1bGF0ZSBDaHJvbWEgaGVpZ3Ro IGFuZCB3aWR0aCAqLworCWlmIChmbXQgPT0gUlNaX1ZMX0ZNVF9ZQ0JDUjQyMCkgeworCQlzcmNf Y2hyb21hX3cgPSBzcmNfdyA+PiAxOworCQlzcmNfY2hyb21hX2ggPSBzcmNfaCA+PiAxOworCX0g ZWxzZSBpZiAoZm10ID09IFJTWl9WTF9GTVRfWUNCQ1I0MjIpIHsKKwkJc3JjX2Nocm9tYV93ID0g c3JjX3cgPj4gMTsKKwl9CisKKwkvKiBTZXQgdXAgTHVtYSBhbmQgQ2hyb21hIHN0ZXAgcmVnaXN0 ZXJzICovCisJenhfd3JpdGVsKHJzeiArIFJTWl9WTF9MVU1BX0hPUiwgcnN6X3N0ZXBfdmFsdWUo c3JjX3csIGRzdF93KSk7CisJenhfd3JpdGVsKHJzeiArIFJTWl9WTF9MVU1BX1ZFUiwgcnN6X3N0 ZXBfdmFsdWUoc3JjX2gsIGRzdF9oKSk7CisJenhfd3JpdGVsKHJzeiArIFJTWl9WTF9DSFJPTUFf SE9SLCByc3pfc3RlcF92YWx1ZShzcmNfY2hyb21hX3csIGRzdF93KSk7CisJenhfd3JpdGVsKHJz eiArIFJTWl9WTF9DSFJPTUFfVkVSLCByc3pfc3RlcF92YWx1ZShzcmNfY2hyb21hX2gsIGRzdF9o KSk7CisKKwl6eF92bF9yc3pfc2V0X3VwZGF0ZSh6cGxhbmUpOworfQorCitzdGF0aWMgdm9pZCB6 eF92bF9wbGFuZV9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJCSAg ICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSkKK3sKKwlzdHJ1Y3QgenhfcGxh bmUgKnpwbGFuZSA9IHRvX3p4X3BsYW5lKHBsYW5lKTsKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRl ICpzdGF0ZSA9IHBsYW5lLT5zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0 YXRlLT5mYjsKKwlzdHJ1Y3QgZHJtX3JlY3QgKnNyYyA9ICZzdGF0ZS0+c3JjOworCXN0cnVjdCBk cm1fcmVjdCAqZHN0ID0gJnN0YXRlLT5kc3Q7CisJc3RydWN0IGRybV9nZW1fY21hX29iamVjdCAq Y21hX29iajsKKwl2b2lkIF9faW9tZW0gKmxheWVyID0genBsYW5lLT5sYXllcjsKKwl2b2lkIF9f aW9tZW0gKmhic2MgPSB6cGxhbmUtPmhic2M7CisJdm9pZCBfX2lvbWVtICpwYWRkcl9yZWc7CisJ ZG1hX2FkZHJfdCBwYWRkcjsKKwl1MzIgc3JjX3gsIHNyY195LCBzcmNfdywgc3JjX2g7CisJdTMy IGRzdF94LCBkc3RfeSwgZHN0X3csIGRzdF9oOworCXVpbnQzMl90IGZvcm1hdDsKKwl1MzIgZm10 OworCWludCBudW1fcGxhbmVzOworCWludCBpOworCisJaWYgKCFmYikKKwkJcmV0dXJuOworCisJ Zm9ybWF0ID0gZmItPnBpeGVsX2Zvcm1hdDsKKworCXNyY194ID0gc3JjLT54MSA+PiAxNjsKKwlz cmNfeSA9IHNyYy0+eTEgPj4gMTY7CisJc3JjX3cgPSBkcm1fcmVjdF93aWR0aChzcmMpID4+IDE2 OworCXNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KHNyYykgPj4gMTY7CisKKwlkc3RfeCA9IGRzdC0+ eDE7CisJZHN0X3kgPSBkc3QtPnkxOworCWRzdF93ID0gZHJtX3JlY3Rfd2lkdGgoZHN0KTsKKwlk c3RfaCA9IGRybV9yZWN0X2hlaWdodChkc3QpOworCisJLyogU2V0IHVwIGRhdGEgYWRkcmVzcyBy ZWdpc3RlcnMgZm9yIFksIENiIGFuZCBDciBwbGFuZXMgKi8KKwludW1fcGxhbmVzID0gZHJtX2Zv cm1hdF9udW1fcGxhbmVzKGZvcm1hdCk7CisJcGFkZHJfcmVnID0gbGF5ZXIgKyBWTF9ZOworCWZv ciAoaSA9IDA7IGkgPCBudW1fcGxhbmVzOyBpKyspIHsKKwkJY21hX29iaiA9IGRybV9mYl9jbWFf Z2V0X2dlbV9vYmooZmIsIGkpOworCQlwYWRkciA9IGNtYV9vYmotPnBhZGRyICsgZmItPm9mZnNl dHNbaV07CisJCXBhZGRyICs9IHNyY195ICogZmItPnBpdGNoZXNbaV07CisJCXBhZGRyICs9IHNy Y194ICogZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZm9ybWF0LCBpKTsKKwkJenhfd3JpdGVsKHBhZGRy X3JlZywgcGFkZHIpOworCQlwYWRkcl9yZWcgKz0gNDsKKwl9CisKKwkvKiBTZXQgdXAgc291cmNl IGhlaWdodC93aWR0aCByZWdpc3RlciAqLworCXp4X3dyaXRlbChsYXllciArIFZMX1NSQ19TSVpF LCBHTF9TUkNfVyhzcmNfdykgfCBHTF9TUkNfSChzcmNfaCkpOworCisJLyogU2V0IHVwIHN0YXJ0 IHBvc2l0aW9uIHJlZ2lzdGVyICovCisJenhfd3JpdGVsKGxheWVyICsgVkxfUE9TX1NUQVJULCBH TF9QT1NfWChkc3RfeCkgfCBHTF9QT1NfWShkc3RfeSkpOworCisJLyogU2V0IHVwIGVuZCBwb3Np dGlvbiByZWdpc3RlciAqLworCXp4X3dyaXRlbChsYXllciArIFZMX1BPU19FTkQsCisJCSAgR0xf UE9TX1goZHN0X3ggKyBkc3RfdykgfCBHTF9QT1NfWShkc3RfeSArIGRzdF9oKSk7CisKKwkvKiBT dHJpZGVzIG9mIENiIGFuZCBDciBwbGFuZXMgc2hvdWxkIGJlIGlkZW50aWNhbCAqLworCXp4X3dy aXRlbChsYXllciArIFZMX1NUUklERSwgTFVNQV9TVFJJREUoZmItPnBpdGNoZXNbMF0pIHwKKwkJ ICBDSFJPTUFfU1RSSURFKGZiLT5waXRjaGVzWzFdKSk7CisKKwkvKiBTZXQgdXAgdmlkZW8gbGF5 ZXIgZGF0YSBmb3JtYXQgKi8KKwlmbXQgPSB6eF92bF9nZXRfZm10KGZvcm1hdCk7CisJenhfd3Jp dGVsKGxheWVyICsgVkxfQ1RSTDEsIGZtdCk7CisKKwkvKiBBbHdheXMgdXNlIHNjYWxlciBzaW5j ZSBpdCBleGlzdHMgKHNldCBmb3Igbm90IGJ5cGFzcykgKi8KKwl6eF93cml0ZWxfbWFzayhsYXll ciArIFZMX0NUUkwyLCBWTF9TQ0FMRVJfQllQQVNTX01PREUsCisJCSAgICAgICBWTF9TQ0FMRVJf QllQQVNTX01PREUpOworCisJenhfdmxfcnN6X3NldHVwKHpwbGFuZSwgZm9ybWF0LCBzcmNfdywg c3JjX2gsIGRzdF93LCBkc3RfaCk7CisKKwkvKiBFbmFibGUgSEJTQyBibG9jayAqLworCXp4X3dy aXRlbF9tYXNrKGhic2MgKyBIQlNDX0NUUkwwLCBIQlNDX0NUUkxfRU4sIEhCU0NfQ1RSTF9FTik7 CisKKwl6eF92b3VfbGF5ZXJfZW5hYmxlKHBsYW5lKTsKKworCXp4X3ZsX3NldF91cGRhdGUoenBs YW5lKTsKK30KKworc3RhdGljIHZvaWQgenhfcGxhbmVfYXRvbWljX2Rpc2FibGUoc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsCisJCQkJICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0 ZSkKK3sKKwlzdHJ1Y3QgenhfcGxhbmUgKnpwbGFuZSA9IHRvX3p4X3BsYW5lKHBsYW5lKTsKKwl2 b2lkIF9faW9tZW0gKmhic2MgPSB6cGxhbmUtPmhic2M7CisKKwl6eF92b3VfbGF5ZXJfZGlzYWJs ZShwbGFuZSk7CisKKwkvKiBEaXNhYmxlIEhCU0MgYmxvY2sgKi8KKwl6eF93cml0ZWxfbWFzayho YnNjICsgSEJTQ19DVFJMMCwgSEJTQ19DVFJMX0VOLCAwKTsKK30KKworc3RhdGljIGNvbnN0IHN0 cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzIHp4X3ZsX3BsYW5lX2hlbHBlcl9mdW5jcyA9IHsK KwkuYXRvbWljX2NoZWNrID0genhfdmxfcGxhbmVfYXRvbWljX2NoZWNrLAorCS5hdG9taWNfdXBk YXRlID0genhfdmxfcGxhbmVfYXRvbWljX3VwZGF0ZSwKKwkuYXRvbWljX2Rpc2FibGUgPSB6eF9w bGFuZV9hdG9taWNfZGlzYWJsZSwKK307CisKIHN0YXRpYyBpbnQgenhfZ2xfcGxhbmVfYXRvbWlj X2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQkJCSAgICBzdHJ1Y3QgZHJtX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKQEAgLTk3LDE0ICszNjYsNiBAQCBzdGF0aWMgaW5saW5l IHZvaWQgenhfZ2xfcnN6X3NldF91cGRhdGUoc3RydWN0IHp4X3BsYW5lICp6cGxhbmUpCiAJenhf d3JpdGVsKHpwbGFuZS0+cnN6ICsgUlNaX0VOQUJMRV9DRkcsIDEpOwogfQogCi12b2lkIHp4X3Bs YW5lX3NldF91cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCi17Ci0Jc3RydWN0IHp4X3Bs YW5lICp6cGxhbmUgPSB0b196eF9wbGFuZShwbGFuZSk7Ci0KLQl6eF9nbF9yc3pfc2V0X3VwZGF0 ZSh6cGxhbmUpOwotCXp4X2dsX3NldF91cGRhdGUoenBsYW5lKTsKLX0KLQogc3RhdGljIHZvaWQg enhfZ2xfcnN6X3NldHVwKHN0cnVjdCB6eF9wbGFuZSAqenBsYW5lLCB1MzIgc3JjX3csIHUzMiBz cmNfaCwKIAkJCSAgICB1MzIgZHN0X3csIHUzMiBkc3RfaCkKIHsKQEAgLTIwMiwxOCArNDYzLDYg QEAgc3RhdGljIHZvaWQgenhfZ2xfcGxhbmVfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5l ICpwbGFuZSwKIAl6eF9nbF9zZXRfdXBkYXRlKHpwbGFuZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHp4 X3BsYW5lX2F0b21pY19kaXNhYmxlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAotCQkJCSAgICBz dHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfc3RhdGUpCi17Ci0Jc3RydWN0IHp4X3BsYW5lICp6 cGxhbmUgPSB0b196eF9wbGFuZShwbGFuZSk7Ci0Jdm9pZCBfX2lvbWVtICpoYnNjID0genBsYW5l LT5oYnNjOwotCi0Jenhfdm91X2xheWVyX2Rpc2FibGUocGxhbmUpOwotCi0JLyogRGlzYWJsZSBI QlNDIGJsb2NrICovCi0Jenhfd3JpdGVsX21hc2soaGJzYyArIEhCU0NfQ1RSTDAsIEhCU0NfQ1RS TF9FTiwgMCk7Ci19Ci0KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5j cyB6eF9nbF9wbGFuZV9oZWxwZXJfZnVuY3MgPSB7CiAJLmF0b21pY19jaGVjayA9IHp4X2dsX3Bs YW5lX2F0b21pY19jaGVjaywKIAkuYXRvbWljX3VwZGF0ZSA9IHp4X2dsX3BsYW5lX2F0b21pY191 cGRhdGUsCkBAIC0yMzUsNiArNDg0LDI0IEBAIHN0YXRpYyB2b2lkIHp4X3BsYW5lX2Rlc3Ryb3ko c3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCiAJLmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0 b21pY19oZWxwZXJfcGxhbmVfZGVzdHJveV9zdGF0ZSwKIH07CiAKK3ZvaWQgenhfcGxhbmVfc2V0 X3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKK3sKKwlzdHJ1Y3QgenhfcGxhbmUgKnpw bGFuZSA9IHRvX3p4X3BsYW5lKHBsYW5lKTsKKworCXN3aXRjaCAocGxhbmUtPnR5cGUpIHsKKwlj YXNlIERSTV9QTEFORV9UWVBFX1BSSU1BUlk6CisJCXp4X2dsX3Jzel9zZXRfdXBkYXRlKHpwbGFu ZSk7CisJCXp4X2dsX3NldF91cGRhdGUoenBsYW5lKTsKKwkJYnJlYWs7CisJY2FzZSBEUk1fUExB TkVfVFlQRV9PVkVSTEFZOgorCQl6eF92bF9yc3pfc2V0X3VwZGF0ZSh6cGxhbmUpOworCQl6eF92 bF9zZXRfdXBkYXRlKHpwbGFuZSk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCVdBUk5fT05DRSgx LCAidW5zdXBwb3J0ZWQgcGxhbmUgdHlwZSAlZFxuIiwgcGxhbmUtPnR5cGUpOworCX0KK30KKwog c3RhdGljIHZvaWQgenhfcGxhbmVfaGJzY19pbml0KHN0cnVjdCB6eF9wbGFuZSAqenBsYW5lKQog ewogCXZvaWQgX19pb21lbSAqaGJzYyA9IHpwbGFuZS0+aGJzYzsKQEAgLTI3Miw3ICs1MzksOSBA QCBpbnQgenhfcGxhbmVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3QgenhfcGxh bmUgKnpwbGFuZSwKIAkJZm9ybWF0X2NvdW50ID0gQVJSQVlfU0laRShnbF9mb3JtYXRzKTsKIAkJ YnJlYWs7CiAJY2FzZSBEUk1fUExBTkVfVFlQRV9PVkVSTEFZOgotCQkvKiBUT0RPOiBhZGQgdmlk ZW8gbGF5ZXIgKHZsKSBzdXBwb3J0ICovCisJCWhlbHBlciA9ICZ6eF92bF9wbGFuZV9oZWxwZXJf ZnVuY3M7CisJCWZvcm1hdHMgPSB2bF9mb3JtYXRzOworCQlmb3JtYXRfY291bnQgPSBBUlJBWV9T SVpFKHZsX2Zvcm1hdHMpOwogCQlicmVhazsKIAlkZWZhdWx0OgogCQlyZXR1cm4gLUVOT0RFVjsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfcGxhbmVfcmVncy5oIGIvZHJpdmVy cy9ncHUvZHJtL3p0ZS96eF9wbGFuZV9yZWdzLmgKaW5kZXggM2RkZTY3MTZhNTU4Li42NWYyNzFh ZWFiZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfcGxhbmVfcmVncy5oCisr KyBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfcGxhbmVfcmVncy5oCkBAIC00Niw2ICs0NiwzNyBA QAogI2RlZmluZSBHTF9QT1NfWCh4KQkoKCh4KSA8PCBHTF9QT1NfWF9TSElGVCkgJiBHTF9QT1Nf WF9NQVNLKQogI2RlZmluZSBHTF9QT1NfWSh4KQkoKCh4KSA8PCBHTF9QT1NfWV9TSElGVCkgJiBH TF9QT1NfWV9NQVNLKQogCisvKiBWTCByZWdpc3RlcnMgKi8KKyNkZWZpbmUgVkxfQ1RSTDAJCQkw eDAwCisjZGVmaW5lIFZMX1VQREFURQkJCUJJVCgzKQorI2RlZmluZSBWTF9DVFJMMQkJCTB4MDQK KyNkZWZpbmUgVkxfWVVWNDIwX1BMQU5BUgkJQklUKDUpCisjZGVmaW5lIFZMX1lVVjQyMl9TSElG VAkJCTMKKyNkZWZpbmUgVkxfWVVWNDIyX1lVWVYJCQkoMCA8PCBWTF9ZVVY0MjJfU0hJRlQpCisj ZGVmaW5lIFZMX1lVVjQyMl9ZVllVCQkJKDEgPDwgVkxfWVVWNDIyX1NISUZUKQorI2RlZmluZSBW TF9ZVVY0MjJfVVlWWQkJCSgyIDw8IFZMX1lVVjQyMl9TSElGVCkKKyNkZWZpbmUgVkxfWVVWNDIy X1ZZVVkJCQkoMyA8PCBWTF9ZVVY0MjJfU0hJRlQpCisjZGVmaW5lIFZMX0ZNVF9ZVVY0MjAJCQkw CisjZGVmaW5lIFZMX0ZNVF9ZVVY0MjIJCQkxCisjZGVmaW5lIFZMX0ZNVF9ZVVY0MjBfUDAxMAkJ MgorI2RlZmluZSBWTF9GTVRfWVVWNDIwX0hBTlRSTwkJMworI2RlZmluZSBWTF9GTVRfWVVWNDQ0 XzhCSVQJCTQKKyNkZWZpbmUgVkxfRk1UX1lVVjQ0NF8xMEJJVAkJNQorI2RlZmluZSBWTF9DVFJM MgkJCTB4MDgKKyNkZWZpbmUgVkxfU0NBTEVSX0JZUEFTU19NT0RFCQlCSVQoMCkKKyNkZWZpbmUg VkxfU1RSSURFCQkJMHgwYworI2RlZmluZSBMVU1BX1NUUklERV9TSElGVAkJMTYKKyNkZWZpbmUg TFVNQV9TVFJJREVfTUFTSwkJKDB4ZmZmZiA8PCBMVU1BX1NUUklERV9TSElGVCkKKyNkZWZpbmUg Q0hST01BX1NUUklERV9TSElGVAkJMAorI2RlZmluZSBDSFJPTUFfU1RSSURFX01BU0sJCSgweGZm ZmYgPDwgQ0hST01BX1NUUklERV9TSElGVCkKKyNkZWZpbmUgVkxfU1JDX1NJWkUJCQkweDEwCisj ZGVmaW5lIFZMX1kJCQkJMHgxNAorI2RlZmluZSBWTF9QT1NfU1RBUlQJCQkweDMwCisjZGVmaW5l IFZMX1BPU19FTkQJCQkweDM0CisKKyNkZWZpbmUgTFVNQV9TVFJJREUoeCkJICgoKHgpIDw8IExV TUFfU1RSSURFX1NISUZUKSAmIExVTUFfU1RSSURFX01BU0spCisjZGVmaW5lIENIUk9NQV9TVFJJ REUoeCkgKCgoeCkgPDwgQ0hST01BX1NUUklERV9TSElGVCkgJiBDSFJPTUFfU1RSSURFX01BU0sp CisKIC8qIENTQyByZWdpc3RlcnMgKi8KICNkZWZpbmUgQ1NDX0NUUkwwCQkJMHgzMAogI2RlZmlu ZSBDU0NfQ09WX01PREVfU0hJRlQJCTE2CkBAIC02OSw2ICsxMDAsMTggQEAKICNkZWZpbmUgUlNa X0RFU1RfQ0ZHCQkJMHgwNAogI2RlZmluZSBSU1pfRU5BQkxFX0NGRwkJCTB4MTQKIAorI2RlZmlu ZSBSU1pfVkxfTFVNQV9IT1IJCQkweDA4CisjZGVmaW5lIFJTWl9WTF9MVU1BX1ZFUgkJCTB4MGMK KyNkZWZpbmUgUlNaX1ZMX0NIUk9NQV9IT1IJCTB4MTAKKyNkZWZpbmUgUlNaX1ZMX0NIUk9NQV9W RVIJCTB4MTQKKyNkZWZpbmUgUlNaX1ZMX0NUUkxfQ0ZHCQkJMHgxOAorI2RlZmluZSBSU1pfVkxf Rk1UX1NISUZUCQkzCisjZGVmaW5lIFJTWl9WTF9GTVRfTUFTSwkJCSgweDMgPDwgUlNaX1ZMX0ZN VF9TSElGVCkKKyNkZWZpbmUgUlNaX1ZMX0ZNVF9ZQ0JDUjQyMAkJKDB4MCA8PCBSU1pfVkxfRk1U X1NISUZUKQorI2RlZmluZSBSU1pfVkxfRk1UX1lDQkNSNDIyCQkoMHgxIDw8IFJTWl9WTF9GTVRf U0hJRlQpCisjZGVmaW5lIFJTWl9WTF9GTVRfWUNCQ1I0NDQJCSgweDIgPDwgUlNaX1ZMX0ZNVF9T SElGVCkKKyNkZWZpbmUgUlNaX1ZMX0VOQUJMRV9DRkcJCTB4MWMKKwogI2RlZmluZSBSU1pfVkVS X1NISUZUCQkJMTYKICNkZWZpbmUgUlNaX1ZFUl9NQVNLCQkJKDB4ZmZmZiA8PCBSU1pfVkVSX1NI SUZUKQogI2RlZmluZSBSU1pfSE9SX1NISUZUCQkJMApAQCAtNzcsNiArMTIwLDE0IEBACiAjZGVm aW5lIFJTWl9WRVIoeCkJKCgoeCkgPDwgUlNaX1ZFUl9TSElGVCkgJiBSU1pfVkVSX01BU0spCiAj ZGVmaW5lIFJTWl9IT1IoeCkJKCgoeCkgPDwgUlNaX0hPUl9TSElGVCkgJiBSU1pfSE9SX01BU0sp CiAKKyNkZWZpbmUgUlNaX0RBVEFfU1RFUF9TSElGVAkJMTYKKyNkZWZpbmUgUlNaX0RBVEFfU1RF UF9NQVNLCQkoMHhmZmZmIDw8IFJTWl9EQVRBX1NURVBfU0hJRlQpCisjZGVmaW5lIFJTWl9QQVJB X1NURVBfU0hJRlQJCTAKKyNkZWZpbmUgUlNaX1BBUkFfU1RFUF9NQVNLCQkoMHhmZmZmIDw8IFJT Wl9QQVJBX1NURVBfU0hJRlQpCisKKyNkZWZpbmUgUlNaX0RBVEFfU1RFUCh4KSAoKCh4KSA8PCBS U1pfREFUQV9TVEVQX1NISUZUKSAmIFJTWl9EQVRBX1NURVBfTUFTSykKKyNkZWZpbmUgUlNaX1BB UkFfU1RFUCh4KSAoKCh4KSA8PCBSU1pfUEFSQV9TVEVQX1NISUZUKSAmIFJTWl9QQVJBX1NURVBf TUFTSykKKwogLyogSEJTQyByZWdpc3RlcnMgKi8KICNkZWZpbmUgSEJTQ19TQVRVUkFUSU9OCQkJ MHgwMAogI2RlZmluZSBIQlNDX0hVRQkJCTB4MDQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS96dGUvenhfdm91LmMgYi9kcml2ZXJzL2dwdS9kcm0venRlL3p4X3ZvdS5jCmluZGV4IDNmYjRm YzA0ZTY5My4uZTgzMmMyZWMzMTU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0venRlL3p4 X3ZvdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91LmMKQEAgLTg0LDYgKzg0LDgg QEAgc3RydWN0IHp4X2NydGNfYml0cyB7CiBzdHJ1Y3QgenhfY3J0YyB7CiAJc3RydWN0IGRybV9j cnRjIGNydGM7CiAJc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeTsKKwlzdHJ1Y3QgZHJtX3BsYW5l ICpvdmVybGF5X2FjdGl2ZVtWTF9OVU1dOworCXVuc2lnbmVkIGludCBvdmVybGF5X2FjdGl2ZV9u dW07CiAJc3RydWN0IHp4X3ZvdV9odyAqdm91OwogCXZvaWQgX19pb21lbSAqY2hucmVnOwogCWNv bnN0IHN0cnVjdCB6eF9jcnRjX3JlZ3MgKnJlZ3M7CkBAIC0xMTIsNiArMTE0LDIyIEBAIHN0cnVj dCB2b3VfbGF5ZXJfYml0cyB7CiAJfSwKIH07CiAKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgdm91X2xh eWVyX2JpdHMgenhfdmxfYml0c1tWTF9OVU1dID0geworCXsKKwkJLmVuYWJsZSA9IE9TRF9DVFJM MF9WTDBfRU4sCisJCS5jaG5zZWwgPSBPU0RfQ1RSTDBfVkwwX1NFTCwKKwkJLmNsa3NlbCA9IFZP VV9DTEtfVkwwX1NFTCwKKwl9LCB7CisJCS5lbmFibGUgPSBPU0RfQ1RSTDBfVkwxX0VOLAorCQku Y2huc2VsID0gT1NEX0NUUkwwX1ZMMV9TRUwsCisJCS5jbGtzZWwgPSBWT1VfQ0xLX1ZMMV9TRUws CisJfSwgeworCQkuZW5hYmxlID0gT1NEX0NUUkwwX1ZMMl9FTiwKKwkJLmNobnNlbCA9IE9TRF9D VFJMMF9WTDJfU0VMLAorCQkuY2xrc2VsID0gVk9VX0NMS19WTDJfU0VMLAorCX0sCit9OworCiBz dHJ1Y3Qgenhfdm91X2h3IHsKIAlzdHJ1Y3QgZGV2aWNlICpkZXY7CiAJdm9pZCBfX2lvbWVtICpv c2Q7CkBAIC00MzksNiArNDU3LDkgQEAgdm9pZCB6eF92b3VfbGF5ZXJfZW5hYmxlKHN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lKQogCX0KIAogCXp4X3dyaXRlbF9tYXNrKHZvdS0+b3NkICsgT1NEX0NU UkwwLCBiaXRzLT5lbmFibGUsIGJpdHMtPmVuYWJsZSk7CisKKwlpZiAocGxhbmUtPnR5cGUgPT0g RFJNX1BMQU5FX1RZUEVfT1ZFUkxBWSkKKwkJemNydGMtPm92ZXJsYXlfYWN0aXZlW3pjcnRjLT5v dmVybGF5X2FjdGl2ZV9udW0rK10gPSBwbGFuZTsKIH0KIAogdm9pZCB6eF92b3VfbGF5ZXJfZGlz YWJsZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKQEAgLTQ0OSw2ICs0NzAsNTEgQEAgdm9pZCB6 eF92b3VfbGF5ZXJfZGlzYWJsZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKIAljb25zdCBzdHJ1 Y3Qgdm91X2xheWVyX2JpdHMgKmJpdHMgPSB6cGxhbmUtPmJpdHM7CiAKIAl6eF93cml0ZWxfbWFz ayh2b3UtPm9zZCArIE9TRF9DVFJMMCwgYml0cy0+ZW5hYmxlLCAwKTsKKworCWlmIChwbGFuZS0+ dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9PVkVSTEFZKQorCQl6Y3J0Yy0+b3ZlcmxheV9hY3RpdmVb emNydGMtPm92ZXJsYXlfYWN0aXZlX251bS0tXSA9IE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkIHp4 X292ZXJsYXlfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3Qgenhfdm91X2h3ICp2 b3UpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0gdm91LT5kZXY7CisJc3RydWN0IHp4X3BsYW5l ICp6cGxhbmU7CisJaW50IGk7CisJaW50IHJldDsKKworCS8qCisJICogVkwwIGhhcyBzb21lIHF1 aXJrcyBvbiBzY2FsaW5nIHN1cHBvcnQgd2hpY2ggbmVlZCBzcGVjaWFsIGhhbmRsaW5nLgorCSAq IExldCdzIGxlYXZlIGl0IG91dCBmb3Igbm93LgorCSAqLworCWZvciAoaSA9IDE7IGkgPCBWTF9O VU07IGkrKykgeworCQl6cGxhbmUgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnpwbGFuZSks IEdGUF9LRVJORUwpOworCQlpZiAoIXpwbGFuZSkgeworCQkJRFJNX0RFVl9FUlJPUihkZXYsICJm YWlsZWQgdG8gYWxsb2NhdGUgenBsYW5lICVkXG4iLCBpKTsKKwkJCXJldHVybjsKKwkJfQorCisJ CXpwbGFuZS0+bGF5ZXIgPSB2b3UtPm9zZCArIE9TRF9WTF9PRkZTRVQoaSk7CisJCXpwbGFuZS0+ aGJzYyA9IHZvdS0+b3NkICsgSEJTQ19WTF9PRkZTRVQoaSk7CisJCXpwbGFuZS0+cnN6ID0gdm91 LT5vdGZwcHUgKyBSU1pfVkxfT0ZGU0VUKGkpOworCQl6cGxhbmUtPmJpdHMgPSAmenhfdmxfYml0 c1tpXTsKKworCQlyZXQgPSB6eF9wbGFuZV9pbml0KGRybSwgenBsYW5lLCBEUk1fUExBTkVfVFlQ RV9PVkVSTEFZKTsKKwkJaWYgKHJldCkgeworCQkJRFJNX0RFVl9FUlJPUihkZXYsICJmYWlsZWQg dG8gaW5pdCBvdmVybGF5ICVkXG4iLCBpKTsKKwkJCWNvbnRpbnVlOworCQl9CisJfQorfQorCitz dGF0aWMgaW5saW5lIHZvaWQgenhfb3NkX2ludF91cGRhdGUoc3RydWN0IHp4X2NydGMgKnpjcnRj KQoreworCWludCBpOworCisJdm91X2Nobl9zZXRfdXBkYXRlKHpjcnRjKTsKKwl6eF9wbGFuZV9z ZXRfdXBkYXRlKHpjcnRjLT5wcmltYXJ5KTsKKworCWZvciAoaSA9IDA7IGkgPCB6Y3J0Yy0+b3Zl cmxheV9hY3RpdmVfbnVtOyBpKyspCisJCXp4X3BsYW5lX3NldF91cGRhdGUoemNydGMtPm92ZXJs YXlfYWN0aXZlW2ldKTsKIH0KIAogc3RhdGljIGlycXJldHVybl90IHZvdV9pcnFfaGFuZGxlcihp bnQgaXJxLCB2b2lkICpkZXZfaWQpCkBAIC00NzAsMTUgKzUzNiwxMSBAQCBzdGF0aWMgaXJxcmV0 dXJuX3Qgdm91X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9pZCkKIAlzdGF0ZSA9IHp4 X3JlYWRsKHZvdS0+b3NkICsgT1NEX0lOVF9TVEEpOwogCXp4X3dyaXRlbCh2b3UtPm9zZCArIE9T RF9JTlRfQ0xSU1RBLCBzdGF0ZSk7CiAKLQlpZiAoc3RhdGUgJiBPU0RfSU5UX01BSU5fVVBUKSB7 Ci0JCXZvdV9jaG5fc2V0X3VwZGF0ZSh2b3UtPm1haW5fY3J0Yyk7Ci0JCXp4X3BsYW5lX3NldF91 cGRhdGUodm91LT5tYWluX2NydGMtPnByaW1hcnkpOwotCX0KKwlpZiAoc3RhdGUgJiBPU0RfSU5U X01BSU5fVVBUKQorCQl6eF9vc2RfaW50X3VwZGF0ZSh2b3UtPm1haW5fY3J0Yyk7CiAKLQlpZiAo c3RhdGUgJiBPU0RfSU5UX0FVWF9VUFQpIHsKLQkJdm91X2Nobl9zZXRfdXBkYXRlKHZvdS0+YXV4 X2NydGMpOwotCQl6eF9wbGFuZV9zZXRfdXBkYXRlKHZvdS0+YXV4X2NydGMtPnByaW1hcnkpOwot CX0KKwlpZiAoc3RhdGUgJiBPU0RfSU5UX0FVWF9VUFQpCisJCXp4X29zZF9pbnRfdXBkYXRlKHZv dS0+YXV4X2NydGMpOwogCiAJaWYgKHN0YXRlICYgT1NEX0lOVF9FUlJPUikKIAkJRFJNX0RFVl9F UlJPUih2b3UtPmRldiwgIk9TRCBFUlJPUjogMHglMDh4IVxuIiwgc3RhdGUpOwpAQCAtNjQ4LDYg KzcxMCw4IEBAIHN0YXRpYyBpbnQgenhfY3J0Y19iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3Ry dWN0IGRldmljZSAqbWFzdGVyLCB2b2lkICpkYXRhKQogCQlnb3RvIGRpc2FibGVfcHB1X2NsazsK IAl9CiAKKwl6eF9vdmVybGF5X2luaXQoZHJtLCB2b3UpOworCiAJcmV0dXJuIDA7CiAKIGRpc2Fi bGVfcHB1X2NsazoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91X3JlZ3Mu 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