From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Airlie Subject: [PATCH 6/7] drm/amdgpu: convert encoders to using the graphics object ids. Date: Thu, 14 Apr 2016 12:56:09 +1000 Message-ID: <1460602570-20641-7-git-send-email-airlied@gmail.com> References: <1460602570-20641-1-git-send-email-airlied@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by gabe.freedesktop.org (Postfix) with ESMTPS id 641836E177 for ; Thu, 14 Apr 2016 02:56:20 +0000 (UTC) Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 1A21C46291 for ; Thu, 14 Apr 2016 02:56:20 +0000 (UTC) Received: from dreadlord-bne-redhat-com.bne.redhat.com (dhcp-40-179.bne.redhat.com [10.64.40.179]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u3E2uCTP027239 for ; Wed, 13 Apr 2016 22:56:19 -0400 In-Reply-To: <1460602570-20641-1-git-send-email-airlied@gmail.com> 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 List-Id: dri-devel@lists.freedesktop.org RnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KClRoaXMgcG9ydHMgdGhlIGVu Y29kZXIgY29kZSBvdmVyIHRvIHRoZSBjb21tb24gZ3JhcGhpY3Mgb2JqZWN0cwpmcm9tIERBTC4K Ck5vdGUgdGhlIGVuY29kZXJzIGlkIGRvbid0IG1hdGNoIDE6MSBiZXR3ZWVuIGF0b21iaW9zIGFu ZCB0aGUKZ3JhcGhpY3Mgb2JqZWN0cy4KClNpZ25lZC1vZmYtYnk6IERhdmUgQWlybGllIDxhaXJs aWVkQHJlZGhhdC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2F0 b21iaW9zLmMgICAgICAgfCAgIDUgKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9jb25uZWN0b3JzLmMgICAgIHwgIDMwICstLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2Nvbm5lY3RvcnMuaCAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9kaXNwbGF5LmMgICAgICAgIHwgIDQ2ICsrLS0tCiBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfZW5jb2RlcnMuYyAgICAgICB8ICAxNCArLQogLi4uL2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9ncnBoX29iamVjdF9pZF9oZWxwZXJzLmMgfCAxMjkgKysrKysrKysrKysr CiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW9kZS5oICAgICAgICAgICB8ICAg NyArLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYXRvbWJpb3NfY3J0Yy5jICAgICAgICAg fCAgMjYgKy0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hdG9tYmlvc19jcnRjLmggICAg ICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYXRvbWJpb3NfZHAuYyAg ICAgICAgICAgfCAgIDggKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2F0b21iaW9zX2Vu Y29kZXJzLmMgICAgIHwgMjI4ICsrKysrKysrKysrKy0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvZGNlX3YxMF8wLmMgICAgICAgICAgICAgfCAgNTcgKysrLS0tCiBkcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9kY2VfdjExXzAuYyAgICAgICAgICAgICB8ICA1NCArKy0tLQog ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZGNlX3Y4XzAuYyAgICAgICAgICAgICAgfCAgNTQg KystLS0KIC4uLi9ncHUvZHJtL2FtZC9pbmNsdWRlL2Rpc3BsYXlfZ3JwaF9vYmplY3RfaWQuaCAg IHwgICAxICsKIDE1IGZpbGVzIGNoYW5nZWQsIDQwOSBpbnNlcnRpb25zKCspLCAyNTQgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2F0 b21iaW9zLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYXRvbWJpb3MuYwpp bmRleCA1ZjIzNmQ5Li5lODg1NWEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfYXRvbWJpb3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfYXRvbWJpb3MuYwpAQCAtMzQxLDcgKzM0MSw4IEBAIGJvb2wgYW1kZ3B1X2F0b21iaW9z X2dldF9jb25uZWN0b3JfaW5mb19mcm9tX29iamVjdF90YWJsZShzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqCiAJCQkJCQkJCSBsZTE2X3RvX2NwdShlbmNfb2JqLT5hc09iamVjdHNba10udXNSZWNvcmRP ZmZzZXQpKTsKIAkJCQkJCQlBVE9NX0VOQ09ERVJfQ0FQX1JFQ09SRCAqY2FwX3JlY29yZDsKIAkJ CQkJCQl1MTYgY2FwcyA9IDA7Ci0KKwkJCQkJCQlzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0X2lkIGVu Y29kZXJfb2JqZWN0X2lkOworCQkJCQkJCWVuY29kZXJfb2JqZWN0X2lkID0gYW1kZ3B1X29iamVj dF9pZF9mcm9tX2Jpb3Nfb2JqZWN0X2lkKGVuY29kZXJfb2JqKTsKIAkJCQkJCQl3aGlsZSAocmVj b3JkLT51Y1JlY29yZFNpemUgPiAwICYmCiAJCQkJCQkJICAgICAgIHJlY29yZC0+dWNSZWNvcmRU eXBlID4gMCAmJgogCQkJCQkJCSAgICAgICByZWNvcmQtPnVjUmVjb3JkVHlwZSA8PSBBVE9NX01B WF9PQkpFQ1RfUkVDT1JEX05VTUJFUikgewpAQCAtMzU1LDcgKzM1Niw3IEBAIGJvb2wgYW1kZ3B1 X2F0b21iaW9zX2dldF9jb25uZWN0b3JfaW5mb19mcm9tX29iamVjdF90YWJsZShzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqCiAJCQkJCQkJCXJlY29yZCA9IChBVE9NX0NPTU1PTl9SRUNPUkRfSEVBREVS ICopCiAJCQkJCQkJCQkoKGNoYXIgKilyZWNvcmQgKyByZWNvcmQtPnVjUmVjb3JkU2l6ZSk7CiAJ CQkJCQkJfQotCQkJCQkJCWFtZGdwdV9kaXNwbGF5X2FkZF9lbmNvZGVyKGFkZXYsIGVuY29kZXJf b2JqLAorCQkJCQkJCWFtZGdwdV9kaXNwbGF5X2FkZF9lbmNvZGVyKGFkZXYsIGVuY29kZXJfb2Jq ZWN0X2lkLAogCQkJCQkJCQkJCSAgICBsZTE2X3RvX2NwdShwYXRoLT51c0RldmljZVRhZyksCiAJ CQkJCQkJCQkJICAgIGNhcHMpOwogCQkJCQkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X2Nvbm5lY3RvcnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9jb25uZWN0b3JzLmMKaW5kZXggNzY1MzA5ZS4uZWI5YjlkYyAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Nvbm5lY3RvcnMuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY29ubmVjdG9ycy5jCkBAIC0zMTMsNyAr MzEzLDcgQEAgc3RhdGljIHZvaWQgYW1kZ3B1X2Nvbm5lY3Rvcl9nZXRfZWRpZChzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yKQogCQlhbWRncHVfaTJjX3JvdXRlcl9zZWxlY3RfZGRjX3Bv cnQoYW1kZ3B1X2Nvbm5lY3Rvcik7CiAKIAlpZiAoKGFtZGdwdV9jb25uZWN0b3JfZW5jb2Rlcl9n ZXRfZHBfYnJpZGdlX2VuY29kZXJfaWQoY29ubmVjdG9yKSAhPQotCSAgICAgRU5DT0RFUl9PQkpF Q1RfSURfTk9ORSkgJiYKKwkgICAgIEVOQ09ERVJfSURfVU5LTk9XTikgJiYKIAkgICAgYW1kZ3B1 X2Nvbm5lY3Rvci0+ZGRjX2J1cy0+aGFzX2F1eCkgewogCQlhbWRncHVfY29ubmVjdG9yLT5lZGlk ID0gZHJtX2dldF9lZGlkKGNvbm5lY3RvciwKIAkJCQkJCSAgICAgICZhbWRncHVfY29ubmVjdG9y LT5kZGNfYnVzLT5hdXguZGRjKTsKQEAgLTEyMjgsNyArMTIyOCw3IEBAIHN0YXRpYyBpbnQgYW1k Z3B1X2Nvbm5lY3Rvcl9kcF9nZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv cikKIAkJfSBlbHNlIHsKIAkJCS8qIG5lZWQgdG8gc2V0dXAgZGRjIG9uIHRoZSBicmlkZ2UgKi8K IAkJCWlmIChhbWRncHVfY29ubmVjdG9yX2VuY29kZXJfZ2V0X2RwX2JyaWRnZV9lbmNvZGVyX2lk KGNvbm5lY3RvcikgIT0KLQkJCSAgICBFTkNPREVSX09CSkVDVF9JRF9OT05FKSB7CisJCQkgICAg RU5DT0RFUl9JRF9VTktOT1dOKSB7CiAJCQkJaWYgKGVuY29kZXIpCiAJCQkJCWFtZGdwdV9hdG9t Ymlvc19lbmNvZGVyX3NldHVwX2V4dF9lbmNvZGVyX2RkYyhlbmNvZGVyKTsKIAkJCX0KQEAgLTEy NjIsNyArMTI2Miw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2Nvbm5lY3Rvcl9kcF9nZXRfbW9kZXMo c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKIAl9IGVsc2UgewogCQkvKiBuZWVkIHRv IHNldHVwIGRkYyBvbiB0aGUgYnJpZGdlICovCiAJCWlmIChhbWRncHVfY29ubmVjdG9yX2VuY29k ZXJfZ2V0X2RwX2JyaWRnZV9lbmNvZGVyX2lkKGNvbm5lY3RvcikgIT0KLQkJCUVOQ09ERVJfT0JK RUNUX0lEX05PTkUpIHsKKwkJCUVOQ09ERVJfSURfVU5LTk9XTikgewogCQkJaWYgKGVuY29kZXIp CiAJCQkJYW1kZ3B1X2F0b21iaW9zX2VuY29kZXJfc2V0dXBfZXh0X2VuY29kZXJfZGRjKGVuY29k ZXIpOwogCQl9CkBAIC0xMjc1LDExICsxMjc1LDEyIEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2Nvbm5l Y3Rvcl9kcF9nZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKIAlyZXR1 cm4gcmV0OwogfQogCi11MTYgYW1kZ3B1X2Nvbm5lY3Rvcl9lbmNvZGVyX2dldF9kcF9icmlkZ2Vf ZW5jb2Rlcl9pZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQorZW51bSBlbmNvZGVy X2lkIGFtZGdwdV9jb25uZWN0b3JfZW5jb2Rlcl9nZXRfZHBfYnJpZGdlX2VuY29kZXJfaWQoc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKIHsKIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVu Y29kZXI7CiAJc3RydWN0IGFtZGdwdV9lbmNvZGVyICphbWRncHVfZW5jb2RlcjsKIAlpbnQgaTsK KwllbnVtIGVuY29kZXJfaWQgZW5jX2lkOwogCiAJZm9yIChpID0gMDsgaSA8IERSTV9DT05ORUNU T1JfTUFYX0VOQ09ERVI7IGkrKykgewogCQlpZiAoY29ubmVjdG9yLT5lbmNvZGVyX2lkc1tpXSA9 PSAwKQpAQCAtMTI5MSwxNyArMTI5MiwxNyBAQCB1MTYgYW1kZ3B1X2Nvbm5lY3Rvcl9lbmNvZGVy X2dldF9kcF9icmlkZ2VfZW5jb2Rlcl9pZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubgogCQkJ Y29udGludWU7CiAKIAkJYW1kZ3B1X2VuY29kZXIgPSB0b19hbWRncHVfZW5jb2RlcihlbmNvZGVy KTsKLQotCQlzd2l0Y2ggKGFtZGdwdV9lbmNvZGVyLT5lbmNvZGVyX2lkKSB7Ci0JCWNhc2UgRU5D T0RFUl9PQkpFQ1RfSURfVFJBVklTOgotCQljYXNlIEVOQ09ERVJfT0JKRUNUX0lEX05VVE1FRzoK LQkJCXJldHVybiBhbWRncHVfZW5jb2Rlci0+ZW5jb2Rlcl9pZDsKKwkJZW5jX2lkID0gZGlzcGxh eV9ncmFwaGljc19vYmplY3RfaWRfZ2V0X2VuY29kZXJfaWQoYW1kZ3B1X2VuY29kZXItPmVuY29k ZXJfb2JqZWN0X2lkKTsKKwkJc3dpdGNoIChlbmNfaWQpIHsKKwkJY2FzZSBFTkNPREVSX0lEX0VY VEVSTkFMX1RSQVZJUzoKKwkJY2FzZSBFTkNPREVSX0lEX0VYVEVSTkFMX05VVE1FRzoKKwkJCXJl dHVybiBlbmNfaWQ7CiAJCWRlZmF1bHQ6CiAJCQlicmVhazsKIAkJfQogCX0KIAotCXJldHVybiBF TkNPREVSX09CSkVDVF9JRF9OT05FOworCXJldHVybiBFTkNPREVSX0lEX1VOS05PV047CiB9CiAK IHN0YXRpYyBib29sIGFtZGdwdV9jb25uZWN0b3JfZW5jb2Rlcl9pc19oYnIyKHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IpCkBAIC0xMzgzLDcgKzEzODQsNyBAQCBhbWRncHVfY29ubmVj dG9yX2RwX2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBib29sIGZvcmNl KQogCQkJYW1kZ3B1X2F0b21iaW9zX2VuY29kZXJfc2V0X2VkcF9wYW5lbF9wb3dlcihjb25uZWN0 b3IsCiAJCQkJCQkJICAgICBBVE9NX1RSQU5TTUlUVEVSX0FDVElPTl9QT1dFUl9PRkYpOwogCX0g ZWxzZSBpZiAoYW1kZ3B1X2Nvbm5lY3Rvcl9lbmNvZGVyX2dldF9kcF9icmlkZ2VfZW5jb2Rlcl9p ZChjb25uZWN0b3IpICE9Ci0JCSAgIEVOQ09ERVJfT0JKRUNUX0lEX05PTkUpIHsKKwkJICAgRU5D T0RFUl9JRF9VTktOT1dOKSB7CiAJCS8qIERQIGJyaWRnZXMgYXJlIGFsd2F5cyBEUCAqLwogCQlh bWRncHVfZGlnX2Nvbm5lY3Rvci0+ZHBfc2lua190eXBlID0gQ09OTkVDVE9SX0lEX0RJU1BMQVlf UE9SVDsKIAkJLyogZ2V0IHRoZSBEUENEIGZyb20gdGhlIGJyaWRnZSAqLwpAQCAtMTU1Miw5ICsx NTUzLDEwIEBAIGFtZGdwdV9jb25uZWN0b3JfYWRkKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LAogCWxpc3RfZm9yX2VhY2hfZW50cnkoZW5jb2RlciwgJmRldi0+bW9kZV9jb25maWcuZW5jb2Rl cl9saXN0LCBoZWFkKSB7CiAJCWFtZGdwdV9lbmNvZGVyID0gdG9fYW1kZ3B1X2VuY29kZXIoZW5j b2Rlcik7CiAJCWlmIChhbWRncHVfZW5jb2Rlci0+ZGV2aWNlcyAmIHN1cHBvcnRlZF9kZXZpY2Up IHsKLQkJCXN3aXRjaCAoYW1kZ3B1X2VuY29kZXItPmVuY29kZXJfaWQpIHsKLQkJCWNhc2UgRU5D T0RFUl9PQkpFQ1RfSURfVFJBVklTOgotCQkJY2FzZSBFTkNPREVSX09CSkVDVF9JRF9OVVRNRUc6 CisJCQllbnVtIGVuY29kZXJfaWQgZW5jX2lkID0gZGlzcGxheV9ncmFwaGljc19vYmplY3RfaWRf Z2V0X2VuY29kZXJfaWQoYW1kZ3B1X2VuY29kZXItPmVuY29kZXJfb2JqZWN0X2lkKTsKKwkJCXN3 aXRjaCAoZW5jX2lkKSB7CisJCQljYXNlIEVOQ09ERVJfSURfRVhURVJOQUxfVFJBVklTOgorCQkJ Y2FzZSBFTkNPREVSX0lEX0VYVEVSTkFMX05VVE1FRzoKIAkJCQlpc19kcF9icmlkZ2UgPSB0cnVl OwogCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9jb25uZWN0b3JzLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfY29ubmVjdG9ycy5oCmluZGV4IDcwYjI2NjMuLmYwNjIxMDEgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jb25uZWN0b3JzLmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Nvbm5lY3RvcnMuaApAQCAtMjcsNyArMjcs NyBAQAogc3RydWN0IGVkaWQgKmFtZGdwdV9jb25uZWN0b3JfZWRpZChzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubmVjdG9yKTsKIHZvaWQgYW1kZ3B1X2Nvbm5lY3Rvcl9ob3RwbHVnKHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IpOwogaW50IGFtZGdwdV9jb25uZWN0b3JfZ2V0X21vbml0 b3JfYnBjKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpOwotdTE2IGFtZGdwdV9jb25u ZWN0b3JfZW5jb2Rlcl9nZXRfZHBfYnJpZGdlX2VuY29kZXJfaWQoc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3Rvcik7CitlbnVtIGVuY29kZXJfaWQgYW1kZ3B1X2Nvbm5lY3Rvcl9lbmNvZGVy X2dldF9kcF9icmlkZ2VfZW5jb2Rlcl9pZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y KTsKIGJvb2wgYW1kZ3B1X2Nvbm5lY3Rvcl9pc19kcDEyX2NhcGFibGUoc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3Rvcik7CiB2b2lkCiBhbWRncHVfY29ubmVjdG9yX2FkZChzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGlz cGxheS5jCmluZGV4IGM4MzVhYmUuLjQ0OGIyMTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2Rpc3BsYXkuYwpAQCAtMzQxLDM4ICszNDEsMjIgQEAgc3RhdGljIGNvbnN0 IGNoYXIgKmVuY29kZXJfbmFtZXNbMzhdID0gewogCSJJTlRFUk5BTF9UTURTMiIsCiAJIklOVEVS TkFMX0RBQzEiLAogCSJJTlRFUk5BTF9EQUMyIiwKLQkiSU5URVJOQUxfU0RWT0EiLAotCSJJTlRF Uk5BTF9TRFZPQiIsCi0JIlNJMTcwQiIsCi0JIkNINzMwMyIsCi0JIkNINzMwMSIsCi0JIklOVEVS TkFMX0RWTzEiLAotCSJFWFRFUk5BTF9TRFZPQSIsCi0JIkVYVEVSTkFMX1NEVk9CIiwKLQkiVElU RlA1MTMiLAogCSJJTlRFUk5BTF9MVlRNMSIsCi0JIlZUMTYyMyIsCi0JIkhETUlfU0kxOTMwIiwK LQkiSERNSV9JTlRFUk5BTCIsCisJIklOVEVSTkFMX0hETUkiLAogCSJJTlRFUk5BTF9LTERTQ1Bf VE1EUzEiLAotCSJJTlRFUk5BTF9LTERTQ1BfRFZPMSIsCiAJIklOVEVSTkFMX0tMRFNDUF9EQUMx IiwKIAkiSU5URVJOQUxfS0xEU0NQX0RBQzIiLAotCSJTSTE3OCIsCiAJIk1WUFVfRlBHQSIsCiAJ IklOVEVSTkFMX0RESSIsCi0JIlZUMTYyNSIsCi0JIkhETUlfU0kxOTMyIiwKLQkiRFBfQU45ODAx IiwKLQkiRFBfRFA1MDEiLAogCSJJTlRFUk5BTF9VTklQSFkiLAogCSJJTlRFUk5BTF9LTERTQ1Bf TFZUTUEiLAogCSJJTlRFUk5BTF9VTklQSFkxIiwKIAkiSU5URVJOQUxfVU5JUEhZMiIsCiAJIk5V VE1FRyIsCiAJIlRSQVZJUyIsCi0JIklOVEVSTkFMX1ZDRSIsCisJIklOVEVSTkFMX1dJUkVMRVNT IiwKIAkiSU5URVJOQUxfVU5JUEhZMyIsCisJIklOVEVSTkFMX1ZJUlRVQUwiLAogfTsKIAogc3Rh dGljIGNvbnN0IGNoYXIgKmhwZF9uYW1lc1s2XSA9IHsKQEAgLTQyOSwzMSArNDEzLDMzIEBAIHZv aWQgYW1kZ3B1X3ByaW50X2Rpc3BsYXlfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJ fQogCQlEUk1fSU5GTygiICBFbmNvZGVyczpcbiIpOwogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGVu Y29kZXIsICZkZXYtPm1vZGVfY29uZmlnLmVuY29kZXJfbGlzdCwgaGVhZCkgeworCQkJZW51bSBl bmNvZGVyX2lkIGVuY19pZDsKIAkJCWFtZGdwdV9lbmNvZGVyID0gdG9fYW1kZ3B1X2VuY29kZXIo ZW5jb2Rlcik7CiAJCQlkZXZpY2VzID0gYW1kZ3B1X2VuY29kZXItPmRldmljZXMgJiBhbWRncHVf Y29ubmVjdG9yLT5kZXZpY2VzOworCQkJZW5jX2lkID0gZGlzcGxheV9ncmFwaGljc19vYmplY3Rf aWRfZ2V0X2VuY29kZXJfaWQoYW1kZ3B1X2VuY29kZXItPmVuY29kZXJfb2JqZWN0X2lkKTsKIAkJ CWlmIChkZXZpY2VzKSB7CiAJCQkJaWYgKGRldmljZXMgJiBBVE9NX0RFVklDRV9DUlQxX1NVUFBP UlQpCi0JCQkJCURSTV9JTkZPKCIgICAgQ1JUMTogJXNcbiIsIGVuY29kZXJfbmFtZXNbYW1kZ3B1 X2VuY29kZXItPmVuY29kZXJfaWRdKTsKKwkJCQkJRFJNX0lORk8oIiAgICBDUlQxOiAlc1xuIiwg ZW5jb2Rlcl9uYW1lc1tlbmNfaWRdKTsKIAkJCQlpZiAoZGV2aWNlcyAmIEFUT01fREVWSUNFX0NS VDJfU1VQUE9SVCkKLQkJCQkJRFJNX0lORk8oIiAgICBDUlQyOiAlc1xuIiwgZW5jb2Rlcl9uYW1l c1thbWRncHVfZW5jb2Rlci0+ZW5jb2Rlcl9pZF0pOworCQkJCQlEUk1fSU5GTygiICAgIENSVDI6 ICVzXG4iLCBlbmNvZGVyX25hbWVzW2VuY19pZF0pOwogCQkJCWlmIChkZXZpY2VzICYgQVRPTV9E RVZJQ0VfTENEMV9TVVBQT1JUKQotCQkJCQlEUk1fSU5GTygiICAgIExDRDE6ICVzXG4iLCBlbmNv ZGVyX25hbWVzW2FtZGdwdV9lbmNvZGVyLT5lbmNvZGVyX2lkXSk7CisJCQkJCURSTV9JTkZPKCIg ICAgTENEMTogJXNcbiIsIGVuY29kZXJfbmFtZXNbZW5jX2lkXSk7CiAJCQkJaWYgKGRldmljZXMg JiBBVE9NX0RFVklDRV9ERlAxX1NVUFBPUlQpCi0JCQkJCURSTV9JTkZPKCIgICAgREZQMTogJXNc biIsIGVuY29kZXJfbmFtZXNbYW1kZ3B1X2VuY29kZXItPmVuY29kZXJfaWRdKTsKKwkJCQkJRFJN X0lORk8oIiAgICBERlAxOiAlc1xuIiwgZW5jb2Rlcl9uYW1lc1tlbmNfaWRdKTsKIAkJCQlpZiAo ZGV2aWNlcyAmIEFUT01fREVWSUNFX0RGUDJfU1VQUE9SVCkKLQkJCQkJRFJNX0lORk8oIiAgICBE RlAyOiAlc1xuIiwgZW5jb2Rlcl9uYW1lc1thbWRncHVfZW5jb2Rlci0+ZW5jb2Rlcl9pZF0pOwor CQkJCQlEUk1fSU5GTygiICAgIERGUDI6ICVzXG4iLCBlbmNvZGVyX25hbWVzW2VuY19pZF0pOwog CQkJCWlmIChkZXZpY2VzICYgQVRPTV9ERVZJQ0VfREZQM19TVVBQT1JUKQotCQkJCQlEUk1fSU5G TygiICAgIERGUDM6ICVzXG4iLCBlbmNvZGVyX25hbWVzW2FtZGdwdV9lbmNvZGVyLT5lbmNvZGVy X2lkXSk7CisJCQkJCURSTV9JTkZPKCIgICAgREZQMzogJXNcbiIsIGVuY29kZXJfbmFtZXNbZW5j X2lkXSk7CiAJCQkJaWYgKGRldmljZXMgJiBBVE9NX0RFVklDRV9ERlA0X1NVUFBPUlQpCi0JCQkJ CURSTV9JTkZPKCIgICAgREZQNDogJXNcbiIsIGVuY29kZXJfbmFtZXNbYW1kZ3B1X2VuY29kZXIt PmVuY29kZXJfaWRdKTsKKwkJCQkJRFJNX0lORk8oIiAgICBERlA0OiAlc1xuIiwgZW5jb2Rlcl9u YW1lc1tlbmNfaWRdKTsKIAkJCQlpZiAoZGV2aWNlcyAmIEFUT01fREVWSUNFX0RGUDVfU1VQUE9S VCkKLQkJCQkJRFJNX0lORk8oIiAgICBERlA1OiAlc1xuIiwgZW5jb2Rlcl9uYW1lc1thbWRncHVf ZW5jb2Rlci0+ZW5jb2Rlcl9pZF0pOworCQkJCQlEUk1fSU5GTygiICAgIERGUDU6ICVzXG4iLCBl bmNvZGVyX25hbWVzW2VuY19pZF0pOwogCQkJCWlmIChkZXZpY2VzICYgQVRPTV9ERVZJQ0VfREZQ Nl9TVVBQT1JUKQotCQkJCQlEUk1fSU5GTygiICAgIERGUDY6ICVzXG4iLCBlbmNvZGVyX25hbWVz W2FtZGdwdV9lbmNvZGVyLT5lbmNvZGVyX2lkXSk7CisJCQkJCURSTV9JTkZPKCIgICAgREZQNjog JXNcbiIsIGVuY29kZXJfbmFtZXNbZW5jX2lkXSk7CiAJCQkJaWYgKGRldmljZXMgJiBBVE9NX0RF VklDRV9UVjFfU1VQUE9SVCkKLQkJCQkJRFJNX0lORk8oIiAgICBUVjE6ICVzXG4iLCBlbmNvZGVy X25hbWVzW2FtZGdwdV9lbmNvZGVyLT5lbmNvZGVyX2lkXSk7CisJCQkJCURSTV9JTkZPKCIgICAg VFYxOiAlc1xuIiwgZW5jb2Rlcl9uYW1lc1tlbmNfaWRdKTsKIAkJCQlpZiAoZGV2aWNlcyAmIEFU T01fREVWSUNFX0NWX1NVUFBPUlQpCi0JCQkJCURSTV9JTkZPKCIgICAgQ1Y6ICVzXG4iLCBlbmNv ZGVyX25hbWVzW2FtZGdwdV9lbmNvZGVyLT5lbmNvZGVyX2lkXSk7CisJCQkJCURSTV9JTkZPKCIg ICAgQ1Y6ICVzXG4iLCBlbmNvZGVyX25hbWVzW2VuY19pZF0pOwogCQkJfQogCQl9CiAJCWkrKzsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9lbmNvZGVycy5j IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2VuY29kZXJzLmMKaW5kZXggNTc0 ZTljYi4uZjUxZTBlZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X2VuY29kZXJzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Vu Y29kZXJzLmMKQEAgLTEzMiwxNiArMTMyLDE2IEBAIHUxNiBhbWRncHVfZW5jb2Rlcl9nZXRfZHBf YnJpZGdlX2VuY29kZXJfaWQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogCiAJaWYgKG90 aGVyX2VuY29kZXIpIHsKIAkJc3RydWN0IGFtZGdwdV9lbmNvZGVyICphbWRncHVfZW5jb2RlciA9 IHRvX2FtZGdwdV9lbmNvZGVyKG90aGVyX2VuY29kZXIpOwotCi0JCXN3aXRjaCAoYW1kZ3B1X2Vu Y29kZXItPmVuY29kZXJfaWQpIHsKLQkJY2FzZSBFTkNPREVSX09CSkVDVF9JRF9UUkFWSVM6Ci0J CWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURfTlVUTUVHOgotCQkJcmV0dXJuIGFtZGdwdV9lbmNvZGVy LT5lbmNvZGVyX2lkOworCQl1aW50OF90IGVuY19pZCA9IGRpc3BsYXlfZ3JhcGhpY3Nfb2JqZWN0 X2lkX2dldF9lbmNvZGVyX2lkKGFtZGdwdV9lbmNvZGVyLT5lbmNvZGVyX29iamVjdF9pZCk7CisJ CXN3aXRjaCAoZW5jX2lkKSB7CisJCWNhc2UgRU5DT0RFUl9JRF9FWFRFUk5BTF9UUkFWSVM6CisJ CWNhc2UgRU5DT0RFUl9JRF9FWFRFUk5BTF9OVVRNRUc6CisJCQlyZXR1cm4gZW5jX2lkOwogCQlk ZWZhdWx0OgotCQkJcmV0dXJuIEVOQ09ERVJfT0JKRUNUX0lEX05PTkU7CisJCQlyZXR1cm4gRU5D T0RFUl9JRF9VTktOT1dOOwogCQl9CiAJfQotCXJldHVybiBFTkNPREVSX09CSkVDVF9JRF9OT05F OworCXJldHVybiBFTkNPREVSX0lEX1VOS05PV047CiB9CiAKIHZvaWQgYW1kZ3B1X3BhbmVsX21v ZGVfZml4dXAoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dycGhfb2JqZWN0X2lkX2hlbHBlcnMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9ncnBoX29iamVjdF9pZF9oZWxwZXJzLmMK aW5kZXggYzkxNmQ5My4uMTIyZGZkYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2dycGhfb2JqZWN0X2lkX2hlbHBlcnMuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfZ3JwaF9vYmplY3RfaWRfaGVscGVycy5jCkBAIC04NSw2ICs4 NSw3NyBAQCBzdGF0aWMgZW51bSBjb25uZWN0b3JfaWQgY29ubmVjdG9yX2lkX2Zyb21fYmlvc19v YmplY3RfaWQodWludDMyX3QgYmlvc19vYmplY3RfaQogCXJldHVybiBpZDsKIH0KIAorc3RhdGlj IGVudW0gZW5jb2Rlcl9pZCBlbmNvZGVyX2lkX2Zyb21fYmlvc19vYmplY3RfaWQodWludDMyX3Qg Ymlvc19vYmplY3RfaWQpCit7CisJdWludDMyX3QgYmlvc19lbmNvZGVyX2lkID0gZ3B1X2lkX2Zy b21fYmlvc19vYmplY3RfaWQoYmlvc19vYmplY3RfaWQpOworCWVudW0gZW5jb2Rlcl9pZCBpZDsK KworCXN3aXRjaCAoYmlvc19lbmNvZGVyX2lkKSB7CisJY2FzZSBFTkNPREVSX09CSkVDVF9JRF9J TlRFUk5BTF9MVkRTOgorCQlpZCA9IEVOQ09ERVJfSURfSU5URVJOQUxfTFZEUzsKKwkJYnJlYWs7 CisJY2FzZSBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9UTURTMToKKwkJaWQgPSBFTkNPREVS X0lEX0lOVEVSTkFMX1RNRFMxOworCQlicmVhazsKKwljYXNlIEVOQ09ERVJfT0JKRUNUX0lEX0lO VEVSTkFMX1RNRFMyOgorCQlpZCA9IEVOQ09ERVJfSURfSU5URVJOQUxfVE1EUzI7CisJCWJyZWFr OworCWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURfSU5URVJOQUxfREFDMToKKwkJaWQgPSBFTkNPREVS X0lEX0lOVEVSTkFMX0RBQzE7CisJCWJyZWFrOworCWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURfSU5U RVJOQUxfREFDMjoKKwkJaWQgPSBFTkNPREVSX0lEX0lOVEVSTkFMX0RBQzI7CisJCWJyZWFrOwor CWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURfSU5URVJOQUxfTFZUTTE6CisJCWlkID0gRU5DT0RFUl9J RF9JTlRFUk5BTF9MVlRNMTsKKwkJYnJlYWs7CisJY2FzZSBFTkNPREVSX09CSkVDVF9JRF9IRE1J X0lOVEVSTkFMOgorCQlpZCA9IEVOQ09ERVJfSURfSU5URVJOQUxfSERNSTsKKwkJYnJlYWs7CisJ Y2FzZSBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9LTERTQ1BfVE1EUzE6CisJCWlkID0gRU5D T0RFUl9JRF9JTlRFUk5BTF9LTERTQ1BfVE1EUzE7CisJCWJyZWFrOworCWNhc2UgRU5DT0RFUl9P QkpFQ1RfSURfSU5URVJOQUxfS0xEU0NQX0RBQzE6CisJCWlkID0gRU5DT0RFUl9JRF9JTlRFUk5B TF9LTERTQ1BfREFDMTsKKwkJYnJlYWs7CisJY2FzZSBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5B TF9LTERTQ1BfREFDMjoKKwkJaWQgPSBFTkNPREVSX0lEX0lOVEVSTkFMX0tMRFNDUF9EQUMyOwor CQlicmVhazsKKwljYXNlIEVOQ09ERVJfT0JKRUNUX0lEX01WUFVfRlBHQToKKwkJaWQgPSBFTkNP REVSX0lEX0VYVEVSTkFMX01WUFVfRlBHQTsKKwkJYnJlYWs7CisJY2FzZSBFTkNPREVSX09CSkVD VF9JRF9JTlRFUk5BTF9EREk6CisJCWlkID0gRU5DT0RFUl9JRF9JTlRFUk5BTF9EREk7CisJCWJy ZWFrOworCWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURfSU5URVJOQUxfVU5JUEhZOgorCQlpZCA9IEVO Q09ERVJfSURfSU5URVJOQUxfVU5JUEhZOworCQlicmVhazsKKwljYXNlIEVOQ09ERVJfT0JKRUNU X0lEX0lOVEVSTkFMX0tMRFNDUF9MVlRNQToKKwkJaWQgPSBFTkNPREVSX0lEX0lOVEVSTkFMX0tM RFNDUF9MVlRNQTsKKwkJYnJlYWs7CisJY2FzZSBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9V TklQSFkxOgorCQlpZCA9IEVOQ09ERVJfSURfSU5URVJOQUxfVU5JUEhZMTsKKwkJYnJlYWs7CisJ Y2FzZSBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9VTklQSFkyOgorCQlpZCA9IEVOQ09ERVJf SURfSU5URVJOQUxfVU5JUEhZMjsKKwkJYnJlYWs7CisJY2FzZSBFTkNPREVSX09CSkVDVF9JRF9B TE1PTkQ6IC8qIEVOQ09ERVJfT0JKRUNUX0lEX05VVE1FRyAqLworCQlpZCA9IEVOQ09ERVJfSURf RVhURVJOQUxfTlVUTUVHOworCQlicmVhazsKKwljYXNlIEVOQ09ERVJfT0JKRUNUX0lEX1RSQVZJ UzoKKwkJaWQgPSBFTkNPREVSX0lEX0VYVEVSTkFMX1RSQVZJUzsKKwkJYnJlYWs7CisJY2FzZSBF TkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9VTklQSFkzOgorCQlpZCA9IEVOQ09ERVJfSURfSU5U RVJOQUxfVU5JUEhZMzsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJaWQgPSBFTkNPREVSX0lEX1VO S05PV047CisJCWJyZWFrOworCX0KKworCXJldHVybiBpZDsKK30KKwogc3RhdGljIGVudW0gb2Jq ZWN0X2VudW1faWQgZW51bV9pZF9mcm9tX2Jpb3Nfb2JqZWN0X2lkKHVpbnQzMl90IGJpb3Nfb2Jq ZWN0X2lkKQogewogCXVpbnQzMl90IGJpb3NfZW51bV9pZCA9CkBAIC0xNTcsNiArMjI4LDggQEAg c3RhdGljIHVpbnQzMl90IGlkX2Zyb21fYmlvc19vYmplY3RfaWQoZW51bSBvYmplY3RfdHlwZSB0 eXBlLAogCXN3aXRjaCAodHlwZSkgewogCWNhc2UgT0JKRUNUX1RZUEVfQ09OTkVDVE9SOgogCQly ZXR1cm4gKHVpbnQzMl90KWNvbm5lY3Rvcl9pZF9mcm9tX2Jpb3Nfb2JqZWN0X2lkKGJpb3Nfb2Jq ZWN0X2lkKTsKKwljYXNlIE9CSkVDVF9UWVBFX0VOQ09ERVI6CisJCXJldHVybiAodWludDMyX3Qp ZW5jb2Rlcl9pZF9mcm9tX2Jpb3Nfb2JqZWN0X2lkKGJpb3Nfb2JqZWN0X2lkKTsKIAlkZWZhdWx0 OgogCQlyZXR1cm4gMDsKIAl9CkBAIC0xODEsMyArMjU0LDU5IEBAIHN0cnVjdCBncmFwaGljc19v YmplY3RfaWQgYW1kZ3B1X29iamVjdF9pZF9mcm9tX2Jpb3Nfb2JqZWN0X2lkKHVpbnQzMl90IGJp b3Nfb2JqCiAKIAlyZXR1cm4gZ29faWQ7CiB9CisKK3VpbnQ4X3QgYW1kZ3B1X2VuY29kZXJfaWRf dG9fYXRvbShlbnVtIGVuY29kZXJfaWQgaWQpCit7CisJc3dpdGNoIChpZCkgeworCWNhc2UgRU5D T0RFUl9JRF9JTlRFUk5BTF9MVkRTOgorCQlyZXR1cm4gRU5DT0RFUl9PQkpFQ1RfSURfSU5URVJO QUxfTFZEUzsKKwljYXNlIEVOQ09ERVJfSURfSU5URVJOQUxfVE1EUzE6CisJCXJldHVybiBFTkNP REVSX09CSkVDVF9JRF9JTlRFUk5BTF9UTURTMTsKKwljYXNlIEVOQ09ERVJfSURfSU5URVJOQUxf VE1EUzI6CisJCXJldHVybiBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9UTURTMjsKKwljYXNl IEVOQ09ERVJfSURfSU5URVJOQUxfREFDMToKKwkJcmV0dXJuIEVOQ09ERVJfT0JKRUNUX0lEX0lO VEVSTkFMX0RBQzE7CisJY2FzZSBFTkNPREVSX0lEX0lOVEVSTkFMX0RBQzI6CisJCXJldHVybiBF TkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9EQUMyOworCWNhc2UgRU5DT0RFUl9JRF9JTlRFUk5B TF9MVlRNMToKKwkJcmV0dXJuIEVOQ09ERVJfT0JKRUNUX0lEX0lOVEVSTkFMX0xWVE0xOworCWNh c2UgRU5DT0RFUl9JRF9JTlRFUk5BTF9IRE1JOgorCQlyZXR1cm4gRU5DT0RFUl9PQkpFQ1RfSURf SERNSV9JTlRFUk5BTDsKKwljYXNlIEVOQ09ERVJfSURfRVhURVJOQUxfVFJBVklTOgorCQlyZXR1 cm4gRU5DT0RFUl9PQkpFQ1RfSURfVFJBVklTOworCWNhc2UgRU5DT0RFUl9JRF9FWFRFUk5BTF9O VVRNRUc6CisJCXJldHVybiBFTkNPREVSX09CSkVDVF9JRF9OVVRNRUc7CisJY2FzZSBFTkNPREVS X0lEX0lOVEVSTkFMX0tMRFNDUF9UTURTMToKKwkJcmV0dXJuIEVOQ09ERVJfT0JKRUNUX0lEX0lO VEVSTkFMX0tMRFNDUF9UTURTMTsKKwljYXNlIEVOQ09ERVJfSURfSU5URVJOQUxfS0xEU0NQX0RB QzE6CisJCXJldHVybiBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9LTERTQ1BfREFDMTsKKwlj YXNlIEVOQ09ERVJfSURfSU5URVJOQUxfS0xEU0NQX0RBQzI6CisJCXJldHVybiBFTkNPREVSX09C SkVDVF9JRF9JTlRFUk5BTF9LTERTQ1BfREFDMjsKKwljYXNlIEVOQ09ERVJfSURfRVhURVJOQUxf TVZQVV9GUEdBOgorCQlyZXR1cm4gRU5DT0RFUl9PQkpFQ1RfSURfTVZQVV9GUEdBOworCWNhc2Ug RU5DT0RFUl9JRF9JTlRFUk5BTF9EREk6CisJCXJldHVybiBFTkNPREVSX09CSkVDVF9JRF9JTlRF Uk5BTF9EREk7CisJY2FzZSBFTkNPREVSX0lEX0lOVEVSTkFMX1VOSVBIWToKKwkJcmV0dXJuIEVO Q09ERVJfT0JKRUNUX0lEX0lOVEVSTkFMX1VOSVBIWTsKKwljYXNlIEVOQ09ERVJfSURfSU5URVJO QUxfS0xEU0NQX0xWVE1BOgorCQlyZXR1cm4gRU5DT0RFUl9PQkpFQ1RfSURfSU5URVJOQUxfS0xE U0NQX0xWVE1BOworCWNhc2UgRU5DT0RFUl9JRF9JTlRFUk5BTF9VTklQSFkxOgorCQlyZXR1cm4g RU5DT0RFUl9PQkpFQ1RfSURfSU5URVJOQUxfVU5JUEhZMTsKKwljYXNlIEVOQ09ERVJfSURfSU5U RVJOQUxfVU5JUEhZMjoKKwkJcmV0dXJuIEVOQ09ERVJfT0JKRUNUX0lEX0lOVEVSTkFMX1VOSVBI WTI7CisJY2FzZSBFTkNPREVSX0lEX0lOVEVSTkFMX1VOSVBIWTM6CisJCXJldHVybiBFTkNPREVS X09CSkVDVF9JRF9JTlRFUk5BTF9VTklQSFkzOworCWNhc2UgRU5DT0RFUl9JRF9JTlRFUk5BTF9X SVJFTEVTUzoKKwkJcmV0dXJuIEVOQ09ERVJfT0JKRUNUX0lEX0lOVEVSTkFMX1ZDRTsKKwljYXNl IEVOQ09ERVJfSURfVU5LTk9XTjoKKwkJcmV0dXJuIEVOQ09ERVJfT0JKRUNUX0lEX05PTkU7CisJ ZGVmYXVsdDoKKwkJcmV0dXJuIEVOQ09ERVJfT0JKRUNUX0lEX05PTkU7CisJfQorfQorCit1aW50 OF90IGFtZGdwdV9lbmNvZGVyX29iamVjdF90b19hdG9tKHN0cnVjdCBncmFwaGljc19vYmplY3Rf aWQgb2JqZWN0X2lkKQoreworCWVudW0gZW5jb2Rlcl9pZCBlbmNfaWQgPSBkaXNwbGF5X2dyYXBo aWNzX29iamVjdF9pZF9nZXRfZW5jb2Rlcl9pZChvYmplY3RfaWQpOworCXJldHVybiBhbWRncHVf ZW5jb2Rlcl9pZF90b19hdG9tKGVuY19pZCk7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfbW9kZS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X21vZGUuaAppbmRleCAzMzI4NGM4Li45NmUxZGU4IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW9kZS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9tb2RlLmgKQEAgLTI5MCw3ICsyOTAsNyBAQCBzdHJ1Y3QgYW1kZ3B1 X2Rpc3BsYXlfZnVuY3MgewogCQkJCQl1MzIgKnZibCwgdTMyICpwb3NpdGlvbik7CiAJLyogZGlz cGxheSB0b3BvbG9neSBzZXR1cCAqLwogCXZvaWQgKCphZGRfZW5jb2Rlcikoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsCi0JCQkgICAgdWludDMyX3QgZW5jb2Rlcl9lbnVtLAorCQkJICAgIHN0 cnVjdCBncmFwaGljc19vYmplY3RfaWQgZW5jb2Rlcl9pZCwKIAkJCSAgICB1aW50MzJfdCBzdXBw b3J0ZWRfZGV2aWNlLAogCQkJICAgIHUxNiBjYXBzKTsKIAl2b2lkICgqYWRkX2Nvbm5lY3Rvciko c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC00MzIsOCArNDMyLDcgQEAgc3RydWN0IGFt ZGdwdV9lbmNvZGVyX2F0b21fZGlnIHsKIAogc3RydWN0IGFtZGdwdV9lbmNvZGVyIHsKIAlzdHJ1 Y3QgZHJtX2VuY29kZXIgYmFzZTsKLQl1aW50MzJfdCBlbmNvZGVyX2VudW07Ci0JdWludDMyX3Qg ZW5jb2Rlcl9pZDsKKwlzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0X2lkIGVuY29kZXJfb2JqZWN0X2lk OwogCXVpbnQzMl90IGRldmljZXM7CiAJdWludDMyX3QgYWN0aXZlX2RldmljZTsKIAl1aW50MzJf dCBmbGFnczsKQEAgLTU5NSw0ICs1OTQsNiBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGRybV9tb2Rl X2NvbmZpZ19mdW5jcyBhbWRncHVfbW9kZV9mdW5jczsKIAogLyogYW1kZ3B1X2dycGhfb2JqZWN0 X2lkX2hlbHBlcnMuYyAqLwogc3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCBhbWRncHVfb2JqZWN0 X2lkX2Zyb21fYmlvc19vYmplY3RfaWQodWludDMyX3QgYmlvc19vYmplY3RfaWQpOwordWludDhf dCBhbWRncHVfZW5jb2Rlcl9vYmplY3RfdG9fYXRvbShzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0X2lk IG9iamVjdF9pZCk7Cit1aW50OF90IGFtZGdwdV9lbmNvZGVyX2lkX3RvX2F0b20oZW51bSBlbmNv ZGVyX2lkIGlkKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYXRvbWJpb3NfY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYXRvbWJpb3Nf Y3J0Yy5jCmluZGV4IDA3MmE3MjkuLjViOGQzYzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2F0b21iaW9zX2NydGMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hdG9tYmlvc19jcnRjLmMKQEAgLTMxOSwxMSArMzE5LDExIEBAIHN0YXRpYyB1MzIgYW1k Z3B1X2F0b21iaW9zX2NydGNfYWRqdXN0X3BsbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJdW5p b24gYWRqdXN0X3BpeGVsX2Nsb2NrIGFyZ3M7CiAJdTggZnJldiwgY3JldjsKIAlpbnQgaW5kZXg7 Ci0KKwl1aW50OF90IGF0b21fZW5jX2lkOwogCWFtZGdwdV9jcnRjLT5wbGxfZmxhZ3MgPSBBTURH UFVfUExMX1VTRV9GUkFDX0ZCX0RJVjsKIAogCWlmICgoYW1kZ3B1X2VuY29kZXItPmRldmljZXMg JiAoQVRPTV9ERVZJQ0VfTENEX1NVUFBPUlQgfCBBVE9NX0RFVklDRV9ERlBfU1VQUE9SVCkpIHx8 Ci0JICAgIChhbWRncHVfZW5jb2Rlcl9nZXRfZHBfYnJpZGdlX2VuY29kZXJfaWQoZW5jb2Rlcikg IT0gRU5DT0RFUl9PQkpFQ1RfSURfTk9ORSkpIHsKKwkgICAgKGFtZGdwdV9lbmNvZGVyX2dldF9k cF9icmlkZ2VfZW5jb2Rlcl9pZChlbmNvZGVyKSAhPSBFTkNPREVSX0lEX1VOS05PV04pKSB7CiAJ CWlmIChjb25uZWN0b3IpIHsKIAkJCXN0cnVjdCBhbWRncHVfY29ubmVjdG9yICphbWRncHVfY29u bmVjdG9yID0gdG9fYW1kZ3B1X2Nvbm5lY3Rvcihjb25uZWN0b3IpOwogCQkJc3RydWN0IGFtZGdw dV9jb25uZWN0b3JfYXRvbV9kaWcgKmRpZ19jb25uZWN0b3IgPQpAQCAtMzY4LDYgKzM2OCw3IEBA IHN0YXRpYyB1MzIgYW1kZ3B1X2F0b21iaW9zX2NydGNfYWRqdXN0X3BsbChzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsCiAJCX0KIAl9CiAKKwlhdG9tX2VuY19pZCA9IGFtZGdwdV9lbmNvZGVyX29iamVj dF90b19hdG9tKGFtZGdwdV9lbmNvZGVyLT5lbmNvZGVyX29iamVjdF9pZCk7CiAJLyogRENFMysg aGFzIGFuIEFkanVzdERpc3BsYXlQbGwgdGhhdCB3aWxsIGFkanVzdCB0aGUgcGl4ZWwgY2xvY2sK IAkgKiBhY2NvcmRpbmdseSBiYXNlZCBvbiB0aGUgZW5jb2Rlci90cmFuc21pdHRlciB0byB3b3Jr IGFyb3VuZAogCSAqIHNwZWNpYWwgaHcgcmVxdWlyZW1lbnRzLgpAQCAtMzg1LDcgKzM4Niw3IEBA IHN0YXRpYyB1MzIgYW1kZ3B1X2F0b21iaW9zX2NydGNfYWRqdXN0X3BsbChzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsCiAJCWNhc2UgMToKIAkJY2FzZSAyOgogCQkJYXJncy52MS51c1BpeGVsQ2xvY2sg PSBjcHVfdG9fbGUxNihjbG9jayAvIDEwKTsKLQkJCWFyZ3MudjEudWNUcmFuc21pdHRlcklEID0g YW1kZ3B1X2VuY29kZXItPmVuY29kZXJfaWQ7CisJCQlhcmdzLnYxLnVjVHJhbnNtaXR0ZXJJRCA9 IGF0b21fZW5jX2lkOwogCQkJYXJncy52MS51Y0VuY29kZU1vZGUgPSBlbmNvZGVyX21vZGU7CiAJ CQlpZiAoYW1kZ3B1X2NydGMtPnNzX2VuYWJsZWQgJiYgYW1kZ3B1X2NydGMtPnNzLnBlcmNlbnRh Z2UpCiAJCQkJYXJncy52MS51Y0NvbmZpZyB8PQpAQCAtMzk3LDcgKzM5OCw3IEBAIHN0YXRpYyB1 MzIgYW1kZ3B1X2F0b21iaW9zX2NydGNfYWRqdXN0X3BsbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMs CiAJCQlicmVhazsKIAkJY2FzZSAzOgogCQkJYXJncy52My5zSW5wdXQudXNQaXhlbENsb2NrID0g Y3B1X3RvX2xlMTYoY2xvY2sgLyAxMCk7Ci0JCQlhcmdzLnYzLnNJbnB1dC51Y1RyYW5zbWl0dGVy SUQgPSBhbWRncHVfZW5jb2Rlci0+ZW5jb2Rlcl9pZDsKKwkJCWFyZ3MudjMuc0lucHV0LnVjVHJh bnNtaXR0ZXJJRCA9IGF0b21fZW5jX2lkOwogCQkJYXJncy52My5zSW5wdXQudWNFbmNvZGVNb2Rl ID0gZW5jb2Rlcl9tb2RlOwogCQkJYXJncy52My5zSW5wdXQudWNEaXNwUGxsQ29uZmlnID0gMDsK IAkJCWlmIChhbWRncHVfY3J0Yy0+c3NfZW5hYmxlZCAmJiBhbWRncHVfY3J0Yy0+c3MucGVyY2Vu dGFnZSkKQEAgLTQxOCw5ICs0MTksOSBAQCBzdGF0aWMgdTMyIGFtZGdwdV9hdG9tYmlvc19jcnRj X2FkanVzdF9wbGwoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkJCQkJRElTUFBMTF9DT05GSUdf RFVBTF9MSU5LOwogCQkJfQogCQkJaWYgKGFtZGdwdV9lbmNvZGVyX2dldF9kcF9icmlkZ2VfZW5j b2Rlcl9pZChlbmNvZGVyKSAhPQotCQkJICAgIEVOQ09ERVJfT0JKRUNUX0lEX05PTkUpCisJCQkg ICAgRU5DT0RFUl9JRF9VTktOT1dOKQogCQkJCWFyZ3MudjMuc0lucHV0LnVjRXh0VHJhbnNtaXR0 ZXJJRCA9Ci0JCQkJCWFtZGdwdV9lbmNvZGVyX2dldF9kcF9icmlkZ2VfZW5jb2Rlcl9pZChlbmNv ZGVyKTsKKwkJCQkgIGFtZGdwdV9lbmNvZGVyX2lkX3RvX2F0b20oYW1kZ3B1X2VuY29kZXJfZ2V0 X2RwX2JyaWRnZV9lbmNvZGVyX2lkKGVuY29kZXIpKTsKIAkJCWVsc2UKIAkJCQlhcmdzLnYzLnNJ bnB1dC51Y0V4dFRyYW5zbWl0dGVySUQgPSAwOwogCkBAIC01MjMsNyArNTI0LDcgQEAgdm9pZCBh bWRncHVfYXRvbWJpb3NfY3J0Y19wcm9ncmFtX3BsbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJ CQkgICAgICAgdTMyIGNydGNfaWQsCiAJCQkgICAgICAgaW50IHBsbF9pZCwKIAkJCSAgICAgICB1 MzIgZW5jb2Rlcl9tb2RlLAotCQkJICAgICAgIHUzMiBlbmNvZGVyX2lkLAorCQkJICAgICAgIHN0 cnVjdCBncmFwaGljc19vYmplY3RfaWQgZW5jb2Rlcl9vYmplY3RfaWQsCiAJCQkgICAgICAgdTMy IGNsb2NrLAogCQkJICAgICAgIHUzMiByZWZfZGl2LAogCQkJICAgICAgIHUzMiBmYl9kaXYsCkBA IC01MzgsNiArNTM5LDcgQEAgdm9pZCBhbWRncHVfYXRvbWJpb3NfY3J0Y19wcm9ncmFtX3BsbChz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJdTggZnJldiwgY3JldjsKIAlpbnQgaW5kZXggPSBHZXRJ bmRleEludG9NYXN0ZXJUYWJsZShDT01NQU5ELCBTZXRQaXhlbENsb2NrKTsKIAl1bmlvbiBzZXRf cGl4ZWxfY2xvY2sgYXJnczsKKwl1aW50OF90IGF0b21fZW5jX2lkID0gYW1kZ3B1X2VuY29kZXJf b2JqZWN0X3RvX2F0b20oZW5jb2Rlcl9vYmplY3RfaWQpOwogCiAJbWVtc2V0KCZhcmdzLCAwLCBz aXplb2YoYXJncykpOwogCkBAIC01ODMsNyArNTg1LDcgQEAgdm9pZCBhbWRncHVfYXRvbWJpb3Nf Y3J0Y19wcm9ncmFtX3BsbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCQkJYXJncy52My51Y01p c2NJbmZvID0gUElYRUxfQ0xPQ0tfTUlTQ19DUlRDX1NFTF9DUlRDMTsKIAkJCWlmIChzc19lbmFi bGVkICYmIChzcy0+dHlwZSAmIEFUT01fRVhURVJOQUxfU1NfTUFTSykpCiAJCQkJYXJncy52My51 Y01pc2NJbmZvIHw9IFBJWEVMX0NMT0NLX01JU0NfUkVGX0RJVl9TUkM7Ci0JCQlhcmdzLnYzLnVj VHJhbnNtaXR0ZXJJZCA9IGVuY29kZXJfaWQ7CisJCQlhcmdzLnYzLnVjVHJhbnNtaXR0ZXJJZCA9 IGF0b21fZW5jX2lkOwogCQkJYXJncy52My51Y0VuY29kZXJNb2RlID0gZW5jb2Rlcl9tb2RlOwog CQkJYnJlYWs7CiAJCWNhc2UgNToKQEAgLTYxMyw3ICs2MTUsNyBAQCB2b2lkIGFtZGdwdV9hdG9t Ymlvc19jcnRjX3Byb2dyYW1fcGxsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCQkJYnJlYWs7 CiAJCQkJfQogCQkJfQotCQkJYXJncy52NS51Y1RyYW5zbWl0dGVySUQgPSBlbmNvZGVyX2lkOwor CQkJYXJncy52NS51Y1RyYW5zbWl0dGVySUQgPSBhdG9tX2VuY19pZDsKIAkJCWFyZ3MudjUudWNF bmNvZGVyTW9kZSA9IGVuY29kZXJfbW9kZTsKIAkJCWFyZ3MudjUudWNQcGxsID0gcGxsX2lkOwog CQkJYnJlYWs7CkBAIC02NDUsNyArNjQ3LDcgQEAgdm9pZCBhbWRncHVfYXRvbWJpb3NfY3J0Y19w cm9ncmFtX3BsbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCQkJCWJyZWFrOwogCQkJCX0KIAkJ CX0KLQkJCWFyZ3MudjYudWNUcmFuc21pdHRlcklEID0gZW5jb2Rlcl9pZDsKKwkJCWFyZ3MudjYu dWNUcmFuc21pdHRlcklEID0gYXRvbV9lbmNfaWQ7CiAJCQlhcmdzLnY2LnVjRW5jb2Rlck1vZGUg PSBlbmNvZGVyX21vZGU7CiAJCQlhcmdzLnY2LnVjUHBsbCA9IHBsbF9pZDsKIAkJCWJyZWFrOwpA QCAtNjc2LDcgKzY3OCw3IEBAIGludCBhbWRncHVfYXRvbWJpb3NfY3J0Y19wcmVwYXJlX3BsbChz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJYW1kZ3B1X2NydGMtPnNzX2VuYWJsZWQgPSBmYWxzZTsK IAogCWlmICgoYW1kZ3B1X2VuY29kZXItPmFjdGl2ZV9kZXZpY2UgJiAoQVRPTV9ERVZJQ0VfTENE X1NVUFBPUlQgfCBBVE9NX0RFVklDRV9ERlBfU1VQUE9SVCkpIHx8Ci0JICAgIChhbWRncHVfZW5j b2Rlcl9nZXRfZHBfYnJpZGdlX2VuY29kZXJfaWQoYW1kZ3B1X2NydGMtPmVuY29kZXIpICE9IEVO Q09ERVJfT0JKRUNUX0lEX05PTkUpKSB7CisJICAgIChhbWRncHVfZW5jb2Rlcl9nZXRfZHBfYnJp ZGdlX2VuY29kZXJfaWQoYW1kZ3B1X2NydGMtPmVuY29kZXIpICE9IEVOQ09ERVJfSURfVU5LTk9X TikpIHsKIAkJc3RydWN0IGFtZGdwdV9lbmNvZGVyX2F0b21fZGlnICpkaWcgPSBhbWRncHVfZW5j b2Rlci0+ZW5jX3ByaXY7CiAJCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPQogCQkJ YW1kZ3B1X2dldF9jb25uZWN0b3JfZm9yX2VuY29kZXIoYW1kZ3B1X2NydGMtPmVuY29kZXIpOwpA QCAtNzc2LDcgKzc3OCw3IEBAIHZvaWQgYW1kZ3B1X2F0b21iaW9zX2NydGNfc2V0X3BsbChzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlCiAJCQkJIGFtZGdwdV9j cnRjLT5jcnRjX2lkLCAmYW1kZ3B1X2NydGMtPnNzKTsKIAogCWFtZGdwdV9hdG9tYmlvc19jcnRj X3Byb2dyYW1fcGxsKGNydGMsIGFtZGdwdV9jcnRjLT5jcnRjX2lkLCBhbWRncHVfY3J0Yy0+cGxs X2lkLAotCQkJCSAgZW5jb2Rlcl9tb2RlLCBhbWRncHVfZW5jb2Rlci0+ZW5jb2Rlcl9pZCwgY2xv Y2ssCisJCQkJICBlbmNvZGVyX21vZGUsIGFtZGdwdV9lbmNvZGVyLT5lbmNvZGVyX29iamVjdF9p ZCwgY2xvY2ssCiAJCQkJICByZWZfZGl2LCBmYl9kaXYsIGZyYWNfZmJfZGl2LCBwb3N0X2RpdiwK IAkJCQkgIGFtZGdwdV9jcnRjLT5icGMsIGFtZGdwdV9jcnRjLT5zc19lbmFibGVkLCAmYW1kZ3B1 X2NydGMtPnNzKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYXRv bWJpb3NfY3J0Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYXRvbWJpb3NfY3J0Yy5o CmluZGV4IGM2NzA4MzMuLjQ1MjI0NWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2F0b21iaW9zX2NydGMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h dG9tYmlvc19jcnRjLmgKQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBhbWRncHVfYXRvbWJpb3NfY3J0 Y19wcm9ncmFtX3BsbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCQkgICAgICAgdTMyIGNydGNf aWQsCiAJCQkgICAgICAgaW50IHBsbF9pZCwKIAkJCSAgICAgICB1MzIgZW5jb2Rlcl9tb2RlLAot CQkJICAgICAgIHUzMiBlbmNvZGVyX2lkLAorCQkJICAgICAgIHN0cnVjdCBncmFwaGljc19vYmpl Y3RfaWQgZW5jb2Rlcl9vYmplY3RfaWQsCiAJCQkgICAgICAgdTMyIGNsb2NrLAogCQkJICAgICAg IHUzMiByZWZfZGl2LAogCQkJICAgICAgIHUzMiBmYl9kaXYsCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hdG9tYmlvc19kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYXRvbWJpb3NfZHAuYwppbmRleCAyOWQ2OThiLi41Mjk2Yzk5IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hdG9tYmlvc19kcC5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2F0b21iaW9zX2RwLmMKQEAgLTI2Niw3ICsyNjYsNyBAQCBzdGF0aWMg aW50IGFtZGdwdV9hdG9tYmlvc19kcF9nZXRfZHBfbGlua19jb25maWcoc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvcgogCXVuc2lnbmVkIGxhbmVfbnVtLCBpLCBtYXhfcGl4X2Nsb2NrOwog CiAJaWYgKGFtZGdwdV9jb25uZWN0b3JfZW5jb2Rlcl9nZXRfZHBfYnJpZGdlX2VuY29kZXJfaWQo Y29ubmVjdG9yKSA9PQotCSAgICBFTkNPREVSX09CSkVDVF9JRF9OVVRNRUcpIHsKKwkgICAgRU5D T0RFUl9JRF9FWFRFUk5BTF9OVVRNRUcpIHsKIAkJZm9yIChsYW5lX251bSA9IDE7IGxhbmVfbnVt IDw9IG1heF9sYW5lX251bTsgbGFuZV9udW0gPDw9IDEpIHsKIAkJCW1heF9waXhfY2xvY2sgPSAo bGFuZV9udW0gKiAyNzAwMDAgKiA4KSAvIGJwcDsKIAkJCWlmIChtYXhfcGl4X2Nsb2NrID49IHBp eF9jbG9jaykgewpAQCAtMzczLDE0ICszNzMsMTQgQEAgaW50IGFtZGdwdV9hdG9tYmlvc19kcF9n ZXRfcGFuZWxfbW9kZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCiAKIAlkaWdfY29ubmVj dG9yID0gYW1kZ3B1X2Nvbm5lY3Rvci0+Y29uX3ByaXY7CiAKLQlpZiAoZHBfYnJpZGdlICE9IEVO Q09ERVJfT0JKRUNUX0lEX05PTkUpIHsKKwlpZiAoZHBfYnJpZGdlICE9IEVOQ09ERVJfSURfVU5L Tk9XTikgewogCQkvKiBEUCBicmlkZ2UgY2hpcHMgKi8KIAkJaWYgKGRybV9kcF9kcGNkX3JlYWRi KCZhbWRncHVfY29ubmVjdG9yLT5kZGNfYnVzLT5hdXgsCiAJCQkJICAgICAgRFBfRURQX0NPTkZJ R1VSQVRJT05fQ0FQLCAmdG1wKSA9PSAxKSB7CiAJCQlpZiAodG1wICYgMSkKIAkJCQlwYW5lbF9t b2RlID0gRFBfUEFORUxfTU9ERV9JTlRFUk5BTF9EUDJfTU9ERTsKLQkJCWVsc2UgaWYgKChkcF9i cmlkZ2UgPT0gRU5DT0RFUl9PQkpFQ1RfSURfTlVUTUVHKSB8fAotCQkJCSAoZHBfYnJpZGdlID09 IEVOQ09ERVJfT0JKRUNUX0lEX1RSQVZJUykpCisJCQllbHNlIGlmICgoZHBfYnJpZGdlID09IEVO Q09ERVJfSURfRVhURVJOQUxfTlVUTUVHKSB8fAorCQkJCSAoZHBfYnJpZGdlID09IEVOQ09ERVJf SURfRVhURVJOQUxfVFJBVklTKSkKIAkJCQlwYW5lbF9tb2RlID0gRFBfUEFORUxfTU9ERV9JTlRF Uk5BTF9EUDFfTU9ERTsKIAkJCWVsc2UKIAkJCQlwYW5lbF9tb2RlID0gRFBfUEFORUxfTU9ERV9F WFRFUk5BTF9EUF9NT0RFOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YXRvbWJpb3NfZW5jb2RlcnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2F0b21iaW9z X2VuY29kZXJzLmMKaW5kZXggN2VmOTNjNi4uMjhkMzA2YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYXRvbWJpb3NfZW5jb2RlcnMuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hdG9tYmlvc19lbmNvZGVycy5jCkBAIC04OSwxNSArODksMTYgQEAgYW1k Z3B1X2F0b21iaW9zX2VuY29kZXJfc2V0X2JhY2tsaWdodF9sZXZlbChzdHJ1Y3QgYW1kZ3B1X2Vu Y29kZXIgKmFtZGdwdV9lbmNvZGUKIAogCWlmICgoYW1kZ3B1X2VuY29kZXItPmRldmljZXMgJiAo QVRPTV9ERVZJQ0VfTENEX1NVUFBPUlQpKSAmJgogCSAgICBhbWRncHVfZW5jb2Rlci0+ZW5jX3By aXYpIHsKKwkJZW51bSBlbmNvZGVyX2lkIGVuY19pZCA9IGRpc3BsYXlfZ3JhcGhpY3Nfb2JqZWN0 X2lkX2dldF9lbmNvZGVyX2lkKGFtZGdwdV9lbmNvZGVyLT5lbmNvZGVyX29iamVjdF9pZCk7CiAJ CWRpZyA9IGFtZGdwdV9lbmNvZGVyLT5lbmNfcHJpdjsKIAkJZGlnLT5iYWNrbGlnaHRfbGV2ZWwg PSBsZXZlbDsKIAkJYW1kZ3B1X2F0b21iaW9zX2VuY29kZXJfc2V0X2JhY2tsaWdodF9sZXZlbF90 b19yZWcoYWRldiwgZGlnLT5iYWNrbGlnaHRfbGV2ZWwpOwogCi0JCXN3aXRjaCAoYW1kZ3B1X2Vu Y29kZXItPmVuY29kZXJfaWQpIHsKLQkJY2FzZSBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9V TklQSFk6Ci0JCWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURfSU5URVJOQUxfS0xEU0NQX0xWVE1BOgot CQljYXNlIEVOQ09ERVJfT0JKRUNUX0lEX0lOVEVSTkFMX1VOSVBIWTE6Ci0JCWNhc2UgRU5DT0RF Ul9PQkpFQ1RfSURfSU5URVJOQUxfVU5JUEhZMjoKKwkJc3dpdGNoIChlbmNfaWQpIHsKKwkJY2Fz ZSBFTkNPREVSX0lEX0lOVEVSTkFMX1VOSVBIWToKKwkJY2FzZSBFTkNPREVSX0lEX0lOVEVSTkFM X0tMRFNDUF9MVlRNQToKKwkJY2FzZSBFTkNPREVSX0lEX0lOVEVSTkFMX1VOSVBIWTE6CisJCWNh c2UgRU5DT0RFUl9JRF9JTlRFUk5BTF9VTklQSFkyOgogCQkJaWYgKGRpZy0+YmFja2xpZ2h0X2xl dmVsID09IDApCiAJCQkJYW1kZ3B1X2F0b21iaW9zX2VuY29kZXJfc2V0dXBfZGlnX3RyYW5zbWl0 dGVyKGVuY29kZXIsCiAJCQkJCQkJCSAgICAgICBBVE9NX1RSQU5TTUlUVEVSX0FDVElPTl9MQ0Rf QkxPRkYsIDAsIDApOwpAQCAtMjcxLDExICsyNzIsMTIgQEAgdm9pZCBhbWRncHVfYXRvbWJpb3Nf ZW5jb2Rlcl9maW5pX2JhY2tsaWdodChzdHJ1Y3QgYW1kZ3B1X2VuY29kZXIgKmVuY29kZXIpCiBi b29sIGFtZGdwdV9hdG9tYmlvc19lbmNvZGVyX2lzX2RpZ2l0YWwoc3RydWN0IGRybV9lbmNvZGVy ICplbmNvZGVyKQogewogCXN0cnVjdCBhbWRncHVfZW5jb2RlciAqYW1kZ3B1X2VuY29kZXIgPSB0 b19hbWRncHVfZW5jb2RlcihlbmNvZGVyKTsKLQlzd2l0Y2ggKGFtZGdwdV9lbmNvZGVyLT5lbmNv ZGVyX2lkKSB7Ci0JY2FzZSBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9VTklQSFk6Ci0JY2Fz ZSBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9VTklQSFkxOgotCWNhc2UgRU5DT0RFUl9PQkpF Q1RfSURfSU5URVJOQUxfVU5JUEhZMjoKLQljYXNlIEVOQ09ERVJfT0JKRUNUX0lEX0lOVEVSTkFM X1VOSVBIWTM6CisJZW51bSBlbmNvZGVyX2lkIGVuY19pZCA9IGRpc3BsYXlfZ3JhcGhpY3Nfb2Jq ZWN0X2lkX2dldF9lbmNvZGVyX2lkKGFtZGdwdV9lbmNvZGVyLT5lbmNvZGVyX29iamVjdF9pZCk7 CisJc3dpdGNoIChlbmNfaWQpIHsKKwljYXNlIEVOQ09ERVJfSURfSU5URVJOQUxfVU5JUEhZOgor CWNhc2UgRU5DT0RFUl9JRF9JTlRFUk5BTF9VTklQSFkxOgorCWNhc2UgRU5DT0RFUl9JRF9JTlRF Uk5BTF9VTklQSFkyOgorCWNhc2UgRU5DT0RFUl9JRF9JTlRFUk5BTF9VTklQSFkzOgogCQlyZXR1 cm4gdHJ1ZTsKIAlkZWZhdWx0OgogCQlyZXR1cm4gZmFsc2U7CkBAIC0zMDQsNyArMzA2LDcgQEAg Ym9vbCBhbWRncHVfYXRvbWJpb3NfZW5jb2Rlcl9tb2RlX2ZpeHVwKHN0cnVjdCBkcm1fZW5jb2Rl ciAqZW5jb2RlciwKIAkJYW1kZ3B1X3BhbmVsX21vZGVfZml4dXAoZW5jb2RlciwgYWRqdXN0ZWRf bW9kZSk7CiAKIAlpZiAoKGFtZGdwdV9lbmNvZGVyLT5hY3RpdmVfZGV2aWNlICYgKEFUT01fREVW SUNFX0RGUF9TVVBQT1JUIHwgQVRPTV9ERVZJQ0VfTENEX1NVUFBPUlQpKSB8fAotCSAgICAoYW1k Z3B1X2VuY29kZXJfZ2V0X2RwX2JyaWRnZV9lbmNvZGVyX2lkKGVuY29kZXIpICE9IEVOQ09ERVJf T0JKRUNUX0lEX05PTkUpKSB7CisJICAgIChhbWRncHVfZW5jb2Rlcl9nZXRfZHBfYnJpZGdlX2Vu Y29kZXJfaWQoZW5jb2RlcikgIT0gRU5DT0RFUl9JRF9VTktOT1dOKSkgewogCQlzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yID0gYW1kZ3B1X2dldF9jb25uZWN0b3JfZm9yX2VuY29kZXIo ZW5jb2Rlcik7CiAJCWFtZGdwdV9hdG9tYmlvc19kcF9zZXRfbGlua19jb25maWcoY29ubmVjdG9y LCBhZGp1c3RlZF9tb2RlKTsKIAl9CkBAIC0zMjAsMTggKzMyMiwyMCBAQCBhbWRncHVfYXRvbWJp b3NfZW5jb2Rlcl9zZXR1cF9kYWMoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLCBpbnQgYWN0 aW9uKQogCXN0cnVjdCBhbWRncHVfZW5jb2RlciAqYW1kZ3B1X2VuY29kZXIgPSB0b19hbWRncHVf ZW5jb2RlcihlbmNvZGVyKTsKIAlEQUNfRU5DT0RFUl9DT05UUk9MX1BTX0FMTE9DQVRJT04gYXJn czsKIAlpbnQgaW5kZXggPSAwOwotCisJZW51bSBlbmNvZGVyX2lkIGVuY19pZCA9IGRpc3BsYXlf Z3JhcGhpY3Nfb2JqZWN0X2lkX2dldF9lbmNvZGVyX2lkKGFtZGdwdV9lbmNvZGVyLT5lbmNvZGVy X29iamVjdF9pZCk7CiAJbWVtc2V0KCZhcmdzLCAwLCBzaXplb2YoYXJncykpOwogCi0Jc3dpdGNo IChhbWRncHVfZW5jb2Rlci0+ZW5jb2Rlcl9pZCkgewotCWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURf SU5URVJOQUxfREFDMToKLQljYXNlIEVOQ09ERVJfT0JKRUNUX0lEX0lOVEVSTkFMX0tMRFNDUF9E QUMxOgorCXN3aXRjaCAoZW5jX2lkKSB7CisJY2FzZSBFTkNPREVSX0lEX0lOVEVSTkFMX0RBQzE6 CisJY2FzZSBFTkNPREVSX0lEX0lOVEVSTkFMX0tMRFNDUF9EQUMxOgogCQlpbmRleCA9IEdldElu ZGV4SW50b01hc3RlclRhYmxlKENPTU1BTkQsIERBQzFFbmNvZGVyQ29udHJvbCk7CiAJCWJyZWFr OwotCWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURfSU5URVJOQUxfREFDMjoKLQljYXNlIEVOQ09ERVJf T0JKRUNUX0lEX0lOVEVSTkFMX0tMRFNDUF9EQUMyOgorCWNhc2UgRU5DT0RFUl9JRF9JTlRFUk5B TF9EQUMyOgorCWNhc2UgRU5DT0RFUl9JRF9JTlRFUk5BTF9LTERTQ1BfREFDMjoKIAkJaW5kZXgg PSBHZXRJbmRleEludG9NYXN0ZXJUYWJsZShDT01NQU5ELCBEQUMyRW5jb2RlckNvbnRyb2wpOwog CQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm47CiAJfQogCiAJYXJncy51Y0FjdGlvbiA9IGFj dGlvbjsKQEAgLTM3NSw3ICszNzksNyBAQCBpbnQgYW1kZ3B1X2F0b21iaW9zX2VuY29kZXJfZ2V0 X2VuY29kZXJfbW9kZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiAJc3RydWN0IGFtZGdw dV9jb25uZWN0b3JfYXRvbV9kaWcgKmRpZ19jb25uZWN0b3I7CiAKIAkvKiBkcCBicmlkZ2VzIGFy ZSBhbHdheXMgRFAgKi8KLQlpZiAoYW1kZ3B1X2VuY29kZXJfZ2V0X2RwX2JyaWRnZV9lbmNvZGVy X2lkKGVuY29kZXIpICE9IEVOQ09ERVJfT0JKRUNUX0lEX05PTkUpCisJaWYgKGFtZGdwdV9lbmNv ZGVyX2dldF9kcF9icmlkZ2VfZW5jb2Rlcl9pZChlbmNvZGVyKSAhPSBFTkNPREVSX0lEX1VOS05P V04pCiAJCXJldHVybiBBVE9NX0VOQ09ERVJfTU9ERV9EUDsKIAogCWNvbm5lY3RvciA9IGFtZGdw dV9nZXRfY29ubmVjdG9yX2Zvcl9lbmNvZGVyKGVuY29kZXIpOwpAQCAtNTAzLDYgKzUwNyw3IEBA IGFtZGdwdV9hdG9tYmlvc19lbmNvZGVyX3NldHVwX2RpZ19lbmNvZGVyKHN0cnVjdCBkcm1fZW5j b2RlciAqZW5jb2RlciwKIAlpbnQgZHBfY2xvY2sgPSAwOwogCWludCBkcF9sYW5lX2NvdW50ID0g MDsKIAlpbnQgaHBkX2lkID0gQU1ER1BVX0hQRF9OT05FOworCWVudW0gZW5jb2Rlcl9pZCBlbmNf aWQgPSBkaXNwbGF5X2dyYXBoaWNzX29iamVjdF9pZF9nZXRfZW5jb2Rlcl9pZChhbWRncHVfZW5j b2Rlci0+ZW5jb2Rlcl9vYmplY3RfaWQpOwogCiAJaWYgKGNvbm5lY3RvcikgewogCQlzdHJ1Y3Qg YW1kZ3B1X2Nvbm5lY3RvciAqYW1kZ3B1X2Nvbm5lY3RvciA9IHRvX2FtZGdwdV9jb25uZWN0b3Io Y29ubmVjdG9yKTsKQEAgLTU0MywxNyArNTQ4LDE5IEBAIGFtZGdwdV9hdG9tYmlvc19lbmNvZGVy X3NldHVwX2RpZ19lbmNvZGVyKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKIAogCQkJaWYg KEVOQ09ERVJfTU9ERV9JU19EUChhcmdzLnYxLnVjRW5jb2Rlck1vZGUpICYmIChkcF9jbG9jayA9 PSAyNzAwMDApKQogCQkJCWFyZ3MudjEudWNDb25maWcgfD0gQVRPTV9FTkNPREVSX0NPTkZJR19E UExJTktSQVRFXzJfNzBHSFo7Ci0JCQlzd2l0Y2ggKGFtZGdwdV9lbmNvZGVyLT5lbmNvZGVyX2lk KSB7Ci0JCQljYXNlIEVOQ09ERVJfT0JKRUNUX0lEX0lOVEVSTkFMX1VOSVBIWToKKwkJCXN3aXRj aCAoZW5jX2lkKSB7CisJCQljYXNlIEVOQ09ERVJfSURfSU5URVJOQUxfVU5JUEhZOgogCQkJCWFy Z3MudjEudWNDb25maWcgPSBBVE9NX0VOQ09ERVJfQ09ORklHX1YyX1RSQU5TTUlUVEVSMTsKIAkJ CQlicmVhazsKLQkJCWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURfSU5URVJOQUxfVU5JUEhZMToKLQkJ CWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURfSU5URVJOQUxfS0xEU0NQX0xWVE1BOgorCQkJY2FzZSBF TkNPREVSX0lEX0lOVEVSTkFMX1VOSVBIWTE6CisJCQljYXNlIEVOQ09ERVJfSURfSU5URVJOQUxf S0xEU0NQX0xWVE1BOgogCQkJCWFyZ3MudjEudWNDb25maWcgPSBBVE9NX0VOQ09ERVJfQ09ORklH X1YyX1RSQU5TTUlUVEVSMjsKIAkJCQlicmVhazsKLQkJCWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURf SU5URVJOQUxfVU5JUEhZMjoKKwkJCWNhc2UgRU5DT0RFUl9JRF9JTlRFUk5BTF9VTklQSFkyOgog CQkJCWFyZ3MudjEudWNDb25maWcgPSBBVE9NX0VOQ09ERVJfQ09ORklHX1YyX1RSQU5TTUlUVEVS MzsKIAkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJYnJlYWs7CiAJCQl9CiAJCQlpZiAoZGln LT5saW5rYikKIAkJCQlhcmdzLnYxLnVjQ29uZmlnIHw9IEFUT01fRU5DT0RFUl9DT05GSUdfTElO S0I7CkBAIC02NTUsNiArNjYyLDcgQEAgYW1kZ3B1X2F0b21iaW9zX2VuY29kZXJfc2V0dXBfZGln X3RyYW5zbWl0dGVyKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwgaW50IGEKIAlpbnQgaWdw X2xhbmVfaW5mbyA9IDA7CiAJaW50IGRpZ19lbmNvZGVyID0gZGlnLT5kaWdfZW5jb2RlcjsKIAlp bnQgaHBkX2lkID0gQU1ER1BVX0hQRF9OT05FOworCWVudW0gZW5jb2Rlcl9pZCBlbmNfaWQgPSBk aXNwbGF5X2dyYXBoaWNzX29iamVjdF9pZF9nZXRfZW5jb2Rlcl9pZChhbWRncHVfZW5jb2Rlci0+ ZW5jb2Rlcl9vYmplY3RfaWQpOwogCiAJaWYgKGFjdGlvbiA9PSBBVE9NX1RSQU5TTUlUVEVSX0FD VElPTl9JTklUKSB7CiAJCWNvbm5lY3RvciA9IGFtZGdwdV9nZXRfY29ubmVjdG9yX2Zvcl9lbmNv ZGVyX2luaXQoZW5jb2Rlcik7CkBAIC02OTAsMTYgKzY5OCwxOCBAQCBhbWRncHVfYXRvbWJpb3Nf ZW5jb2Rlcl9zZXR1cF9kaWdfdHJhbnNtaXR0ZXIoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVy LCBpbnQgYQogCiAJbWVtc2V0KCZhcmdzLCAwLCBzaXplb2YoYXJncykpOwogCi0Jc3dpdGNoIChh bWRncHVfZW5jb2Rlci0+ZW5jb2Rlcl9pZCkgewotCWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURfSU5U RVJOQUxfVU5JUEhZOgotCWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURfSU5URVJOQUxfVU5JUEhZMToK LQljYXNlIEVOQ09ERVJfT0JKRUNUX0lEX0lOVEVSTkFMX1VOSVBIWTI6Ci0JY2FzZSBFTkNPREVS X09CSkVDVF9JRF9JTlRFUk5BTF9VTklQSFkzOgorCXN3aXRjaCAoZW5jX2lkKSB7CisJY2FzZSBF TkNPREVSX0lEX0lOVEVSTkFMX1VOSVBIWToKKwljYXNlIEVOQ09ERVJfSURfSU5URVJOQUxfVU5J UEhZMToKKwljYXNlIEVOQ09ERVJfSURfSU5URVJOQUxfVU5JUEhZMjoKKwljYXNlIEVOQ09ERVJf SURfSU5URVJOQUxfVU5JUEhZMzoKIAkJaW5kZXggPSBHZXRJbmRleEludG9NYXN0ZXJUYWJsZShD T01NQU5ELCBVTklQSFlUcmFuc21pdHRlckNvbnRyb2wpOwogCQlicmVhazsKLQljYXNlIEVOQ09E RVJfT0JKRUNUX0lEX0lOVEVSTkFMX0tMRFNDUF9MVlRNQToKKwljYXNlIEVOQ09ERVJfSURfSU5U RVJOQUxfS0xEU0NQX0xWVE1BOgogCQlpbmRleCA9IEdldEluZGV4SW50b01hc3RlclRhYmxlKENP TU1BTkQsIExWVE1BVHJhbnNtaXR0ZXJDb250cm9sKTsKIAkJYnJlYWs7CisJZGVmYXVsdDoKKwkJ cmV0dXJuOwogCX0KIAogCWlmICghYW1kZ3B1X2F0b21fcGFyc2VfY21kX2hlYWRlcihhZGV2LT5t b2RlX2luZm8uYXRvbV9jb250ZXh0LCBpbmRleCwgJmZyZXYsICZjcmV2KSkKQEAgLTczMiw3ICs3 NDIsNyBAQCBhbWRncHVfYXRvbWJpb3NfZW5jb2Rlcl9zZXR1cF9kaWdfdHJhbnNtaXR0ZXIoc3Ry dWN0IGRybV9lbmNvZGVyICplbmNvZGVyLCBpbnQgYQogCQkJCWFyZ3MudjEudWNDb25maWcgfD0g QVRPTV9UUkFOU01JVFRFUl9DT05GSUdfRElHMV9FTkNPREVSOwogCiAJCQlpZiAoKGFkZXYtPmZs YWdzICYgQU1EX0lTX0FQVSkgJiYKLQkJCSAgICAoYW1kZ3B1X2VuY29kZXItPmVuY29kZXJfaWQg PT0gRU5DT0RFUl9PQkpFQ1RfSURfSU5URVJOQUxfVU5JUEhZKSkgeworCQkJICAgIChlbmNfaWQg PT0gRU5DT0RFUl9JRF9JTlRFUk5BTF9VTklQSFkpKSB7CiAJCQkJaWYgKGlzX2RwIHx8CiAJCQkJ ICAgICFhbWRncHVfZGlnX21vbml0b3JfaXNfZHVhbGxpbmsoZW5jb2RlciwgYW1kZ3B1X2VuY29k ZXItPnBpeGVsX2Nsb2NrKSkgewogCQkJCQlpZiAoaWdwX2xhbmVfaW5mbyAmIDB4MSkKQEAgLTc4 NSwxNiArNzk1LDE4IEBAIGFtZGdwdV9hdG9tYmlvc19lbmNvZGVyX3NldHVwX2RpZ190cmFuc21p dHRlcihzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsIGludCBhCiAJCQlpZiAoZGlnLT5saW5r YikKIAkJCQlhcmdzLnYyLmFjQ29uZmlnLnVjTGlua1NlbCA9IDE7CiAKLQkJCXN3aXRjaCAoYW1k Z3B1X2VuY29kZXItPmVuY29kZXJfaWQpIHsKLQkJCWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURfSU5U RVJOQUxfVU5JUEhZOgorCQkJc3dpdGNoIChlbmNfaWQpIHsKKwkJCWNhc2UgRU5DT0RFUl9JRF9J TlRFUk5BTF9VTklQSFk6CiAJCQkJYXJncy52Mi5hY0NvbmZpZy51Y1RyYW5zbWl0dGVyU2VsID0g MDsKIAkJCQlicmVhazsKLQkJCWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURfSU5URVJOQUxfVU5JUEhZ MToKKwkJCWNhc2UgRU5DT0RFUl9JRF9JTlRFUk5BTF9VTklQSFkxOgogCQkJCWFyZ3MudjIuYWND b25maWcudWNUcmFuc21pdHRlclNlbCA9IDE7CiAJCQkJYnJlYWs7Ci0JCQljYXNlIEVOQ09ERVJf T0JKRUNUX0lEX0lOVEVSTkFMX1VOSVBIWTI6CisJCQljYXNlIEVOQ09ERVJfSURfSU5URVJOQUxf VU5JUEhZMjoKIAkJCQlhcmdzLnYyLmFjQ29uZmlnLnVjVHJhbnNtaXR0ZXJTZWwgPSAyOwogCQkJ CWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQlyZXR1cm47CiAJCQl9CiAKIAkJCWlmIChpc19kcCkg ewpAQCAtODQ1LDE2ICs4NTcsMTggQEAgYW1kZ3B1X2F0b21iaW9zX2VuY29kZXJfc2V0dXBfZGln X3RyYW5zbWl0dGVyKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwgaW50IGEKIAkJCWVsc2UK IAkJCQlhcmdzLnYzLmFjQ29uZmlnLnVjUmVmQ2xrU291cmNlID0gcGxsX2lkOwogCi0JCQlzd2l0 Y2ggKGFtZGdwdV9lbmNvZGVyLT5lbmNvZGVyX2lkKSB7Ci0JCQljYXNlIEVOQ09ERVJfT0JKRUNU X0lEX0lOVEVSTkFMX1VOSVBIWToKKwkJCXN3aXRjaCAoZW5jX2lkKSB7CisJCQljYXNlIEVOQ09E RVJfSURfSU5URVJOQUxfVU5JUEhZOgogCQkJCWFyZ3MudjMuYWNDb25maWcudWNUcmFuc21pdHRl clNlbCA9IDA7CiAJCQkJYnJlYWs7Ci0JCQljYXNlIEVOQ09ERVJfT0JKRUNUX0lEX0lOVEVSTkFM X1VOSVBIWTE6CisJCQljYXNlIEVOQ09ERVJfSURfSU5URVJOQUxfVU5JUEhZMToKIAkJCQlhcmdz LnYzLmFjQ29uZmlnLnVjVHJhbnNtaXR0ZXJTZWwgPSAxOwogCQkJCWJyZWFrOwotCQkJY2FzZSBF TkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9VTklQSFkyOgorCQkJY2FzZSBFTkNPREVSX0lEX0lO VEVSTkFMX1VOSVBIWTI6CiAJCQkJYXJncy52My5hY0NvbmZpZy51Y1RyYW5zbWl0dGVyU2VsID0g MjsKIAkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJcmV0dXJuOwogCQkJfQogCiAJCQlpZiAo aXNfZHApCkBAIC05MDcsMTYgKzkyMSwxOCBAQCBhbWRncHVfYXRvbWJpb3NfZW5jb2Rlcl9zZXR1 cF9kaWdfdHJhbnNtaXR0ZXIoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLCBpbnQgYQogCQkJ fSBlbHNlCiAJCQkJYXJncy52NC5hY0NvbmZpZy51Y1JlZkNsa1NvdXJjZSA9IHBsbF9pZDsKIAot CQkJc3dpdGNoIChhbWRncHVfZW5jb2Rlci0+ZW5jb2Rlcl9pZCkgewotCQkJY2FzZSBFTkNPREVS X09CSkVDVF9JRF9JTlRFUk5BTF9VTklQSFk6CisJCQlzd2l0Y2ggKGVuY19pZCkgeworCQkJY2Fz ZSBFTkNPREVSX0lEX0lOVEVSTkFMX1VOSVBIWToKIAkJCQlhcmdzLnY0LmFjQ29uZmlnLnVjVHJh bnNtaXR0ZXJTZWwgPSAwOwogCQkJCWJyZWFrOwotCQkJY2FzZSBFTkNPREVSX09CSkVDVF9JRF9J TlRFUk5BTF9VTklQSFkxOgorCQkJY2FzZSBFTkNPREVSX0lEX0lOVEVSTkFMX1VOSVBIWTE6CiAJ CQkJYXJncy52NC5hY0NvbmZpZy51Y1RyYW5zbWl0dGVyU2VsID0gMTsKIAkJCQlicmVhazsKLQkJ CWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURfSU5URVJOQUxfVU5JUEhZMjoKKwkJCWNhc2UgRU5DT0RF Ul9JRF9JTlRFUk5BTF9VTklQSFkyOgogCQkJCWFyZ3MudjQuYWNDb25maWcudWNUcmFuc21pdHRl clNlbCA9IDI7CiAJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCXJldHVybjsKIAkJCX0KIAog CQkJaWYgKGlzX2RwKQpAQCAtOTM1LDI4ICs5NTEsMzAgQEAgYW1kZ3B1X2F0b21iaW9zX2VuY29k ZXJfc2V0dXBfZGlnX3RyYW5zbWl0dGVyKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwgaW50 IGEKIAkJCWVsc2UKIAkJCQlhcmdzLnY1LnVzU3ltQ2xvY2sgPSBjcHVfdG9fbGUxNihhbWRncHVf ZW5jb2Rlci0+cGl4ZWxfY2xvY2sgLyAxMCk7CiAKLQkJCXN3aXRjaCAoYW1kZ3B1X2VuY29kZXIt PmVuY29kZXJfaWQpIHsKLQkJCWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURfSU5URVJOQUxfVU5JUEhZ OgorCQkJc3dpdGNoIChlbmNfaWQpIHsKKwkJCWNhc2UgRU5DT0RFUl9JRF9JTlRFUk5BTF9VTklQ SFk6CiAJCQkJaWYgKGRpZy0+bGlua2IpCiAJCQkJCWFyZ3MudjUudWNQaHlJZCA9IEFUT01fUEhZ X0lEX1VOSVBIWUI7CiAJCQkJZWxzZQogCQkJCQlhcmdzLnY1LnVjUGh5SWQgPSBBVE9NX1BIWV9J RF9VTklQSFlBOwogCQkJCWJyZWFrOwotCQkJY2FzZSBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5B TF9VTklQSFkxOgorCQkJY2FzZSBFTkNPREVSX0lEX0lOVEVSTkFMX1VOSVBIWTE6CiAJCQkJaWYg KGRpZy0+bGlua2IpCiAJCQkJCWFyZ3MudjUudWNQaHlJZCA9IEFUT01fUEhZX0lEX1VOSVBIWUQ7 CiAJCQkJZWxzZQogCQkJCQlhcmdzLnY1LnVjUGh5SWQgPSBBVE9NX1BIWV9JRF9VTklQSFlDOwog CQkJCWJyZWFrOwotCQkJY2FzZSBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9VTklQSFkyOgor CQkJY2FzZSBFTkNPREVSX0lEX0lOVEVSTkFMX1VOSVBIWTI6CiAJCQkJaWYgKGRpZy0+bGlua2Ip CiAJCQkJCWFyZ3MudjUudWNQaHlJZCA9IEFUT01fUEhZX0lEX1VOSVBIWUY7CiAJCQkJZWxzZQog CQkJCQlhcmdzLnY1LnVjUGh5SWQgPSBBVE9NX1BIWV9JRF9VTklQSFlFOwogCQkJCWJyZWFrOwot CQkJY2FzZSBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9VTklQSFkzOgorCQkJY2FzZSBFTkNP REVSX0lEX0lOVEVSTkFMX1VOSVBIWTM6CiAJCQkJYXJncy52NS51Y1BoeUlkID0gQVRPTV9QSFlf SURfVU5JUEhZRzsKIAkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJcmV0dXJuOwogCQkJfQog CQkJaWYgKGlzX2RwKQogCQkJCWFyZ3MudjUudWNMYW5lTnVtID0gZHBfbGFuZV9jb3VudDsKQEAg LTEwNjEsNyArMTA3OSw3IEBAIGFtZGdwdV9hdG9tYmlvc19lbmNvZGVyX3NldHVwX2V4dGVybmFs X2VuY29kZXIoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAogCWludCBkcF9jbG9jayA9IDA7 CiAJaW50IGRwX2xhbmVfY291bnQgPSAwOwogCWludCBjb25uZWN0b3Jfb2JqZWN0X2lkID0gMDsK LQl1MzIgZXh0X2VudW0gPSAoZXh0X2FtZGdwdV9lbmNvZGVyLT5lbmNvZGVyX2VudW0gJiBFTlVN X0lEX01BU0spID4+IEVOVU1fSURfU0hJRlQ7CisJZW51bSBvYmplY3RfZW51bV9pZCBleHRfZW51 bSA9IGV4dF9hbWRncHVfZW5jb2Rlci0+ZW5jb2Rlcl9vYmplY3RfaWQuZW51bV9pZDsKIAogCWlm IChhY3Rpb24gPT0gRVhURVJOQUxfRU5DT0RFUl9BQ1RJT05fVjNfRU5DT0RFUl9JTklUKQogCQlj b25uZWN0b3IgPSBhbWRncHVfZ2V0X2Nvbm5lY3Rvcl9mb3JfZW5jb2Rlcl9pbml0KGVuY29kZXIp OwpAQCAtMTEyNSwxNSArMTE0MywxNyBAQCBhbWRncHVfYXRvbWJpb3NfZW5jb2Rlcl9zZXR1cF9l eHRlcm5hbF9lbmNvZGVyKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKIAkJCWVsc2UKIAkJ CQlhcmdzLnYzLnNFeHRFbmNvZGVyLnVjTGFuZU51bSA9IDQ7CiAJCQlzd2l0Y2ggKGV4dF9lbnVt KSB7Ci0JCQljYXNlIEdSQVBIX09CSkVDVF9FTlVNX0lEMToKKwkJCWNhc2UgRU5VTV9JRF8xOgog CQkJCWFyZ3MudjMuc0V4dEVuY29kZXIudWNDb25maWcgfD0gRVhURVJOQUxfRU5DT0RFUl9DT05G SUdfVjNfRU5DT0RFUjE7CiAJCQkJYnJlYWs7Ci0JCQljYXNlIEdSQVBIX09CSkVDVF9FTlVNX0lE MjoKKwkJCWNhc2UgRU5VTV9JRF8yOgogCQkJCWFyZ3MudjMuc0V4dEVuY29kZXIudWNDb25maWcg fD0gRVhURVJOQUxfRU5DT0RFUl9DT05GSUdfVjNfRU5DT0RFUjI7CiAJCQkJYnJlYWs7Ci0JCQlj YXNlIEdSQVBIX09CSkVDVF9FTlVNX0lEMzoKKwkJCWNhc2UgRU5VTV9JRF8zOgogCQkJCWFyZ3Mu djMuc0V4dEVuY29kZXIudWNDb25maWcgfD0gRVhURVJOQUxfRU5DT0RFUl9DT05GSUdfVjNfRU5D T0RFUjM7CiAJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCXJldHVybjsKIAkJCX0KIAkJCWFy Z3MudjMuc0V4dEVuY29kZXIudWNCaXRQZXJDb2xvciA9IGFtZGdwdV9hdG9tYmlvc19lbmNvZGVy X2dldF9icGMoZW5jb2Rlcik7CiAJCQlicmVhazsKQEAgLTEyMzIsMTUgKzEyNTIsMTUgQEAgdm9p ZAogYW1kZ3B1X2F0b21iaW9zX2VuY29kZXJfZHBtcyhzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29k ZXIsIGludCBtb2RlKQogewogCXN0cnVjdCBhbWRncHVfZW5jb2RlciAqYW1kZ3B1X2VuY29kZXIg PSB0b19hbWRncHVfZW5jb2RlcihlbmNvZGVyKTsKLQorCWVudW0gZW5jb2Rlcl9pZCBlbmNfaWQg PSBkaXNwbGF5X2dyYXBoaWNzX29iamVjdF9pZF9nZXRfZW5jb2Rlcl9pZChhbWRncHVfZW5jb2Rl ci0+ZW5jb2Rlcl9vYmplY3RfaWQpOwogCURSTV9ERUJVR19LTVMoImVuY29kZXIgZHBtcyAlZCB0 byBtb2RlICVkLCBkZXZpY2VzICUwOHgsIGFjdGl2ZV9kZXZpY2VzICUwOHhcbiIsCi0JCSAgYW1k Z3B1X2VuY29kZXItPmVuY29kZXJfaWQsIG1vZGUsIGFtZGdwdV9lbmNvZGVyLT5kZXZpY2VzLAor CQkgIGVuY19pZCwgbW9kZSwgYW1kZ3B1X2VuY29kZXItPmRldmljZXMsCiAJCSAgYW1kZ3B1X2Vu Y29kZXItPmFjdGl2ZV9kZXZpY2UpOwotCXN3aXRjaCAoYW1kZ3B1X2VuY29kZXItPmVuY29kZXJf aWQpIHsKLQljYXNlIEVOQ09ERVJfT0JKRUNUX0lEX0lOVEVSTkFMX1VOSVBIWToKLQljYXNlIEVO Q09ERVJfT0JKRUNUX0lEX0lOVEVSTkFMX1VOSVBIWTE6Ci0JY2FzZSBFTkNPREVSX09CSkVDVF9J RF9JTlRFUk5BTF9VTklQSFkyOgotCWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURfSU5URVJOQUxfVU5J UEhZMzoKKwlzd2l0Y2ggKGVuY19pZCkgeworCWNhc2UgRU5DT0RFUl9JRF9JTlRFUk5BTF9VTklQ SFk6CisJY2FzZSBFTkNPREVSX0lEX0lOVEVSTkFMX1VOSVBIWTE6CisJY2FzZSBFTkNPREVSX0lE X0lOVEVSTkFMX1VOSVBIWTI6CisJY2FzZSBFTkNPREVSX0lEX0lOVEVSTkFMX1VOSVBIWTM6CiAJ CXN3aXRjaCAobW9kZSkgewogCQljYXNlIERSTV9NT0RFX0RQTVNfT046CiAJCQlhbWRncHVfYXRv bWJpb3NfZW5jb2Rlcl9zZXR1cF9kaWcoZW5jb2RlciwgQVRPTV9FTkFCTEUpOwpAQCAtMTI1Miw3 ICsxMjcyLDcgQEAgYW1kZ3B1X2F0b21iaW9zX2VuY29kZXJfZHBtcyhzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXIsIGludCBtb2RlKQogCQkJYnJlYWs7CiAJCX0KIAkJYnJlYWs7Ci0JY2FzZSBF TkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9LTERTQ1BfREFDMToKKwljYXNlIEVOQ09ERVJfSURf SU5URVJOQUxfS0xEU0NQX0RBQzE6CiAJCXN3aXRjaCAobW9kZSkgewogCQljYXNlIERSTV9NT0RF X0RQTVNfT046CiAJCQlhbWRncHVfYXRvbWJpb3NfZW5jb2Rlcl9zZXR1cF9kYWMoZW5jb2Rlciwg QVRPTV9FTkFCTEUpOwpAQCAtMTI4Niw2ICsxMzA2LDcgQEAgYW1kZ3B1X2F0b21iaW9zX2VuY29k ZXJfc2V0X2NydGNfc291cmNlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIAlpbnQgaW5k ZXggPSBHZXRJbmRleEludG9NYXN0ZXJUYWJsZShDT01NQU5ELCBTZWxlY3RDUlRDX1NvdXJjZSk7 CiAJdWludDhfdCBmcmV2LCBjcmV2OwogCXN0cnVjdCBhbWRncHVfZW5jb2Rlcl9hdG9tX2RpZyAq ZGlnOworCWVudW0gZW5jb2Rlcl9pZCBlbmNfaWQgPSBkaXNwbGF5X2dyYXBoaWNzX29iamVjdF9p ZF9nZXRfZW5jb2Rlcl9pZChhbWRncHVfZW5jb2Rlci0+ZW5jb2Rlcl9vYmplY3RfaWQpOwogCiAJ bWVtc2V0KCZhcmdzLCAwLCBzaXplb2YoYXJncykpOwogCkBAIC0xMjk4LDIzICsxMzE5LDIzIEBA IGFtZGdwdV9hdG9tYmlvc19lbmNvZGVyX3NldF9jcnRjX3NvdXJjZShzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXIpCiAJCWNhc2UgMToKIAkJZGVmYXVsdDoKIAkJCWFyZ3MudjEudWNDUlRDID0g YW1kZ3B1X2NydGMtPmNydGNfaWQ7Ci0JCQlzd2l0Y2ggKGFtZGdwdV9lbmNvZGVyLT5lbmNvZGVy X2lkKSB7Ci0JCQljYXNlIEVOQ09ERVJfT0JKRUNUX0lEX0lOVEVSTkFMX1RNRFMxOgotCQkJY2Fz ZSBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9LTERTQ1BfVE1EUzE6CisJCQlzd2l0Y2ggKGVu Y19pZCkgeworCQkJY2FzZSBFTkNPREVSX0lEX0lOVEVSTkFMX1RNRFMxOgorCQkJY2FzZSBFTkNP REVSX0lEX0lOVEVSTkFMX0tMRFNDUF9UTURTMToKIAkJCQlhcmdzLnYxLnVjRGV2aWNlID0gQVRP TV9ERVZJQ0VfREZQMV9JTkRFWDsKIAkJCQlicmVhazsKLQkJCWNhc2UgRU5DT0RFUl9PQkpFQ1Rf SURfSU5URVJOQUxfTFZEUzoKLQkJCWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURfSU5URVJOQUxfTFZU TTE6CisJCQljYXNlIEVOQ09ERVJfSURfSU5URVJOQUxfTFZEUzoKKwkJCWNhc2UgRU5DT0RFUl9J RF9JTlRFUk5BTF9MVlRNMToKIAkJCQlpZiAoYW1kZ3B1X2VuY29kZXItPmRldmljZXMgJiBBVE9N X0RFVklDRV9MQ0QxX1NVUFBPUlQpCiAJCQkJCWFyZ3MudjEudWNEZXZpY2UgPSBBVE9NX0RFVklD RV9MQ0QxX0lOREVYOwogCQkJCWVsc2UKIAkJCQkJYXJncy52MS51Y0RldmljZSA9IEFUT01fREVW SUNFX0RGUDNfSU5ERVg7CiAJCQkJYnJlYWs7Ci0JCQljYXNlIEVOQ09ERVJfT0JKRUNUX0lEX0lO VEVSTkFMX0RESToKKwkJCWNhc2UgRU5DT0RFUl9JRF9JTlRFUk5BTF9EREk6CiAJCQkJYXJncy52 MS51Y0RldmljZSA9IEFUT01fREVWSUNFX0RGUDJfSU5ERVg7CiAJCQkJYnJlYWs7Ci0JCQljYXNl IEVOQ09ERVJfT0JKRUNUX0lEX0lOVEVSTkFMX0RBQzE6Ci0JCQljYXNlIEVOQ09ERVJfT0JKRUNU X0lEX0lOVEVSTkFMX0tMRFNDUF9EQUMxOgorCQkJY2FzZSBFTkNPREVSX0lEX0lOVEVSTkFMX0RB QzE6CisJCQljYXNlIEVOQ09ERVJfSURfSU5URVJOQUxfS0xEU0NQX0RBQzE6CiAJCQkJaWYgKGFt ZGdwdV9lbmNvZGVyLT5hY3RpdmVfZGV2aWNlICYgKEFUT01fREVWSUNFX1RWX1NVUFBPUlQpKQog CQkJCQlhcmdzLnYxLnVjRGV2aWNlID0gQVRPTV9ERVZJQ0VfVFYxX0lOREVYOwogCQkJCWVsc2Ug aWYgKGFtZGdwdV9lbmNvZGVyLT5hY3RpdmVfZGV2aWNlICYgKEFUT01fREVWSUNFX0NWX1NVUFBP UlQpKQpAQCAtMTMyMiw4ICsxMzQzLDggQEAgYW1kZ3B1X2F0b21iaW9zX2VuY29kZXJfc2V0X2Ny dGNfc291cmNlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIAkJCQllbHNlCiAJCQkJCWFy Z3MudjEudWNEZXZpY2UgPSBBVE9NX0RFVklDRV9DUlQxX0lOREVYOwogCQkJCWJyZWFrOwotCQkJ Y2FzZSBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9EQUMyOgotCQkJY2FzZSBFTkNPREVSX09C SkVDVF9JRF9JTlRFUk5BTF9LTERTQ1BfREFDMjoKKwkJCWNhc2UgRU5DT0RFUl9JRF9JTlRFUk5B TF9EQUMyOgorCQkJY2FzZSBFTkNPREVSX0lEX0lOVEVSTkFMX0tMRFNDUF9EQUMyOgogCQkJCWlm IChhbWRncHVfZW5jb2Rlci0+YWN0aXZlX2RldmljZSAmIChBVE9NX0RFVklDRV9UVl9TVVBQT1JU KSkKIAkJCQkJYXJncy52MS51Y0RldmljZSA9IEFUT01fREVWSUNFX1RWMV9JTkRFWDsKIAkJCQll bHNlIGlmIChhbWRncHVfZW5jb2Rlci0+YWN0aXZlX2RldmljZSAmIChBVE9NX0RFVklDRV9DVl9T VVBQT1JUKSkKQEAgLTEzMzEsMTEgKzEzNTIsMTMgQEAgYW1kZ3B1X2F0b21iaW9zX2VuY29kZXJf c2V0X2NydGNfc291cmNlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIAkJCQllbHNlCiAJ CQkJCWFyZ3MudjEudWNEZXZpY2UgPSBBVE9NX0RFVklDRV9DUlQyX0lOREVYOwogCQkJCWJyZWFr OworCQkJZGVmYXVsdDoKKwkJCQlyZXR1cm47CiAJCQl9CiAJCQlicmVhazsKIAkJY2FzZSAyOgog CQkJYXJncy52Mi51Y0NSVEMgPSBhbWRncHVfY3J0Yy0+Y3J0Y19pZDsKLQkJCWlmIChhbWRncHVf ZW5jb2Rlcl9nZXRfZHBfYnJpZGdlX2VuY29kZXJfaWQoZW5jb2RlcikgIT0gRU5DT0RFUl9PQkpF Q1RfSURfTk9ORSkgeworCQkJaWYgKGFtZGdwdV9lbmNvZGVyX2dldF9kcF9icmlkZ2VfZW5jb2Rl cl9pZChlbmNvZGVyKSAhPSBFTkNPREVSX0lEX1VOS05PV04pIHsKIAkJCQlzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yID0gYW1kZ3B1X2dldF9jb25uZWN0b3JfZm9yX2VuY29kZXIoZW5j b2Rlcik7CiAKIAkJCQlpZiAoY29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZSA9PSBEUk1fTU9ERV9D T05ORUNUT1JfTFZEUykKQEAgLTEzNDksMTIgKzEzNzIsMTIgQEAgYW1kZ3B1X2F0b21iaW9zX2Vu Y29kZXJfc2V0X2NydGNfc291cmNlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIAkJCX0g ZWxzZSB7CiAJCQkJYXJncy52Mi51Y0VuY29kZU1vZGUgPSBhbWRncHVfYXRvbWJpb3NfZW5jb2Rl cl9nZXRfZW5jb2Rlcl9tb2RlKGVuY29kZXIpOwogCQkJfQotCQkJc3dpdGNoIChhbWRncHVfZW5j b2Rlci0+ZW5jb2Rlcl9pZCkgewotCQkJY2FzZSBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9V TklQSFk6Ci0JCQljYXNlIEVOQ09ERVJfT0JKRUNUX0lEX0lOVEVSTkFMX1VOSVBIWTE6Ci0JCQlj YXNlIEVOQ09ERVJfT0JKRUNUX0lEX0lOVEVSTkFMX1VOSVBIWTI6Ci0JCQljYXNlIEVOQ09ERVJf T0JKRUNUX0lEX0lOVEVSTkFMX1VOSVBIWTM6Ci0JCQljYXNlIEVOQ09ERVJfT0JKRUNUX0lEX0lO VEVSTkFMX0tMRFNDUF9MVlRNQToKKwkJCXN3aXRjaCAoZW5jX2lkKSB7CisJCQljYXNlIEVOQ09E RVJfSURfSU5URVJOQUxfVU5JUEhZOgorCQkJY2FzZSBFTkNPREVSX0lEX0lOVEVSTkFMX1VOSVBI WTE6CisJCQljYXNlIEVOQ09ERVJfSURfSU5URVJOQUxfVU5JUEhZMjoKKwkJCWNhc2UgRU5DT0RF Ul9JRF9JTlRFUk5BTF9VTklQSFkzOgorCQkJY2FzZSBFTkNPREVSX0lEX0lOVEVSTkFMX0tMRFND UF9MVlRNQToKIAkJCQlkaWcgPSBhbWRncHVfZW5jb2Rlci0+ZW5jX3ByaXY7CiAJCQkJc3dpdGNo IChkaWctPmRpZ19lbmNvZGVyKSB7CiAJCQkJY2FzZSAwOgpAQCAtMTM4MCw3ICsxNDAzLDcgQEAg YW1kZ3B1X2F0b21iaW9zX2VuY29kZXJfc2V0X2NydGNfc291cmNlKHN0cnVjdCBkcm1fZW5jb2Rl ciAqZW5jb2RlcikKIAkJCQkJYnJlYWs7CiAJCQkJfQogCQkJCWJyZWFrOwotCQkJY2FzZSBFTkNP REVSX09CSkVDVF9JRF9JTlRFUk5BTF9LTERTQ1BfREFDMToKKwkJCWNhc2UgRU5DT0RFUl9JRF9J TlRFUk5BTF9LTERTQ1BfREFDMToKIAkJCQlpZiAoYW1kZ3B1X2VuY29kZXItPmFjdGl2ZV9kZXZp Y2UgJiAoQVRPTV9ERVZJQ0VfVFZfU1VQUE9SVCkpCiAJCQkJCWFyZ3MudjIudWNFbmNvZGVySUQg PSBBU0lDX0lOVF9UVl9FTkNPREVSX0lEOwogCQkJCWVsc2UgaWYgKGFtZGdwdV9lbmNvZGVyLT5h Y3RpdmVfZGV2aWNlICYgKEFUT01fREVWSUNFX0NWX1NVUFBPUlQpKQpAQCAtMTM4OCw3ICsxNDEx LDcgQEAgYW1kZ3B1X2F0b21iaW9zX2VuY29kZXJfc2V0X2NydGNfc291cmNlKHN0cnVjdCBkcm1f ZW5jb2RlciAqZW5jb2RlcikKIAkJCQllbHNlCiAJCQkJCWFyZ3MudjIudWNFbmNvZGVySUQgPSBB U0lDX0lOVF9EQUMxX0VOQ09ERVJfSUQ7CiAJCQkJYnJlYWs7Ci0JCQljYXNlIEVOQ09ERVJfT0JK RUNUX0lEX0lOVEVSTkFMX0tMRFNDUF9EQUMyOgorCQkJY2FzZSBFTkNPREVSX0lEX0lOVEVSTkFM X0tMRFNDUF9EQUMyOgogCQkJCWlmIChhbWRncHVfZW5jb2Rlci0+YWN0aXZlX2RldmljZSAmIChB VE9NX0RFVklDRV9UVl9TVVBQT1JUKSkKIAkJCQkJYXJncy52Mi51Y0VuY29kZXJJRCA9IEFTSUNf SU5UX1RWX0VOQ09ERVJfSUQ7CiAJCQkJZWxzZSBpZiAoYW1kZ3B1X2VuY29kZXItPmFjdGl2ZV9k ZXZpY2UgJiAoQVRPTV9ERVZJQ0VfQ1ZfU1VQUE9SVCkpCkBAIC0xMzk2LDExICsxNDE5LDEzIEBA IGFtZGdwdV9hdG9tYmlvc19lbmNvZGVyX3NldF9jcnRjX3NvdXJjZShzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXIpCiAJCQkJZWxzZQogCQkJCQlhcmdzLnYyLnVjRW5jb2RlcklEID0gQVNJQ19J TlRfREFDMl9FTkNPREVSX0lEOwogCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQlyZXR1cm47 CiAJCQl9CiAJCQlicmVhazsKIAkJY2FzZSAzOgogCQkJYXJncy52My51Y0NSVEMgPSBhbWRncHVf Y3J0Yy0+Y3J0Y19pZDsKLQkJCWlmIChhbWRncHVfZW5jb2Rlcl9nZXRfZHBfYnJpZGdlX2VuY29k ZXJfaWQoZW5jb2RlcikgIT0gRU5DT0RFUl9PQkpFQ1RfSURfTk9ORSkgeworCQkJaWYgKGFtZGdw dV9lbmNvZGVyX2dldF9kcF9icmlkZ2VfZW5jb2Rlcl9pZChlbmNvZGVyKSAhPSBFTkNPREVSX0lE X1VOS05PV04pIHsKIAkJCQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gYW1kZ3B1 X2dldF9jb25uZWN0b3JfZm9yX2VuY29kZXIoZW5jb2Rlcik7CiAKIAkJCQlpZiAoY29ubmVjdG9y LT5jb25uZWN0b3JfdHlwZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfTFZEUykKQEAgLTE0MTUsMTIg KzE0NDAsMTIgQEAgYW1kZ3B1X2F0b21iaW9zX2VuY29kZXJfc2V0X2NydGNfc291cmNlKHN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIAkJCQlhcmdzLnYyLnVjRW5jb2RlTW9kZSA9IGFtZGdw dV9hdG9tYmlvc19lbmNvZGVyX2dldF9lbmNvZGVyX21vZGUoZW5jb2Rlcik7CiAJCQl9CiAJCQlh cmdzLnYzLnVjRHN0QnBjID0gYW1kZ3B1X2F0b21iaW9zX2VuY29kZXJfZ2V0X2JwYyhlbmNvZGVy KTsKLQkJCXN3aXRjaCAoYW1kZ3B1X2VuY29kZXItPmVuY29kZXJfaWQpIHsKLQkJCWNhc2UgRU5D T0RFUl9PQkpFQ1RfSURfSU5URVJOQUxfVU5JUEhZOgotCQkJY2FzZSBFTkNPREVSX09CSkVDVF9J RF9JTlRFUk5BTF9VTklQSFkxOgotCQkJY2FzZSBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9V TklQSFkyOgotCQkJY2FzZSBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9VTklQSFkzOgotCQkJ Y2FzZSBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9LTERTQ1BfTFZUTUE6CisJCQlzd2l0Y2gg KGVuY19pZCkgeworCQkJY2FzZSBFTkNPREVSX0lEX0lOVEVSTkFMX1VOSVBIWToKKwkJCWNhc2Ug RU5DT0RFUl9JRF9JTlRFUk5BTF9VTklQSFkxOgorCQkJY2FzZSBFTkNPREVSX0lEX0lOVEVSTkFM X1VOSVBIWTI6CisJCQljYXNlIEVOQ09ERVJfSURfSU5URVJOQUxfVU5JUEhZMzoKKwkJCWNhc2Ug RU5DT0RFUl9JRF9JTlRFUk5BTF9LTERTQ1BfTFZUTUE6CiAJCQkJZGlnID0gYW1kZ3B1X2VuY29k ZXItPmVuY19wcml2OwogCQkJCXN3aXRjaCAoZGlnLT5kaWdfZW5jb2RlcikgewogCQkJCWNhc2Ug MDoKQEAgLTE0NDYsNyArMTQ3MSw3IEBAIGFtZGdwdV9hdG9tYmlvc19lbmNvZGVyX3NldF9jcnRj X3NvdXJjZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiAJCQkJCWJyZWFrOwogCQkJCX0K IAkJCQlicmVhazsKLQkJCWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURfSU5URVJOQUxfS0xEU0NQX0RB QzE6CisJCQljYXNlIEVOQ09ERVJfSURfSU5URVJOQUxfS0xEU0NQX0RBQzE6CiAJCQkJaWYgKGFt ZGdwdV9lbmNvZGVyLT5hY3RpdmVfZGV2aWNlICYgKEFUT01fREVWSUNFX1RWX1NVUFBPUlQpKQog CQkJCQlhcmdzLnYzLnVjRW5jb2RlcklEID0gQVNJQ19JTlRfVFZfRU5DT0RFUl9JRDsKIAkJCQll bHNlIGlmIChhbWRncHVfZW5jb2Rlci0+YWN0aXZlX2RldmljZSAmIChBVE9NX0RFVklDRV9DVl9T VVBQT1JUKSkKQEAgLTE0NTQsNyArMTQ3OSw3IEBAIGFtZGdwdV9hdG9tYmlvc19lbmNvZGVyX3Nl dF9jcnRjX3NvdXJjZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiAJCQkJZWxzZQogCQkJ CQlhcmdzLnYzLnVjRW5jb2RlcklEID0gQVNJQ19JTlRfREFDMV9FTkNPREVSX0lEOwogCQkJCWJy ZWFrOwotCQkJY2FzZSBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9LTERTQ1BfREFDMjoKKwkJ CWNhc2UgRU5DT0RFUl9JRF9JTlRFUk5BTF9LTERTQ1BfREFDMjoKIAkJCQlpZiAoYW1kZ3B1X2Vu Y29kZXItPmFjdGl2ZV9kZXZpY2UgJiAoQVRPTV9ERVZJQ0VfVFZfU1VQUE9SVCkpCiAJCQkJCWFy Z3MudjMudWNFbmNvZGVySUQgPSBBU0lDX0lOVF9UVl9FTkNPREVSX0lEOwogCQkJCWVsc2UgaWYg KGFtZGdwdV9lbmNvZGVyLT5hY3RpdmVfZGV2aWNlICYgKEFUT01fREVWSUNFX0NWX1NVUFBPUlQp KQpAQCAtMTQ2Miw2ICsxNDg3LDggQEAgYW1kZ3B1X2F0b21iaW9zX2VuY29kZXJfc2V0X2NydGNf c291cmNlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIAkJCQllbHNlCiAJCQkJCWFyZ3Mu djMudWNFbmNvZGVySUQgPSBBU0lDX0lOVF9EQUMyX0VOQ09ERVJfSUQ7CiAJCQkJYnJlYWs7CisJ CQlkZWZhdWx0OgorCQkJCWJyZWFrOwogCQkJfQogCQkJYnJlYWs7CiAJCX0KQEAgLTE0ODQsMTUg KzE1MTEsMTcgQEAgYW1kZ3B1X2F0b21iaW9zX2VuY29kZXJfaW5pdF9kaWcoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYpCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShlbmNvZGVyLCAmZGV2LT5tb2Rl X2NvbmZpZy5lbmNvZGVyX2xpc3QsIGhlYWQpIHsKIAkJc3RydWN0IGFtZGdwdV9lbmNvZGVyICph bWRncHVfZW5jb2RlciA9IHRvX2FtZGdwdV9lbmNvZGVyKGVuY29kZXIpOwogCQlzdHJ1Y3QgZHJt X2VuY29kZXIgKmV4dF9lbmNvZGVyID0gYW1kZ3B1X2dldF9leHRlcm5hbF9lbmNvZGVyKGVuY29k ZXIpOwotCi0JCXN3aXRjaCAoYW1kZ3B1X2VuY29kZXItPmVuY29kZXJfaWQpIHsKLQkJY2FzZSBF TkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9VTklQSFk6Ci0JCWNhc2UgRU5DT0RFUl9PQkpFQ1Rf SURfSU5URVJOQUxfVU5JUEhZMToKLQkJY2FzZSBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9V TklQSFkyOgotCQljYXNlIEVOQ09ERVJfT0JKRUNUX0lEX0lOVEVSTkFMX1VOSVBIWTM6CisJCWVu dW0gZW5jb2Rlcl9pZCBlbmNfaWQgPSBkaXNwbGF5X2dyYXBoaWNzX29iamVjdF9pZF9nZXRfZW5j b2Rlcl9pZChhbWRncHVfZW5jb2Rlci0+ZW5jb2Rlcl9vYmplY3RfaWQpOworCQlzd2l0Y2ggKGVu Y19pZCkgeworCQljYXNlIEVOQ09ERVJfSURfSU5URVJOQUxfVU5JUEhZOgorCQljYXNlIEVOQ09E RVJfSURfSU5URVJOQUxfVU5JUEhZMToKKwkJY2FzZSBFTkNPREVSX0lEX0lOVEVSTkFMX1VOSVBI WTI6CisJCWNhc2UgRU5DT0RFUl9JRF9JTlRFUk5BTF9VTklQSFkzOgogCQkJYW1kZ3B1X2F0b21i aW9zX2VuY29kZXJfc2V0dXBfZGlnX3RyYW5zbWl0dGVyKGVuY29kZXIsIEFUT01fVFJBTlNNSVRU RVJfQUNUSU9OX0lOSVQsCiAJCQkJCQkJICAgICAgIDAsIDApOwogCQkJYnJlYWs7CisJCWRlZmF1 bHQ6CisJCQlyZXR1cm47CiAJCX0KIAogCQlpZiAoZXh0X2VuY29kZXIpCkBAIC0xNTA5LDYgKzE1 MzgsNyBAQCBhbWRncHVfYXRvbWJpb3NfZW5jb2Rlcl9kYWNfbG9hZF9kZXRlY3Qoc3RydWN0IGRy bV9lbmNvZGVyICplbmNvZGVyLAogCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gZGV2LT5k ZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgYW1kZ3B1X2VuY29kZXIgKmFtZGdwdV9lbmNvZGVyID0gdG9f YW1kZ3B1X2VuY29kZXIoZW5jb2Rlcik7CiAJc3RydWN0IGFtZGdwdV9jb25uZWN0b3IgKmFtZGdw dV9jb25uZWN0b3IgPSB0b19hbWRncHVfY29ubmVjdG9yKGNvbm5lY3Rvcik7CisJZW51bSBlbmNv ZGVyX2lkIGVuY19pZCA9IGRpc3BsYXlfZ3JhcGhpY3Nfb2JqZWN0X2lkX2dldF9lbmNvZGVyX2lk KGFtZGdwdV9lbmNvZGVyLT5lbmNvZGVyX29iamVjdF9pZCk7CiAKIAlpZiAoYW1kZ3B1X2VuY29k ZXItPmRldmljZXMgJiAoQVRPTV9ERVZJQ0VfVFZfU1VQUE9SVCB8CiAJCQkJICAgICAgIEFUT01f REVWSUNFX0NWX1NVUFBPUlQgfApAQCAtMTUyNCw4ICsxNTU0LDggQEAgYW1kZ3B1X2F0b21iaW9z X2VuY29kZXJfZGFjX2xvYWRfZGV0ZWN0KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKIAog CQlhcmdzLnNEYWNsb2FkLnVjTWlzYyA9IDA7CiAKLQkJaWYgKChhbWRncHVfZW5jb2Rlci0+ZW5j b2Rlcl9pZCA9PSBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9EQUMxKSB8fAotCQkgICAgKGFt ZGdwdV9lbmNvZGVyLT5lbmNvZGVyX2lkID09IEVOQ09ERVJfT0JKRUNUX0lEX0lOVEVSTkFMX0tM RFNDUF9EQUMxKSkKKwkJaWYgKChlbmNfaWQgPT0gRU5DT0RFUl9JRF9JTlRFUk5BTF9EQUMxKSB8 fAorCQkgICAgKGVuY19pZCA9PSBFTkNPREVSX0lEX0lOVEVSTkFMX0tMRFNDUF9EQUMxKSkKIAkJ CWFyZ3Muc0RhY2xvYWQudWNEYWNUeXBlID0gQVRPTV9EQUNfQTsKIAkJZWxzZQogCQkJYXJncy5z RGFjbG9hZC51Y0RhY1R5cGUgPSBBVE9NX0RBQ19COwpAQCAtMTgxMSw3ICsxODQxLDcgQEAgYW1k Z3B1X2F0b21iaW9zX2VuY29kZXJfZ2V0X2xjZF9pbmZvKHN0cnVjdCBhbWRncHVfZW5jb2RlciAq ZW5jb2RlcikKIAl1bmlvbiBsdmRzX2luZm8gKmx2ZHNfaW5mbzsKIAl1aW50OF90IGZyZXYsIGNy ZXY7CiAJc3RydWN0IGFtZGdwdV9lbmNvZGVyX2F0b21fZGlnICpsdmRzID0gTlVMTDsKLQlpbnQg ZW5jb2Rlcl9lbnVtID0gKGVuY29kZXItPmVuY29kZXJfZW51bSAmIEVOVU1fSURfTUFTSykgPj4g RU5VTV9JRF9TSElGVDsKKwllbnVtIG9iamVjdF9lbnVtX2lkIGVuY29kZXJfZW51bSA9IGVuY29k ZXItPmVuY29kZXJfb2JqZWN0X2lkLmVudW1faWQ7CiAKIAlpZiAoYW1kZ3B1X2F0b21fcGFyc2Vf ZGF0YV9oZWFkZXIobW9kZV9pbmZvLT5hdG9tX2NvbnRleHQsIGluZGV4LCBOVUxMLAogCQkJCSAg ICZmcmV2LCAmY3JldiwgJmRhdGFfb2Zmc2V0KSkgewpAQCAtMTg2Nyw3ICsxODk3LDcgQEAgYW1k Z3B1X2F0b21iaW9zX2VuY29kZXJfZ2V0X2xjZF9pbmZvKHN0cnVjdCBhbWRncHVfZW5jb2RlciAq ZW5jb2RlcikKIAogCQllbmNvZGVyLT5uYXRpdmVfbW9kZSA9IGx2ZHMtPm5hdGl2ZV9tb2RlOwog Ci0JCWlmIChlbmNvZGVyX2VudW0gPT0gMikKKwkJaWYgKGVuY29kZXJfZW51bSA9PSBFTlVNX0lE XzIpCiAJCQlsdmRzLT5saW5rYiA9IHRydWU7CiAJCWVsc2UKIAkJCWx2ZHMtPmxpbmtiID0gZmFs c2U7CkBAIC0xOTQzLDcgKzE5NzMsNyBAQCBhbWRncHVfYXRvbWJpb3NfZW5jb2Rlcl9nZXRfbGNk X2luZm8oc3RydWN0IGFtZGdwdV9lbmNvZGVyICplbmNvZGVyKQogc3RydWN0IGFtZGdwdV9lbmNv ZGVyX2F0b21fZGlnICoKIGFtZGdwdV9hdG9tYmlvc19lbmNvZGVyX2dldF9kaWdfaW5mbyhzdHJ1 Y3QgYW1kZ3B1X2VuY29kZXIgKmFtZGdwdV9lbmNvZGVyKQogewotCWludCBlbmNvZGVyX2VudW0g PSAoYW1kZ3B1X2VuY29kZXItPmVuY29kZXJfZW51bSAmIEVOVU1fSURfTUFTSykgPj4gRU5VTV9J RF9TSElGVDsKKwllbnVtIG9iamVjdF9lbnVtX2lkIGVuY29kZXJfZW51bSA9IGFtZGdwdV9lbmNv ZGVyLT5lbmNvZGVyX29iamVjdF9pZC5lbnVtX2lkOwogCXN0cnVjdCBhbWRncHVfZW5jb2Rlcl9h dG9tX2RpZyAqZGlnID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGFtZGdwdV9lbmNvZGVyX2F0b21f ZGlnKSwgR0ZQX0tFUk5FTCk7CiAKIAlpZiAoIWRpZykKQEAgLTE5NTMsNyArMTk4Myw3IEBAIGFt ZGdwdV9hdG9tYmlvc19lbmNvZGVyX2dldF9kaWdfaW5mbyhzdHJ1Y3QgYW1kZ3B1X2VuY29kZXIg KmFtZGdwdV9lbmNvZGVyKQogCWRpZy0+Y29oZXJlbnRfbW9kZSA9IHRydWU7CiAJZGlnLT5kaWdf ZW5jb2RlciA9IC0xOwogCi0JaWYgKGVuY29kZXJfZW51bSA9PSAyKQorCWlmIChlbmNvZGVyX2Vu dW0gPT0gRU5VTV9JRF8yKQogCQlkaWctPmxpbmtiID0gdHJ1ZTsKIAllbHNlCiAJCWRpZy0+bGlu a2IgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2RjZV92 MTBfMC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZGNlX3YxMF8wLmMKaW5kZXggOTBk YzczYi4uOTkzZGUwZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZGNl X3YxMF8wLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZGNlX3YxMF8wLmMKQEAg LTcxNiw2ICs3MTYsNyBAQCBzdGF0aWMgdm9pZCBkY2VfdjEwXzBfcHJvZ3JhbV9mbXQoc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyKQogCWludCBicGMgPSAwOwogCXUzMiB0bXAgPSAwOwogCWVu dW0gYW1kZ3B1X2Nvbm5lY3Rvcl9kaXRoZXIgZGl0aGVyID0gQU1ER1BVX0ZNVF9ESVRIRVJfRElT QUJMRTsKKwllbnVtIGVuY29kZXJfaWQgZW5jX2lkID0gZGlzcGxheV9ncmFwaGljc19vYmplY3Rf aWRfZ2V0X2VuY29kZXJfaWQoYW1kZ3B1X2VuY29kZXItPmVuY29kZXJfb2JqZWN0X2lkKTsKIAog CWlmIChjb25uZWN0b3IpIHsKIAkJc3RydWN0IGFtZGdwdV9jb25uZWN0b3IgKmFtZGdwdV9jb25u ZWN0b3IgPSB0b19hbWRncHVfY29ubmVjdG9yKGNvbm5lY3Rvcik7CkBAIC03MjgsOCArNzI5LDgg QEAgc3RhdGljIHZvaWQgZGNlX3YxMF8wX3Byb2dyYW1fZm10KHN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2RlcikKIAkJcmV0dXJuOwogCiAJLyogbm90IG5lZWRlZCBmb3IgYW5hbG9nICovCi0JaWYg KChhbWRncHVfZW5jb2Rlci0+ZW5jb2Rlcl9pZCA9PSBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5B TF9LTERTQ1BfREFDMSkgfHwKLQkgICAgKGFtZGdwdV9lbmNvZGVyLT5lbmNvZGVyX2lkID09IEVO Q09ERVJfT0JKRUNUX0lEX0lOVEVSTkFMX0tMRFNDUF9EQUMyKSkKKwlpZiAoKGVuY19pZCA9PSBF TkNPREVSX0lEX0lOVEVSTkFMX0tMRFNDUF9EQUMxKSB8fAorCSAgICAoZW5jX2lkID09IEVOQ09E RVJfSURfSU5URVJOQUxfS0xEU0NQX0RBQzIpKQogCQlyZXR1cm47CiAKIAlpZiAoYnBjID09IDAp CkBAIC0xOTczLDcgKzE5NzQsNyBAQCBzdGF0aWMgdm9pZCBkY2VfdjEwXzBfYWZtdF9lbmFibGUo c3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLCBib29sIGVuYWJsZSkKIAlkaWctPmFmbXQtPmVu YWJsZWQgPSBlbmFibGU7CiAKIAlEUk1fREVCVUcoIiVzYWJsaW5nIEFGTVQgaW50ZXJmYWNlIEAg MHglMDRYIGZvciBlbmNvZGVyIDB4JXhcbiIsCi0JCSAgZW5hYmxlID8gIkVuIiA6ICJEaXMiLCBk aWctPmFmbXQtPm9mZnNldCwgYW1kZ3B1X2VuY29kZXItPmVuY29kZXJfaWQpOworCQkgIGVuYWJs ZSA/ICJFbiIgOiAiRGlzIiwgZGlnLT5hZm10LT5vZmZzZXQsIGFtZGdwdV9lbmNvZGVyLT5lbmNv ZGVyX29iamVjdF9pZC5pZCk7CiB9CiAKIHN0YXRpYyBpbnQgZGNlX3YxMF8wX2FmbXRfaW5pdChz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKQEAgLTIzODcsMzEgKzIzODgsMzEgQEAgc3RhdGlj IGludCBkY2VfdjEwXzBfcGlja19kaWdfZW5jb2RlcihzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29k ZXIpCiB7CiAJc3RydWN0IGFtZGdwdV9lbmNvZGVyICphbWRncHVfZW5jb2RlciA9IHRvX2FtZGdw dV9lbmNvZGVyKGVuY29kZXIpOwogCXN0cnVjdCBhbWRncHVfZW5jb2Rlcl9hdG9tX2RpZyAqZGln ID0gYW1kZ3B1X2VuY29kZXItPmVuY19wcml2OworCWVudW0gZW5jb2Rlcl9pZCBlbmNfaWQgPSBk aXNwbGF5X2dyYXBoaWNzX29iamVjdF9pZF9nZXRfZW5jb2Rlcl9pZChhbWRncHVfZW5jb2Rlci0+ ZW5jb2Rlcl9vYmplY3RfaWQpOwogCi0Jc3dpdGNoIChhbWRncHVfZW5jb2Rlci0+ZW5jb2Rlcl9p ZCkgewotCWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURfSU5URVJOQUxfVU5JUEhZOgorCXN3aXRjaCAo ZW5jX2lkKSB7CisJY2FzZSBFTkNPREVSX0lEX0lOVEVSTkFMX1VOSVBIWToKIAkJaWYgKGRpZy0+ bGlua2IpCiAJCQlyZXR1cm4gMTsKIAkJZWxzZQogCQkJcmV0dXJuIDA7CiAJCWJyZWFrOwotCWNh c2UgRU5DT0RFUl9PQkpFQ1RfSURfSU5URVJOQUxfVU5JUEhZMToKKwljYXNlIEVOQ09ERVJfSURf SU5URVJOQUxfVU5JUEhZMToKIAkJaWYgKGRpZy0+bGlua2IpCiAJCQlyZXR1cm4gMzsKIAkJZWxz ZQotCQkJcmV0dXJuIDI7Ci0JCWJyZWFrOwotCWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURfSU5URVJO QUxfVU5JUEhZMjoKKwkJCXJldHVybiAyOyBicmVhazsKKwljYXNlIEVOQ09ERVJfSURfSU5URVJO QUxfVU5JUEhZMjoKIAkJaWYgKGRpZy0+bGlua2IpCiAJCQlyZXR1cm4gNTsKIAkJZWxzZQogCQkJ cmV0dXJuIDQ7CiAJCWJyZWFrOwotCWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURfSU5URVJOQUxfVU5J UEhZMzoKKwljYXNlIEVOQ09ERVJfSURfSU5URVJOQUxfVU5JUEhZMzoKIAkJcmV0dXJuIDY7CiAJ CWJyZWFrOwogCWRlZmF1bHQ6Ci0JCURSTV9FUlJPUigiaW52YWxpZCBlbmNvZGVyX2lkOiAweCV4 XG4iLCBhbWRncHVfZW5jb2Rlci0+ZW5jb2Rlcl9pZCk7CisJCURSTV9FUlJPUigiaW52YWxpZCBl bmNvZGVyX2lkOiAweCV4XG4iLCBhbWRncHVfZW5jb2Rlci0+ZW5jb2Rlcl9vYmplY3RfaWQuaWQp OwogCQlyZXR1cm4gMDsKIAl9CiB9CkBAIC0yNzkxLDcgKzI3OTIsNyBAQCBzdGF0aWMgdm9pZCBk Y2VfdjEwXzBfY3J0Y19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAljYXNlIEFUT01f UFBMTDI6CiAJCS8qIGRpc2FibGUgdGhlIHBwbGwgKi8KIAkJYW1kZ3B1X2F0b21iaW9zX2NydGNf cHJvZ3JhbV9wbGwoY3J0YywgYW1kZ3B1X2NydGMtPmNydGNfaWQsIGFtZGdwdV9jcnRjLT5wbGxf aWQsCi0JCQkJCSAgMCwgMCwgQVRPTV9ESVNBQkxFLCAwLCAwLCAwLCAwLCAwLCBmYWxzZSwgJnNz KTsKKwkJCQkJICAwLCBESVNQTEFZX05PX09CSkVDVCwgQVRPTV9ESVNBQkxFLCAwLCAwLCAwLCAw LCAwLCBmYWxzZSwgJnNzKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJYnJlYWs7CkBAIC0zNTQ3 LDcgKzM1NDgsNyBAQCBzdGF0aWMgdm9pZCBkY2VfdjEwXzBfZW5jb2Rlcl9wcmVwYXJlKHN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIAlpZiAoKGFtZGdwdV9lbmNvZGVyLT5hY3RpdmVfZGV2 aWNlICYKIAkgICAgIChBVE9NX0RFVklDRV9ERlBfU1VQUE9SVCB8IEFUT01fREVWSUNFX0xDRF9T VVBQT1JUKSkgfHwKIAkgICAgKGFtZGdwdV9lbmNvZGVyX2dldF9kcF9icmlkZ2VfZW5jb2Rlcl9p ZChlbmNvZGVyKSAhPQotCSAgICAgRU5DT0RFUl9PQkpFQ1RfSURfTk9ORSkpIHsKKwkgICAgIEVO Q09ERVJfSURfVU5LTk9XTikpIHsKIAkJc3RydWN0IGFtZGdwdV9lbmNvZGVyX2F0b21fZGlnICpk aWcgPSBhbWRncHVfZW5jb2Rlci0+ZW5jX3ByaXY7CiAJCWlmIChkaWcpIHsKIAkJCWRpZy0+ZGln X2VuY29kZXIgPSBkY2VfdjEwXzBfcGlja19kaWdfZW5jb2RlcihlbmNvZGVyKTsKQEAgLTM2NzYs OSArMzY3Nyw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfZnVuY3MgZGNlX3Yx MF8wX2VuY29kZXJfZnVuY3MgPSB7CiB9OwogCiBzdGF0aWMgdm9pZCBkY2VfdjEwXzBfZW5jb2Rl cl9hZGQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCi0JCQkJIHVpbnQzMl90IGVuY29kZXJf ZW51bSwKLQkJCQkgdWludDMyX3Qgc3VwcG9ydGVkX2RldmljZSwKLQkJCQkgdTE2IGNhcHMpCisJ CQkJICBzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0X2lkIGVuY29kZXJfb2JqZWN0X2lkLAorCQkJCSAg dWludDMyX3Qgc3VwcG9ydGVkX2RldmljZSwKKwkJCQkgIHUxNiBjYXBzKQogewogCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBhZGV2LT5kZGV2OwogCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rl cjsKQEAgLTM2ODcsNyArMzY4OCw4IEBAIHN0YXRpYyB2b2lkIGRjZV92MTBfMF9lbmNvZGVyX2Fk ZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkvKiBzZWUgaWYgd2UgYWxyZWFkeSBhZGRl ZCBpdCAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnkoZW5jb2RlciwgJmRldi0+bW9kZV9jb25maWcu ZW5jb2Rlcl9saXN0LCBoZWFkKSB7CiAJCWFtZGdwdV9lbmNvZGVyID0gdG9fYW1kZ3B1X2VuY29k ZXIoZW5jb2Rlcik7Ci0JCWlmIChhbWRncHVfZW5jb2Rlci0+ZW5jb2Rlcl9lbnVtID09IGVuY29k ZXJfZW51bSkgeworCQlpZiAoZGlzcGxheV9ncmFwaGljc19vYmplY3RfaWRfaXNfZXF1YWxfdW5j aGVja2VkKGFtZGdwdV9lbmNvZGVyLT5lbmNvZGVyX29iamVjdF9pZCwKKwkJCQkJCQkJICBlbmNv ZGVyX29iamVjdF9pZCkpIHsKIAkJCWFtZGdwdV9lbmNvZGVyLT5kZXZpY2VzIHw9IHN1cHBvcnRl ZF9kZXZpY2U7CiAJCQlyZXR1cm47CiAJCX0KQEAgLTM3MTgsMjUgKzM3MjAsMjQgQEAgc3RhdGlj IHZvaWQgZGNlX3YxMF8wX2VuY29kZXJfYWRkKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAog CiAJYW1kZ3B1X2VuY29kZXItPmVuY19wcml2ID0gTlVMTDsKIAotCWFtZGdwdV9lbmNvZGVyLT5l bmNvZGVyX2VudW0gPSBlbmNvZGVyX2VudW07Ci0JYW1kZ3B1X2VuY29kZXItPmVuY29kZXJfaWQg PSAoZW5jb2Rlcl9lbnVtICYgT0JKRUNUX0lEX01BU0spID4+IE9CSkVDVF9JRF9TSElGVDsKKwlh bWRncHVfZW5jb2Rlci0+ZW5jb2Rlcl9vYmplY3RfaWQgPSBlbmNvZGVyX29iamVjdF9pZDsKIAlh bWRncHVfZW5jb2Rlci0+ZGV2aWNlcyA9IHN1cHBvcnRlZF9kZXZpY2U7CiAJYW1kZ3B1X2VuY29k ZXItPnJteF90eXBlID0gUk1YX09GRjsKIAlhbWRncHVfZW5jb2Rlci0+dW5kZXJzY2FuX3R5cGUg PSBVTkRFUlNDQU5fT0ZGOwogCWFtZGdwdV9lbmNvZGVyLT5pc19leHRfZW5jb2RlciA9IGZhbHNl OwogCWFtZGdwdV9lbmNvZGVyLT5jYXBzID0gY2FwczsKIAotCXN3aXRjaCAoYW1kZ3B1X2VuY29k ZXItPmVuY29kZXJfaWQpIHsKLQljYXNlIEVOQ09ERVJfT0JKRUNUX0lEX0lOVEVSTkFMX0tMRFND UF9EQUMxOgotCWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURfSU5URVJOQUxfS0xEU0NQX0RBQzI6CisJ c3dpdGNoIChlbmNvZGVyX29iamVjdF9pZC5pZCkgeworCWNhc2UgRU5DT0RFUl9JRF9JTlRFUk5B TF9LTERTQ1BfREFDMToKKwljYXNlIEVOQ09ERVJfSURfSU5URVJOQUxfS0xEU0NQX0RBQzI6CiAJ CWRybV9lbmNvZGVyX2luaXQoZGV2LCBlbmNvZGVyLCAmZGNlX3YxMF8wX2VuY29kZXJfZnVuY3Ms CiAJCQkJIERSTV9NT0RFX0VOQ09ERVJfREFDLCBOVUxMKTsKIAkJZHJtX2VuY29kZXJfaGVscGVy X2FkZChlbmNvZGVyLCAmZGNlX3YxMF8wX2RhY19oZWxwZXJfZnVuY3MpOwogCQlicmVhazsKLQlj YXNlIEVOQ09ERVJfT0JKRUNUX0lEX0lOVEVSTkFMX1VOSVBIWToKLQljYXNlIEVOQ09ERVJfT0JK RUNUX0lEX0lOVEVSTkFMX1VOSVBIWTE6Ci0JY2FzZSBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5B TF9VTklQSFkyOgotCWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURfSU5URVJOQUxfVU5JUEhZMzoKKwlj YXNlIEVOQ09ERVJfSURfSU5URVJOQUxfVU5JUEhZOgorCWNhc2UgRU5DT0RFUl9JRF9JTlRFUk5B TF9VTklQSFkxOgorCWNhc2UgRU5DT0RFUl9JRF9JTlRFUk5BTF9VTklQSFkyOgorCWNhc2UgRU5D T0RFUl9JRF9JTlRFUk5BTF9VTklQSFkzOgogCQlpZiAoYW1kZ3B1X2VuY29kZXItPmRldmljZXMg JiAoQVRPTV9ERVZJQ0VfTENEX1NVUFBPUlQpKSB7CiAJCQlhbWRncHVfZW5jb2Rlci0+cm14X3R5 cGUgPSBSTVhfRlVMTDsKIAkJCWRybV9lbmNvZGVyX2luaXQoZGV2LCBlbmNvZGVyLCAmZGNlX3Yx MF8wX2VuY29kZXJfZnVuY3MsCkBAIC0zNzUzLDggKzM3NTQsOCBAQCBzdGF0aWMgdm9pZCBkY2Vf djEwXzBfZW5jb2Rlcl9hZGQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCX0KIAkJZHJt X2VuY29kZXJfaGVscGVyX2FkZChlbmNvZGVyLCAmZGNlX3YxMF8wX2RpZ19oZWxwZXJfZnVuY3Mp OwogCQlicmVhazsKLQljYXNlIEVOQ09ERVJfT0JKRUNUX0lEX1RSQVZJUzoKLQljYXNlIEVOQ09E RVJfT0JKRUNUX0lEX05VVE1FRzoKKwljYXNlIEVOQ09ERVJfSURfRVhURVJOQUxfVFJBVklTOgor CWNhc2UgRU5DT0RFUl9JRF9FWFRFUk5BTF9OVVRNRUc6CiAJCS8qIHRoZXNlIGFyZSBoYW5kbGVk IGJ5IHRoZSBwcmltYXJ5IGVuY29kZXJzICovCiAJCWFtZGdwdV9lbmNvZGVyLT5pc19leHRfZW5j b2RlciA9IHRydWU7CiAJCWlmIChhbWRncHVfZW5jb2Rlci0+ZGV2aWNlcyAmIChBVE9NX0RFVklD RV9MQ0RfU1VQUE9SVCkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9k Y2VfdjExXzAuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2RjZV92MTFfMC5jCmluZGV4 IGQzYzlmYjcuLmI3ZWRiYTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2RjZV92MTFfMC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2RjZV92MTFfMC5j CkBAIC02NTEsNiArNjUxLDcgQEAgc3RhdGljIHZvaWQgZGNlX3YxMV8wX3Byb2dyYW1fZm10KHN0 cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIAlpbnQgYnBjID0gMDsKIAl1MzIgdG1wID0gMDsK IAllbnVtIGFtZGdwdV9jb25uZWN0b3JfZGl0aGVyIGRpdGhlciA9IEFNREdQVV9GTVRfRElUSEVS X0RJU0FCTEU7CisJZW51bSBlbmNvZGVyX2lkIGVuY19pZCA9IGRpc3BsYXlfZ3JhcGhpY3Nfb2Jq ZWN0X2lkX2dldF9lbmNvZGVyX2lkKGFtZGdwdV9lbmNvZGVyLT5lbmNvZGVyX29iamVjdF9pZCk7 CiAKIAlpZiAoY29ubmVjdG9yKSB7CiAJCXN0cnVjdCBhbWRncHVfY29ubmVjdG9yICphbWRncHVf Y29ubmVjdG9yID0gdG9fYW1kZ3B1X2Nvbm5lY3Rvcihjb25uZWN0b3IpOwpAQCAtNjYzLDggKzY2 NCw4IEBAIHN0YXRpYyB2b2lkIGRjZV92MTFfMF9wcm9ncmFtX2ZtdChzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXIpCiAJCXJldHVybjsKIAogCS8qIG5vdCBuZWVkZWQgZm9yIGFuYWxvZyAqLwot CWlmICgoYW1kZ3B1X2VuY29kZXItPmVuY29kZXJfaWQgPT0gRU5DT0RFUl9PQkpFQ1RfSURfSU5U RVJOQUxfS0xEU0NQX0RBQzEpIHx8Ci0JICAgIChhbWRncHVfZW5jb2Rlci0+ZW5jb2Rlcl9pZCA9 PSBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9LTERTQ1BfREFDMikpCisJaWYgKChlbmNfaWQg PT0gRU5DT0RFUl9JRF9JTlRFUk5BTF9LTERTQ1BfREFDMSkgfHwKKwkgICAgKGVuY19pZCA9PSBF TkNPREVSX0lEX0lOVEVSTkFMX0tMRFNDUF9EQUMyKSkKIAkJcmV0dXJuOwogCiAJaWYgKGJwYyA9 PSAwKQpAQCAtMTkwOCw3ICsxOTA5LDcgQEAgc3RhdGljIHZvaWQgZGNlX3YxMV8wX2FmbXRfZW5h YmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwgYm9vbCBlbmFibGUpCiAJZGlnLT5hZm10 LT5lbmFibGVkID0gZW5hYmxlOwogCiAJRFJNX0RFQlVHKCIlc2FibGluZyBBRk1UIGludGVyZmFj ZSBAIDB4JTA0WCBmb3IgZW5jb2RlciAweCV4XG4iLAotCQkgIGVuYWJsZSA/ICJFbiIgOiAiRGlz IiwgZGlnLT5hZm10LT5vZmZzZXQsIGFtZGdwdV9lbmNvZGVyLT5lbmNvZGVyX2lkKTsKKwkJICBl bmFibGUgPyAiRW4iIDogIkRpcyIsIGRpZy0+YWZtdC0+b2Zmc2V0LCBhbWRncHVfZW5jb2Rlci0+ ZW5jb2Rlcl9vYmplY3RfaWQuaWQpOwogfQogCiBzdGF0aWMgaW50IGRjZV92MTFfMF9hZm10X2lu aXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCkBAIC0yMzEzLDMxICsyMzE0LDMyIEBAIHN0 YXRpYyBpbnQgZGNlX3YxMV8wX3BpY2tfZGlnX2VuY29kZXIoc3RydWN0IGRybV9lbmNvZGVyICpl bmNvZGVyKQogewogCXN0cnVjdCBhbWRncHVfZW5jb2RlciAqYW1kZ3B1X2VuY29kZXIgPSB0b19h bWRncHVfZW5jb2RlcihlbmNvZGVyKTsKIAlzdHJ1Y3QgYW1kZ3B1X2VuY29kZXJfYXRvbV9kaWcg KmRpZyA9IGFtZGdwdV9lbmNvZGVyLT5lbmNfcHJpdjsKKwllbnVtIGVuY29kZXJfaWQgZW5jX2lk ID0gZGlzcGxheV9ncmFwaGljc19vYmplY3RfaWRfZ2V0X2VuY29kZXJfaWQoYW1kZ3B1X2VuY29k ZXItPmVuY29kZXJfb2JqZWN0X2lkKTsKIAotCXN3aXRjaCAoYW1kZ3B1X2VuY29kZXItPmVuY29k ZXJfaWQpIHsKLQljYXNlIEVOQ09ERVJfT0JKRUNUX0lEX0lOVEVSTkFMX1VOSVBIWToKKwlzd2l0 Y2ggKGVuY19pZCkgeworCWNhc2UgRU5DT0RFUl9JRF9JTlRFUk5BTF9VTklQSFk6CiAJCWlmIChk aWctPmxpbmtiKQogCQkJcmV0dXJuIDE7CiAJCWVsc2UKIAkJCXJldHVybiAwOwogCQlicmVhazsK LQljYXNlIEVOQ09ERVJfT0JKRUNUX0lEX0lOVEVSTkFMX1VOSVBIWTE6CisJY2FzZSBFTkNPREVS X0lEX0lOVEVSTkFMX1VOSVBIWTE6CiAJCWlmIChkaWctPmxpbmtiKQogCQkJcmV0dXJuIDM7CiAJ CWVsc2UKIAkJCXJldHVybiAyOwogCQlicmVhazsKLQljYXNlIEVOQ09ERVJfT0JKRUNUX0lEX0lO VEVSTkFMX1VOSVBIWTI6CisJY2FzZSBFTkNPREVSX0lEX0lOVEVSTkFMX1VOSVBIWTI6CiAJCWlm IChkaWctPmxpbmtiKQogCQkJcmV0dXJuIDU7CiAJCWVsc2UKIAkJCXJldHVybiA0OwogCQlicmVh azsKLQljYXNlIEVOQ09ERVJfT0JKRUNUX0lEX0lOVEVSTkFMX1VOSVBIWTM6CisJY2FzZSBFTkNP REVSX0lEX0lOVEVSTkFMX1VOSVBIWTM6CiAJCXJldHVybiA2OwogCQlicmVhazsKIAlkZWZhdWx0 OgotCQlEUk1fRVJST1IoImludmFsaWQgZW5jb2Rlcl9pZDogMHgleFxuIiwgYW1kZ3B1X2VuY29k ZXItPmVuY29kZXJfaWQpOworCQlEUk1fRVJST1IoImludmFsaWQgZW5jb2Rlcl9pZDogMHgleFxu IiwgYW1kZ3B1X2VuY29kZXItPmVuY29kZXJfb2JqZWN0X2lkLmlkKTsKIAkJcmV0dXJuIDA7CiAJ fQogfQpAQCAtMjcyNyw3ICsyNzI5LDcgQEAgc3RhdGljIHZvaWQgZGNlX3YxMV8wX2NydGNfZGlz YWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJY2FzZSBBVE9NX1BQTEwyOgogCQkvKiBkaXNh YmxlIHRoZSBwcGxsICovCiAJCWFtZGdwdV9hdG9tYmlvc19jcnRjX3Byb2dyYW1fcGxsKGNydGMs IGFtZGdwdV9jcnRjLT5jcnRjX2lkLCBhbWRncHVfY3J0Yy0+cGxsX2lkLAotCQkJCQkgIDAsIDAs IEFUT01fRElTQUJMRSwgMCwgMCwgMCwgMCwgMCwgZmFsc2UsICZzcyk7CisJCQkJCSAgMCwgRElT UExBWV9OT19PQkpFQ1QsIEFUT01fRElTQUJMRSwgMCwgMCwgMCwgMCwgMCwgZmFsc2UsICZzcyk7 CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCWJyZWFrOwpAQCAtMzQ4OCw3ICszNDkwLDcgQEAgc3Rh dGljIHZvaWQgZGNlX3YxMV8wX2VuY29kZXJfcHJlcGFyZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVu Y29kZXIpCiAJaWYgKChhbWRncHVfZW5jb2Rlci0+YWN0aXZlX2RldmljZSAmCiAJICAgICAoQVRP TV9ERVZJQ0VfREZQX1NVUFBPUlQgfCBBVE9NX0RFVklDRV9MQ0RfU1VQUE9SVCkpIHx8CiAJICAg IChhbWRncHVfZW5jb2Rlcl9nZXRfZHBfYnJpZGdlX2VuY29kZXJfaWQoZW5jb2RlcikgIT0KLQkg ICAgIEVOQ09ERVJfT0JKRUNUX0lEX05PTkUpKSB7CisJICAgICBFTkNPREVSX0lEX1VOS05PV04p KSB7CiAJCXN0cnVjdCBhbWRncHVfZW5jb2Rlcl9hdG9tX2RpZyAqZGlnID0gYW1kZ3B1X2VuY29k ZXItPmVuY19wcml2OwogCQlpZiAoZGlnKSB7CiAJCQlkaWctPmRpZ19lbmNvZGVyID0gZGNlX3Yx MV8wX3BpY2tfZGlnX2VuY29kZXIoZW5jb2Rlcik7CkBAIC0zNjE3LDkgKzM2MTksOSBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2Z1bmNzIGRjZV92MTFfMF9lbmNvZGVyX2Z1bmNz ID0gewogfTsKIAogc3RhdGljIHZvaWQgZGNlX3YxMV8wX2VuY29kZXJfYWRkKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LAotCQkJCSB1aW50MzJfdCBlbmNvZGVyX2VudW0sCi0JCQkJIHVpbnQz Ml90IHN1cHBvcnRlZF9kZXZpY2UsCi0JCQkJIHUxNiBjYXBzKQorCQkJCSAgc3RydWN0IGdyYXBo aWNzX29iamVjdF9pZCBlbmNvZGVyX29iamVjdF9pZCwKKwkJCQkgIHVpbnQzMl90IHN1cHBvcnRl ZF9kZXZpY2UsCisJCQkJICB1MTYgY2FwcykKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g YWRldi0+ZGRldjsKIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7CkBAIC0zNjI4LDcgKzM2 MzAsOCBAQCBzdGF0aWMgdm9pZCBkY2VfdjExXzBfZW5jb2Rlcl9hZGQoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYsCiAJLyogc2VlIGlmIHdlIGFscmVhZHkgYWRkZWQgaXQgKi8KIAlsaXN0X2Zv cl9lYWNoX2VudHJ5KGVuY29kZXIsICZkZXYtPm1vZGVfY29uZmlnLmVuY29kZXJfbGlzdCwgaGVh ZCkgewogCQlhbWRncHVfZW5jb2RlciA9IHRvX2FtZGdwdV9lbmNvZGVyKGVuY29kZXIpOwotCQlp ZiAoYW1kZ3B1X2VuY29kZXItPmVuY29kZXJfZW51bSA9PSBlbmNvZGVyX2VudW0pIHsKKwkJaWYg KGRpc3BsYXlfZ3JhcGhpY3Nfb2JqZWN0X2lkX2lzX2VxdWFsX3VuY2hlY2tlZChhbWRncHVfZW5j b2Rlci0+ZW5jb2Rlcl9vYmplY3RfaWQsCisJCQkJCQkJCSAgZW5jb2Rlcl9vYmplY3RfaWQpKSB7 CiAJCQlhbWRncHVfZW5jb2Rlci0+ZGV2aWNlcyB8PSBzdXBwb3J0ZWRfZGV2aWNlOwogCQkJcmV0 dXJuOwogCQl9CkBAIC0zNjU5LDI1ICszNjYyLDI0IEBAIHN0YXRpYyB2b2lkIGRjZV92MTFfMF9l bmNvZGVyX2FkZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAogCWFtZGdwdV9lbmNvZGVy LT5lbmNfcHJpdiA9IE5VTEw7CiAKLQlhbWRncHVfZW5jb2Rlci0+ZW5jb2Rlcl9lbnVtID0gZW5j b2Rlcl9lbnVtOwotCWFtZGdwdV9lbmNvZGVyLT5lbmNvZGVyX2lkID0gKGVuY29kZXJfZW51bSAm IE9CSkVDVF9JRF9NQVNLKSA+PiBPQkpFQ1RfSURfU0hJRlQ7CisJYW1kZ3B1X2VuY29kZXItPmVu Y29kZXJfb2JqZWN0X2lkID0gZW5jb2Rlcl9vYmplY3RfaWQ7CiAJYW1kZ3B1X2VuY29kZXItPmRl dmljZXMgPSBzdXBwb3J0ZWRfZGV2aWNlOwogCWFtZGdwdV9lbmNvZGVyLT5ybXhfdHlwZSA9IFJN WF9PRkY7CiAJYW1kZ3B1X2VuY29kZXItPnVuZGVyc2Nhbl90eXBlID0gVU5ERVJTQ0FOX09GRjsK IAlhbWRncHVfZW5jb2Rlci0+aXNfZXh0X2VuY29kZXIgPSBmYWxzZTsKIAlhbWRncHVfZW5jb2Rl ci0+Y2FwcyA9IGNhcHM7CiAKLQlzd2l0Y2ggKGFtZGdwdV9lbmNvZGVyLT5lbmNvZGVyX2lkKSB7 Ci0JY2FzZSBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9LTERTQ1BfREFDMToKLQljYXNlIEVO Q09ERVJfT0JKRUNUX0lEX0lOVEVSTkFMX0tMRFNDUF9EQUMyOgorCXN3aXRjaCAoZW5jb2Rlcl9v YmplY3RfaWQuaWQpIHsKKwljYXNlIEVOQ09ERVJfSURfSU5URVJOQUxfS0xEU0NQX0RBQzE6CisJ Y2FzZSBFTkNPREVSX0lEX0lOVEVSTkFMX0tMRFNDUF9EQUMyOgogCQlkcm1fZW5jb2Rlcl9pbml0 KGRldiwgZW5jb2RlciwgJmRjZV92MTFfMF9lbmNvZGVyX2Z1bmNzLAogCQkJCSBEUk1fTU9ERV9F TkNPREVSX0RBQywgTlVMTCk7CiAJCWRybV9lbmNvZGVyX2hlbHBlcl9hZGQoZW5jb2RlciwgJmRj ZV92MTFfMF9kYWNfaGVscGVyX2Z1bmNzKTsKIAkJYnJlYWs7Ci0JY2FzZSBFTkNPREVSX09CSkVD VF9JRF9JTlRFUk5BTF9VTklQSFk6Ci0JY2FzZSBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9V TklQSFkxOgotCWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURfSU5URVJOQUxfVU5JUEhZMjoKLQljYXNl IEVOQ09ERVJfT0JKRUNUX0lEX0lOVEVSTkFMX1VOSVBIWTM6CisJY2FzZSBFTkNPREVSX0lEX0lO VEVSTkFMX1VOSVBIWToKKwljYXNlIEVOQ09ERVJfSURfSU5URVJOQUxfVU5JUEhZMToKKwljYXNl IEVOQ09ERVJfSURfSU5URVJOQUxfVU5JUEhZMjoKKwljYXNlIEVOQ09ERVJfSURfSU5URVJOQUxf VU5JUEhZMzoKIAkJaWYgKGFtZGdwdV9lbmNvZGVyLT5kZXZpY2VzICYgKEFUT01fREVWSUNFX0xD RF9TVVBQT1JUKSkgewogCQkJYW1kZ3B1X2VuY29kZXItPnJteF90eXBlID0gUk1YX0ZVTEw7CiAJ CQlkcm1fZW5jb2Rlcl9pbml0KGRldiwgZW5jb2RlciwgJmRjZV92MTFfMF9lbmNvZGVyX2Z1bmNz LApAQCAtMzY5NCw4ICszNjk2LDggQEAgc3RhdGljIHZvaWQgZGNlX3YxMV8wX2VuY29kZXJfYWRk KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQl9CiAJCWRybV9lbmNvZGVyX2hlbHBlcl9h ZGQoZW5jb2RlciwgJmRjZV92MTFfMF9kaWdfaGVscGVyX2Z1bmNzKTsKIAkJYnJlYWs7Ci0JY2Fz ZSBFTkNPREVSX09CSkVDVF9JRF9UUkFWSVM6Ci0JY2FzZSBFTkNPREVSX09CSkVDVF9JRF9OVVRN RUc6CisJY2FzZSBFTkNPREVSX0lEX0VYVEVSTkFMX1RSQVZJUzoKKwljYXNlIEVOQ09ERVJfSURf RVhURVJOQUxfTlVUTUVHOgogCQkvKiB0aGVzZSBhcmUgaGFuZGxlZCBieSB0aGUgcHJpbWFyeSBl bmNvZGVycyAqLwogCQlhbWRncHVfZW5jb2Rlci0+aXNfZXh0X2VuY29kZXIgPSB0cnVlOwogCQlp ZiAoYW1kZ3B1X2VuY29kZXItPmRldmljZXMgJiAoQVRPTV9ERVZJQ0VfTENEX1NVUFBPUlQpKQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZGNlX3Y4XzAuYyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2RjZV92OF8wLmMKaW5kZXggZGRiOGViYS4uZjQ2OTkxYiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZGNlX3Y4XzAuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9kY2VfdjhfMC5jCkBAIC02NjQsNiArNjY0LDcgQEAg c3RhdGljIHZvaWQgZGNlX3Y4XzBfcHJvZ3JhbV9mbXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNv ZGVyKQogCWludCBicGMgPSAwOwogCXUzMiB0bXAgPSAwOwogCWVudW0gYW1kZ3B1X2Nvbm5lY3Rv cl9kaXRoZXIgZGl0aGVyID0gQU1ER1BVX0ZNVF9ESVRIRVJfRElTQUJMRTsKKwllbnVtIGVuY29k ZXJfaWQgZW5jX2lkID0gZGlzcGxheV9ncmFwaGljc19vYmplY3RfaWRfZ2V0X2VuY29kZXJfaWQo YW1kZ3B1X2VuY29kZXItPmVuY29kZXJfb2JqZWN0X2lkKTsKIAogCWlmIChjb25uZWN0b3IpIHsK IAkJc3RydWN0IGFtZGdwdV9jb25uZWN0b3IgKmFtZGdwdV9jb25uZWN0b3IgPSB0b19hbWRncHVf Y29ubmVjdG9yKGNvbm5lY3Rvcik7CkBAIC02NzYsOCArNjc3LDggQEAgc3RhdGljIHZvaWQgZGNl X3Y4XzBfcHJvZ3JhbV9mbXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogCQlyZXR1cm47 CiAKIAkvKiBub3QgbmVlZGVkIGZvciBhbmFsb2cgKi8KLQlpZiAoKGFtZGdwdV9lbmNvZGVyLT5l bmNvZGVyX2lkID09IEVOQ09ERVJfT0JKRUNUX0lEX0lOVEVSTkFMX0tMRFNDUF9EQUMxKSB8fAot CSAgICAoYW1kZ3B1X2VuY29kZXItPmVuY29kZXJfaWQgPT0gRU5DT0RFUl9PQkpFQ1RfSURfSU5U RVJOQUxfS0xEU0NQX0RBQzIpKQorCWlmICgoZW5jX2lkID09IEVOQ09ERVJfSURfSU5URVJOQUxf S0xEU0NQX0RBQzEpIHx8CisJICAgIChlbmNfaWQgPT0gRU5DT0RFUl9JRF9JTlRFUk5BTF9LTERT Q1BfREFDMikpCiAJCXJldHVybjsKIAogCWlmIChicGMgPT0gMCkKQEAgLTE5MTAsNyArMTkxMSw3 IEBAIHN0YXRpYyB2b2lkIGRjZV92OF8wX2FmbXRfZW5hYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2RlciwgYm9vbCBlbmFibGUpCiAJZGlnLT5hZm10LT5lbmFibGVkID0gZW5hYmxlOwogCiAJ RFJNX0RFQlVHKCIlc2FibGluZyBBRk1UIGludGVyZmFjZSBAIDB4JTA0WCBmb3IgZW5jb2RlciAw eCV4XG4iLAotCQkgIGVuYWJsZSA/ICJFbiIgOiAiRGlzIiwgZGlnLT5hZm10LT5vZmZzZXQsIGFt ZGdwdV9lbmNvZGVyLT5lbmNvZGVyX2lkKTsKKwkJICBlbmFibGUgPyAiRW4iIDogIkRpcyIsIGRp Zy0+YWZtdC0+b2Zmc2V0LCBhbWRncHVfZW5jb2Rlci0+ZW5jb2Rlcl9vYmplY3RfaWQuaWQpOwog fQogCiBzdGF0aWMgaW50IGRjZV92OF8wX2FmbXRfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldikKQEAgLTIyODgsMzEgKzIyODksMzEgQEAgc3RhdGljIGludCBkY2VfdjhfMF9waWNrX2Rp Z19lbmNvZGVyKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIHsKIAlzdHJ1Y3QgYW1kZ3B1 X2VuY29kZXIgKmFtZGdwdV9lbmNvZGVyID0gdG9fYW1kZ3B1X2VuY29kZXIoZW5jb2Rlcik7CiAJ c3RydWN0IGFtZGdwdV9lbmNvZGVyX2F0b21fZGlnICpkaWcgPSBhbWRncHVfZW5jb2Rlci0+ZW5j X3ByaXY7Ci0KLQlzd2l0Y2ggKGFtZGdwdV9lbmNvZGVyLT5lbmNvZGVyX2lkKSB7Ci0JY2FzZSBF TkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9VTklQSFk6CisJZW51bSBlbmNvZGVyX2lkIGVuY19p ZCA9IGRpc3BsYXlfZ3JhcGhpY3Nfb2JqZWN0X2lkX2dldF9lbmNvZGVyX2lkKGFtZGdwdV9lbmNv ZGVyLT5lbmNvZGVyX29iamVjdF9pZCk7CisJc3dpdGNoIChlbmNfaWQpIHsKKwljYXNlIEVOQ09E RVJfSURfSU5URVJOQUxfVU5JUEhZOgogCQlpZiAoZGlnLT5saW5rYikKIAkJCXJldHVybiAxOwog CQllbHNlCiAJCQlyZXR1cm4gMDsKIAkJYnJlYWs7Ci0JY2FzZSBFTkNPREVSX09CSkVDVF9JRF9J TlRFUk5BTF9VTklQSFkxOgorCWNhc2UgRU5DT0RFUl9JRF9JTlRFUk5BTF9VTklQSFkxOgogCQlp ZiAoZGlnLT5saW5rYikKIAkJCXJldHVybiAzOwogCQllbHNlCiAJCQlyZXR1cm4gMjsKIAkJYnJl YWs7Ci0JY2FzZSBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9VTklQSFkyOgorCWNhc2UgRU5D T0RFUl9JRF9JTlRFUk5BTF9VTklQSFkyOgogCQlpZiAoZGlnLT5saW5rYikKIAkJCXJldHVybiA1 OwogCQllbHNlCiAJCQlyZXR1cm4gNDsKIAkJYnJlYWs7Ci0JY2FzZSBFTkNPREVSX09CSkVDVF9J RF9JTlRFUk5BTF9VTklQSFkzOgorCWNhc2UgRU5DT0RFUl9JRF9JTlRFUk5BTF9VTklQSFkzOgog CQlyZXR1cm4gNjsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJRFJNX0VSUk9SKCJpbnZhbGlkIGVu Y29kZXJfaWQ6IDB4JXhcbiIsIGFtZGdwdV9lbmNvZGVyLT5lbmNvZGVyX2lkKTsKKwkJRFJNX0VS Uk9SKCJpbnZhbGlkIGVuY29kZXJfaWQ6IDB4JXhcbiIsIGVuY19pZCk7CiAJCXJldHVybiAwOwog CX0KIH0KQEAgLTI3MDIsNyArMjcwMyw3IEBAIHN0YXRpYyB2b2lkIGRjZV92OF8wX2NydGNfZGlz YWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJY2FzZSBBVE9NX1BQTEwyOgogCQkvKiBkaXNh YmxlIHRoZSBwcGxsICovCiAJCWFtZGdwdV9hdG9tYmlvc19jcnRjX3Byb2dyYW1fcGxsKGNydGMs IGFtZGdwdV9jcnRjLT5jcnRjX2lkLCBhbWRncHVfY3J0Yy0+cGxsX2lkLAotCQkJCQkgIDAsIDAs IEFUT01fRElTQUJMRSwgMCwgMCwgMCwgMCwgMCwgZmFsc2UsICZzcyk7CisJCQkJCQkgMCwgRElT UExBWV9OT19PQkpFQ1QsIEFUT01fRElTQUJMRSwgMCwgMCwgMCwgMCwgMCwgZmFsc2UsICZzcyk7 CiAJCWJyZWFrOwogCWNhc2UgQVRPTV9QUExMMDoKIAkJLyogZGlzYWJsZSB0aGUgcHBsbCAqLwpA QCAtMjcxMCw3ICsyNzExLDcgQEAgc3RhdGljIHZvaWQgZGNlX3Y4XzBfY3J0Y19kaXNhYmxlKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YykKIAkJICAgIChhZGV2LT5hc2ljX3R5cGUgPT0gQ0hJUF9CT05B SVJFKSB8fAogCQkgICAgKGFkZXYtPmFzaWNfdHlwZSA9PSBDSElQX0hBV0FJSSkpCiAJCQlhbWRn cHVfYXRvbWJpb3NfY3J0Y19wcm9ncmFtX3BsbChjcnRjLCBhbWRncHVfY3J0Yy0+Y3J0Y19pZCwg YW1kZ3B1X2NydGMtPnBsbF9pZCwKLQkJCQkJCSAgMCwgMCwgQVRPTV9ESVNBQkxFLCAwLCAwLCAw LCAwLCAwLCBmYWxzZSwgJnNzKTsKKwkJCQkJCQkgMCwgRElTUExBWV9OT19PQkpFQ1QsIEFUT01f RElTQUJMRSwgMCwgMCwgMCwgMCwgMCwgZmFsc2UsICZzcyk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6 CiAJCWJyZWFrOwpAQCAtMzQ3Nyw3ICszNDc4LDcgQEAgc3RhdGljIHZvaWQgZGNlX3Y4XzBfZW5j b2Rlcl9wcmVwYXJlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIAlpZiAoKGFtZGdwdV9l bmNvZGVyLT5hY3RpdmVfZGV2aWNlICYKIAkgICAgIChBVE9NX0RFVklDRV9ERlBfU1VQUE9SVCB8 IEFUT01fREVWSUNFX0xDRF9TVVBQT1JUKSkgfHwKIAkgICAgKGFtZGdwdV9lbmNvZGVyX2dldF9k cF9icmlkZ2VfZW5jb2Rlcl9pZChlbmNvZGVyKSAhPQotCSAgICAgRU5DT0RFUl9PQkpFQ1RfSURf Tk9ORSkpIHsKKwkgICAgIEVOQ09ERVJfSURfVU5LTk9XTikpIHsKIAkJc3RydWN0IGFtZGdwdV9l bmNvZGVyX2F0b21fZGlnICpkaWcgPSBhbWRncHVfZW5jb2Rlci0+ZW5jX3ByaXY7CiAJCWlmIChk aWcpIHsKIAkJCWRpZy0+ZGlnX2VuY29kZXIgPSBkY2VfdjhfMF9waWNrX2RpZ19lbmNvZGVyKGVu Y29kZXIpOwpAQCAtMzYwNiw3ICszNjA3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5j b2Rlcl9mdW5jcyBkY2VfdjhfMF9lbmNvZGVyX2Z1bmNzID0gewogfTsKIAogc3RhdGljIHZvaWQg ZGNlX3Y4XzBfZW5jb2Rlcl9hZGQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCi0JCQkJIHVp bnQzMl90IGVuY29kZXJfZW51bSwKKwkJCQkgc3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCBlbmNv ZGVyX29iamVjdF9pZCwKIAkJCQkgdWludDMyX3Qgc3VwcG9ydGVkX2RldmljZSwKIAkJCQkgdTE2 IGNhcHMpCiB7CkBAIC0zNjE3LDExICszNjE4LDExIEBAIHN0YXRpYyB2b2lkIGRjZV92OF8wX2Vu Y29kZXJfYWRkKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCS8qIHNlZSBpZiB3ZSBhbHJl YWR5IGFkZGVkIGl0ICovCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShlbmNvZGVyLCAmZGV2LT5tb2Rl X2NvbmZpZy5lbmNvZGVyX2xpc3QsIGhlYWQpIHsKIAkJYW1kZ3B1X2VuY29kZXIgPSB0b19hbWRn cHVfZW5jb2RlcihlbmNvZGVyKTsKLQkJaWYgKGFtZGdwdV9lbmNvZGVyLT5lbmNvZGVyX2VudW0g PT0gZW5jb2Rlcl9lbnVtKSB7CisJCWlmIChkaXNwbGF5X2dyYXBoaWNzX29iamVjdF9pZF9pc19l cXVhbF91bmNoZWNrZWQoYW1kZ3B1X2VuY29kZXItPmVuY29kZXJfb2JqZWN0X2lkLAorCQkJCQkJ CQkgIGVuY29kZXJfb2JqZWN0X2lkKSkgewogCQkJYW1kZ3B1X2VuY29kZXItPmRldmljZXMgfD0g c3VwcG9ydGVkX2RldmljZTsKIAkJCXJldHVybjsKIAkJfQotCiAJfQogCiAJLyogYWRkIGEgbmV3 IG9uZSAqLwpAQCAtMzY0OCwyNSArMzY0OSwyNCBAQCBzdGF0aWMgdm9pZCBkY2VfdjhfMF9lbmNv ZGVyX2FkZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAogCWFtZGdwdV9lbmNvZGVyLT5l bmNfcHJpdiA9IE5VTEw7CiAKLQlhbWRncHVfZW5jb2Rlci0+ZW5jb2Rlcl9lbnVtID0gZW5jb2Rl cl9lbnVtOwotCWFtZGdwdV9lbmNvZGVyLT5lbmNvZGVyX2lkID0gKGVuY29kZXJfZW51bSAmIE9C SkVDVF9JRF9NQVNLKSA+PiBPQkpFQ1RfSURfU0hJRlQ7CisJYW1kZ3B1X2VuY29kZXItPmVuY29k ZXJfb2JqZWN0X2lkID0gZW5jb2Rlcl9vYmplY3RfaWQ7CiAJYW1kZ3B1X2VuY29kZXItPmRldmlj ZXMgPSBzdXBwb3J0ZWRfZGV2aWNlOwogCWFtZGdwdV9lbmNvZGVyLT5ybXhfdHlwZSA9IFJNWF9P RkY7CiAJYW1kZ3B1X2VuY29kZXItPnVuZGVyc2Nhbl90eXBlID0gVU5ERVJTQ0FOX09GRjsKIAlh bWRncHVfZW5jb2Rlci0+aXNfZXh0X2VuY29kZXIgPSBmYWxzZTsKIAlhbWRncHVfZW5jb2Rlci0+ Y2FwcyA9IGNhcHM7CiAKLQlzd2l0Y2ggKGFtZGdwdV9lbmNvZGVyLT5lbmNvZGVyX2lkKSB7Ci0J Y2FzZSBFTkNPREVSX09CSkVDVF9JRF9JTlRFUk5BTF9LTERTQ1BfREFDMToKLQljYXNlIEVOQ09E RVJfT0JKRUNUX0lEX0lOVEVSTkFMX0tMRFNDUF9EQUMyOgorCXN3aXRjaCAoZW5jb2Rlcl9vYmpl Y3RfaWQuaWQpIHsKKwljYXNlIEVOQ09ERVJfSURfSU5URVJOQUxfS0xEU0NQX0RBQzE6CisJY2Fz ZSBFTkNPREVSX0lEX0lOVEVSTkFMX0tMRFNDUF9EQUMyOgogCQlkcm1fZW5jb2Rlcl9pbml0KGRl diwgZW5jb2RlciwgJmRjZV92OF8wX2VuY29kZXJfZnVuY3MsCiAJCQkJIERSTV9NT0RFX0VOQ09E RVJfREFDLCBOVUxMKTsKIAkJZHJtX2VuY29kZXJfaGVscGVyX2FkZChlbmNvZGVyLCAmZGNlX3Y4 XzBfZGFjX2hlbHBlcl9mdW5jcyk7CiAJCWJyZWFrOwotCWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURf SU5URVJOQUxfVU5JUEhZOgotCWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURfSU5URVJOQUxfVU5JUEhZ MToKLQljYXNlIEVOQ09ERVJfT0JKRUNUX0lEX0lOVEVSTkFMX1VOSVBIWTI6Ci0JY2FzZSBFTkNP REVSX09CSkVDVF9JRF9JTlRFUk5BTF9VTklQSFkzOgorCWNhc2UgRU5DT0RFUl9JRF9JTlRFUk5B TF9VTklQSFk6CisJY2FzZSBFTkNPREVSX0lEX0lOVEVSTkFMX1VOSVBIWTE6CisJY2FzZSBFTkNP REVSX0lEX0lOVEVSTkFMX1VOSVBIWTI6CisJY2FzZSBFTkNPREVSX0lEX0lOVEVSTkFMX1VOSVBI WTM6CiAJCWlmIChhbWRncHVfZW5jb2Rlci0+ZGV2aWNlcyAmIChBVE9NX0RFVklDRV9MQ0RfU1VQ UE9SVCkpIHsKIAkJCWFtZGdwdV9lbmNvZGVyLT5ybXhfdHlwZSA9IFJNWF9GVUxMOwogCQkJZHJt X2VuY29kZXJfaW5pdChkZXYsIGVuY29kZXIsICZkY2VfdjhfMF9lbmNvZGVyX2Z1bmNzLApAQCAt MzY4Myw4ICszNjgzLDggQEAgc3RhdGljIHZvaWQgZGNlX3Y4XzBfZW5jb2Rlcl9hZGQoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCX0KIAkJZHJtX2VuY29kZXJfaGVscGVyX2FkZChlbmNv ZGVyLCAmZGNlX3Y4XzBfZGlnX2hlbHBlcl9mdW5jcyk7CiAJCWJyZWFrOwotCWNhc2UgRU5DT0RF Ul9PQkpFQ1RfSURfVFJBVklTOgotCWNhc2UgRU5DT0RFUl9PQkpFQ1RfSURfTlVUTUVHOgorCWNh c2UgRU5DT0RFUl9JRF9FWFRFUk5BTF9UUkFWSVM6CisJY2FzZSBFTkNPREVSX0lEX0VYVEVSTkFM X05VVE1FRzoKIAkJLyogdGhlc2UgYXJlIGhhbmRsZWQgYnkgdGhlIHByaW1hcnkgZW5jb2RlcnMg Ki8KIAkJYW1kZ3B1X2VuY29kZXItPmlzX2V4dF9lbmNvZGVyID0gdHJ1ZTsKIAkJaWYgKGFtZGdw dV9lbmNvZGVyLT5kZXZpY2VzICYgKEFUT01fREVWSUNFX0xDRF9TVVBQT1JUKSkKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvaW5jbHVkZS9kaXNwbGF5X2dycGhfb2JqZWN0X2lkLmgg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2luY2x1ZGUvZGlzcGxheV9ncnBoX29iamVjdF9pZC5oCmlu ZGV4IDJiYjg2NDIuLjlmYmY3ZmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvaW5j bHVkZS9kaXNwbGF5X2dycGhfb2JqZWN0X2lkLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9p bmNsdWRlL2Rpc3BsYXlfZ3JwaF9vYmplY3RfaWQuaApAQCAtMzE1LDQgKzMxNSw1IEBAIHN0YXRp YyBpbmxpbmUgdWludDMyX3QgZGlzcGxheV9ncmFwaGljc19vYmplY3RfaWRfdG9fdWludChzdHJ1 Y3QgZ3JhcGhpY3Nfb2JqZWN0CiAJcmV0dXJuIG9iamVjdF9pZDsKIH0KIAorI2RlZmluZSBESVNQ TEFZX05PX09CSkVDVCAoc3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCl7MH0KICNlbmRpZgotLSAK Mi41LjUKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=