From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: [PATCH v2 1/2] drm/i915: Use intel_ types more consistently for watermark code (v2) Date: Mon, 10 Dec 2018 13:54:14 -0800 Message-ID: <20181210215415.19854-1-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 500C489E05 for ; Mon, 10 Dec 2018 21:54:34 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org VHJ5IHRvIGJlIG1vcmUgY29uc2lzdGVudCBhYm91dCBpbnRlbF8qIHR5cGVzIHJhdGhlciB0aGFu IGRybV8qIHR5cGVzCmZvciBsb3dlci1sZXZlbCBkcml2ZXIgZnVuY3Rpb25zLgoKdjI6CiAtIEFs c28gZHJvcCB0aGUgaW50ZWxfY3J0YyBwYXJhbWV0ZXIgZnJvbSBjb21wdXRlX2ludGVybWVkaWF0 ZV93bSgpCiAgIHNpbmNlIHdlIGNhbiBqdXN0IGV4dHJhY3QgaXQgZnJvbSB0aGUgY3J0Y19zdGF0 ZSBwYXJhbWV0ZXIuIChWaWxsZSkKClNpZ25lZC1vZmYtYnk6IE1hdHQgUm9wZXIgPG1hdHRoZXcu ZC5yb3BlckBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5 cmphbGFAbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggICAgICB8ICAgNiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwg IDMzICsrLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAgMTAgKy0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICB8IDI1NSArKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCAxMzcgaW5zZXJ0aW9ucygr KSwgMTY3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDA2ODllNjdj OTY2ZS4uMzMwZmMwZDM5YzhkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTI4MSwxNiAr MjgxLDE0IEBAIHN0cnVjdCBkcm1faTkxNV9kaXNwbGF5X2Z1bmNzIHsKIAlpbnQgKCpnZXRfZmlm b19zaXplKShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkgICAgIGVudW0g aTl4eF9wbGFuZV9pZCBpOXh4X3BsYW5lKTsKIAlpbnQgKCpjb21wdXRlX3BpcGVfd20pKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpOwotCWludCAoKmNvbXB1dGVfaW50ZXJtZWRpYXRl X3dtKShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0 YyAqaW50ZWxfY3J0YywKLQkJCQkgICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld3N0 YXRlKTsKKwlpbnQgKCpjb21wdXRlX2ludGVybWVkaWF0ZV93bSkoc3RydWN0IGludGVsX2NydGNf c3RhdGUgKm5ld3N0YXRlKTsKIAl2b2lkICgqaW5pdGlhbF93YXRlcm1hcmtzKShzdHJ1Y3QgaW50 ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKIAkJCQkgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3N0YXRlKTsKIAl2b2lkICgqYXRvbWljX3VwZGF0ZV93YXRlcm1hcmtzKShzdHJ1Y3QgaW50ZWxf YXRvbWljX3N0YXRlICpzdGF0ZSwKIAkJCQkJIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3Rh dGUpOwogCXZvaWQgKCpvcHRpbWl6ZV93YXRlcm1hcmtzKShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0 YXRlICpzdGF0ZSwKIAkJCQkgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSk7Ci0J aW50ICgqY29tcHV0ZV9nbG9iYWxfd2F0ZXJtYXJrcykoc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlKTsKKwlpbnQgKCpjb21wdXRlX2dsb2JhbF93YXRlcm1hcmtzKShzdHJ1Y3QgaW50ZWxf YXRvbWljX3N0YXRlICpzdGF0ZSk7CiAJdm9pZCAoKnVwZGF0ZV93bSkoc3RydWN0IGludGVsX2Ny dGMgKmNydGMpOwogCWludCAoKm1vZGVzZXRfY2FsY19jZGNsaykoc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlKTsKIAkvKiBSZXR1cm5zIHRoZSBhY3RpdmUgc3RhdGUgb2YgdGhlIGNydGMs IGFuZCBpZiB0aGUgY3J0YyBpcyBhY3RpdmUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMKaW5kZXggMDdjODYxODg0YzcwLi45NDNkNjgzMmIwNWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKQEAgLTEwNjYxLDEyICsxMDY2MSw5IEBAIHN0YXRpYyB2b2lkIGludGVs X2NydGNfZGVzdHJveShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAgKgogICogUmV0dXJucyB0cnVl IG9yIGZhbHNlLgogICovCi1zdGF0aWMgYm9vbCBpbnRlbF93bV9uZWVkX3VwZGF0ZShzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSwKLQkJCQkgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpCitz dGF0aWMgYm9vbCBpbnRlbF93bV9uZWVkX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KmN1ciwKKwkJCQkgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpuZXcpCiB7Ci0Jc3RydWN0IGlu dGVsX3BsYW5lX3N0YXRlICpuZXcgPSB0b19pbnRlbF9wbGFuZV9zdGF0ZShzdGF0ZSk7Ci0Jc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpjdXIgPSB0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZS0+ c3RhdGUpOwotCiAJLyogVXBkYXRlIHdhdGVybWFya3Mgb24gdGlsaW5nIG9yIHNpemUgY2hhbmdl cy4gKi8KIAlpZiAobmV3LT5iYXNlLnZpc2libGUgIT0gY3VyLT5iYXNlLnZpc2libGUpCiAJCXJl dHVybiB0cnVlOwpAQCAtMTA3NzUsNyArMTA3NzIsOCBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWlj X2NhbGNfY2hhbmdlcyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3Rh dAogCQkvKiBtdXN0IGRpc2FibGUgY3hzciBhcm91bmQgcGxhbmUgZW5hYmxlL2Rpc2FibGUgKi8K IAkJaWYgKHBsYW5lLT5pZCAhPSBQTEFORV9DVVJTT1IpCiAJCQlwaXBlX2NvbmZpZy0+ZGlzYWJs ZV9jeHNyID0gdHJ1ZTsKLQl9IGVsc2UgaWYgKGludGVsX3dtX25lZWRfdXBkYXRlKCZwbGFuZS0+ YmFzZSwgcGxhbmVfc3RhdGUpKSB7CisJfSBlbHNlIGlmIChpbnRlbF93bV9uZWVkX3VwZGF0ZSh0 b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZS0+YmFzZS5zdGF0ZSksCisJCQkJCXRvX2ludGVsX3Bs YW5lX3N0YXRlKHBsYW5lX3N0YXRlKSkpIHsKIAkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA1 ICYmICFJU19HNFgoZGV2X3ByaXYpKSB7CiAJCQkvKiBGSVhNRSBib2xsb2NrcyAqLwogCQkJcGlw ZV9jb25maWctPnVwZGF0ZV93bV9wcmUgPSB0cnVlOwpAQCAtMTA5NTQsOCArMTA5NTIsNyBAQCBz dGF0aWMgaW50IGljbF9jaGVja19udjEyX3BsYW5lcyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSkKIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19hdG9taWNfY2hlY2soc3RydWN0IGRy bV9jcnRjICpjcnRjLAogCQkJCSAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkK IHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2OwotCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmRldik7CiAJc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwogCXN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpwaXBlX2NvbmZpZyA9CiAJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Y19zdGF0ZSk7CkBA IC0xMTAwNCw5ICsxMTAwMSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19hdG9taWNfY2hlY2so c3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkgKiBvbGQgc3RhdGUgYW5kIHRoZSBuZXcgc3RhdGUu ICBXZSBjYW4gcHJvZ3JhbSB0aGVzZQogCQkgKiBpbW1lZGlhdGVseS4KIAkJICovCi0JCXJldCA9 IGRldl9wcml2LT5kaXNwbGF5LmNvbXB1dGVfaW50ZXJtZWRpYXRlX3dtKGRldiwKLQkJCQkJCQkJ aW50ZWxfY3J0YywKLQkJCQkJCQkJcGlwZV9jb25maWcpOworCQlyZXQgPSBkZXZfcHJpdi0+ZGlz cGxheS5jb21wdXRlX2ludGVybWVkaWF0ZV93bShwaXBlX2NvbmZpZyk7CiAJCWlmIChyZXQpIHsK IAkJCURSTV9ERUJVR19LTVMoIk5vIHZhbGlkIGludGVybWVkaWF0ZSBwaXBlIHdhdGVybWFya3Mg YXJlIHBvc3NpYmxlXG4iKTsKIAkJCXJldHVybiByZXQ7CkBAIC0xMTk2NCw3ICsxMTk1OSw3IEBA IHN0YXRpYyB2b2lkIHZlcmlmeV93bV9zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPCA5IHx8ICFuZXdfc3RhdGUtPmFjdGl2ZSkKIAkJcmV0dXJu OwogCi0Jc2tsX3BpcGVfd21fZ2V0X2h3X3N0YXRlKGNydGMsICZod193bSk7CisJc2tsX3BpcGVf d21fZ2V0X2h3X3N0YXRlKGludGVsX2NydGMsICZod193bSk7CiAJc3dfd20gPSAmdG9faW50ZWxf Y3J0Y19zdGF0ZShuZXdfc3RhdGUpLT53bS5za2wub3B0aW1hbDsKIAogCXNrbF9waXBlX2RkYl9n ZXRfaHdfc3RhdGUoaW50ZWxfY3J0YywgaHdfZGRiX3ksIGh3X2RkYl91dik7CkBAIC0xMjYxOSw5 ICsxMjYxNCw5IEBAIHN0YXRpYyBpbnQgaW50ZWxfbW9kZXNldF9jaGVja3Moc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlKQogICogcGhhc2UuICBUaGUgY29kZSBoZXJlIHNob3VsZCBiZSBy dW4gYWZ0ZXIgdGhlIHBlci1jcnRjIGFuZCBwZXItcGxhbmUgJ2NoZWNrJwogICogaGFuZGxlcnMg dG8gZW5zdXJlIHRoYXQgYWxsIGRlcml2ZWQgc3RhdGUgaGFzIGJlZW4gdXBkYXRlZC4KICAqLwot c3RhdGljIGludCBjYWxjX3dhdGVybWFya19kYXRhKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSkKK3N0YXRpYyBpbnQgY2FsY193YXRlcm1hcmtfZGF0YShzdHJ1Y3QgaW50ZWxfYXRvbWlj X3N0YXRlICpzdGF0ZSkKIHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gc3RhdGUtPmRldjsK KwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gc3RhdGUtPmJhc2UuZGV2OwogCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKIAogCS8qIElzIHRoZXJlIHBs YXRmb3JtLXNwZWNpZmljIHdhdGVybWFyayBpbmZvcm1hdGlvbiB0byBjYWxjdWxhdGU/ICovCkBA IC0xMjcxMyw3ICsxMjcwOCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NoZWNrKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCiAJCXJldHVybiByZXQ7CiAKIAlpbnRlbF9mYmNfY2hvb3NlX2Ny dGMoZGV2X3ByaXYsIGludGVsX3N0YXRlKTsKLQlyZXR1cm4gY2FsY193YXRlcm1hcmtfZGF0YShz dGF0ZSk7CisJcmV0dXJuIGNhbGNfd2F0ZXJtYXJrX2RhdGEoaW50ZWxfc3RhdGUpOwogfQogCiBz dGF0aWMgaW50IGludGVsX2F0b21pY19wcmVwYXJlX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LApAQCAtMTU4NDMsMTUgKzE1ODM4LDE1IEBAIGludGVsX21vZGVzZXRfc2V0dXBfaHdfc3Rh dGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAl9CiAKIAlpZiAoSVNfRzRYKGRldl9wcml2KSkg ewotCQlnNHhfd21fZ2V0X2h3X3N0YXRlKGRldik7CisJCWc0eF93bV9nZXRfaHdfc3RhdGUoZGV2 X3ByaXYpOwogCQlnNHhfd21fc2FuaXRpemUoZGV2X3ByaXYpOwogCX0gZWxzZSBpZiAoSVNfVkFM TEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKLQkJdmx2X3dt X2dldF9od19zdGF0ZShkZXYpOworCQl2bHZfd21fZ2V0X2h3X3N0YXRlKGRldl9wcml2KTsKIAkJ dmx2X3dtX3Nhbml0aXplKGRldl9wcml2KTsKIAl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gOSkgewotCQlza2xfd21fZ2V0X2h3X3N0YXRlKGRldik7CisJCXNrbF93bV9nZXRfaHdf c3RhdGUoZGV2X3ByaXYpOwogCX0gZWxzZSBpZiAoSEFTX1BDSF9TUExJVChkZXZfcHJpdikpIHsK LQkJaWxrX3dtX2dldF9od19zdGF0ZShkZXYpOworCQlpbGtfd21fZ2V0X2h3X3N0YXRlKGRldl9w cml2KTsKIAl9CiAKIAlmb3JfZWFjaF9pbnRlbF9jcnRjKGRldiwgY3J0YykgewpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaAppbmRleCBmOTRhMDRiNGFkODcuLmE4MTc3Y2NmMWQ0ZiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTIyMDAsMTYgKzIyMDAsMTYgQEAgdm9pZCBnZW42X3Jwc19i dXN5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB2b2lkIGdlbjZfcnBzX3Jl c2V0X2VpKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB2b2lkIGdlbjZfcnBz X2lkbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIHZvaWQgZ2VuNl9ycHNf Ym9vc3Qoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHN0cnVjdCBpbnRlbF9ycHNfY2xpZW50ICpy cHMpOwotdm9pZCBnNHhfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwot dm9pZCB2bHZfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwotdm9pZCBp bGtfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwotdm9pZCBza2xfd21f Z2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwordm9pZCBnNHhfd21fZ2V0X2h3 X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cit2b2lkIHZsdl93bV9n ZXRfaHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKK3ZvaWQgaWxr X3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwordm9p ZCBza2xfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7 CiB2b2lkIHNrbF9waXBlX2RkYl9nZXRfaHdfc3RhdGUoc3RydWN0IGludGVsX2NydGMgKmNydGMs CiAJCQkgICAgICAgc3RydWN0IHNrbF9kZGJfZW50cnkgKmRkYl95LAogCQkJICAgICAgIHN0cnVj dCBza2xfZGRiX2VudHJ5ICpkZGJfdXYpOwogdm9pZCBza2xfZGRiX2dldF9od19zdGF0ZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkgIHN0cnVjdCBza2xfZGRiX2FsbG9j YXRpb24gKmRkYiAvKiBvdXQgKi8pOwotdm9pZCBza2xfcGlwZV93bV9nZXRfaHdfc3RhdGUoc3Ry dWN0IGRybV9jcnRjICpjcnRjLAordm9pZCBza2xfcGlwZV93bV9nZXRfaHdfc3RhdGUoc3RydWN0 IGludGVsX2NydGMgKmNydGMsCiAJCQkgICAgICBzdHJ1Y3Qgc2tsX3BpcGVfd20gKm91dCk7CiB2 b2lkIGc0eF93bV9zYW5pdGl6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwog dm9pZCB2bHZfd21fc2FuaXRpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IDk0NjZjMTIzNjRjNC4uMmJiYTUzMTViNzY0IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMKQEAgLTEzOTksMTAgKzEzOTksOSBAQCBzdGF0aWMgaW50 IGc0eF9jb21wdXRlX3BpcGVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp CiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgZzR4X2NvbXB1dGVfaW50ZXJtZWRpYXRlX3dt KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCQkJICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjLAotCQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUp CitzdGF0aWMgaW50IGc0eF9jb21wdXRlX2ludGVybWVkaWF0ZV93bShzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUpCiB7CisJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0 b19pbnRlbF9jcnRjKG5ld19jcnRjX3N0YXRlLT5iYXNlLmNydGMpOwogCXN0cnVjdCBnNHhfd21f c3RhdGUgKmludGVybWVkaWF0ZSA9ICZuZXdfY3J0Y19zdGF0ZS0+d20uZzR4LmludGVybWVkaWF0 ZTsKIAljb25zdCBzdHJ1Y3QgZzR4X3dtX3N0YXRlICpvcHRpbWFsID0gJm5ld19jcnRjX3N0YXRl LT53bS5nNHgub3B0aW1hbDsKIAlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9zdGF0 ZSA9CkBAIC0yMDMyLDEwICsyMDMxLDkgQEAgc3RhdGljIHZvaWQgdmx2X2F0b21pY191cGRhdGVf ZmlmbyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKIAogI3VuZGVmIFZMVl9GSUZP CiAKLXN0YXRpYyBpbnQgdmx2X2NvbXB1dGVfaW50ZXJtZWRpYXRlX3dtKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCi0JCQkJICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAotCQkJCSAgICAg ICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUpCitzdGF0aWMgaW50IHZs dl9jb21wdXRlX2ludGVybWVkaWF0ZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2Ny dGNfc3RhdGUpCiB7CisJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKG5l d19jcnRjX3N0YXRlLT5iYXNlLmNydGMpOwogCXN0cnVjdCB2bHZfd21fc3RhdGUgKmludGVybWVk aWF0ZSA9ICZuZXdfY3J0Y19zdGF0ZS0+d20udmx2LmludGVybWVkaWF0ZTsKIAljb25zdCBzdHJ1 Y3Qgdmx2X3dtX3N0YXRlICpvcHRpbWFsID0gJm5ld19jcnRjX3N0YXRlLT53bS52bHYub3B0aW1h bDsKIAlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9zdGF0ZSA9CkBAIC0yNjI2LDEz ICsyNjI0LDEyIEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgaWxrX2ZiY193bV9yZWdfbWF4KGNvbnN0 IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIH0KIAogLyogQ2FsY3VsYXRlIHRo ZSBtYXhpbXVtIHByaW1hcnkvc3ByaXRlIHBsYW5lIHdhdGVybWFyayAqLwotc3RhdGljIHVuc2ln bmVkIGludCBpbGtfcGxhbmVfd21fbWF4KGNvbnN0IHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCitz dGF0aWMgdW5zaWduZWQgaW50IGlsa19wbGFuZV93bV9tYXgoY29uc3Qgc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSAgICAgaW50IGxldmVsLAogCQkJCSAgICAgY29uc3Qg c3RydWN0IGludGVsX3dtX2NvbmZpZyAqY29uZmlnLAogCQkJCSAgICAgZW51bSBpbnRlbF9kZGJf cGFydGl0aW9uaW5nIGRkYl9wYXJ0aXRpb25pbmcsCiAJCQkJICAgICBib29sIGlzX3Nwcml0ZSkK IHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAJ dW5zaWduZWQgaW50IGZpZm9fc2l6ZSA9IGlsa19kaXNwbGF5X2ZpZm9fc2l6ZShkZXZfcHJpdik7 CiAKIAkvKiBpZiBzcHJpdGVzIGFyZW4ndCBlbmFibGVkLCBzcHJpdGVzIGdldCBub3RoaW5nICov CkBAIC0yNjY4LDcgKzI2NjUsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGlsa19wbGFuZV93bV9t YXgoY29uc3Qgc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIH0KIAogLyogQ2FsY3VsYXRlIHRoZSBt YXhpbXVtIGN1cnNvciBwbGFuZSB3YXRlcm1hcmsgKi8KLXN0YXRpYyB1bnNpZ25lZCBpbnQgaWxr X2N1cnNvcl93bV9tYXgoY29uc3Qgc3RydWN0IGRybV9kZXZpY2UgKmRldiwKK3N0YXRpYyB1bnNp Z25lZCBpbnQgaWxrX2N1cnNvcl93bV9tYXgoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAogCQkJCSAgICAgIGludCBsZXZlbCwKIAkJCQkgICAgICBjb25zdCBzdHJ1Y3Qg aW50ZWxfd21fY29uZmlnICpjb25maWcpCiB7CkBAIC0yNjc3LDE5ICsyNjc0LDE5IEBAIHN0YXRp YyB1bnNpZ25lZCBpbnQgaWxrX2N1cnNvcl93bV9tYXgoY29uc3Qgc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKIAkJcmV0dXJuIDY0OwogCiAJLyogb3RoZXJ3aXNlIGp1c3QgcmVwb3J0IG1heCB0aGF0 IHJlZ2lzdGVycyBjYW4gaG9sZCAqLwotCXJldHVybiBpbGtfY3Vyc29yX3dtX3JlZ19tYXgodG9f aTkxNShkZXYpLCBsZXZlbCk7CisJcmV0dXJuIGlsa19jdXJzb3Jfd21fcmVnX21heChkZXZfcHJp diwgbGV2ZWwpOwogfQogCi1zdGF0aWMgdm9pZCBpbGtfY29tcHV0ZV93bV9tYXhpbXVtcyhjb25z dCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorc3RhdGljIHZvaWQgaWxrX2NvbXB1dGVfd21fbWF4 aW11bXMoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSAgICBp bnQgbGV2ZWwsCiAJCQkJICAgIGNvbnN0IHN0cnVjdCBpbnRlbF93bV9jb25maWcgKmNvbmZpZywK IAkJCQkgICAgZW51bSBpbnRlbF9kZGJfcGFydGl0aW9uaW5nIGRkYl9wYXJ0aXRpb25pbmcsCiAJ CQkJICAgIHN0cnVjdCBpbGtfd21fbWF4aW11bXMgKm1heCkKIHsKLQltYXgtPnByaSA9IGlsa19w bGFuZV93bV9tYXgoZGV2LCBsZXZlbCwgY29uZmlnLCBkZGJfcGFydGl0aW9uaW5nLCBmYWxzZSk7 Ci0JbWF4LT5zcHIgPSBpbGtfcGxhbmVfd21fbWF4KGRldiwgbGV2ZWwsIGNvbmZpZywgZGRiX3Bh cnRpdGlvbmluZywgdHJ1ZSk7Ci0JbWF4LT5jdXIgPSBpbGtfY3Vyc29yX3dtX21heChkZXYsIGxl dmVsLCBjb25maWcpOwotCW1heC0+ZmJjID0gaWxrX2ZiY193bV9yZWdfbWF4KHRvX2k5MTUoZGV2 KSk7CisJbWF4LT5wcmkgPSBpbGtfcGxhbmVfd21fbWF4KGRldl9wcml2LCBsZXZlbCwgY29uZmln LCBkZGJfcGFydGl0aW9uaW5nLCBmYWxzZSk7CisJbWF4LT5zcHIgPSBpbGtfcGxhbmVfd21fbWF4 KGRldl9wcml2LCBsZXZlbCwgY29uZmlnLCBkZGJfcGFydGl0aW9uaW5nLCB0cnVlKTsKKwltYXgt PmN1ciA9IGlsa19jdXJzb3Jfd21fbWF4KGRldl9wcml2LCBsZXZlbCwgY29uZmlnKTsKKwltYXgt PmZiYyA9IGlsa19mYmNfd21fcmVnX21heChkZXZfcHJpdik7CiB9CiAKIHN0YXRpYyB2b2lkIGls a19jb21wdXRlX3dtX3JlZ19tYXhpbXVtcyhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCkBAIC0zMDczLDcgKzMwNzAsNyBAQCBzdGF0aWMgdm9pZCBza2xfc2V0dXBfd21f bGF0ZW5jeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJaW50ZWxfcHJpbnRf d21fbGF0ZW5jeShkZXZfcHJpdiwgIkdlbjkgUGxhbmUiLCBkZXZfcHJpdi0+d20uc2tsX2xhdGVu Y3kpOwogfQogCi1zdGF0aWMgYm9vbCBpbGtfdmFsaWRhdGVfcGlwZV93bShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAorc3RhdGljIGJvb2wgaWxrX3ZhbGlkYXRlX3BpcGVfd20oY29uc3Qgc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSBzdHJ1Y3QgaW50ZWxfcGlwZV93bSAq cGlwZV93bSkKIHsKIAkvKiBMUDAgd2F0ZXJtYXJrIG1heGltdW1zIGRlcGVuZCBvbiB0aGlzIHBp cGUgYWxvbmUgKi8KQEAgLTMwODUsNyArMzA4Miw3IEBAIHN0YXRpYyBib29sIGlsa192YWxpZGF0 ZV9waXBlX3dtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJc3RydWN0IGlsa193bV9tYXhpbXVt cyBtYXg7CiAKIAkvKiBMUDAgd2F0ZXJtYXJrcyBhbHdheXMgdXNlIDEvMiBEREIgcGFydGl0aW9u aW5nICovCi0JaWxrX2NvbXB1dGVfd21fbWF4aW11bXMoZGV2LCAwLCAmY29uZmlnLCBJTlRFTF9E REJfUEFSVF8xXzIsICZtYXgpOworCWlsa19jb21wdXRlX3dtX21heGltdW1zKGRldl9wcml2LCAw LCAmY29uZmlnLCBJTlRFTF9EREJfUEFSVF8xXzIsICZtYXgpOwogCiAJLyogQXQgbGVhc3QgTFAw IG11c3QgYmUgdmFsaWQgKi8KIAlpZiAoIWlsa192YWxpZGF0ZV93bV9sZXZlbCgwLCAmbWF4LCAm cGlwZV93bS0+d21bMF0pKSB7CkBAIC0zMTUwLDcgKzMxNDcsNyBAQCBzdGF0aWMgaW50IGlsa19j b21wdXRlX3BpcGVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSkKIAlpZiAoSVNf SEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkKIAkJcGlwZV93bS0+ bGluZXRpbWUgPSBoc3dfY29tcHV0ZV9saW5ldGltZV93bShjc3RhdGUpOwogCi0JaWYgKCFpbGtf dmFsaWRhdGVfcGlwZV93bShkZXYsIHBpcGVfd20pKQorCWlmICghaWxrX3ZhbGlkYXRlX3BpcGVf d20oZGV2X3ByaXYsIHBpcGVfd20pKQogCQlyZXR1cm4gLUVJTlZBTDsKIAogCWlsa19jb21wdXRl X3dtX3JlZ19tYXhpbXVtcyhkZXZfcHJpdiwgMSwgJm1heCk7CkBAIC0zMTgwLDE3ICszMTc3LDE3 IEBAIHN0YXRpYyBpbnQgaWxrX2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3N0YXRlKQogICogc3RhdGUgYW5kIHRoZSBuZXcgc3RhdGUuICBUaGVzZSBjYW4gYmUgcHJv Z3JhbW1lZCB0byB0aGUgaGFyZHdhcmUKICAqIGltbWVkaWF0ZWx5LgogICovCi1zdGF0aWMgaW50 IGlsa19jb21wdXRlX2ludGVybWVkaWF0ZV93bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQkJ CSAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKLQkJCQkgICAgICAgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKm5ld3N0YXRlKQorc3RhdGljIGludCBpbGtfY29tcHV0ZV9pbnRl cm1lZGlhdGVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld3N0YXRlKQogeworCXN0cnVj dCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhuZXdzdGF0ZS0+YmFzZS5j cnRjKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGludGVs X2NydGMtPmJhc2UuZGV2KTsKIAlzdHJ1Y3QgaW50ZWxfcGlwZV93bSAqYSA9ICZuZXdzdGF0ZS0+ d20uaWxrLmludGVybWVkaWF0ZTsKIAlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9z dGF0ZSA9CiAJCXRvX2ludGVsX2F0b21pY19zdGF0ZShuZXdzdGF0ZS0+YmFzZS5zdGF0ZSk7CiAJ Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZHN0YXRlID0KIAkJaW50ZWxfYXRvbWlj X2dldF9vbGRfY3J0Y19zdGF0ZShpbnRlbF9zdGF0ZSwgaW50ZWxfY3J0Yyk7CiAJY29uc3Qgc3Ry dWN0IGludGVsX3BpcGVfd20gKmIgPSAmb2xkc3RhdGUtPndtLmlsay5vcHRpbWFsOwotCWludCBs ZXZlbCwgbWF4X2xldmVsID0gaWxrX3dtX21heF9sZXZlbCh0b19pOTE1KGRldikpOworCWludCBs ZXZlbCwgbWF4X2xldmVsID0gaWxrX3dtX21heF9sZXZlbChkZXZfcHJpdik7CiAKIAkvKgogCSAq IFN0YXJ0IHdpdGggdGhlIGZpbmFsLCB0YXJnZXQgd2F0ZXJtYXJrcywgdGhlbiBjb21iaW5lIHdp dGggdGhlCkBAIC0zMjIzLDcgKzMyMjAsNyBAQCBzdGF0aWMgaW50IGlsa19jb21wdXRlX2ludGVy bWVkaWF0ZV93bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCSAqIHRoZXJlJ3Mgbm8gc2FmZSB3 YXkgdG8gdHJhbnNpdGlvbiBmcm9tIHRoZSBvbGQgc3RhdGUgdG8KIAkgKiB0aGUgbmV3IHN0YXRl LCBzbyB3ZSBuZWVkIHRvIGZhaWwgdGhlIGF0b21pYyB0cmFuc2FjdGlvbi4KIAkgKi8KLQlpZiAo IWlsa192YWxpZGF0ZV9waXBlX3dtKGRldiwgYSkpCisJaWYgKCFpbGtfdmFsaWRhdGVfcGlwZV93 bShkZXZfcHJpdiwgYSkpCiAJCXJldHVybiAtRUlOVkFMOwogCiAJLyoKQEAgLTMyMzksNyArMzIz Niw3IEBAIHN0YXRpYyBpbnQgaWxrX2NvbXB1dGVfaW50ZXJtZWRpYXRlX3dtKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCiAvKgogICogTWVyZ2UgdGhlIHdhdGVybWFya3MgZnJvbSBhbGwgYWN0aXZl IHBpcGVzIGZvciBhIHNwZWNpZmljIGxldmVsLgogICovCi1zdGF0aWMgdm9pZCBpbGtfbWVyZ2Vf d21fbGV2ZWwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKK3N0YXRpYyB2b2lkIGlsa19tZXJnZV93 bV9sZXZlbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkgICAgICAgaW50 IGxldmVsLAogCQkJICAgICAgIHN0cnVjdCBpbnRlbF93bV9sZXZlbCAqcmV0X3dtKQogewpAQCAt MzI0Nyw3ICszMjQ0LDcgQEAgc3RhdGljIHZvaWQgaWxrX21lcmdlX3dtX2xldmVsKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCiAKIAlyZXRfd20tPmVuYWJsZSA9IHRydWU7CiAKLQlmb3JfZWFjaF9p bnRlbF9jcnRjKGRldiwgaW50ZWxfY3J0YykgeworCWZvcl9lYWNoX2ludGVsX2NydGMoJmRldl9w cml2LT5kcm0sIGludGVsX2NydGMpIHsKIAkJY29uc3Qgc3RydWN0IGludGVsX3BpcGVfd20gKmFj dGl2ZSA9ICZpbnRlbF9jcnRjLT53bS5hY3RpdmUuaWxrOwogCQljb25zdCBzdHJ1Y3QgaW50ZWxf d21fbGV2ZWwgKndtID0gJmFjdGl2ZS0+d21bbGV2ZWxdOwogCkBAIC0zMjcyLDEyICszMjY5LDEx IEBAIHN0YXRpYyB2b2lkIGlsa19tZXJnZV93bV9sZXZlbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAogLyoKICAqIE1lcmdlIGFsbCBsb3cgcG93ZXIgd2F0ZXJtYXJrcyBmb3IgYWxsIGFjdGl2ZSBw aXBlcy4KICAqLwotc3RhdGljIHZvaWQgaWxrX3dtX21lcmdlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCitzdGF0aWMgdm9pZCBpbGtfd21fbWVyZ2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAogCQkJIGNvbnN0IHN0cnVjdCBpbnRlbF93bV9jb25maWcgKmNvbmZpZywKIAkJCSBj b25zdCBzdHJ1Y3QgaWxrX3dtX21heGltdW1zICptYXgsCiAJCQkgc3RydWN0IGludGVsX3BpcGVf d20gKm1lcmdlZCkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGRldik7CiAJaW50IGxldmVsLCBtYXhfbGV2ZWwgPSBpbGtfd21fbWF4X2xldmVsKGRldl9w cml2KTsKIAlpbnQgbGFzdF9lbmFibGVkX2xldmVsID0gbWF4X2xldmVsOwogCkBAIC0zMjkzLDcg KzMyODksNyBAQCBzdGF0aWMgdm9pZCBpbGtfd21fbWVyZ2Uoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKIAlmb3IgKGxldmVsID0gMTsgbGV2ZWwgPD0gbWF4X2xldmVsOyBsZXZlbCsrKSB7CiAJCXN0 cnVjdCBpbnRlbF93bV9sZXZlbCAqd20gPSAmbWVyZ2VkLT53bVtsZXZlbF07CiAKLQkJaWxrX21l cmdlX3dtX2xldmVsKGRldiwgbGV2ZWwsIHdtKTsKKwkJaWxrX21lcmdlX3dtX2xldmVsKGRldl9w cml2LCBsZXZlbCwgd20pOwogCiAJCWlmIChsZXZlbCA+IGxhc3RfZW5hYmxlZF9sZXZlbCkKIAkJ CXdtLT5lbmFibGUgPSBmYWxzZTsKQEAgLTMzMzUsMjIgKzMzMzEsMjAgQEAgc3RhdGljIGludCBp bGtfd21fbHBfdG9fbGV2ZWwoaW50IHdtX2xwLCBjb25zdCBzdHJ1Y3QgaW50ZWxfcGlwZV93bSAq cGlwZV93bSkKIH0KIAogLyogVGhlIHZhbHVlIHdlIG5lZWQgdG8gcHJvZ3JhbSBpbnRvIHRoZSBX TV9MUHggbGF0ZW5jeSBmaWVsZCAqLwotc3RhdGljIHVuc2lnbmVkIGludCBpbGtfd21fbHBfbGF0 ZW5jeShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgbGV2ZWwpCitzdGF0aWMgdW5zaWduZWQg aW50IGlsa193bV9scF9sYXRlbmN5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK KwkJCQkgICAgICBpbnQgbGV2ZWwpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShkZXYpOwotCiAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JS T0FEV0VMTChkZXZfcHJpdikpCiAJCXJldHVybiAyICogbGV2ZWw7CiAJZWxzZQogCQlyZXR1cm4g ZGV2X3ByaXYtPndtLnByaV9sYXRlbmN5W2xldmVsXTsKIH0KIAotc3RhdGljIHZvaWQgaWxrX2Nv bXB1dGVfd21fcmVzdWx0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorc3RhdGljIHZvaWQgaWxr X2NvbXB1dGVfd21fcmVzdWx0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJ CQkJICAgY29uc3Qgc3RydWN0IGludGVsX3BpcGVfd20gKm1lcmdlZCwKIAkJCQkgICBlbnVtIGlu dGVsX2RkYl9wYXJ0aXRpb25pbmcgcGFydGl0aW9uaW5nLAogCQkJCSAgIHN0cnVjdCBpbGtfd21f dmFsdWVzICpyZXN1bHRzKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoZGV2KTsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsKIAlpbnQgbGV2 ZWwsIHdtX2xwOwogCkBAIC0zMzcwLDcgKzMzNjQsNyBAQCBzdGF0aWMgdm9pZCBpbGtfY29tcHV0 ZV93bV9yZXN1bHRzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCSAqIGRpc2FibGVkLiBEb2lu ZyBvdGhlcndpc2UgY291bGQgY2F1c2UgdW5kZXJydW5zLgogCQkgKi8KIAkJcmVzdWx0cy0+d21f bHBbd21fbHAgLSAxXSA9Ci0JCQkoaWxrX3dtX2xwX2xhdGVuY3koZGV2LCBsZXZlbCkgPDwgV00x X0xQX0xBVEVOQ1lfU0hJRlQpIHwKKwkJCShpbGtfd21fbHBfbGF0ZW5jeShkZXZfcHJpdiwgbGV2 ZWwpIDw8IFdNMV9MUF9MQVRFTkNZX1NISUZUKSB8CiAJCQkoci0+cHJpX3ZhbCA8PCBXTTFfTFBf U1JfU0hJRlQpIHwKIAkJCXItPmN1cl92YWw7CiAKQEAgLTMzOTYsNyArMzM5MCw3IEBAIHN0YXRp YyB2b2lkIGlsa19jb21wdXRlX3dtX3Jlc3VsdHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAl9 CiAKIAkvKiBMUDAgcmVnaXN0ZXIgdmFsdWVzICovCi0JZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYs IGludGVsX2NydGMpIHsKKwlmb3JfZWFjaF9pbnRlbF9jcnRjKCZkZXZfcHJpdi0+ZHJtLCBpbnRl bF9jcnRjKSB7CiAJCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKIAkJY29uc3Qg c3RydWN0IGludGVsX3dtX2xldmVsICpyID0KIAkJCSZpbnRlbF9jcnRjLT53bS5hY3RpdmUuaWxr LndtWzBdOwpAQCAtMzQxNSwxMSArMzQwOSwxMiBAQCBzdGF0aWMgdm9pZCBpbGtfY29tcHV0ZV93 bV9yZXN1bHRzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAKIC8qIEZpbmQgdGhlIHJlc3VsdCB3 aXRoIHRoZSBoaWdoZXN0IGxldmVsIGVuYWJsZWQuIENoZWNrIGZvciBlbmFibGVfZmJjX3dtIGlu CiAgKiBjYXNlIGJvdGggYXJlIGF0IHRoZSBzYW1lIGxldmVsLiBQcmVmZXIgcjEgaW4gY2FzZSB0 aGV5J3JlIHRoZSBzYW1lLiAqLwotc3RhdGljIHN0cnVjdCBpbnRlbF9waXBlX3dtICppbGtfZmlu ZF9iZXN0X3Jlc3VsdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQkJCQkJICBzdHJ1Y3QgaW50 ZWxfcGlwZV93bSAqcjEsCi0JCQkJCQkgIHN0cnVjdCBpbnRlbF9waXBlX3dtICpyMikKK3N0YXRp YyBzdHJ1Y3QgaW50ZWxfcGlwZV93bSAqCitpbGtfZmluZF9iZXN0X3Jlc3VsdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCSAgICAgc3RydWN0IGludGVsX3BpcGVfd20gKnIx LAorCQkgICAgIHN0cnVjdCBpbnRlbF9waXBlX3dtICpyMikKIHsKLQlpbnQgbGV2ZWwsIG1heF9s ZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwodG9faTkxNShkZXYpKTsKKwlpbnQgbGV2ZWwsIG1heF9s ZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2X3ByaXYpOwogCWludCBsZXZlbDEgPSAwLCBsZXZl bDIgPSAwOwogCiAJZm9yIChsZXZlbCA9IDE7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykg ewpAQCAtNDMwNywxMCArNDMwMiw5IEBAIGljbF9nZXRfdG90YWxfcmVsYXRpdmVfZGF0YV9yYXRl KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICppbnRlbF9jc3RhdGUsCiB9CiAKIHN0YXRpYyB1aW50 MTZfdAotc2tsX2RkYl9taW5fYWxsb2MoY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHN0 YXRlLCBjb25zdCBpbnQgcGxhbmUpCitza2xfZGRiX21pbl9hbGxvYyhjb25zdCBzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlLCBjb25zdCBpbnQgcGxhbmUpCiB7Ci0Jc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwc3RhdGUtPmZiOwotCXN0cnVjdCBpbnRlbF9wbGFuZV9z dGF0ZSAqaW50ZWxfcHN0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocHN0YXRlKTsKKwlzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwogCXVpbnQzMl90 IHNyY193LCBzcmNfaDsKIAl1aW50MzJfdCBtaW5fc2NhbmxpbmVzID0gODsKIAl1aW50OF90IHBs YW5lX2JwcDsKQEAgLTQzMzQsOCArNDMyOCw4IEBAIHNrbF9kZGJfbWluX2FsbG9jKGNvbnN0IHN0 cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBzdGF0ZSwgY29uc3QgaW50IHBsYW5lKQogCSAqIHRoZSA5 MC8yNzAgZGVncmVlIHBsYW5lIHJvdGF0aW9uIGNhc2VzICh0byBtYXRjaCB0aGUKIAkgKiBHVFQg bWFwcGluZyksIGhlbmNlIG5vIG5lZWQgdG8gYWNjb3VudCBmb3Igcm90YXRpb24gaGVyZS4KIAkg Ki8KLQlzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZpbnRlbF9wc3RhdGUtPmJhc2Uuc3JjKSA+PiAx NjsKLQlzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmaW50ZWxfcHN0YXRlLT5iYXNlLnNyYykgPj4g MTY7CisJc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAx NjsKKwlzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAx NjsKIAogCS8qIEhhbHZlIFVWIHBsYW5lIHdpZHRoIGFuZCBoZWlnaHQgZm9yIE5WMTIgKi8KIAlp ZiAocGxhbmUgPT0gMSkgewpAQCAtNDM0NSw3ICs0MzM5LDcgQEAgc2tsX2RkYl9taW5fYWxsb2Mo Y29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHN0YXRlLCBjb25zdCBpbnQgcGxhbmUpCiAK IAlwbGFuZV9icHAgPSBmYi0+Zm9ybWF0LT5jcHBbcGxhbmVdOwogCi0JaWYgKGRybV9yb3RhdGlv bl85MF9vcl8yNzAocHN0YXRlLT5yb3RhdGlvbikpIHsKKwlpZiAoZHJtX3JvdGF0aW9uXzkwX29y XzI3MChwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbikpIHsKIAkJc3dpdGNoIChwbGFuZV9icHAp IHsKIAkJY2FzZSAxOgogCQkJbWluX3NjYW5saW5lcyA9IDMyOwpAQCAtNDM4OCwxNCArNDM4Miwx NSBAQCBza2xfZGRiX2NhbGNfbWluKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3Rh dGUsIGludCBudW1fYWN0aXZlLAogCQkJY29udGludWU7CiAKIAkJaWYgKCFwbGFuZV9zdGF0ZS0+ bGlua2VkX3BsYW5lKSB7Ci0JCQltaW5pbXVtW3BsYW5lX2lkXSA9IHNrbF9kZGJfbWluX2FsbG9j KHBzdGF0ZSwgMCk7Ci0JCQl1dl9taW5pbXVtW3BsYW5lX2lkXSA9IHNrbF9kZGJfbWluX2FsbG9j KHBzdGF0ZSwgMSk7CisJCQltaW5pbXVtW3BsYW5lX2lkXSA9IHNrbF9kZGJfbWluX2FsbG9jKHBs YW5lX3N0YXRlLCAwKTsKKwkJCXV2X21pbmltdW1bcGxhbmVfaWRdID0KKwkJCQlza2xfZGRiX21p bl9hbGxvYyhwbGFuZV9zdGF0ZSwgMSk7CiAJCX0gZWxzZSB7CiAJCQllbnVtIHBsYW5lX2lkIHlf cGxhbmVfaWQgPQogCQkJCXBsYW5lX3N0YXRlLT5saW5rZWRfcGxhbmUtPmlkOwogCi0JCQltaW5p bXVtW3lfcGxhbmVfaWRdID0gc2tsX2RkYl9taW5fYWxsb2MocHN0YXRlLCAwKTsKLQkJCW1pbmlt dW1bcGxhbmVfaWRdID0gc2tsX2RkYl9taW5fYWxsb2MocHN0YXRlLCAxKTsKKwkJCW1pbmltdW1b eV9wbGFuZV9pZF0gPSBza2xfZGRiX21pbl9hbGxvYyhwbGFuZV9zdGF0ZSwgMCk7CisJCQltaW5p bXVtW3BsYW5lX2lkXSA9IHNrbF9kZGJfbWluX2FsbG9jKHBsYW5lX3N0YXRlLCAxKTsKIAkJfQog CX0KIApAQCAtNTI1MSwxNSArNTI0NiwxNCBAQCBib29sIHNrbF9kZGJfYWxsb2NhdGlvbl9vdmVy bGFwcyhjb25zdCBzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSAqZGRiLAogCXJldHVybiBmYWxzZTsKIH0K IAotc3RhdGljIGludCBza2xfdXBkYXRlX3BpcGVfd20oc3RydWN0IGRybV9jcnRjX3N0YXRlICpj c3RhdGUsCitzdGF0aWMgaW50IHNrbF91cGRhdGVfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3N0YXRlLAogCQkJICAgICAgY29uc3Qgc3RydWN0IHNrbF9waXBlX3dtICpvbGRfcGlw ZV93bSwKIAkJCSAgICAgIHN0cnVjdCBza2xfcGlwZV93bSAqcGlwZV93bSwgLyogb3V0ICovCiAJ CQkgICAgICBib29sICpjaGFuZ2VkIC8qIG91dCAqLykKIHsKLQlzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqaW50ZWxfY3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjc3RhdGUpOwogCWludCBy ZXQ7CiAKLQlyZXQgPSBza2xfYnVpbGRfcGlwZV93bShpbnRlbF9jc3RhdGUsIHBpcGVfd20pOwor CXJldCA9IHNrbF9idWlsZF9waXBlX3dtKGNzdGF0ZSwgcGlwZV93bSk7CiAJaWYgKHJldCkKIAkJ cmV0dXJuIHJldDsKIApAQCAtNTI3MiwxNCArNTI2NiwxNCBAQCBzdGF0aWMgaW50IHNrbF91cGRh dGVfcGlwZV93bShzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNzdGF0ZSwKIH0KIAogc3RhdGljIHVp bnQzMl90Ci1waXBlc19tb2RpZmllZChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCitw aXBlc19tb2RpZmllZChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKIHsKLQlzdHJ1 Y3QgZHJtX2NydGMgKmNydGM7Ci0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpjc3RhdGU7CisJc3Ry dWN0IGludGVsX2NydGMgKmNydGM7CisJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZTsK IAl1aW50MzJfdCBpLCByZXQgPSAwOwogCi0JZm9yX2VhY2hfbmV3X2NydGNfaW5fc3RhdGUoc3Rh dGUsIGNydGMsIGNzdGF0ZSwgaSkKLQkJcmV0IHw9IGRybV9jcnRjX21hc2soY3J0Yyk7CisJZm9y X2VhY2hfbmV3X2ludGVsX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNzdGF0ZSwgaSkKKwkJ cmV0IHw9IGRybV9jcnRjX21hc2soJmNydGMtPmJhc2UpOwogCiAJcmV0dXJuIHJldDsKIH0KQEAg LTUzMTQsMTEgKzUzMDgsMTAgQEAgc2tsX2RkYl9hZGRfYWZmZWN0ZWRfcGxhbmVzKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwKIH0KIAogc3RhdGljIGludAot c2tsX2NvbXB1dGVfZGRiKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKK3NrbF9jb21w dXRlX2RkYihzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKIHsKLQljb25zdCBzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5kZXYpOwotCXN0 cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0gdG9faW50ZWxfYXRvbWljX3N0 YXRlKHN0YXRlKTsKLQlzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIgPSAmaW50ZWxfc3Rh dGUtPndtX3Jlc3VsdHMuZGRiOworCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoc3RhdGUtPmJhc2UuZGV2KTsKKwlzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0 aW9uICpkZGIgPSAmc3RhdGUtPndtX3Jlc3VsdHMuZGRiOwogCXN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpvbGRfY3J0Y19zdGF0ZTsKIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNf c3RhdGU7CiAJc3RydWN0IGludGVsX2NydGMgKmNydGM7CkBAIC01MzI2LDcgKzUzMTksNyBAQCBz a2xfY29tcHV0ZV9kZGIoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogCiAJbWVtY3B5 KGRkYiwgJmRldl9wcml2LT53bS5za2xfaHcuZGRiLCBzaXplb2YoKmRkYikpOwogCi0JZm9yX2Vh Y2hfb2xkbmV3X2ludGVsX2NydGNfaW5fc3RhdGUoaW50ZWxfc3RhdGUsIGNydGMsIG9sZF9jcnRj X3N0YXRlLAorCWZvcl9lYWNoX29sZG5ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRj LCBvbGRfY3J0Y19zdGF0ZSwKIAkJCQkJICAgIG5ld19jcnRjX3N0YXRlLCBpKSB7CiAJCXJldCA9 IHNrbF9hbGxvY2F0ZV9waXBlX2RkYihuZXdfY3J0Y19zdGF0ZSwgZGRiKTsKIAkJaWYgKHJldCkK QEAgLTUzNzIsMTQgKzUzNjUsMTIgQEAgc2tsX3ByaW50X3dtX2NoYW5nZXMoc3RydWN0IGludGVs X2F0b21pY19zdGF0ZSAqc3RhdGUpCiB9CiAKIHN0YXRpYyBpbnQKLXNrbF9kZGJfYWRkX2FmZmVj dGVkX3BpcGVzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwgYm9vbCAqY2hhbmdlZCkK K3NrbF9kZGJfYWRkX2FmZmVjdGVkX3BpcGVzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0 YXRlLCBib29sICpjaGFuZ2VkKQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+ ZGV2OworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+YmFzZS5kZXY7CiAJY29uc3Qg c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwotCWNvbnN0 IHN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKLQljb25zdCBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNz dGF0ZTsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsKLQlzdHJ1Y3QgaW50ZWxfYXRv bWljX3N0YXRlICppbnRlbF9zdGF0ZSA9IHRvX2ludGVsX2F0b21pY19zdGF0ZShzdGF0ZSk7CisJ c3RydWN0IGludGVsX2NydGMgKmNydGM7CisJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGU7CiAJdWludDMyX3QgcmVhbGxvY19waXBlcyA9IHBpcGVzX21vZGlmaWVkKHN0YXRlKTsK IAlpbnQgcmV0LCBpOwogCkBAIC01Mzk4LDcgKzUzODksNyBAQCBza2xfZGRiX2FkZF9hZmZlY3Rl ZF9waXBlcyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsIGJvb2wgKmNoYW5nZWQpCiAJ ICogc2luY2UgYW55IHJhY2luZyBjb21taXRzIHRoYXQgd2FudCB0byB1cGRhdGUgdGhlbSB3b3Vs ZCBuZWVkIHRvCiAJICogaG9sZCBfYWxsXyBDUlRDIHN0YXRlIG11dGV4ZXMuCiAJICovCi0JZm9y X2VhY2hfbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNzdGF0ZSwgaSkKKwlmb3JfZWFj aF9uZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkKIAkJ KCpjaGFuZ2VkKSA9IHRydWU7CiAKIAlpZiAoISpjaGFuZ2VkKQpAQCAtNTQxMiwyMCArNTQwMywy MCBAQCBza2xfZGRiX2FkZF9hZmZlY3RlZF9waXBlcyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGUsIGJvb2wgKmNoYW5nZWQpCiAJICovCiAJaWYgKGRldl9wcml2LT53bS5kaXN0cnVzdF9i aW9zX3dtKSB7CiAJCXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmRldi0+bW9kZV9jb25maWcuY29u bmVjdGlvbl9tdXRleCwKLQkJCQkgICAgICAgc3RhdGUtPmFjcXVpcmVfY3R4KTsKKwkJCQkgICAg ICAgc3RhdGUtPmJhc2UuYWNxdWlyZV9jdHgpOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsK IAotCQlpbnRlbF9zdGF0ZS0+YWN0aXZlX3BpcGVfY2hhbmdlcyA9IH4wOworCQlzdGF0ZS0+YWN0 aXZlX3BpcGVfY2hhbmdlcyA9IH4wOwogCiAJCS8qCi0JCSAqIFdlIHVzdWFsbHkgb25seSBpbml0 aWFsaXplIGludGVsX3N0YXRlLT5hY3RpdmVfY3J0Y3MgaWYgd2UKKwkJICogV2UgdXN1YWxseSBv bmx5IGluaXRpYWxpemUgc3RhdGUtPmFjdGl2ZV9jcnRjcyBpZiB3ZQogCQkgKiB3ZSdyZSBkb2lu ZyBhIG1vZGVzZXQ7IG1ha2Ugc3VyZSB0aGlzIGZpZWxkIGlzIGFsd2F5cwogCQkgKiBpbml0aWFs aXplZCBkdXJpbmcgdGhlIHNhbml0aXphdGlvbiBwcm9jZXNzIHRoYXQgaGFwcGVucwogCQkgKiBv biB0aGUgZmlyc3QgY29tbWl0IHRvby4KIAkJICovCi0JCWlmICghaW50ZWxfc3RhdGUtPm1vZGVz ZXQpCi0JCQlpbnRlbF9zdGF0ZS0+YWN0aXZlX2NydGNzID0gZGV2X3ByaXYtPmFjdGl2ZV9jcnRj czsKKwkJaWYgKCFzdGF0ZS0+bW9kZXNldCkKKwkJCXN0YXRlLT5hY3RpdmVfY3J0Y3MgPSBkZXZf cHJpdi0+YWN0aXZlX2NydGNzOwogCX0KIAogCS8qCkBAIC01NDQxLDIxICs1NDMyLDE5IEBAIHNr bF9kZGJfYWRkX2FmZmVjdGVkX3BpcGVzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwg Ym9vbCAqY2hhbmdlZCkKIAkgKiBhbnkgb3RoZXIgZGlzcGxheSB1cGRhdGVzIHJhY2Ugd2l0aCB0 aGlzIHRyYW5zYWN0aW9uLCBzbyB3ZSBuZWVkCiAJICogdG8gZ3JhYiB0aGUgbG9jayBvbiAqYWxs KiBDUlRDJ3MuCiAJICovCi0JaWYgKGludGVsX3N0YXRlLT5hY3RpdmVfcGlwZV9jaGFuZ2VzIHx8 IGludGVsX3N0YXRlLT5tb2Rlc2V0KSB7CisJaWYgKHN0YXRlLT5hY3RpdmVfcGlwZV9jaGFuZ2Vz IHx8IHN0YXRlLT5tb2Rlc2V0KSB7CiAJCXJlYWxsb2NfcGlwZXMgPSB+MDsKLQkJaW50ZWxfc3Rh dGUtPndtX3Jlc3VsdHMuZGlydHlfcGlwZXMgPSB+MDsKKwkJc3RhdGUtPndtX3Jlc3VsdHMuZGly dHlfcGlwZXMgPSB+MDsKIAl9CiAKIAkvKgogCSAqIFdlJ3JlIG5vdCByZWNvbXB1dGluZyBmb3Ig dGhlIHBpcGVzIG5vdCBpbmNsdWRlZCBpbiB0aGUgY29tbWl0LCBzbwogCSAqIG1ha2Ugc3VyZSB3 ZSBzdGFydCB3aXRoIHRoZSBjdXJyZW50IHN0YXRlLgogCSAqLwotCWZvcl9lYWNoX2ludGVsX2Ny dGNfbWFzayhkZXYsIGludGVsX2NydGMsIHJlYWxsb2NfcGlwZXMpIHsKLQkJc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNzdGF0ZTsKLQotCQljc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X2NydGNf c3RhdGUoc3RhdGUsIGludGVsX2NydGMpOwotCQlpZiAoSVNfRVJSKGNzdGF0ZSkpCi0JCQlyZXR1 cm4gUFRSX0VSUihjc3RhdGUpOworCWZvcl9lYWNoX2ludGVsX2NydGNfbWFzayhkZXYsIGNydGMs IHJlYWxsb2NfcGlwZXMpIHsKKwkJY3J0Y19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfY3J0Y19z dGF0ZSgmc3RhdGUtPmJhc2UsIGNydGMpOworCQlpZiAoSVNfRVJSKGNydGNfc3RhdGUpKQorCQkJ cmV0dXJuIFBUUl9FUlIoY3J0Y19zdGF0ZSk7CiAJfQogCiAJcmV0dXJuIDA7CkBAIC01NTIyLDEz ICs1NTExLDEyIEBAIHN0YXRpYyBpbnQgc2tsX3dtX2FkZF9hZmZlY3RlZF9wbGFuZXMoc3RydWN0 IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCiB9CiAKIHN0YXRpYyBpbnQKLXNrbF9jb21wdXRl X3dtKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKK3NrbF9jb21wdXRlX3dtKHN0cnVj dCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQogewotCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsK LQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNzdGF0ZTsKLQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUg Km9sZF9jcnRjX3N0YXRlOwotCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRl ID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsKLQlzdHJ1Y3Qgc2tsX2RkYl92YWx1ZXMg KnJlc3VsdHMgPSAmaW50ZWxfc3RhdGUtPndtX3Jlc3VsdHM7CisJc3RydWN0IGludGVsX2NydGMg KmNydGM7CisJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZTsKKwlzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGU7CisJc3RydWN0IHNrbF9kZGJfdmFsdWVzICpyZXN1 bHRzID0gJnN0YXRlLT53bV9yZXN1bHRzOwogCXN0cnVjdCBza2xfcGlwZV93bSAqcGlwZV93bTsK IAlib29sIGNoYW5nZWQgPSBmYWxzZTsKIAlpbnQgcmV0LCBpOwpAQCAtNTU1MCwyNyArNTUzOCwy NSBAQCBza2xfY29tcHV0ZV93bShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJICog d2VyZW4ndCBvdGhlcndpc2UgYmVpbmcgbW9kaWZpZWQgKGFuZCBzZXQgYml0cyBpbiBkaXJ0eV9w aXBlcykgaWYKIAkgKiBwaXBlIGFsbG9jYXRpb25zIGhhZCB0byBjaGFuZ2UuCiAJICovCi0JZm9y X2VhY2hfb2xkbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBj c3RhdGUsIGkpIHsKLQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmludGVsX2NzdGF0ZSA9Ci0J CQl0b19pbnRlbF9jcnRjX3N0YXRlKGNzdGF0ZSk7CisJZm9yX2VhY2hfb2xkbmV3X2ludGVsX2Ny dGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLAorCQkJCQkgICAgY3N0YXRl LCBpKSB7CiAJCWNvbnN0IHN0cnVjdCBza2xfcGlwZV93bSAqb2xkX3BpcGVfd20gPQotCQkJJnRv X2ludGVsX2NydGNfc3RhdGUob2xkX2NydGNfc3RhdGUpLT53bS5za2wub3B0aW1hbDsKKwkJCSZv bGRfY3J0Y19zdGF0ZS0+d20uc2tsLm9wdGltYWw7CiAKLQkJcGlwZV93bSA9ICZpbnRlbF9jc3Rh dGUtPndtLnNrbC5vcHRpbWFsOworCQlwaXBlX3dtID0gJmNzdGF0ZS0+d20uc2tsLm9wdGltYWw7 CiAJCXJldCA9IHNrbF91cGRhdGVfcGlwZV93bShjc3RhdGUsIG9sZF9waXBlX3dtLCBwaXBlX3dt LCAmY2hhbmdlZCk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCi0JCXJldCA9IHNrbF93 bV9hZGRfYWZmZWN0ZWRfcGxhbmVzKGludGVsX3N0YXRlLAotCQkJCQkJIHRvX2ludGVsX2NydGMo Y3J0YykpOworCQlyZXQgPSBza2xfd21fYWRkX2FmZmVjdGVkX3BsYW5lcyhzdGF0ZSwgY3J0Yyk7 CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCiAJCWlmIChjaGFuZ2VkKQotCQkJcmVzdWx0 cy0+ZGlydHlfcGlwZXMgfD0gZHJtX2NydGNfbWFzayhjcnRjKTsKKwkJCXJlc3VsdHMtPmRpcnR5 X3BpcGVzIHw9IGRybV9jcnRjX21hc2soJmNydGMtPmJhc2UpOwogCX0KIAotCXNrbF9wcmludF93 bV9jaGFuZ2VzKGludGVsX3N0YXRlKTsKKwlza2xfcHJpbnRfd21fY2hhbmdlcyhzdGF0ZSk7CiAK IAlyZXR1cm4gMDsKIH0KQEAgLTU2MDgsMTMgKzU1OTQsMTMgQEAgc3RhdGljIHZvaWQgc2tsX2lu aXRpYWxfd20oc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAJbXV0ZXhfdW5sb2Nr KCZkZXZfcHJpdi0+d20ud21fbXV0ZXgpOwogfQogCi1zdGF0aWMgdm9pZCBpbGtfY29tcHV0ZV93 bV9jb25maWcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKK3N0YXRpYyB2b2lkIGlsa19jb21wdXRl X3dtX2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJICBzdHJ1 Y3QgaW50ZWxfd21fY29uZmlnICpjb25maWcpCiB7CiAJc3RydWN0IGludGVsX2NydGMgKmNydGM7 CiAKIAkvKiBDb21wdXRlIHRoZSBjdXJyZW50bHkgX2FjdGl2ZV8gY29uZmlnICovCi0JZm9yX2Vh Y2hfaW50ZWxfY3J0YyhkZXYsIGNydGMpIHsKKwlmb3JfZWFjaF9pbnRlbF9jcnRjKCZkZXZfcHJp di0+ZHJtLCBjcnRjKSB7CiAJCWNvbnN0IHN0cnVjdCBpbnRlbF9waXBlX3dtICp3bSA9ICZjcnRj LT53bS5hY3RpdmUuaWxrOwogCiAJCWlmICghd20tPnBpcGVfZW5hYmxlZCkKQEAgLTU2MjgsMjUg KzU2MTQsMjQgQEAgc3RhdGljIHZvaWQgaWxrX2NvbXB1dGVfd21fY29uZmlnKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCiAKIHN0YXRpYyB2b2lkIGlsa19wcm9ncmFtX3dhdGVybWFya3Moc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSAmZGV2X3ByaXYtPmRybTsKIAlzdHJ1Y3QgaW50ZWxfcGlwZV93bSBscF93bV8xXzIgPSB7fSwg bHBfd21fNV82ID0ge30sICpiZXN0X2xwX3dtOwogCXN0cnVjdCBpbGtfd21fbWF4aW11bXMgbWF4 OwogCXN0cnVjdCBpbnRlbF93bV9jb25maWcgY29uZmlnID0ge307CiAJc3RydWN0IGlsa193bV92 YWx1ZXMgcmVzdWx0cyA9IHt9OwogCWVudW0gaW50ZWxfZGRiX3BhcnRpdGlvbmluZyBwYXJ0aXRp b25pbmc7CiAKLQlpbGtfY29tcHV0ZV93bV9jb25maWcoZGV2LCAmY29uZmlnKTsKKwlpbGtfY29t cHV0ZV93bV9jb25maWcoZGV2X3ByaXYsICZjb25maWcpOwogCi0JaWxrX2NvbXB1dGVfd21fbWF4 aW11bXMoZGV2LCAxLCAmY29uZmlnLCBJTlRFTF9EREJfUEFSVF8xXzIsICZtYXgpOwotCWlsa193 bV9tZXJnZShkZXYsICZjb25maWcsICZtYXgsICZscF93bV8xXzIpOworCWlsa19jb21wdXRlX3dt X21heGltdW1zKGRldl9wcml2LCAxLCAmY29uZmlnLCBJTlRFTF9EREJfUEFSVF8xXzIsICZtYXgp OworCWlsa193bV9tZXJnZShkZXZfcHJpdiwgJmNvbmZpZywgJm1heCwgJmxwX3dtXzFfMik7CiAK IAkvKiA1LzYgc3BsaXQgb25seSBpbiBzaW5nbGUgcGlwZSBjb25maWcgb24gSVZCKyAqLwogCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDcgJiYKIAkgICAgY29uZmlnLm51bV9waXBlc19hY3Rp dmUgPT0gMSAmJiBjb25maWcuc3ByaXRlc19lbmFibGVkKSB7Ci0JCWlsa19jb21wdXRlX3dtX21h eGltdW1zKGRldiwgMSwgJmNvbmZpZywgSU5URUxfRERCX1BBUlRfNV82LCAmbWF4KTsKLQkJaWxr X3dtX21lcmdlKGRldiwgJmNvbmZpZywgJm1heCwgJmxwX3dtXzVfNik7CisJCWlsa19jb21wdXRl X3dtX21heGltdW1zKGRldl9wcml2LCAxLCAmY29uZmlnLCBJTlRFTF9EREJfUEFSVF81XzYsICZt YXgpOworCQlpbGtfd21fbWVyZ2UoZGV2X3ByaXYsICZjb25maWcsICZtYXgsICZscF93bV81XzYp OwogCi0JCWJlc3RfbHBfd20gPSBpbGtfZmluZF9iZXN0X3Jlc3VsdChkZXYsICZscF93bV8xXzIs ICZscF93bV81XzYpOworCQliZXN0X2xwX3dtID0gaWxrX2ZpbmRfYmVzdF9yZXN1bHQoZGV2X3By aXYsICZscF93bV8xXzIsICZscF93bV81XzYpOwogCX0gZWxzZSB7CiAJCWJlc3RfbHBfd20gPSAm bHBfd21fMV8yOwogCX0KQEAgLTU2NTQsNyArNTYzOSw3IEBAIHN0YXRpYyB2b2lkIGlsa19wcm9n cmFtX3dhdGVybWFya3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXBhcnRp dGlvbmluZyA9IChiZXN0X2xwX3dtID09ICZscF93bV8xXzIpID8KIAkJICAgICAgIElOVEVMX0RE Ql9QQVJUXzFfMiA6IElOVEVMX0REQl9QQVJUXzVfNjsKIAotCWlsa19jb21wdXRlX3dtX3Jlc3Vs dHMoZGV2LCBiZXN0X2xwX3dtLCBwYXJ0aXRpb25pbmcsICZyZXN1bHRzKTsKKwlpbGtfY29tcHV0 ZV93bV9yZXN1bHRzKGRldl9wcml2LCBiZXN0X2xwX3dtLCBwYXJ0aXRpb25pbmcsICZyZXN1bHRz KTsKIAogCWlsa193cml0ZV93bV92YWx1ZXMoZGV2X3ByaXYsICZyZXN1bHRzKTsKIH0KQEAgLTU2 OTQsMTkgKzU2NzksMTggQEAgc3RhdGljIGlubGluZSB2b2lkIHNrbF93bV9sZXZlbF9mcm9tX3Jl Z192YWwodWludDMyX3QgdmFsLAogCQlQTEFORV9XTV9MSU5FU19NQVNLOwogfQogCi12b2lkIHNr bF9waXBlX3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCit2b2lkIHNrbF9w aXBlX3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJCSAgICAgIHN0 cnVjdCBza2xfcGlwZV93bSAqb3V0KQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoY3J0Yy0+ZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Ci0JZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5w aXBlOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+ YmFzZS5kZXYpOworCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKIAlpbnQgbGV2ZWwsIG1h eF9sZXZlbDsKIAllbnVtIHBsYW5lX2lkIHBsYW5lX2lkOwogCXVpbnQzMl90IHZhbDsKIAogCW1h eF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2X3ByaXYpOwogCi0JZm9yX2VhY2hfcGxhbmVf aWRfb25fY3J0YyhpbnRlbF9jcnRjLCBwbGFuZV9pZCkgeworCWZvcl9lYWNoX3BsYW5lX2lkX29u X2NydGMoY3J0YywgcGxhbmVfaWQpIHsKIAkJc3RydWN0IHNrbF9wbGFuZV93bSAqd20gPSAmb3V0 LT5wbGFuZXNbcGxhbmVfaWRdOwogCiAJCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8PSBtYXhfbGV2 ZWw7IGxldmVsKyspIHsKQEAgLTU3MjYsMzAgKzU3MTAsMjcgQEAgdm9pZCBza2xfcGlwZV93bV9n ZXRfaHdfc3RhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQlza2xfd21fbGV2ZWxfZnJvbV9y ZWdfdmFsKHZhbCwgJndtLT50cmFuc193bSk7CiAJfQogCi0JaWYgKCFpbnRlbF9jcnRjLT5hY3Rp dmUpCisJaWYgKCFjcnRjLT5hY3RpdmUpCiAJCXJldHVybjsKIAogCW91dC0+bGluZXRpbWUgPSBJ OTE1X1JFQUQoUElQRV9XTV9MSU5FVElNRShwaXBlKSk7CiB9CiAKLXZvaWQgc2tsX3dtX2dldF9o d19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQordm9pZCBza2xfd21fZ2V0X2h3X3N0YXRl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAJc3RydWN0IHNrbF9kZGJfdmFsdWVz ICpodyA9ICZkZXZfcHJpdi0+d20uc2tsX2h3OwogCXN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24g KmRkYiA9ICZkZXZfcHJpdi0+d20uc2tsX2h3LmRkYjsKLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7 Ci0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGM7CisJc3RydWN0IGludGVsX2NydGMgKmNy dGM7CiAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZTsKIAogCXNrbF9kZGJfZ2V0X2h3 X3N0YXRlKGRldl9wcml2LCBkZGIpOwotCWxpc3RfZm9yX2VhY2hfZW50cnkoY3J0YywgJmRldi0+ bW9kZV9jb25maWcuY3J0Y19saXN0LCBoZWFkKSB7Ci0JCWludGVsX2NydGMgPSB0b19pbnRlbF9j cnRjKGNydGMpOwotCQljc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsK Kwlmb3JfZWFjaF9pbnRlbF9jcnRjKCZkZXZfcHJpdi0+ZHJtLCBjcnRjKSB7CisJCWNzdGF0ZSA9 IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+YmFzZS5zdGF0ZSk7CiAKIAkJc2tsX3BpcGVfd21f Z2V0X2h3X3N0YXRlKGNydGMsICZjc3RhdGUtPndtLnNrbC5vcHRpbWFsKTsKIAotCQlpZiAoaW50 ZWxfY3J0Yy0+YWN0aXZlKQotCQkJaHctPmRpcnR5X3BpcGVzIHw9IGRybV9jcnRjX21hc2soY3J0 Yyk7CisJCWlmIChjcnRjLT5hY3RpdmUpCisJCQlody0+ZGlydHlfcGlwZXMgfD0gZHJtX2NydGNf bWFzaygmY3J0Yy0+YmFzZSk7CiAJfQogCiAJaWYgKGRldl9wcml2LT5hY3RpdmVfY3J0Y3MpIHsK QEAgLTU3NTgsMTUgKzU3MzksMTQgQEAgdm9pZCBza2xfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCiAJfQogfQogCi1zdGF0aWMgdm9pZCBpbGtfcGlwZV93bV9nZXRfaHdf c3RhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQorc3RhdGljIHZvaWQgaWxrX3BpcGVfd21fZ2V0 X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQogewotCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBjcnRjLT5kZXY7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2Uu ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsK IAlzdHJ1Y3QgaWxrX3dtX3ZhbHVlcyAqaHcgPSAmZGV2X3ByaXYtPndtLmh3OwotCXN0cnVjdCBp bnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKLQlzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7 CisJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUo Y3J0Yy0+YmFzZS5zdGF0ZSk7CiAJc3RydWN0IGludGVsX3BpcGVfd20gKmFjdGl2ZSA9ICZjc3Rh dGUtPndtLmlsay5vcHRpbWFsOwotCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsK KwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7CiAJc3RhdGljIGNvbnN0IGk5MTVfcmVnX3Qg d20wX3BpcGVfcmVnW10gPSB7CiAJCVtQSVBFX0FdID0gV00wX1BJUEVBX0lMSywKIAkJW1BJUEVf Ql0gPSBXTTBfUElQRUJfSUxLLApAQCAtNTc3OSw3ICs1NzU5LDcgQEAgc3RhdGljIHZvaWQgaWxr X3BpcGVfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAogCW1lbXNldChh Y3RpdmUsIDAsIHNpemVvZigqYWN0aXZlKSk7CiAKLQlhY3RpdmUtPnBpcGVfZW5hYmxlZCA9IGlu dGVsX2NydGMtPmFjdGl2ZTsKKwlhY3RpdmUtPnBpcGVfZW5hYmxlZCA9IGNydGMtPmFjdGl2ZTsK IAogCWlmIChhY3RpdmUtPnBpcGVfZW5hYmxlZCkgewogCQl1MzIgdG1wID0gaHctPndtX3BpcGVb cGlwZV07CkBAIC01ODA3LDcgKzU3ODcsNyBAQCBzdGF0aWMgdm9pZCBpbGtfcGlwZV93bV9nZXRf aHdfc3RhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCQkJYWN0aXZlLT53bVtsZXZlbF0uZW5h YmxlID0gdHJ1ZTsKIAl9CiAKLQlpbnRlbF9jcnRjLT53bS5hY3RpdmUuaWxrID0gKmFjdGl2ZTsK KwljcnRjLT53bS5hY3RpdmUuaWxrID0gKmFjdGl2ZTsKIH0KIAogI2RlZmluZSBfRldfV00odmFs dWUsIHBsYW5lKSBcCkBAIC01OTE3LDkgKzU4OTcsOCBAQCBzdGF0aWMgdm9pZCB2bHZfcmVhZF93 bV92YWx1ZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogI3VuZGVmIF9GV19X TQogI3VuZGVmIF9GV19XTV9WTFYKIAotdm9pZCBnNHhfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCit2b2lkIGc0eF93bV9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoZGV2KTsKIAlzdHJ1Y3QgZzR4X3dtX3ZhbHVlcyAqd20gPSAmZGV2X3ByaXYt PndtLmc0eDsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKIApAQCAtNTkyNyw3ICs1OTA2LDcg QEAgdm9pZCBnNHhfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAKIAl3 bS0+Y3hzciA9IEk5MTVfUkVBRChGV19CTENfU0VMRikgJiBGV19CTENfU0VMRl9FTjsKIAotCWZv cl9lYWNoX2ludGVsX2NydGMoZGV2LCBjcnRjKSB7CisJZm9yX2VhY2hfaW50ZWxfY3J0YygmZGV2 X3ByaXYtPmRybSwgY3J0YykgewogCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSA9CiAJCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPmJhc2Uuc3RhdGUpOwogCQlzdHJ1Y3Qg ZzR4X3dtX3N0YXRlICphY3RpdmUgPSAmY3J0Yy0+d20uYWN0aXZlLmc0eDsKQEAgLTYwNTgsOSAr NjAzNyw4IEBAIHZvaWQgZzR4X3dtX3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKIAltdXRleF91bmxvY2soJmRldl9wcml2LT53bS53bV9tdXRleCk7CiB9CiAKLXZv aWQgdmx2X3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQordm9pZCB2bHZf d21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAJc3RydWN0 IHZsdl93bV92YWx1ZXMgKndtID0gJmRldl9wcml2LT53bS52bHY7CiAJc3RydWN0IGludGVsX2Ny dGMgKmNydGM7CiAJdTMyIHZhbDsKQEAgLTYxMDQsNyArNjA4Miw3IEBAIHZvaWQgdmx2X3dtX2dl dF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQltdXRleF91bmxvY2soJmRldl9w cml2LT5wY3VfbG9jayk7CiAJfQogCi0JZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYsIGNydGMpIHsK Kwlmb3JfZWFjaF9pbnRlbF9jcnRjKCZkZXZfcHJpdi0+ZHJtLCBjcnRjKSB7CiAJCXN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0KIAkJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0 Yy0+YmFzZS5zdGF0ZSk7CiAJCXN0cnVjdCB2bHZfd21fc3RhdGUgKmFjdGl2ZSA9ICZjcnRjLT53 bS5hY3RpdmUudmx2OwpAQCAtNjIyMSwxNSArNjE5OSwxNCBAQCBzdGF0aWMgdm9pZCBpbGtfaW5p dF9scF93YXRlcm1hcmtzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkgKi8K IH0KIAotdm9pZCBpbGtfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit2 b2lkIGlsa193bV9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsK IAlzdHJ1Y3QgaWxrX3dtX3ZhbHVlcyAqaHcgPSAmZGV2X3ByaXYtPndtLmh3OwotCXN0cnVjdCBk cm1fY3J0YyAqY3J0YzsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKIAogCWlsa19pbml0X2xw X3dhdGVybWFya3MoZGV2X3ByaXYpOwogCi0JZm9yX2VhY2hfY3J0YyhkZXYsIGNydGMpCisJZm9y X2VhY2hfaW50ZWxfY3J0YygmZGV2X3ByaXYtPmRybSwgY3J0YykKIAkJaWxrX3BpcGVfd21fZ2V0 X2h3X3N0YXRlKGNydGMpOwogCiAJaHctPndtX2xwWzBdID0gSTkxNV9SRUFEKFdNMV9MUF9JTEsp OwotLSAKMi4xNC40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK