From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shawn Guo Subject: [PATCH v4 3/3] drm: zte: add overlay plane support Date: Mon, 9 Jan 2017 22:35:44 +0800 Message-ID: <1483972544-12731-4-git-send-email-shawnguo@kernel.org> References: <1483972544-12731-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 2054E6E075 for ; Mon, 9 Jan 2017 14:36:42 +0000 (UTC) In-Reply-To: <1483972544-12731-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 List-Id: dri-devel@lists.freedesktop.org RnJvbTogU2hhd24gR3VvIDxzaGF3bi5ndW9AbGluYXJvLm9yZz4KCkl0IGVuYWJsZXMgVk9VIFZM IChWaWRlbyBMYXllcikgdG8gc3VwcG9ydCBvdmVybGF5IHBsYW5lIHdpdGggc2NhbGluZwpmdW5j dGlvbi4gIFZMMCBoYXMgc29tZSBxdWlya3Mgb24gc2NhbGluZyBzdXBwb3J0LiAgV2UgY2hvb3Nl IHRvIHNraXAgaXQKYW5kIG9ubHkgYWRkcyBWTDEgYW5kIFZMMiBpbnRvIERSTSBjb3JlIGZvciBu b3cuCgpGdW5jdGlvbiB6eF9wbGFuZV9hdG9taWNfZGlzYWJsZSgpIGdldHMgbW92ZWQgYXJvdW5k IHdpdGggbm8gY2hhbmdlcyB0bwpzYXZlIGEgZm9yd2FyZCBkZWNsYXJhdGlvbi4KClNpZ25lZC1v ZmYtYnk6IFNoYXduIEd1byA8c2hhd24uZ3VvQGxpbmFyby5vcmc+Ci0tLQogZHJpdmVycy9ncHUv ZHJtL3p0ZS96eF9wbGFuZS5jICAgICAgfCAzMDEgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tCiBkcml2ZXJzL2dwdS9kcm0venRlL3p4X3BsYW5lLmggICAgICB8ICAgMSArCiBk cml2ZXJzL2dwdS9kcm0venRlL3p4X3BsYW5lX3JlZ3MuaCB8ICA1MSArKysrKysKIGRyaXZlcnMv Z3B1L2RybS96dGUvenhfdm91LmMgICAgICAgIHwgIDg0ICsrKysrKysrKy0KIGRyaXZlcnMvZ3B1 L2RybS96dGUvenhfdm91X3JlZ3MuaCAgIHwgIDE4ICsrKwogNSBmaWxlcyBjaGFuZ2VkLCA0MjYg aW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3p0ZS96eF9wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF9wbGFuZS5jCmluZGV4 IDU0NDVlZWJmODMwZi4uMjQ0MjZjMmI0YjhmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v enRlL3p4X3BsYW5lLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF9wbGFuZS5jCkBAIC0z MCw2ICszMCwyNjEgQEAKIAlEUk1fRk9STUFUX0FSR0I0NDQ0LAogfTsKIAorc3RhdGljIGNvbnN0 IHVpbnQzMl90IHZsX2Zvcm1hdHNbXSA9IHsKKwlEUk1fRk9STUFUX05WMTIsCS8qIFNlbWktcGxh bmFyIFlVVjQyMCAqLworCURSTV9GT1JNQVRfWVVWNDIwLAkvKiBQbGFuYXIgWVVWNDIwICovCisJ RFJNX0ZPUk1BVF9ZVVlWLAkvKiBQYWNrZWQgWVVWNDIyICovCisJRFJNX0ZPUk1BVF9ZVllVLAor CURSTV9GT1JNQVRfVVlWWSwKKwlEUk1fRk9STUFUX1ZZVVksCisJRFJNX0ZPUk1BVF9ZVVY0NDQs CS8qIFlVVjQ0NCA4Yml0ICovCisJLyoKKwkgKiBUT0RPOiBhZGQgZm9ybWF0cyBiZWxvdyB0aGF0 IEhXIHN1cHBvcnRzOgorCSAqICAtIFlVVjQyMCBQMDEwCisJICogIC0gWVVWNDIwIEhhbnRybwor CSAqICAtIFlVVjQ0NCAxMGJpdAorCSAqLworfTsKKworI2RlZmluZSBGUkFDXzE2XzE2KG11bHQs IGRpdikgICAgKCgobXVsdCkgPDwgMTYpIC8gKGRpdikpCisKK3N0YXRpYyBpbnQgenhfdmxfcGxh bmVfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJCSAgICBzdHJ1Y3Qg ZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYiA9IHBsYW5lX3N0YXRlLT5mYjsKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBwbGFuZV9z dGF0ZS0+Y3J0YzsKKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7CisJc3RydWN0 IGRybV9yZWN0IGNsaXA7CisJaW50IG1pbl9zY2FsZSA9IEZSQUNfMTZfMTYoMSwgOCk7CisJaW50 IG1heF9zY2FsZSA9IEZSQUNfMTZfMTYoOCwgMSk7CisKKwlpZiAoIWNydGMgfHwgIWZiKQorCQly ZXR1cm4gMDsKKworCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0 YXRlKHBsYW5lX3N0YXRlLT5zdGF0ZSwKKwkJCQkJCQljcnRjKTsKKwlpZiAoV0FSTl9PTighY3J0 Y19zdGF0ZSkpCisJCXJldHVybiAtRUlOVkFMOworCisJLyogbm90aGluZyB0byBjaGVjayB3aGVu IGRpc2FibGluZyBvciBkaXNhYmxlZCAqLworCWlmICghY3J0Y19zdGF0ZS0+ZW5hYmxlKQorCQly ZXR1cm4gMDsKKworCS8qIHBsYW5lIG11c3QgYmUgZW5hYmxlZCAqLworCWlmICghcGxhbmVfc3Rh dGUtPmNydGMpCisJCXJldHVybiAtRUlOVkFMOworCisJY2xpcC54MSA9IDA7CisJY2xpcC55MSA9 IDA7CisJY2xpcC54MiA9IGNydGNfc3RhdGUtPmFkanVzdGVkX21vZGUuaGRpc3BsYXk7CisJY2xp cC55MiA9IGNydGNfc3RhdGUtPmFkanVzdGVkX21vZGUudmRpc3BsYXk7CisKKwlyZXR1cm4gZHJt X3BsYW5lX2hlbHBlcl9jaGVja19zdGF0ZShwbGFuZV9zdGF0ZSwgJmNsaXAsCisJCQkJCSAgICBt aW5fc2NhbGUsIG1heF9zY2FsZSwKKwkJCQkJICAgIHRydWUsIHRydWUpOworfQorCitzdGF0aWMg aW50IHp4X3ZsX2dldF9mbXQodWludDMyX3QgZm9ybWF0KQoreworCXN3aXRjaCAoZm9ybWF0KSB7 CisJY2FzZSBEUk1fRk9STUFUX05WMTI6CisJCXJldHVybiBWTF9GTVRfWVVWNDIwOworCWNhc2Ug RFJNX0ZPUk1BVF9ZVVY0MjA6CisJCXJldHVybiBWTF9ZVVY0MjBfUExBTkFSIHwgVkxfRk1UX1lV VjQyMDsKKwljYXNlIERSTV9GT1JNQVRfWVVZVjoKKwkJcmV0dXJuIFZMX1lVVjQyMl9ZVVlWIHwg VkxfRk1UX1lVVjQyMjsKKwljYXNlIERSTV9GT1JNQVRfWVZZVToKKwkJcmV0dXJuIFZMX1lVVjQy Ml9ZVllVIHwgVkxfRk1UX1lVVjQyMjsKKwljYXNlIERSTV9GT1JNQVRfVVlWWToKKwkJcmV0dXJu IFZMX1lVVjQyMl9VWVZZIHwgVkxfRk1UX1lVVjQyMjsKKwljYXNlIERSTV9GT1JNQVRfVllVWToK KwkJcmV0dXJuIFZMX1lVVjQyMl9WWVVZIHwgVkxfRk1UX1lVVjQyMjsKKwljYXNlIERSTV9GT1JN QVRfWVVWNDQ0OgorCQlyZXR1cm4gVkxfRk1UX1lVVjQ0NF84QklUOworCWRlZmF1bHQ6CisJCVdB Uk5fT05DRSgxLCAiaW52YWxpZCBwaXhlbCBmb3JtYXQgJWRcbiIsIGZvcm1hdCk7CisJCXJldHVy biAtRUlOVkFMOworCX0KK30KKworc3RhdGljIGlubGluZSB2b2lkIHp4X3ZsX3NldF91cGRhdGUo c3RydWN0IHp4X3BsYW5lICp6cGxhbmUpCit7CisJdm9pZCBfX2lvbWVtICpsYXllciA9IHpwbGFu ZS0+bGF5ZXI7CisKKwl6eF93cml0ZWxfbWFzayhsYXllciArIFZMX0NUUkwwLCBWTF9VUERBVEUs IFZMX1VQREFURSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB6eF92bF9yc3pfc2V0X3VwZGF0 ZShzdHJ1Y3QgenhfcGxhbmUgKnpwbGFuZSkKK3sKKwl6eF93cml0ZWwoenBsYW5lLT5yc3ogKyBS U1pfVkxfRU5BQkxFX0NGRywgMSk7Cit9CisKK3N0YXRpYyBpbnQgenhfdmxfcnN6X2dldF9mbXQo dWludDMyX3QgZm9ybWF0KQoreworCXN3aXRjaCAoZm9ybWF0KSB7CisJY2FzZSBEUk1fRk9STUFU X05WMTI6CisJY2FzZSBEUk1fRk9STUFUX1lVVjQyMDoKKwkJcmV0dXJuIFJTWl9WTF9GTVRfWUNC Q1I0MjA7CisJY2FzZSBEUk1fRk9STUFUX1lVWVY6CisJY2FzZSBEUk1fRk9STUFUX1lWWVU6CisJ Y2FzZSBEUk1fRk9STUFUX1VZVlk6CisJY2FzZSBEUk1fRk9STUFUX1ZZVVk6CisJCXJldHVybiBS U1pfVkxfRk1UX1lDQkNSNDIyOworCWNhc2UgRFJNX0ZPUk1BVF9ZVVY0NDQ6CisJCXJldHVybiBS U1pfVkxfRk1UX1lDQkNSNDQ0OworCWRlZmF1bHQ6CisJCVdBUk5fT05DRSgxLCAiaW52YWxpZCBw aXhlbCBmb3JtYXQgJWRcbiIsIGZvcm1hdCk7CisJCXJldHVybiAtRUlOVkFMOworCX0KK30KKwor c3RhdGljIGlubGluZSB1MzIgcnN6X3N0ZXBfdmFsdWUodTMyIHNyYywgdTMyIGRzdCkKK3sKKwl1 MzIgdmFsID0gMDsKKworCWlmIChzcmMgPT0gZHN0KQorCQl2YWwgPSAwOworCWVsc2UgaWYgKHNy YyA8IGRzdCkKKwkJdmFsID0gUlNaX1BBUkFfU1RFUCgoc3JjIDw8IDE2KSAvIGRzdCk7CisJZWxz ZSBpZiAoc3JjID4gZHN0KQorCQl2YWwgPSBSU1pfREFUQV9TVEVQKHNyYyAvIGRzdCkgfAorCQkg ICAgICBSU1pfUEFSQV9TVEVQKCgoc3JjIDw8IDE2KSAvIGRzdCkgJiAweGZmZmYpOworCisJcmV0 dXJuIHZhbDsKK30KKworc3RhdGljIHZvaWQgenhfdmxfcnN6X3NldHVwKHN0cnVjdCB6eF9wbGFu ZSAqenBsYW5lLCB1aW50MzJfdCBmb3JtYXQsCisJCQkgICAgdTMyIHNyY193LCB1MzIgc3JjX2gs IHUzMiBkc3RfdywgdTMyIGRzdF9oKQoreworCXZvaWQgX19pb21lbSAqcnN6ID0genBsYW5lLT5y c3o7CisJdTMyIHNyY19jaHJvbWFfdyA9IHNyY193OworCXUzMiBzcmNfY2hyb21hX2ggPSBzcmNf aDsKKwl1MzIgZm10OworCisJLyogU2V0IHVwIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gcmVzb2x1 dGlvbiAqLworCXp4X3dyaXRlbChyc3ogKyBSU1pfU1JDX0NGRywgUlNaX1ZFUihzcmNfaCAtIDEp IHwgUlNaX0hPUihzcmNfdyAtIDEpKTsKKwl6eF93cml0ZWwocnN6ICsgUlNaX0RFU1RfQ0ZHLCBS U1pfVkVSKGRzdF9oIC0gMSkgfCBSU1pfSE9SKGRzdF93IC0gMSkpOworCisJLyogQ29uZmlndXJl IGRhdGEgZm9ybWF0IGZvciBWTCBSU1ogKi8KKwlmbXQgPSB6eF92bF9yc3pfZ2V0X2ZtdChmb3Jt YXQpOworCWlmIChmbXQgPj0gMCkKKwkJenhfd3JpdGVsX21hc2socnN6ICsgUlNaX1ZMX0NUUkxf Q0ZHLCBSU1pfVkxfRk1UX01BU0ssIGZtdCk7CisKKwkvKiBDYWxjdWxhdGUgQ2hyb21hIGhlaWdo dCBhbmQgd2lkdGggKi8KKwlpZiAoZm10ID09IFJTWl9WTF9GTVRfWUNCQ1I0MjApIHsKKwkJc3Jj X2Nocm9tYV93ID0gc3JjX3cgPj4gMTsKKwkJc3JjX2Nocm9tYV9oID0gc3JjX2ggPj4gMTsKKwl9 IGVsc2UgaWYgKGZtdCA9PSBSU1pfVkxfRk1UX1lDQkNSNDIyKSB7CisJCXNyY19jaHJvbWFfdyA9 IHNyY193ID4+IDE7CisJfQorCisJLyogU2V0IHVwIEx1bWEgYW5kIENocm9tYSBzdGVwIHJlZ2lz dGVycyAqLworCXp4X3dyaXRlbChyc3ogKyBSU1pfVkxfTFVNQV9IT1IsIHJzel9zdGVwX3ZhbHVl KHNyY193LCBkc3RfdykpOworCXp4X3dyaXRlbChyc3ogKyBSU1pfVkxfTFVNQV9WRVIsIHJzel9z dGVwX3ZhbHVlKHNyY19oLCBkc3RfaCkpOworCXp4X3dyaXRlbChyc3ogKyBSU1pfVkxfQ0hST01B X0hPUiwgcnN6X3N0ZXBfdmFsdWUoc3JjX2Nocm9tYV93LCBkc3RfdykpOworCXp4X3dyaXRlbChy c3ogKyBSU1pfVkxfQ0hST01BX1ZFUiwgcnN6X3N0ZXBfdmFsdWUoc3JjX2Nocm9tYV9oLCBkc3Rf aCkpOworCisJenhfdmxfcnN6X3NldF91cGRhdGUoenBsYW5lKTsKK30KKworc3RhdGljIHZvaWQg enhfdmxfcGxhbmVfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJCQkg ICAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfc3RhdGUpCit7CisJc3RydWN0IHp4X3Bs YW5lICp6cGxhbmUgPSB0b196eF9wbGFuZShwbGFuZSk7CisJc3RydWN0IGRybV9wbGFuZV9zdGF0 ZSAqc3RhdGUgPSBwbGFuZS0+c3RhdGU7CisJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBz dGF0ZS0+ZmI7CisJc3RydWN0IGRybV9yZWN0ICpzcmMgPSAmc3RhdGUtPnNyYzsKKwlzdHJ1Y3Qg ZHJtX3JlY3QgKmRzdCA9ICZzdGF0ZS0+ZHN0OworCXN0cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3Qg KmNtYV9vYmo7CisJdm9pZCBfX2lvbWVtICpsYXllciA9IHpwbGFuZS0+bGF5ZXI7CisJdm9pZCBf X2lvbWVtICpoYnNjID0genBsYW5lLT5oYnNjOworCXZvaWQgX19pb21lbSAqcGFkZHJfcmVnOwor CWRtYV9hZGRyX3QgcGFkZHI7CisJdTMyIHNyY194LCBzcmNfeSwgc3JjX3csIHNyY19oOworCXUz MiBkc3RfeCwgZHN0X3ksIGRzdF93LCBkc3RfaDsKKwl1aW50MzJfdCBmb3JtYXQ7CisJdTMyIGZt dDsKKwlpbnQgbnVtX3BsYW5lczsKKwlpbnQgaTsKKworCWlmICghZmIpCisJCXJldHVybjsKKwor CWZvcm1hdCA9IGZiLT5waXhlbF9mb3JtYXQ7CisKKwlzcmNfeCA9IHNyYy0+eDEgPj4gMTY7CisJ c3JjX3kgPSBzcmMtPnkxID4+IDE2OworCXNyY193ID0gZHJtX3JlY3Rfd2lkdGgoc3JjKSA+PiAx NjsKKwlzcmNfaCA9IGRybV9yZWN0X2hlaWdodChzcmMpID4+IDE2OworCisJZHN0X3ggPSBkc3Qt PngxOworCWRzdF95ID0gZHN0LT55MTsKKwlkc3RfdyA9IGRybV9yZWN0X3dpZHRoKGRzdCk7CisJ ZHN0X2ggPSBkcm1fcmVjdF9oZWlnaHQoZHN0KTsKKworCS8qIFNldCB1cCBkYXRhIGFkZHJlc3Mg cmVnaXN0ZXJzIGZvciBZLCBDYiBhbmQgQ3IgcGxhbmVzICovCisJbnVtX3BsYW5lcyA9IGRybV9m b3JtYXRfbnVtX3BsYW5lcyhmb3JtYXQpOworCXBhZGRyX3JlZyA9IGxheWVyICsgVkxfWTsKKwlm b3IgKGkgPSAwOyBpIDwgbnVtX3BsYW5lczsgaSsrKSB7CisJCWNtYV9vYmogPSBkcm1fZmJfY21h X2dldF9nZW1fb2JqKGZiLCBpKTsKKwkJcGFkZHIgPSBjbWFfb2JqLT5wYWRkciArIGZiLT5vZmZz ZXRzW2ldOworCQlwYWRkciArPSBzcmNfeSAqIGZiLT5waXRjaGVzW2ldOworCQlwYWRkciArPSBz cmNfeCAqIGRybV9mb3JtYXRfcGxhbmVfY3BwKGZvcm1hdCwgaSk7CisJCXp4X3dyaXRlbChwYWRk cl9yZWcsIHBhZGRyKTsKKwkJcGFkZHJfcmVnICs9IDQ7CisJfQorCisJLyogU2V0IHVwIHNvdXJj ZSBoZWlnaHQvd2lkdGggcmVnaXN0ZXIgKi8KKwl6eF93cml0ZWwobGF5ZXIgKyBWTF9TUkNfU0la RSwgR0xfU1JDX1coc3JjX3cpIHwgR0xfU1JDX0goc3JjX2gpKTsKKworCS8qIFNldCB1cCBzdGFy dCBwb3NpdGlvbiByZWdpc3RlciAqLworCXp4X3dyaXRlbChsYXllciArIFZMX1BPU19TVEFSVCwg R0xfUE9TX1goZHN0X3gpIHwgR0xfUE9TX1koZHN0X3kpKTsKKworCS8qIFNldCB1cCBlbmQgcG9z aXRpb24gcmVnaXN0ZXIgKi8KKwl6eF93cml0ZWwobGF5ZXIgKyBWTF9QT1NfRU5ELAorCQkgIEdM X1BPU19YKGRzdF94ICsgZHN0X3cpIHwgR0xfUE9TX1koZHN0X3kgKyBkc3RfaCkpOworCisJLyog U3RyaWRlcyBvZiBDYiBhbmQgQ3IgcGxhbmVzIHNob3VsZCBiZSBpZGVudGljYWwgKi8KKwl6eF93 cml0ZWwobGF5ZXIgKyBWTF9TVFJJREUsIExVTUFfU1RSSURFKGZiLT5waXRjaGVzWzBdKSB8CisJ CSAgQ0hST01BX1NUUklERShmYi0+cGl0Y2hlc1sxXSkpOworCisJLyogU2V0IHVwIHZpZGVvIGxh eWVyIGRhdGEgZm9ybWF0ICovCisJZm10ID0genhfdmxfZ2V0X2ZtdChmb3JtYXQpOworCWlmIChm bXQgPj0gMCkKKwkJenhfd3JpdGVsKGxheWVyICsgVkxfQ1RSTDEsIGZtdCk7CisKKwkvKiBBbHdh eXMgdXNlIHNjYWxlciBzaW5jZSBpdCBleGlzdHMgKHNldCBmb3Igbm90IGJ5cGFzcykgKi8KKwl6 eF93cml0ZWxfbWFzayhsYXllciArIFZMX0NUUkwyLCBWTF9TQ0FMRVJfQllQQVNTX01PREUsCisJ CSAgICAgICBWTF9TQ0FMRVJfQllQQVNTX01PREUpOworCisJenhfdmxfcnN6X3NldHVwKHpwbGFu ZSwgZm9ybWF0LCBzcmNfdywgc3JjX2gsIGRzdF93LCBkc3RfaCk7CisKKwkvKiBFbmFibGUgSEJT QyBibG9jayAqLworCXp4X3dyaXRlbF9tYXNrKGhic2MgKyBIQlNDX0NUUkwwLCBIQlNDX0NUUkxf RU4sIEhCU0NfQ1RSTF9FTik7CisKKwl6eF92b3VfbGF5ZXJfZW5hYmxlKHBsYW5lKTsKKworCXp4 X3ZsX3NldF91cGRhdGUoenBsYW5lKTsKK30KKworc3RhdGljIHZvaWQgenhfcGxhbmVfYXRvbWlj X2Rpc2FibGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCisJCQkJICAgIHN0cnVjdCBkcm1fcGxh bmVfc3RhdGUgKm9sZF9zdGF0ZSkKK3sKKwlzdHJ1Y3QgenhfcGxhbmUgKnpwbGFuZSA9IHRvX3p4 X3BsYW5lKHBsYW5lKTsKKwl2b2lkIF9faW9tZW0gKmhic2MgPSB6cGxhbmUtPmhic2M7CisKKwl6 eF92b3VfbGF5ZXJfZGlzYWJsZShwbGFuZSk7CisKKwkvKiBEaXNhYmxlIEhCU0MgYmxvY2sgKi8K Kwl6eF93cml0ZWxfbWFzayhoYnNjICsgSEJTQ19DVFJMMCwgSEJTQ19DVFJMX0VOLCAwKTsKK30K Kworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzIHp4X3ZsX3BsYW5l X2hlbHBlcl9mdW5jcyA9IHsKKwkuYXRvbWljX2NoZWNrID0genhfdmxfcGxhbmVfYXRvbWljX2No ZWNrLAorCS5hdG9taWNfdXBkYXRlID0genhfdmxfcGxhbmVfYXRvbWljX3VwZGF0ZSwKKwkuYXRv bWljX2Rpc2FibGUgPSB6eF9wbGFuZV9hdG9taWNfZGlzYWJsZSwKK307CisKIHN0YXRpYyBpbnQg enhfZ2xfcGxhbmVfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQkJCSAg ICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKQEAgLTk3LDE0ICszNTIs NiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgenhfZ2xfcnN6X3NldF91cGRhdGUoc3RydWN0IHp4X3Bs YW5lICp6cGxhbmUpCiAJenhfd3JpdGVsKHpwbGFuZS0+cnN6ICsgUlNaX0VOQUJMRV9DRkcsIDEp OwogfQogCi12b2lkIHp4X3BsYW5lX3NldF91cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUp Ci17Ci0Jc3RydWN0IHp4X3BsYW5lICp6cGxhbmUgPSB0b196eF9wbGFuZShwbGFuZSk7Ci0KLQl6 eF9nbF9yc3pfc2V0X3VwZGF0ZSh6cGxhbmUpOwotCXp4X2dsX3NldF91cGRhdGUoenBsYW5lKTsK LX0KLQogc3RhdGljIHZvaWQgenhfZ2xfcnN6X3NldHVwKHN0cnVjdCB6eF9wbGFuZSAqenBsYW5l LCB1MzIgc3JjX3csIHUzMiBzcmNfaCwKIAkJCSAgICB1MzIgZHN0X3csIHUzMiBkc3RfaCkKIHsK QEAgLTIwMiwxOCArNDQ5LDYgQEAgc3RhdGljIHZvaWQgenhfZ2xfcGxhbmVfYXRvbWljX3VwZGF0 ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAl6eF9nbF9zZXRfdXBkYXRlKHpwbGFuZSk7CiB9 CiAKLXN0YXRpYyB2b2lkIHp4X3BsYW5lX2F0b21pY19kaXNhYmxlKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLAotCQkJCSAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfc3RhdGUpCi17Ci0J c3RydWN0IHp4X3BsYW5lICp6cGxhbmUgPSB0b196eF9wbGFuZShwbGFuZSk7Ci0Jdm9pZCBfX2lv bWVtICpoYnNjID0genBsYW5lLT5oYnNjOwotCi0Jenhfdm91X2xheWVyX2Rpc2FibGUocGxhbmUp OwotCi0JLyogRGlzYWJsZSBIQlNDIGJsb2NrICovCi0Jenhfd3JpdGVsX21hc2soaGJzYyArIEhC U0NfQ1RSTDAsIEhCU0NfQ1RSTF9FTiwgMCk7Ci19Ci0KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJt X3BsYW5lX2hlbHBlcl9mdW5jcyB6eF9nbF9wbGFuZV9oZWxwZXJfZnVuY3MgPSB7CiAJLmF0b21p Y19jaGVjayA9IHp4X2dsX3BsYW5lX2F0b21pY19jaGVjaywKIAkuYXRvbWljX3VwZGF0ZSA9IHp4 X2dsX3BsYW5lX2F0b21pY191cGRhdGUsCkBAIC0yMzUsNiArNDcwLDI4IEBAIHN0YXRpYyB2b2lk IHp4X3BsYW5lX2Rlc3Ryb3koc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCiAJLmF0b21pY19kZXN0 cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfZGVzdHJveV9zdGF0ZSwKIH07CiAK K3ZvaWQgenhfcGxhbmVfc2V0X3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKK3sKKwlz dHJ1Y3QgenhfcGxhbmUgKnpwbGFuZSA9IHRvX3p4X3BsYW5lKHBsYW5lKTsKKworCS8qIERvIG5v dGhpbmcgaWYgdGhlIGxheWVyIGlzIG5vdCBlbmFibGVkICovCisJaWYgKCF6cGxhbmUtPmVuYWJs ZWQpCisJCXJldHVybjsKKworCXN3aXRjaCAocGxhbmUtPnR5cGUpIHsKKwljYXNlIERSTV9QTEFO RV9UWVBFX1BSSU1BUlk6CisJCXp4X2dsX3Jzel9zZXRfdXBkYXRlKHpwbGFuZSk7CisJCXp4X2ds X3NldF91cGRhdGUoenBsYW5lKTsKKwkJYnJlYWs7CisJY2FzZSBEUk1fUExBTkVfVFlQRV9PVkVS TEFZOgorCQl6eF92bF9yc3pfc2V0X3VwZGF0ZSh6cGxhbmUpOworCQl6eF92bF9zZXRfdXBkYXRl KHpwbGFuZSk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCVdBUk5fT05DRSgxLCAidW5zdXBwb3J0 ZWQgcGxhbmUgdHlwZSAlZFxuIiwgcGxhbmUtPnR5cGUpOworCX0KK30KKwogc3RhdGljIHZvaWQg enhfcGxhbmVfaGJzY19pbml0KHN0cnVjdCB6eF9wbGFuZSAqenBsYW5lKQogewogCXZvaWQgX19p b21lbSAqaGJzYyA9IHpwbGFuZS0+aGJzYzsKQEAgLTI3Miw3ICs1MjksOSBAQCBpbnQgenhfcGxh bmVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3QgenhfcGxhbmUgKnpwbGFuZSwK IAkJZm9ybWF0X2NvdW50ID0gQVJSQVlfU0laRShnbF9mb3JtYXRzKTsKIAkJYnJlYWs7CiAJY2Fz ZSBEUk1fUExBTkVfVFlQRV9PVkVSTEFZOgotCQkvKiBUT0RPOiBhZGQgdmlkZW8gbGF5ZXIgKHZs KSBzdXBwb3J0ICovCisJCWhlbHBlciA9ICZ6eF92bF9wbGFuZV9oZWxwZXJfZnVuY3M7CisJCWZv cm1hdHMgPSB2bF9mb3JtYXRzOworCQlmb3JtYXRfY291bnQgPSBBUlJBWV9TSVpFKHZsX2Zvcm1h dHMpOwogCQlicmVhazsKIAlkZWZhdWx0OgogCQlyZXR1cm4gLUVOT0RFVjsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS96dGUvenhfcGxhbmUuaCBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhf cGxhbmUuaAppbmRleCA5MzM2MTFkZGZmZDAuLmU4ZjliMTM4MTE0ZCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL3p0ZS96eF9wbGFuZS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhf cGxhbmUuaApAQCAtMTksNiArMTksNyBAQCBzdHJ1Y3QgenhfcGxhbmUgewogCXZvaWQgX19pb21l bSAqaGJzYzsKIAl2b2lkIF9faW9tZW0gKnJzejsKIAljb25zdCBzdHJ1Y3Qgdm91X2xheWVyX2Jp dHMgKmJpdHM7CisJYm9vbCBlbmFibGVkOwogfTsKIAogI2RlZmluZSB0b196eF9wbGFuZShwbGFu ZSkgY29udGFpbmVyX29mKHBsYW5lLCBzdHJ1Y3QgenhfcGxhbmUsIHBsYW5lKQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF9wbGFuZV9yZWdzLmggYi9kcml2ZXJzL2dwdS9kcm0v enRlL3p4X3BsYW5lX3JlZ3MuaAppbmRleCAzZGRlNjcxNmE1NTguLjY1ZjI3MWFlYWJlZCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF9wbGFuZV9yZWdzLmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL3p0ZS96eF9wbGFuZV9yZWdzLmgKQEAgLTQ2LDYgKzQ2LDM3IEBACiAjZGVmaW5l IEdMX1BPU19YKHgpCSgoKHgpIDw8IEdMX1BPU19YX1NISUZUKSAmIEdMX1BPU19YX01BU0spCiAj ZGVmaW5lIEdMX1BPU19ZKHgpCSgoKHgpIDw8IEdMX1BPU19ZX1NISUZUKSAmIEdMX1BPU19ZX01B U0spCiAKKy8qIFZMIHJlZ2lzdGVycyAqLworI2RlZmluZSBWTF9DVFJMMAkJCTB4MDAKKyNkZWZp bmUgVkxfVVBEQVRFCQkJQklUKDMpCisjZGVmaW5lIFZMX0NUUkwxCQkJMHgwNAorI2RlZmluZSBW TF9ZVVY0MjBfUExBTkFSCQlCSVQoNSkKKyNkZWZpbmUgVkxfWVVWNDIyX1NISUZUCQkJMworI2Rl ZmluZSBWTF9ZVVY0MjJfWVVZVgkJCSgwIDw8IFZMX1lVVjQyMl9TSElGVCkKKyNkZWZpbmUgVkxf WVVWNDIyX1lWWVUJCQkoMSA8PCBWTF9ZVVY0MjJfU0hJRlQpCisjZGVmaW5lIFZMX1lVVjQyMl9V WVZZCQkJKDIgPDwgVkxfWVVWNDIyX1NISUZUKQorI2RlZmluZSBWTF9ZVVY0MjJfVllVWQkJCSgz IDw8IFZMX1lVVjQyMl9TSElGVCkKKyNkZWZpbmUgVkxfRk1UX1lVVjQyMAkJCTAKKyNkZWZpbmUg VkxfRk1UX1lVVjQyMgkJCTEKKyNkZWZpbmUgVkxfRk1UX1lVVjQyMF9QMDEwCQkyCisjZGVmaW5l IFZMX0ZNVF9ZVVY0MjBfSEFOVFJPCQkzCisjZGVmaW5lIFZMX0ZNVF9ZVVY0NDRfOEJJVAkJNAor I2RlZmluZSBWTF9GTVRfWVVWNDQ0XzEwQklUCQk1CisjZGVmaW5lIFZMX0NUUkwyCQkJMHgwOAor I2RlZmluZSBWTF9TQ0FMRVJfQllQQVNTX01PREUJCUJJVCgwKQorI2RlZmluZSBWTF9TVFJJREUJ CQkweDBjCisjZGVmaW5lIExVTUFfU1RSSURFX1NISUZUCQkxNgorI2RlZmluZSBMVU1BX1NUUklE RV9NQVNLCQkoMHhmZmZmIDw8IExVTUFfU1RSSURFX1NISUZUKQorI2RlZmluZSBDSFJPTUFfU1RS SURFX1NISUZUCQkwCisjZGVmaW5lIENIUk9NQV9TVFJJREVfTUFTSwkJKDB4ZmZmZiA8PCBDSFJP TUFfU1RSSURFX1NISUZUKQorI2RlZmluZSBWTF9TUkNfU0laRQkJCTB4MTAKKyNkZWZpbmUgVkxf WQkJCQkweDE0CisjZGVmaW5lIFZMX1BPU19TVEFSVAkJCTB4MzAKKyNkZWZpbmUgVkxfUE9TX0VO RAkJCTB4MzQKKworI2RlZmluZSBMVU1BX1NUUklERSh4KQkgKCgoeCkgPDwgTFVNQV9TVFJJREVf U0hJRlQpICYgTFVNQV9TVFJJREVfTUFTSykKKyNkZWZpbmUgQ0hST01BX1NUUklERSh4KSAoKCh4 KSA8PCBDSFJPTUFfU1RSSURFX1NISUZUKSAmIENIUk9NQV9TVFJJREVfTUFTSykKKwogLyogQ1ND IHJlZ2lzdGVycyAqLwogI2RlZmluZSBDU0NfQ1RSTDAJCQkweDMwCiAjZGVmaW5lIENTQ19DT1Zf TU9ERV9TSElGVAkJMTYKQEAgLTY5LDYgKzEwMCwxOCBAQAogI2RlZmluZSBSU1pfREVTVF9DRkcJ CQkweDA0CiAjZGVmaW5lIFJTWl9FTkFCTEVfQ0ZHCQkJMHgxNAogCisjZGVmaW5lIFJTWl9WTF9M VU1BX0hPUgkJCTB4MDgKKyNkZWZpbmUgUlNaX1ZMX0xVTUFfVkVSCQkJMHgwYworI2RlZmluZSBS U1pfVkxfQ0hST01BX0hPUgkJMHgxMAorI2RlZmluZSBSU1pfVkxfQ0hST01BX1ZFUgkJMHgxNAor I2RlZmluZSBSU1pfVkxfQ1RSTF9DRkcJCQkweDE4CisjZGVmaW5lIFJTWl9WTF9GTVRfU0hJRlQJ CTMKKyNkZWZpbmUgUlNaX1ZMX0ZNVF9NQVNLCQkJKDB4MyA8PCBSU1pfVkxfRk1UX1NISUZUKQor I2RlZmluZSBSU1pfVkxfRk1UX1lDQkNSNDIwCQkoMHgwIDw8IFJTWl9WTF9GTVRfU0hJRlQpCisj ZGVmaW5lIFJTWl9WTF9GTVRfWUNCQ1I0MjIJCSgweDEgPDwgUlNaX1ZMX0ZNVF9TSElGVCkKKyNk ZWZpbmUgUlNaX1ZMX0ZNVF9ZQ0JDUjQ0NAkJKDB4MiA8PCBSU1pfVkxfRk1UX1NISUZUKQorI2Rl ZmluZSBSU1pfVkxfRU5BQkxFX0NGRwkJMHgxYworCiAjZGVmaW5lIFJTWl9WRVJfU0hJRlQJCQkx NgogI2RlZmluZSBSU1pfVkVSX01BU0sJCQkoMHhmZmZmIDw8IFJTWl9WRVJfU0hJRlQpCiAjZGVm aW5lIFJTWl9IT1JfU0hJRlQJCQkwCkBAIC03Nyw2ICsxMjAsMTQgQEAKICNkZWZpbmUgUlNaX1ZF Uih4KQkoKCh4KSA8PCBSU1pfVkVSX1NISUZUKSAmIFJTWl9WRVJfTUFTSykKICNkZWZpbmUgUlNa X0hPUih4KQkoKCh4KSA8PCBSU1pfSE9SX1NISUZUKSAmIFJTWl9IT1JfTUFTSykKIAorI2RlZmlu ZSBSU1pfREFUQV9TVEVQX1NISUZUCQkxNgorI2RlZmluZSBSU1pfREFUQV9TVEVQX01BU0sJCSgw eGZmZmYgPDwgUlNaX0RBVEFfU1RFUF9TSElGVCkKKyNkZWZpbmUgUlNaX1BBUkFfU1RFUF9TSElG VAkJMAorI2RlZmluZSBSU1pfUEFSQV9TVEVQX01BU0sJCSgweGZmZmYgPDwgUlNaX1BBUkFfU1RF UF9TSElGVCkKKworI2RlZmluZSBSU1pfREFUQV9TVEVQKHgpICgoKHgpIDw8IFJTWl9EQVRBX1NU RVBfU0hJRlQpICYgUlNaX0RBVEFfU1RFUF9NQVNLKQorI2RlZmluZSBSU1pfUEFSQV9TVEVQKHgp ICgoKHgpIDw8IFJTWl9QQVJBX1NURVBfU0hJRlQpICYgUlNaX1BBUkFfU1RFUF9NQVNLKQorCiAv KiBIQlNDIHJlZ2lzdGVycyAqLwogI2RlZmluZSBIQlNDX1NBVFVSQVRJT04JCQkweDAwCiAjZGVm aW5lIEhCU0NfSFVFCQkJMHgwNApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF92 b3UuYyBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91LmMKaW5kZXggM2ZiNGZjMDRlNjkzLi44 ZTdlZGRhMTg0ZDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF92b3UuYwpAQCAtMTEyLDYgKzExMiwyMiBAQCBzdHJ1 Y3Qgdm91X2xheWVyX2JpdHMgewogCX0sCiB9OwogCitzdGF0aWMgY29uc3Qgc3RydWN0IHZvdV9s YXllcl9iaXRzIHp4X3ZsX2JpdHNbVkxfTlVNXSA9IHsKKwl7CisJCS5lbmFibGUgPSBPU0RfQ1RS TDBfVkwwX0VOLAorCQkuY2huc2VsID0gT1NEX0NUUkwwX1ZMMF9TRUwsCisJCS5jbGtzZWwgPSBW T1VfQ0xLX1ZMMF9TRUwsCisJfSwgeworCQkuZW5hYmxlID0gT1NEX0NUUkwwX1ZMMV9FTiwKKwkJ LmNobnNlbCA9IE9TRF9DVFJMMF9WTDFfU0VMLAorCQkuY2xrc2VsID0gVk9VX0NMS19WTDFfU0VM LAorCX0sIHsKKwkJLmVuYWJsZSA9IE9TRF9DVFJMMF9WTDJfRU4sCisJCS5jaG5zZWwgPSBPU0Rf Q1RSTDBfVkwyX1NFTCwKKwkJLmNsa3NlbCA9IFZPVV9DTEtfVkwyX1NFTCwKKwl9LAorfTsKKwog c3RydWN0IHp4X3ZvdV9odyB7CiAJc3RydWN0IGRldmljZSAqZGV2OwogCXZvaWQgX19pb21lbSAq b3NkOwpAQCAtMTI1LDYgKzE0MSw3IEBAIHN0cnVjdCB6eF92b3VfaHcgewogCXN0cnVjdCBjbGsg KmF1eF9jbGs7CiAJc3RydWN0IHp4X2NydGMgKm1haW5fY3J0YzsKIAlzdHJ1Y3QgenhfY3J0YyAq YXV4X2NydGM7CisJc3RydWN0IGRybV9wbGFuZSAqb3ZlcmxheXNbVkxfTlVNXTsKIH07CiAKIHN0 YXRpYyBpbmxpbmUgc3RydWN0IHp4X3ZvdV9odyAqY3J0Y190b192b3Uoc3RydWN0IGRybV9jcnRj ICpjcnRjKQpAQCAtNDM5LDYgKzQ1Niw4IEBAIHZvaWQgenhfdm91X2xheWVyX2VuYWJsZShzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSkKIAl9CiAKIAl6eF93cml0ZWxfbWFzayh2b3UtPm9zZCArIE9T RF9DVFJMMCwgYml0cy0+ZW5hYmxlLCBiaXRzLT5lbmFibGUpOworCisJenBsYW5lLT5lbmFibGVk ID0gdHJ1ZTsKIH0KIAogdm9pZCB6eF92b3VfbGF5ZXJfZGlzYWJsZShzdHJ1Y3QgZHJtX3BsYW5l ICpwbGFuZSkKQEAgLTQ0OSw2ICs0NjgsNTcgQEAgdm9pZCB6eF92b3VfbGF5ZXJfZGlzYWJsZShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKIAljb25zdCBzdHJ1Y3Qgdm91X2xheWVyX2JpdHMgKmJp dHMgPSB6cGxhbmUtPmJpdHM7CiAKIAl6eF93cml0ZWxfbWFzayh2b3UtPm9zZCArIE9TRF9DVFJM MCwgYml0cy0+ZW5hYmxlLCAwKTsKKworCXpwbGFuZS0+ZW5hYmxlZCA9IGZhbHNlOworfQorCitz dGF0aWMgdm9pZCB6eF9vdmVybGF5X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgc3RydWN0 IHp4X3ZvdV9odyAqdm91KQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9IHZvdS0+ZGV2OworCXN0 cnVjdCB6eF9wbGFuZSAqenBsYW5lOworCWludCBpOworCWludCByZXQ7CisKKwkvKgorCSAqIFZM MCBoYXMgc29tZSBxdWlya3Mgb24gc2NhbGluZyBzdXBwb3J0IHdoaWNoIG5lZWQgc3BlY2lhbCBo YW5kbGluZy4KKwkgKiBMZXQncyBsZWF2ZSBpdCBvdXQgZm9yIG5vdy4KKwkgKi8KKwlmb3IgKGkg PSAxOyBpIDwgVkxfTlVNOyBpKyspIHsKKwkJenBsYW5lID0gZGV2bV9remFsbG9jKGRldiwgc2l6 ZW9mKCp6cGxhbmUpLCBHRlBfS0VSTkVMKTsKKwkJaWYgKCF6cGxhbmUpIHsKKwkJCURSTV9ERVZf RVJST1IoZGV2LCAiZmFpbGVkIHRvIGFsbG9jYXRlIHpwbGFuZSAlZFxuIiwgaSk7CisJCQlyZXR1 cm47CisJCX0KKworCQl6cGxhbmUtPmxheWVyID0gdm91LT5vc2QgKyBPU0RfVkxfT0ZGU0VUKGkp OworCQl6cGxhbmUtPmhic2MgPSB2b3UtPm9zZCArIEhCU0NfVkxfT0ZGU0VUKGkpOworCQl6cGxh bmUtPnJzeiA9IHZvdS0+b3RmcHB1ICsgUlNaX1ZMX09GRlNFVChpKTsKKwkJenBsYW5lLT5iaXRz ID0gJnp4X3ZsX2JpdHNbaV07CisKKwkJcmV0ID0genhfcGxhbmVfaW5pdChkcm0sIHpwbGFuZSwg RFJNX1BMQU5FX1RZUEVfT1ZFUkxBWSk7CisJCWlmIChyZXQpIHsKKwkJCURSTV9ERVZfRVJST1Io ZGV2LCAiZmFpbGVkIHRvIGluaXQgb3ZlcmxheSAlZFxuIiwgaSk7CisJCQljb250aW51ZTsKKwkJ fQorCisJCXZvdS0+b3ZlcmxheXNbaV0gPSAmenBsYW5lLT5wbGFuZTsKKwl9Cit9CisKK3N0YXRp YyBpbmxpbmUgdm9pZCB6eF9vc2RfaW50X3VwZGF0ZShzdHJ1Y3QgenhfY3J0YyAqemNydGMpCit7 CisJc3RydWN0IHp4X3ZvdV9odyAqdm91ID0gemNydGMtPnZvdTsKKwlpbnQgaTsKKworCXZvdV9j aG5fc2V0X3VwZGF0ZSh6Y3J0Yyk7CisJenhfcGxhbmVfc2V0X3VwZGF0ZSh6Y3J0Yy0+cHJpbWFy eSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgVkxfTlVNOyBpKyspIHsKKwkJc3RydWN0IGRybV9wbGFu ZSAqb3ZlcmxheSA9IHZvdS0+b3ZlcmxheXNbaV07CisKKwkJaWYgKG92ZXJsYXkpCisJCQl6eF9w bGFuZV9zZXRfdXBkYXRlKG92ZXJsYXkpOworCX0KIH0KIAogc3RhdGljIGlycXJldHVybl90IHZv dV9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkZXZfaWQpCkBAIC00NzAsMTUgKzU0MCwxMSBA QCBzdGF0aWMgaXJxcmV0dXJuX3Qgdm91X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9p ZCkKIAlzdGF0ZSA9IHp4X3JlYWRsKHZvdS0+b3NkICsgT1NEX0lOVF9TVEEpOwogCXp4X3dyaXRl bCh2b3UtPm9zZCArIE9TRF9JTlRfQ0xSU1RBLCBzdGF0ZSk7CiAKLQlpZiAoc3RhdGUgJiBPU0Rf SU5UX01BSU5fVVBUKSB7Ci0JCXZvdV9jaG5fc2V0X3VwZGF0ZSh2b3UtPm1haW5fY3J0Yyk7Ci0J CXp4X3BsYW5lX3NldF91cGRhdGUodm91LT5tYWluX2NydGMtPnByaW1hcnkpOwotCX0KKwlpZiAo c3RhdGUgJiBPU0RfSU5UX01BSU5fVVBUKQorCQl6eF9vc2RfaW50X3VwZGF0ZSh2b3UtPm1haW5f Y3J0Yyk7CiAKLQlpZiAoc3RhdGUgJiBPU0RfSU5UX0FVWF9VUFQpIHsKLQkJdm91X2Nobl9zZXRf dXBkYXRlKHZvdS0+YXV4X2NydGMpOwotCQl6eF9wbGFuZV9zZXRfdXBkYXRlKHZvdS0+YXV4X2Ny dGMtPnByaW1hcnkpOwotCX0KKwlpZiAoc3RhdGUgJiBPU0RfSU5UX0FVWF9VUFQpCisJCXp4X29z ZF9pbnRfdXBkYXRlKHZvdS0+YXV4X2NydGMpOwogCiAJaWYgKHN0YXRlICYgT1NEX0lOVF9FUlJP UikKIAkJRFJNX0RFVl9FUlJPUih2b3UtPmRldiwgIk9TRCBFUlJPUjogMHglMDh4IVxuIiwgc3Rh dGUpOwpAQCAtNjQ4LDYgKzcxNCw4IEBAIHN0YXRpYyBpbnQgenhfY3J0Y19iaW5kKHN0cnVjdCBk ZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLCB2b2lkICpkYXRhKQogCQlnb3RvIGRp c2FibGVfcHB1X2NsazsKIAl9CiAKKwl6eF9vdmVybGF5X2luaXQoZHJtLCB2b3UpOworCiAJcmV0 dXJuIDA7CiAKIGRpc2FibGVfcHB1X2NsazoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS96 dGUvenhfdm91X3JlZ3MuaCBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91X3JlZ3MuaAppbmRl eCBmNDRlN2E0YWU0NDEuLjE5M2MxY2UwMWZlNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L3p0ZS96eF92b3VfcmVncy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91X3JlZ3Mu aApAQCAtMjIsNiArMjIsMTUgQEAKICNkZWZpbmUgQVVYX0hCU0NfT0ZGU0VUCQkJMHg4NjAKICNk ZWZpbmUgQVVYX1JTWl9PRkZTRVQJCQkweDgwMAogCisjZGVmaW5lIE9TRF9WTDBfT0ZGU0VUCQkJ MHgwNDAKKyNkZWZpbmUgT1NEX1ZMX09GRlNFVChpKQkJKE9TRF9WTDBfT0ZGU0VUICsgMHgwNTAg KiAoaSkpCisKKyNkZWZpbmUgSEJTQ19WTDBfT0ZGU0VUCQkJMHg3NjAKKyNkZWZpbmUgSEJTQ19W TF9PRkZTRVQoaSkJCShIQlNDX1ZMMF9PRkZTRVQgKyAweDA0MCAqIChpKSkKKworI2RlZmluZSBS U1pfVkwxX1UwCQkJMHhhMDAKKyNkZWZpbmUgUlNaX1ZMX09GRlNFVChpKQkJKFJTWl9WTDFfVTAg KyAweDIwMCAqIChpKSkKKwogLyogT1NEIChHUENfR0xPQkFMKSByZWdpc3RlcnMgKi8KICNkZWZp bmUgT1NEX0lOVF9TVEEJCQkweDA0CiAjZGVmaW5lIE9TRF9JTlRfQ0xSU1RBCQkJMHgwOApAQCAt NDIsNiArNTEsMTIgQEAKICkKICNkZWZpbmUgT1NEX0lOVF9FTkFCTEUgKE9TRF9JTlRfRVJST1Ig fCBPU0RfSU5UX0FVWF9VUFQgfCBPU0RfSU5UX01BSU5fVVBUKQogI2RlZmluZSBPU0RfQ1RSTDAJ CQkweDEwCisjZGVmaW5lIE9TRF9DVFJMMF9WTDBfRU4JCUJJVCgxMykKKyNkZWZpbmUgT1NEX0NU UkwwX1ZMMF9TRUwJCUJJVCgxMikKKyNkZWZpbmUgT1NEX0NUUkwwX1ZMMV9FTgkJQklUKDExKQor I2RlZmluZSBPU0RfQ1RSTDBfVkwxX1NFTAkJQklUKDEwKQorI2RlZmluZSBPU0RfQ1RSTDBfVkwy X0VOCQlCSVQoOSkKKyNkZWZpbmUgT1NEX0NUUkwwX1ZMMl9TRUwJCUJJVCg4KQogI2RlZmluZSBP U0RfQ1RSTDBfR0wwX0VOCQlCSVQoNykKICNkZWZpbmUgT1NEX0NUUkwwX0dMMF9TRUwJCUJJVCg2 KQogI2RlZmluZSBPU0RfQ1RSTDBfR0wxX0VOCQlCSVQoNSkKQEAgLTE0Niw2ICsxNjEsOSBAQAog I2RlZmluZSBWT1VfSU5GX0RBVEFfU0VMCQkweDA4CiAjZGVmaW5lIFZPVV9TT0ZUX1JTVAkJCTB4 MTQKICNkZWZpbmUgVk9VX0NMS19TRUwJCQkweDE4CisjZGVmaW5lIFZPVV9DTEtfVkwyX1NFTAkJ CUJJVCg4KQorI2RlZmluZSBWT1VfQ0xLX1ZMMV9TRUwJCQlCSVQoNykKKyNkZWZpbmUgVk9VX0NM S19WTDBfU0VMCQkJQklUKDYpCiAjZGVmaW5lIFZPVV9DTEtfR0wxX1NFTAkJCUJJVCg1KQogI2Rl ZmluZSBWT1VfQ0xLX0dMMF9TRUwJCQlCSVQoNCkKICNkZWZpbmUgVk9VX0NMS19SRVFFTgkJCTB4 MjAKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWwK