From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: [PATCH v2 19/60] drm/omap: dss: Move common device operations to common structure Date: Sat, 26 May 2018 20:24:37 +0300 Message-ID: <20180526172518.18710-20-laurent.pinchart@ideasonboard.com> References: <20180526172518.18710-1-laurent.pinchart@ideasonboard.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by gabe.freedesktop.org (Postfix) with ESMTPS id 015336E36A for ; Sat, 26 May 2018 17:25:40 +0000 (UTC) In-Reply-To: <20180526172518.18710-1-laurent.pinchart@ideasonboard.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 Cc: Tomi Valkeinen List-Id: dri-devel@lists.freedesktop.org VGhlIHZhcmlvdXMgdHlwZXMgb2Ygb21hcGRzc18qX29wcyBzdHJ1Y3R1cmVzIGRlZmluZSBtdWx0 aXBsZSBvcGVyYXRpb25zCnRoYXQgYXJlIG5vdCBzcGVjaWZpYyB0byBhIGJ1cyB0eXBlLiBUbyBz aW1wbGlmeSB0aGUgY29kZSBhbmQgcmVtb3ZlCmRlcGVuZGVuY2llcyBvbiBzcGVjaWZpYyBidXMg dHlwZXMgbW92ZSB0aG9zZSBvcGVyYXRpb25zIHRvIGEgY29tbW9uCnN0cnVjdHVyZS4gT3BlcmF0 aW9ucyB0aGF0IGFyZSBzcGVjaWZpYyB0byBhIGJ1cyB0eXBlIGFyZSBrZXB0IGluIHRoZQpzcGVj aWFsaXplZCBvcHMgc3RydWN0dXJlcy4KClNpZ25lZC1vZmYtYnk6IExhdXJlbnQgUGluY2hhcnQg PGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbT4KLS0tCiAuLi4vZ3B1L2RybS9vbWFw ZHJtL2Rpc3BsYXlzL2Nvbm5lY3Rvci1hbmFsb2ctdHYuYyB8ICAxNCArLS0KIGRyaXZlcnMvZ3B1 L2RybS9vbWFwZHJtL2Rpc3BsYXlzL2Nvbm5lY3Rvci1kdmkuYyAgIHwgIDE0ICstLQogZHJpdmVy cy9ncHUvZHJtL29tYXBkcm0vZGlzcGxheXMvY29ubmVjdG9yLWhkbWkuYyAgfCAgNDIgKysrKy0t LS0KIGRyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL2Rpc3BsYXlzL2VuY29kZXItb3BhMzYyLmMgIHwg IDIwICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL2Rpc3BsYXlzL2VuY29kZXItdGZwNDEw LmMgIHwgIDIwICsrLS0KIC4uLi9ncHUvZHJtL29tYXBkcm0vZGlzcGxheXMvZW5jb2Rlci10cGQx MnMwMTUuYyAgIHwgIDQ4ICsrKystLS0tLQogZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vZGlzcGxh eXMvcGFuZWwtZHBpLmMgICAgICAgfCAgMTYgKy0tCiBkcml2ZXJzL2dwdS9kcm0vb21hcGRybS9k aXNwbGF5cy9wYW5lbC1kc2ktY20uYyAgICB8IDEyMCArKysrKysrKysrLS0tLS0tLS0tLS0KIC4u Li9vbWFwZHJtL2Rpc3BsYXlzL3BhbmVsLWxncGhpbGlwcy1sYjAzNXEwMi5jICAgIHwgIDE0ICst LQogLi4uL2RybS9vbWFwZHJtL2Rpc3BsYXlzL3BhbmVsLW5lYy1ubDgwNDhobDExLmMgICAgfCAg MTQgKy0tCiAuLi4vZHJtL29tYXBkcm0vZGlzcGxheXMvcGFuZWwtc2hhcnAtbHMwMzd2N2R3MDEu YyB8ICAxNCArLS0KIC4uLi9kcm0vb21hcGRybS9kaXNwbGF5cy9wYW5lbC1zb255LWFjeDU2NWFr bS5jICAgIHwgIDE0ICstLQogLi4uL2RybS9vbWFwZHJtL2Rpc3BsYXlzL3BhbmVsLXRwby10ZDAy OHR0ZWMxLmMgICAgfCAgMTQgKy0tCiAuLi4vZHJtL29tYXBkcm0vZGlzcGxheXMvcGFuZWwtdHBv LXRkMDQzbXRlYTEuYyAgICB8ICAxNiArLS0KIGRyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL2Rzcy9k cGkuYyAgICAgICAgICAgICAgICAgIHwgICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vb21hcGRybS9k c3MvZHNpLmMgICAgICAgICAgICAgICAgICB8ICA1MCArKysrLS0tLS0KIGRyaXZlcnMvZ3B1L2Ry bS9vbWFwZHJtL2Rzcy9oZG1pNC5jICAgICAgICAgICAgICAgIHwgIDE0ICstLQogZHJpdmVycy9n cHUvZHJtL29tYXBkcm0vZHNzL2hkbWk1LmMgICAgICAgICAgICAgICAgfCAgMTIgKystCiBkcml2 ZXJzL2dwdS9kcm0vb21hcGRybS9kc3Mvb21hcGRzcy5oICAgICAgICAgICAgICB8IDEwOSArKysr LS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vb21hcGRybS9kc3Mvc2RpLmMgICAgICAg ICAgICAgICAgICB8ICAgNCArLQogZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vZHNzL3ZlbmMuYyAg ICAgICAgICAgICAgICAgfCAgIDQgKy0KIDIxIGZpbGVzIGNoYW5nZWQsIDI1NiBpbnNlcnRpb25z KCspLCAzMjEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL29tYXBk cm0vZGlzcGxheXMvY29ubmVjdG9yLWFuYWxvZy10di5jIGIvZHJpdmVycy9ncHUvZHJtL29tYXBk cm0vZGlzcGxheXMvY29ubmVjdG9yLWFuYWxvZy10di5jCmluZGV4IDZiNjQwZWRlNjYxNC4uYTk0 ODY4ZDkzOThiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9kaXNwbGF5cy9j b25uZWN0b3ItYW5hbG9nLXR2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vZGlzcGxh eXMvY29ubmVjdG9yLWFuYWxvZy10di5jCkBAIC01OSw3ICs1OSw3IEBAIHN0YXRpYyBpbnQgdHZj X2Nvbm5lY3Qoc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2KQogCQlyZXR1cm4gUFRSX0VS Uihpbik7CiAJfQogCi0JciA9IGluLT5vcHMuYXR2LT5jb25uZWN0KGluLCBkc3NkZXYpOworCXIg PSBpbi0+b3BzLT5jb25uZWN0KGluLCBkc3NkZXYpOwogCWlmIChyKSB7CiAJCW9tYXBfZHNzX3B1 dF9kZXZpY2UoaW4pOwogCQlyZXR1cm4gcjsKQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIHZvaWQg dHZjX2Rpc2Nvbm5lY3Qoc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2KQogCWlmICghb21h cGRzc19kZXZpY2VfaXNfY29ubmVjdGVkKGRzc2RldikpCiAJCXJldHVybjsKIAotCWluLT5vcHMu YXR2LT5kaXNjb25uZWN0KGluLCBkc3NkZXYpOworCWluLT5vcHMtPmRpc2Nvbm5lY3QoaW4sIGRz c2Rldik7CiAKIAlvbWFwX2Rzc19wdXRfZGV2aWNlKGluKTsKIAlkZGF0YS0+aW4gPSBOVUxMOwpA QCAtOTksOSArOTksOSBAQCBzdGF0aWMgaW50IHR2Y19lbmFibGUoc3RydWN0IG9tYXBfZHNzX2Rl dmljZSAqZHNzZGV2KQogCWlmIChvbWFwZHNzX2RldmljZV9pc19lbmFibGVkKGRzc2RldikpCiAJ CXJldHVybiAwOwogCi0JaW4tPm9wcy5hdHYtPnNldF90aW1pbmdzKGluLCAmZGRhdGEtPnZtKTsK Kwlpbi0+b3BzLT5zZXRfdGltaW5ncyhpbiwgJmRkYXRhLT52bSk7CiAKLQlyID0gaW4tPm9wcy5h dHYtPmVuYWJsZShpbik7CisJciA9IGluLT5vcHMtPmVuYWJsZShpbik7CiAJaWYgKHIpCiAJCXJl dHVybiByOwogCkBAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIHZvaWQgdHZjX2Rpc2FibGUoc3Ry dWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2KQogCWlmICghb21hcGRzc19kZXZpY2VfaXNfZW5h YmxlZChkc3NkZXYpKQogCQlyZXR1cm47CiAKLQlpbi0+b3BzLmF0di0+ZGlzYWJsZShpbik7CisJ aW4tPm9wcy0+ZGlzYWJsZShpbik7CiAKIAlkc3NkZXYtPnN0YXRlID0gT01BUF9EU1NfRElTUExB WV9ESVNBQkxFRDsKIH0KQEAgLTEzMyw3ICsxMzMsNyBAQCBzdGF0aWMgdm9pZCB0dmNfc2V0X3Rp bWluZ3Moc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2LAogCiAJZGRhdGEtPnZtID0gKnZt OwogCi0JaW4tPm9wcy5hdHYtPnNldF90aW1pbmdzKGluLCB2bSk7CisJaW4tPm9wcy0+c2V0X3Rp bWluZ3MoaW4sIHZtKTsKIH0KIAogc3RhdGljIHZvaWQgdHZjX2dldF90aW1pbmdzKHN0cnVjdCBv bWFwX2Rzc19kZXZpY2UgKmRzc2RldiwKQEAgLTE1MCw3ICsxNTAsNyBAQCBzdGF0aWMgaW50IHR2 Y19jaGVja190aW1pbmdzKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldiwKIAlzdHJ1Y3Qg cGFuZWxfZHJ2X2RhdGEgKmRkYXRhID0gdG9fcGFuZWxfZGF0YShkc3NkZXYpOwogCXN0cnVjdCBv bWFwX2Rzc19kZXZpY2UgKmluID0gZGRhdGEtPmluOwogCi0JcmV0dXJuIGluLT5vcHMuYXR2LT5j aGVja190aW1pbmdzKGluLCB2bSk7CisJcmV0dXJuIGluLT5vcHMtPmNoZWNrX3RpbWluZ3MoaW4s IHZtKTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBvbWFwX2Rzc19kcml2ZXIgdHZjX2RyaXZl ciA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL2Rpc3BsYXlzL2Nvbm5l Y3Rvci1kdmkuYyBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL2Rpc3BsYXlzL2Nvbm5lY3Rvci1k dmkuYwppbmRleCA4NDU5OGVhMTJhOWIuLjAyMWUzYjY1MWM4OSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL29tYXBkcm0vZGlzcGxheXMvY29ubmVjdG9yLWR2aS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9vbWFwZHJtL2Rpc3BsYXlzL2Nvbm5lY3Rvci1kdmkuYwpAQCAtNzIsNyArNzIsNyBA QCBzdGF0aWMgaW50IGR2aWNfY29ubmVjdChzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYp CiAJCXJldHVybiBQVFJfRVJSKGluKTsKIAl9CiAKLQlyID0gaW4tPm9wcy5kdmktPmNvbm5lY3Qo aW4sIGRzc2Rldik7CisJciA9IGluLT5vcHMtPmNvbm5lY3QoaW4sIGRzc2Rldik7CiAJaWYgKHIp IHsKIAkJb21hcF9kc3NfcHV0X2RldmljZShpbik7CiAJCXJldHVybiByOwpAQCAtOTAsNyArOTAs NyBAQCBzdGF0aWMgdm9pZCBkdmljX2Rpc2Nvbm5lY3Qoc3RydWN0IG9tYXBfZHNzX2RldmljZSAq ZHNzZGV2KQogCWlmICghb21hcGRzc19kZXZpY2VfaXNfY29ubmVjdGVkKGRzc2RldikpCiAJCXJl dHVybjsKIAotCWluLT5vcHMuZHZpLT5kaXNjb25uZWN0KGluLCBkc3NkZXYpOworCWluLT5vcHMt PmRpc2Nvbm5lY3QoaW4sIGRzc2Rldik7CiAKIAlvbWFwX2Rzc19wdXRfZGV2aWNlKGluKTsKIAlk ZGF0YS0+aW4gPSBOVUxMOwpAQCAtMTA4LDkgKzEwOCw5IEBAIHN0YXRpYyBpbnQgZHZpY19lbmFi bGUoc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2KQogCWlmIChvbWFwZHNzX2RldmljZV9p c19lbmFibGVkKGRzc2RldikpCiAJCXJldHVybiAwOwogCi0JaW4tPm9wcy5kdmktPnNldF90aW1p bmdzKGluLCAmZGRhdGEtPnZtKTsKKwlpbi0+b3BzLT5zZXRfdGltaW5ncyhpbiwgJmRkYXRhLT52 bSk7CiAKLQlyID0gaW4tPm9wcy5kdmktPmVuYWJsZShpbik7CisJciA9IGluLT5vcHMtPmVuYWJs ZShpbik7CiAJaWYgKHIpCiAJCXJldHVybiByOwogCkBAIC0xMjcsNyArMTI3LDcgQEAgc3RhdGlj IHZvaWQgZHZpY19kaXNhYmxlKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldikKIAlpZiAo IW9tYXBkc3NfZGV2aWNlX2lzX2VuYWJsZWQoZHNzZGV2KSkKIAkJcmV0dXJuOwogCi0JaW4tPm9w cy5kdmktPmRpc2FibGUoaW4pOworCWluLT5vcHMtPmRpc2FibGUoaW4pOwogCiAJZHNzZGV2LT5z dGF0ZSA9IE9NQVBfRFNTX0RJU1BMQVlfRElTQUJMRUQ7CiB9CkBAIC0xNDAsNyArMTQwLDcgQEAg c3RhdGljIHZvaWQgZHZpY19zZXRfdGltaW5ncyhzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3Nk ZXYsCiAKIAlkZGF0YS0+dm0gPSAqdm07CiAKLQlpbi0+b3BzLmR2aS0+c2V0X3RpbWluZ3MoaW4s IHZtKTsKKwlpbi0+b3BzLT5zZXRfdGltaW5ncyhpbiwgdm0pOwogfQogCiBzdGF0aWMgdm9pZCBk dmljX2dldF90aW1pbmdzKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldiwKQEAgLTE1Nyw3 ICsxNTcsNyBAQCBzdGF0aWMgaW50IGR2aWNfY2hlY2tfdGltaW5ncyhzdHJ1Y3Qgb21hcF9kc3Nf ZGV2aWNlICpkc3NkZXYsCiAJc3RydWN0IHBhbmVsX2Rydl9kYXRhICpkZGF0YSA9IHRvX3BhbmVs X2RhdGEoZHNzZGV2KTsKIAlzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICppbiA9IGRkYXRhLT5pbjsK IAotCXJldHVybiBpbi0+b3BzLmR2aS0+Y2hlY2tfdGltaW5ncyhpbiwgdm0pOworCXJldHVybiBp bi0+b3BzLT5jaGVja190aW1pbmdzKGluLCB2bSk7CiB9CiAKIHN0YXRpYyBpbnQgZHZpY19kZGNf cmVhZChzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vb21hcGRybS9kaXNwbGF5cy9jb25uZWN0b3ItaGRtaS5jIGIvZHJpdmVycy9ncHUvZHJt L29tYXBkcm0vZGlzcGxheXMvY29ubmVjdG9yLWhkbWkuYwppbmRleCBlMDMxMjgwNDY4ZmIuLmI1 MjhiZDUxYWRhMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vZGlzcGxheXMv Y29ubmVjdG9yLWhkbWkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9kaXNwbGF5cy9j b25uZWN0b3ItaGRtaS5jCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBpbnQgaGRtaWNfY29ubmVj dChzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYpCiAJCXJldHVybiBQVFJfRVJSKGluKTsK IAl9CiAKLQlyID0gaW4tPm9wcy5oZG1pLT5jb25uZWN0KGluLCBkc3NkZXYpOworCXIgPSBpbi0+ b3BzLT5jb25uZWN0KGluLCBkc3NkZXYpOwogCWlmIChyKSB7CiAJCW9tYXBfZHNzX3B1dF9kZXZp Y2UoaW4pOwogCQlyZXR1cm4gcjsKQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIHZvaWQgaGRtaWNf ZGlzY29ubmVjdChzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYpCiAJaWYgKCFvbWFwZHNz X2RldmljZV9pc19jb25uZWN0ZWQoZHNzZGV2KSkKIAkJcmV0dXJuOwogCi0JaW4tPm9wcy5oZG1p LT5kaXNjb25uZWN0KGluLCBkc3NkZXYpOworCWluLT5vcHMtPmRpc2Nvbm5lY3QoaW4sIGRzc2Rl dik7CiAKIAlvbWFwX2Rzc19wdXRfZGV2aWNlKGluKTsKIAlkZGF0YS0+aW4gPSBOVUxMOwpAQCAt MTA5LDkgKzEwOSw5IEBAIHN0YXRpYyBpbnQgaGRtaWNfZW5hYmxlKHN0cnVjdCBvbWFwX2Rzc19k ZXZpY2UgKmRzc2RldikKIAlpZiAob21hcGRzc19kZXZpY2VfaXNfZW5hYmxlZChkc3NkZXYpKQog CQlyZXR1cm4gMDsKIAotCWluLT5vcHMuaGRtaS0+c2V0X3RpbWluZ3MoaW4sICZkZGF0YS0+dm0p OworCWluLT5vcHMtPnNldF90aW1pbmdzKGluLCAmZGRhdGEtPnZtKTsKIAotCXIgPSBpbi0+b3Bz LmhkbWktPmVuYWJsZShpbik7CisJciA9IGluLT5vcHMtPmVuYWJsZShpbik7CiAJaWYgKHIpCiAJ CXJldHVybiByOwogCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGljIHZvaWQgaGRtaWNfZGlzYWJs ZShzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYpCiAJaWYgKCFvbWFwZHNzX2RldmljZV9p c19lbmFibGVkKGRzc2RldikpCiAJCXJldHVybjsKIAotCWluLT5vcHMuaGRtaS0+ZGlzYWJsZShp bik7CisJaW4tPm9wcy0+ZGlzYWJsZShpbik7CiAKIAlkc3NkZXYtPnN0YXRlID0gT01BUF9EU1Nf RElTUExBWV9ESVNBQkxFRDsKIH0KQEAgLTE0Myw3ICsxNDMsNyBAQCBzdGF0aWMgdm9pZCBoZG1p Y19zZXRfdGltaW5ncyhzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYsCiAKIAlkZGF0YS0+ dm0gPSAqdm07CiAKLQlpbi0+b3BzLmhkbWktPnNldF90aW1pbmdzKGluLCB2bSk7CisJaW4tPm9w cy0+c2V0X3RpbWluZ3MoaW4sIHZtKTsKIH0KIAogc3RhdGljIHZvaWQgaGRtaWNfZ2V0X3RpbWlu Z3Moc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2LApAQCAtMTYwLDcgKzE2MCw3IEBAIHN0 YXRpYyBpbnQgaGRtaWNfY2hlY2tfdGltaW5ncyhzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3Nk ZXYsCiAJc3RydWN0IHBhbmVsX2Rydl9kYXRhICpkZGF0YSA9IHRvX3BhbmVsX2RhdGEoZHNzZGV2 KTsKIAlzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICppbiA9IGRkYXRhLT5pbjsKIAotCXJldHVybiBp bi0+b3BzLmhkbWktPmNoZWNrX3RpbWluZ3MoaW4sIHZtKTsKKwlyZXR1cm4gaW4tPm9wcy0+Y2hl Y2tfdGltaW5ncyhpbiwgdm0pOwogfQogCiBzdGF0aWMgaW50IGhkbWljX3JlYWRfZWRpZChzdHJ1 Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYsCkBAIC0xNjksNyArMTY5LDcgQEAgc3RhdGljIGlu dCBoZG1pY19yZWFkX2VkaWQoc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2LAogCXN0cnVj dCBwYW5lbF9kcnZfZGF0YSAqZGRhdGEgPSB0b19wYW5lbF9kYXRhKGRzc2Rldik7CiAJc3RydWN0 IG9tYXBfZHNzX2RldmljZSAqaW4gPSBkZGF0YS0+aW47CiAKLQlyZXR1cm4gaW4tPm9wcy5oZG1p LT5yZWFkX2VkaWQoaW4sIGVkaWQsIGxlbik7CisJcmV0dXJuIGluLT5vcHMtPmhkbWkucmVhZF9l ZGlkKGluLCBlZGlkLCBsZW4pOwogfQogCiBzdGF0aWMgYm9vbCBoZG1pY19kZXRlY3Qoc3RydWN0 IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2KQpAQCAtMTgxLDkgKzE4MSw5IEBAIHN0YXRpYyBib29s IGhkbWljX2RldGVjdChzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYpCiAJaWYgKGdwaW9f aXNfdmFsaWQoZGRhdGEtPmhwZF9ncGlvKSkKIAkJY29ubmVjdGVkID0gZ3Bpb19nZXRfdmFsdWVf Y2Fuc2xlZXAoZGRhdGEtPmhwZF9ncGlvKTsKIAllbHNlCi0JCWNvbm5lY3RlZCA9IGluLT5vcHMu aGRtaS0+ZGV0ZWN0KGluKTsKLQlpZiAoIWNvbm5lY3RlZCAmJiBpbi0+b3BzLmhkbWktPmxvc3Rf aG90cGx1ZykKLQkJaW4tPm9wcy5oZG1pLT5sb3N0X2hvdHBsdWcoaW4pOworCQljb25uZWN0ZWQg PSBpbi0+b3BzLT5oZG1pLmRldGVjdChpbik7CisJaWYgKCFjb25uZWN0ZWQgJiYgaW4tPm9wcy0+ aGRtaS5sb3N0X2hvdHBsdWcpCisJCWluLT5vcHMtPmhkbWkubG9zdF9ob3RwbHVnKGluKTsKIAly ZXR1cm4gY29ubmVjdGVkOwogfQogCkBAIC0yMDEsOCArMjAxLDggQEAgc3RhdGljIGludCBoZG1p Y19yZWdpc3Rlcl9ocGRfY2Ioc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2LAogCQlkZGF0 YS0+aHBkX2NiX2RhdGEgPSBjYl9kYXRhOwogCQltdXRleF91bmxvY2soJmRkYXRhLT5ocGRfbG9j ayk7CiAJCXJldHVybiAwOwotCX0gZWxzZSBpZiAoaW4tPm9wcy5oZG1pLT5yZWdpc3Rlcl9ocGRf Y2IpIHsKLQkJcmV0dXJuIGluLT5vcHMuaGRtaS0+cmVnaXN0ZXJfaHBkX2NiKGluLCBjYiwgY2Jf ZGF0YSk7CisJfSBlbHNlIGlmIChpbi0+b3BzLT5oZG1pLnJlZ2lzdGVyX2hwZF9jYikgeworCQly ZXR1cm4gaW4tPm9wcy0+aGRtaS5yZWdpc3Rlcl9ocGRfY2IoaW4sIGNiLCBjYl9kYXRhKTsKIAl9 CiAKIAlyZXR1cm4gLUVOT1RTVVBQOwpAQCAtMjE4LDggKzIxOCw4IEBAIHN0YXRpYyB2b2lkIGhk bWljX3VucmVnaXN0ZXJfaHBkX2NiKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldikKIAkJ ZGRhdGEtPmhwZF9jYiA9IE5VTEw7CiAJCWRkYXRhLT5ocGRfY2JfZGF0YSA9IE5VTEw7CiAJCW11 dGV4X3VubG9jaygmZGRhdGEtPmhwZF9sb2NrKTsKLQl9IGVsc2UgaWYgKGluLT5vcHMuaGRtaS0+ dW5yZWdpc3Rlcl9ocGRfY2IpIHsKLQkJaW4tPm9wcy5oZG1pLT51bnJlZ2lzdGVyX2hwZF9jYihp bik7CisJfSBlbHNlIGlmIChpbi0+b3BzLT5oZG1pLnVucmVnaXN0ZXJfaHBkX2NiKSB7CisJCWlu LT5vcHMtPmhkbWkudW5yZWdpc3Rlcl9ocGRfY2IoaW4pOwogCX0KIH0KIApAQCAtMjMyLDggKzIz Miw4IEBAIHN0YXRpYyB2b2lkIGhkbWljX2VuYWJsZV9ocGQoc3RydWN0IG9tYXBfZHNzX2Rldmlj ZSAqZHNzZGV2KQogCQltdXRleF9sb2NrKCZkZGF0YS0+aHBkX2xvY2spOwogCQlkZGF0YS0+aHBk X2VuYWJsZWQgPSB0cnVlOwogCQltdXRleF91bmxvY2soJmRkYXRhLT5ocGRfbG9jayk7Ci0JfSBl bHNlIGlmIChpbi0+b3BzLmhkbWktPmVuYWJsZV9ocGQpIHsKLQkJaW4tPm9wcy5oZG1pLT5lbmFi bGVfaHBkKGluKTsKKwl9IGVsc2UgaWYgKGluLT5vcHMtPmhkbWkuZW5hYmxlX2hwZCkgeworCQlp bi0+b3BzLT5oZG1pLmVuYWJsZV9ocGQoaW4pOwogCX0KIH0KIApAQCAtMjQ2LDggKzI0Niw4IEBA IHN0YXRpYyB2b2lkIGhkbWljX2Rpc2FibGVfaHBkKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRz c2RldikKIAkJbXV0ZXhfbG9jaygmZGRhdGEtPmhwZF9sb2NrKTsKIAkJZGRhdGEtPmhwZF9lbmFi bGVkID0gZmFsc2U7CiAJCW11dGV4X3VubG9jaygmZGRhdGEtPmhwZF9sb2NrKTsKLQl9IGVsc2Ug aWYgKGluLT5vcHMuaGRtaS0+ZGlzYWJsZV9ocGQpIHsKLQkJaW4tPm9wcy5oZG1pLT5kaXNhYmxl X2hwZChpbik7CisJfSBlbHNlIGlmIChpbi0+b3BzLT5oZG1pLmRpc2FibGVfaHBkKSB7CisJCWlu LT5vcHMtPmhkbWkuZGlzYWJsZV9ocGQoaW4pOwogCX0KIH0KIApAQCAtMjU2LDcgKzI1Niw3IEBA IHN0YXRpYyBpbnQgaGRtaWNfc2V0X2hkbWlfbW9kZShzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpk c3NkZXYsIGJvb2wgaGRtaV9tb2RlKQogCXN0cnVjdCBwYW5lbF9kcnZfZGF0YSAqZGRhdGEgPSB0 b19wYW5lbF9kYXRhKGRzc2Rldik7CiAJc3RydWN0IG9tYXBfZHNzX2RldmljZSAqaW4gPSBkZGF0 YS0+aW47CiAKLQlyZXR1cm4gaW4tPm9wcy5oZG1pLT5zZXRfaGRtaV9tb2RlKGluLCBoZG1pX21v ZGUpOworCXJldHVybiBpbi0+b3BzLT5oZG1pLnNldF9oZG1pX21vZGUoaW4sIGhkbWlfbW9kZSk7 CiB9CiAKIHN0YXRpYyBpbnQgaGRtaWNfc2V0X2luZm9mcmFtZShzdHJ1Y3Qgb21hcF9kc3NfZGV2 aWNlICpkc3NkZXYsCkBAIC0yNjUsNyArMjY1LDcgQEAgc3RhdGljIGludCBoZG1pY19zZXRfaW5m b2ZyYW1lKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldiwKIAlzdHJ1Y3QgcGFuZWxfZHJ2 X2RhdGEgKmRkYXRhID0gdG9fcGFuZWxfZGF0YShkc3NkZXYpOwogCXN0cnVjdCBvbWFwX2Rzc19k ZXZpY2UgKmluID0gZGRhdGEtPmluOwogCi0JcmV0dXJuIGluLT5vcHMuaGRtaS0+c2V0X2luZm9m cmFtZShpbiwgYXZpKTsKKwlyZXR1cm4gaW4tPm9wcy0+aGRtaS5zZXRfaW5mb2ZyYW1lKGluLCBh dmkpOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG9tYXBfZHNzX2RyaXZlciBoZG1pY19kcml2 ZXIgPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9kaXNwbGF5cy9lbmNv ZGVyLW9wYTM2Mi5jIGIvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vZGlzcGxheXMvZW5jb2Rlci1v cGEzNjIuYwppbmRleCAwZTNmNGEyMGU1MzEuLjM3OTgyZmZlMGFkNCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL29tYXBkcm0vZGlzcGxheXMvZW5jb2Rlci1vcGEzNjIuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vb21hcGRybS9kaXNwbGF5cy9lbmNvZGVyLW9wYTM2Mi5jCkBAIC01MCw3ICs1 MCw3IEBAIHN0YXRpYyBpbnQgb3BhMzYyX2Nvbm5lY3Qoc3RydWN0IG9tYXBfZHNzX2RldmljZSAq ZHNzZGV2LAogCQlyZXR1cm4gUFRSX0VSUihpbik7CiAJfQogCi0JciA9IGluLT5vcHMuYXR2LT5j b25uZWN0KGluLCBkc3NkZXYpOworCXIgPSBpbi0+b3BzLT5jb25uZWN0KGluLCBkc3NkZXYpOwog CWlmIChyKSB7CiAJCW9tYXBfZHNzX3B1dF9kZXZpY2UoaW4pOwogCQlyZXR1cm4gcjsKQEAgLTgy LDcgKzgyLDcgQEAgc3RhdGljIHZvaWQgb3BhMzYyX2Rpc2Nvbm5lY3Qoc3RydWN0IG9tYXBfZHNz X2RldmljZSAqZHNzZGV2LAogCWRzdC0+c3JjID0gTlVMTDsKIAlkc3NkZXYtPmRzdCA9IE5VTEw7 CiAKLQlpbi0+b3BzLmF0di0+ZGlzY29ubmVjdChpbiwgJmRkYXRhLT5kc3NkZXYpOworCWluLT5v cHMtPmRpc2Nvbm5lY3QoaW4sICZkZGF0YS0+ZHNzZGV2KTsKIAogCW9tYXBfZHNzX3B1dF9kZXZp Y2UoaW4pOwogCWRkYXRhLT5pbiA9IE5VTEw7CkBAIC0xMDIsOSArMTAyLDkgQEAgc3RhdGljIGlu dCBvcGEzNjJfZW5hYmxlKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldikKIAlpZiAob21h cGRzc19kZXZpY2VfaXNfZW5hYmxlZChkc3NkZXYpKQogCQlyZXR1cm4gMDsKIAotCWluLT5vcHMu YXR2LT5zZXRfdGltaW5ncyhpbiwgJmRkYXRhLT52bSk7CisJaW4tPm9wcy0+c2V0X3RpbWluZ3Mo aW4sICZkZGF0YS0+dm0pOwogCi0JciA9IGluLT5vcHMuYXR2LT5lbmFibGUoaW4pOworCXIgPSBp bi0+b3BzLT5lbmFibGUoaW4pOwogCWlmIChyKQogCQlyZXR1cm4gcjsKIApAQCAtMTI5LDcgKzEy OSw3IEBAIHN0YXRpYyB2b2lkIG9wYTM2Ml9kaXNhYmxlKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2Ug KmRzc2RldikKIAlpZiAoZGRhdGEtPmVuYWJsZV9ncGlvKQogCQlncGlvZF9zZXRfdmFsdWVfY2Fu c2xlZXAoZGRhdGEtPmVuYWJsZV9ncGlvLCAwKTsKIAotCWluLT5vcHMuYXR2LT5kaXNhYmxlKGlu KTsKKwlpbi0+b3BzLT5kaXNhYmxlKGluKTsKIAogCWRzc2Rldi0+c3RhdGUgPSBPTUFQX0RTU19E SVNQTEFZX0RJU0FCTEVEOwogfQpAQCAtMTQ0LDcgKzE0NCw3IEBAIHN0YXRpYyB2b2lkIG9wYTM2 Ml9zZXRfdGltaW5ncyhzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYsCiAKIAlkZGF0YS0+ dm0gPSAqdm07CiAKLQlpbi0+b3BzLmF0di0+c2V0X3RpbWluZ3MoaW4sIHZtKTsKKwlpbi0+b3Bz LT5zZXRfdGltaW5ncyhpbiwgdm0pOwogfQogCiBzdGF0aWMgaW50IG9wYTM2Ml9jaGVja190aW1p bmdzKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldiwKQEAgLTE1NSwxNiArMTU1LDE0IEBA IHN0YXRpYyBpbnQgb3BhMzYyX2NoZWNrX3RpbWluZ3Moc3RydWN0IG9tYXBfZHNzX2RldmljZSAq ZHNzZGV2LAogCiAJZGV2X2RiZyhkc3NkZXYtPmRldiwgImNoZWNrX3RpbWluZ3NcbiIpOwogCi0J cmV0dXJuIGluLT5vcHMuYXR2LT5jaGVja190aW1pbmdzKGluLCB2bSk7CisJcmV0dXJuIGluLT5v cHMtPmNoZWNrX3RpbWluZ3MoaW4sIHZtKTsKIH0KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBvbWFw ZHNzX2F0dl9vcHMgb3BhMzYyX2F0dl9vcHMgPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IG9tYXBf ZHNzX2RldmljZV9vcHMgb3BhMzYyX29wcyA9IHsKIAkuY29ubmVjdAk9IG9wYTM2Ml9jb25uZWN0 LAogCS5kaXNjb25uZWN0CT0gb3BhMzYyX2Rpc2Nvbm5lY3QsCi0KIAkuZW5hYmxlCQk9IG9wYTM2 Ml9lbmFibGUsCiAJLmRpc2FibGUJPSBvcGEzNjJfZGlzYWJsZSwKLQogCS5jaGVja190aW1pbmdz CT0gb3BhMzYyX2NoZWNrX3RpbWluZ3MsCiAJLnNldF90aW1pbmdzCT0gb3BhMzYyX3NldF90aW1p bmdzLAogfTsKQEAgLTE5MSw3ICsxODksNyBAQCBzdGF0aWMgaW50IG9wYTM2Ml9wcm9iZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCWRkYXRhLT5lbmFibGVfZ3BpbyA9IGdwaW87CiAK IAlkc3NkZXYgPSAmZGRhdGEtPmRzc2RldjsKLQlkc3NkZXYtPm9wcy5hdHYgPSAmb3BhMzYyX2F0 dl9vcHM7CisJZHNzZGV2LT5vcHMgPSAmb3BhMzYyX29wczsKIAlkc3NkZXYtPmRldiA9ICZwZGV2 LT5kZXY7CiAJZHNzZGV2LT50eXBlID0gT01BUF9ESVNQTEFZX1RZUEVfVkVOQzsKIAlkc3NkZXYt Pm91dHB1dF90eXBlID0gT01BUF9ESVNQTEFZX1RZUEVfVkVOQzsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9vbWFwZHJtL2Rpc3BsYXlzL2VuY29kZXItdGZwNDEwLmMgYi9kcml2ZXJzL2dw dS9kcm0vb21hcGRybS9kaXNwbGF5cy9lbmNvZGVyLXRmcDQxMC5jCmluZGV4IDA4ZTYzZTM5ZDBi Ny4uMWZiYzU1NTllNTRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9kaXNw bGF5cy9lbmNvZGVyLXRmcDQxMC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL2Rpc3Bs YXlzL2VuY29kZXItdGZwNDEwLmMKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RhdGljIGludCB0ZnA0MTBf Y29ubmVjdChzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYsCiAJCXJldHVybiBQVFJfRVJS KGluKTsKIAl9CiAKLQlyID0gaW4tPm9wcy5kcGktPmNvbm5lY3QoaW4sIGRzc2Rldik7CisJciA9 IGluLT5vcHMtPmNvbm5lY3QoaW4sIGRzc2Rldik7CiAJaWYgKHIpIHsKIAkJb21hcF9kc3NfcHV0 X2RldmljZShpbik7CiAJCXJldHVybiByOwpAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgdm9pZCB0 ZnA0MTBfZGlzY29ubmVjdChzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYsCiAJZHN0LT5z cmMgPSBOVUxMOwogCWRzc2Rldi0+ZHN0ID0gTlVMTDsKIAotCWluLT5vcHMuZHBpLT5kaXNjb25u ZWN0KGluLCAmZGRhdGEtPmRzc2Rldik7CisJaW4tPm9wcy0+ZGlzY29ubmVjdChpbiwgJmRkYXRh LT5kc3NkZXYpOwogCiAJb21hcF9kc3NfcHV0X2RldmljZShpbik7CiAJZGRhdGEtPmluID0gTlVM TDsKQEAgLTkyLDkgKzkyLDkgQEAgc3RhdGljIGludCB0ZnA0MTBfZW5hYmxlKHN0cnVjdCBvbWFw X2Rzc19kZXZpY2UgKmRzc2RldikKIAlpZiAob21hcGRzc19kZXZpY2VfaXNfZW5hYmxlZChkc3Nk ZXYpKQogCQlyZXR1cm4gMDsKIAotCWluLT5vcHMuZHBpLT5zZXRfdGltaW5ncyhpbiwgJmRkYXRh LT52bSk7CisJaW4tPm9wcy0+c2V0X3RpbWluZ3MoaW4sICZkZGF0YS0+dm0pOwogCi0JciA9IGlu LT5vcHMuZHBpLT5lbmFibGUoaW4pOworCXIgPSBpbi0+b3BzLT5lbmFibGUoaW4pOwogCWlmIChy KQogCQlyZXR1cm4gcjsKIApAQCAtMTE3LDcgKzExNyw3IEBAIHN0YXRpYyB2b2lkIHRmcDQxMF9k aXNhYmxlKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldikKIAlpZiAoZ3Bpb19pc192YWxp ZChkZGF0YS0+cGRfZ3BpbykpCiAJCWdwaW9fc2V0X3ZhbHVlX2NhbnNsZWVwKGRkYXRhLT5wZF9n cGlvLCAwKTsKIAotCWluLT5vcHMuZHBpLT5kaXNhYmxlKGluKTsKKwlpbi0+b3BzLT5kaXNhYmxl KGluKTsKIAogCWRzc2Rldi0+c3RhdGUgPSBPTUFQX0RTU19ESVNQTEFZX0RJU0FCTEVEOwogfQpA QCAtMTM4LDcgKzEzOCw3IEBAIHN0YXRpYyB2b2lkIHRmcDQxMF9zZXRfdGltaW5ncyhzdHJ1Y3Qg b21hcF9kc3NfZGV2aWNlICpkc3NkZXYsCiAKIAlkZGF0YS0+dm0gPSAqdm07CiAKLQlpbi0+b3Bz LmRwaS0+c2V0X3RpbWluZ3MoaW4sIHZtKTsKKwlpbi0+b3BzLT5zZXRfdGltaW5ncyhpbiwgdm0p OwogfQogCiBzdGF0aWMgaW50IHRmcDQxMF9jaGVja190aW1pbmdzKHN0cnVjdCBvbWFwX2Rzc19k ZXZpY2UgKmRzc2RldiwKQEAgLTE0OSwxNiArMTQ5LDE0IEBAIHN0YXRpYyBpbnQgdGZwNDEwX2No ZWNrX3RpbWluZ3Moc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2LAogCiAJdGZwNDEwX2Zp eF90aW1pbmdzKHZtKTsKIAotCXJldHVybiBpbi0+b3BzLmRwaS0+Y2hlY2tfdGltaW5ncyhpbiwg dm0pOworCXJldHVybiBpbi0+b3BzLT5jaGVja190aW1pbmdzKGluLCB2bSk7CiB9CiAKLXN0YXRp YyBjb25zdCBzdHJ1Y3Qgb21hcGRzc19kdmlfb3BzIHRmcDQxMF9kdmlfb3BzID0geworc3RhdGlj IGNvbnN0IHN0cnVjdCBvbWFwX2Rzc19kZXZpY2Vfb3BzIHRmcDQxMF9vcHMgPSB7CiAJLmNvbm5l Y3QJPSB0ZnA0MTBfY29ubmVjdCwKIAkuZGlzY29ubmVjdAk9IHRmcDQxMF9kaXNjb25uZWN0LAot CiAJLmVuYWJsZQkJPSB0ZnA0MTBfZW5hYmxlLAogCS5kaXNhYmxlCT0gdGZwNDEwX2Rpc2FibGUs Ci0KIAkuY2hlY2tfdGltaW5ncwk9IHRmcDQxMF9jaGVja190aW1pbmdzLAogCS5zZXRfdGltaW5n cwk9IHRmcDQxMF9zZXRfdGltaW5ncywKIH07CkBAIC0yMDksNyArMjA3LDcgQEAgc3RhdGljIGlu dCB0ZnA0MTBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAl9CiAKIAlkc3Nk ZXYgPSAmZGRhdGEtPmRzc2RldjsKLQlkc3NkZXYtPm9wcy5kdmkgPSAmdGZwNDEwX2R2aV9vcHM7 CisJZHNzZGV2LT5vcHMgPSAmdGZwNDEwX29wczsKIAlkc3NkZXYtPmRldiA9ICZwZGV2LT5kZXY7 CiAJZHNzZGV2LT50eXBlID0gT01BUF9ESVNQTEFZX1RZUEVfRFBJOwogCWRzc2Rldi0+b3V0cHV0 X3R5cGUgPSBPTUFQX0RJU1BMQVlfVFlQRV9EVkk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vb21hcGRybS9kaXNwbGF5cy9lbmNvZGVyLXRwZDEyczAxNS5jIGIvZHJpdmVycy9ncHUvZHJt L29tYXBkcm0vZGlzcGxheXMvZW5jb2Rlci10cGQxMnMwMTUuYwppbmRleCBmMzVlMmFmYTNlOWMu LjIxYTRhMmZkNDJiZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vZGlzcGxh eXMvZW5jb2Rlci10cGQxMnMwMTUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9kaXNw bGF5cy9lbmNvZGVyLXRwZDEyczAxNS5jCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBpbnQgdHBk X2Nvbm5lY3Qoc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2LAogCQlyZXR1cm4gUFRSX0VS Uihpbik7CiAJfQogCi0JciA9IGluLT5vcHMuaGRtaS0+Y29ubmVjdChpbiwgZHNzZGV2KTsKKwly ID0gaW4tPm9wcy0+Y29ubmVjdChpbiwgZHNzZGV2KTsKIAlpZiAocikgewogCQlvbWFwX2Rzc19w dXRfZGV2aWNlKGluKTsKIAkJcmV0dXJuIHI7CkBAIC04NSw3ICs4NSw3IEBAIHN0YXRpYyB2b2lk IHRwZF9kaXNjb25uZWN0KHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldiwKIAlkc3QtPnNy YyA9IE5VTEw7CiAJZHNzZGV2LT5kc3QgPSBOVUxMOwogCi0JaW4tPm9wcy5oZG1pLT5kaXNjb25u ZWN0KGluLCAmZGRhdGEtPmRzc2Rldik7CisJaW4tPm9wcy0+ZGlzY29ubmVjdChpbiwgJmRkYXRh LT5kc3NkZXYpOwogCiAJb21hcF9kc3NfcHV0X2RldmljZShpbik7CiAJZGRhdGEtPmluID0gTlVM TDsKQEAgLTEwMCw5ICsxMDAsOSBAQCBzdGF0aWMgaW50IHRwZF9lbmFibGUoc3RydWN0IG9tYXBf ZHNzX2RldmljZSAqZHNzZGV2KQogCWlmIChkc3NkZXYtPnN0YXRlID09IE9NQVBfRFNTX0RJU1BM QVlfQUNUSVZFKQogCQlyZXR1cm4gMDsKIAotCWluLT5vcHMuaGRtaS0+c2V0X3RpbWluZ3MoaW4s ICZkZGF0YS0+dm0pOworCWluLT5vcHMtPnNldF90aW1pbmdzKGluLCAmZGRhdGEtPnZtKTsKIAot CXIgPSBpbi0+b3BzLmhkbWktPmVuYWJsZShpbik7CisJciA9IGluLT5vcHMtPmVuYWJsZShpbik7 CiAJaWYgKHIpCiAJCXJldHVybiByOwogCkBAIC0xMTksNyArMTE5LDcgQEAgc3RhdGljIHZvaWQg dHBkX2Rpc2FibGUoc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2KQogCWlmIChkc3NkZXYt PnN0YXRlICE9IE9NQVBfRFNTX0RJU1BMQVlfQUNUSVZFKQogCQlyZXR1cm47CiAKLQlpbi0+b3Bz LmhkbWktPmRpc2FibGUoaW4pOworCWluLT5vcHMtPmRpc2FibGUoaW4pOwogCiAJZHNzZGV2LT5z dGF0ZSA9IE9NQVBfRFNTX0RJU1BMQVlfRElTQUJMRUQ7CiB9CkBAIC0xMzIsNyArMTMyLDcgQEAg c3RhdGljIHZvaWQgdHBkX3NldF90aW1pbmdzKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2Rl diwKIAogCWRkYXRhLT52bSA9ICp2bTsKIAotCWluLT5vcHMuaGRtaS0+c2V0X3RpbWluZ3MoaW4s IHZtKTsKKwlpbi0+b3BzLT5zZXRfdGltaW5ncyhpbiwgdm0pOwogfQogCiBzdGF0aWMgaW50IHRw ZF9jaGVja190aW1pbmdzKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldiwKQEAgLTE0Miw3 ICsxNDIsNyBAQCBzdGF0aWMgaW50IHRwZF9jaGVja190aW1pbmdzKHN0cnVjdCBvbWFwX2Rzc19k ZXZpY2UgKmRzc2RldiwKIAlzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICppbiA9IGRkYXRhLT5pbjsK IAlpbnQgcjsKIAotCXIgPSBpbi0+b3BzLmhkbWktPmNoZWNrX3RpbWluZ3MoaW4sIHZtKTsKKwly ID0gaW4tPm9wcy0+Y2hlY2tfdGltaW5ncyhpbiwgdm0pOwogCiAJcmV0dXJuIHI7CiB9CkBAIC0x NTYsNyArMTU2LDcgQEAgc3RhdGljIGludCB0cGRfcmVhZF9lZGlkKHN0cnVjdCBvbWFwX2Rzc19k ZXZpY2UgKmRzc2RldiwKIAlpZiAoIWdwaW9kX2dldF92YWx1ZV9jYW5zbGVlcChkZGF0YS0+aHBk X2dwaW8pKQogCQlyZXR1cm4gLUVOT0RFVjsKIAotCXJldHVybiBpbi0+b3BzLmhkbWktPnJlYWRf ZWRpZChpbiwgZWRpZCwgbGVuKTsKKwlyZXR1cm4gaW4tPm9wcy0+aGRtaS5yZWFkX2VkaWQoaW4s IGVkaWQsIGxlbik7CiB9CiAKIHN0YXRpYyBib29sIHRwZF9kZXRlY3Qoc3RydWN0IG9tYXBfZHNz X2RldmljZSAqZHNzZGV2KQpAQCAtMTY1LDggKzE2NSw4IEBAIHN0YXRpYyBib29sIHRwZF9kZXRl Y3Qoc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2KQogCXN0cnVjdCBvbWFwX2Rzc19kZXZp Y2UgKmluID0gZGRhdGEtPmluOwogCWJvb2wgY29ubmVjdGVkID0gZ3Bpb2RfZ2V0X3ZhbHVlX2Nh bnNsZWVwKGRkYXRhLT5ocGRfZ3Bpbyk7CiAKLQlpZiAoIWNvbm5lY3RlZCAmJiBpbi0+b3BzLmhk bWktPmxvc3RfaG90cGx1ZykKLQkJaW4tPm9wcy5oZG1pLT5sb3N0X2hvdHBsdWcoaW4pOworCWlm ICghY29ubmVjdGVkICYmIGluLT5vcHMtPmhkbWkubG9zdF9ob3RwbHVnKQorCQlpbi0+b3BzLT5o ZG1pLmxvc3RfaG90cGx1Zyhpbik7CiAJcmV0dXJuIGNvbm5lY3RlZDsKIH0KIApAQCAtMjE5LDcg KzIxOSw3IEBAIHN0YXRpYyBpbnQgdHBkX3NldF9pbmZvZnJhbWUoc3RydWN0IG9tYXBfZHNzX2Rl dmljZSAqZHNzZGV2LAogCXN0cnVjdCBwYW5lbF9kcnZfZGF0YSAqZGRhdGEgPSB0b19wYW5lbF9k YXRhKGRzc2Rldik7CiAJc3RydWN0IG9tYXBfZHNzX2RldmljZSAqaW4gPSBkZGF0YS0+aW47CiAK LQlyZXR1cm4gaW4tPm9wcy5oZG1pLT5zZXRfaW5mb2ZyYW1lKGluLCBhdmkpOworCXJldHVybiBp bi0+b3BzLT5oZG1pLnNldF9pbmZvZnJhbWUoaW4sIGF2aSk7CiB9CiAKIHN0YXRpYyBpbnQgdHBk X3NldF9oZG1pX21vZGUoc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2LApAQCAtMjI4LDI3 ICsyMjgsMjcgQEAgc3RhdGljIGludCB0cGRfc2V0X2hkbWlfbW9kZShzdHJ1Y3Qgb21hcF9kc3Nf ZGV2aWNlICpkc3NkZXYsCiAJc3RydWN0IHBhbmVsX2Rydl9kYXRhICpkZGF0YSA9IHRvX3BhbmVs X2RhdGEoZHNzZGV2KTsKIAlzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICppbiA9IGRkYXRhLT5pbjsK IAotCXJldHVybiBpbi0+b3BzLmhkbWktPnNldF9oZG1pX21vZGUoaW4sIGhkbWlfbW9kZSk7CisJ cmV0dXJuIGluLT5vcHMtPmhkbWkuc2V0X2hkbWlfbW9kZShpbiwgaGRtaV9tb2RlKTsKIH0KIAot c3RhdGljIGNvbnN0IHN0cnVjdCBvbWFwZHNzX2hkbWlfb3BzIHRwZF9oZG1pX29wcyA9IHsKK3N0 YXRpYyBjb25zdCBzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlX29wcyB0cGRfb3BzID0gewogCS5jb25u ZWN0CQk9IHRwZF9jb25uZWN0LAogCS5kaXNjb25uZWN0CQk9IHRwZF9kaXNjb25uZWN0LAotCiAJ LmVuYWJsZQkJCT0gdHBkX2VuYWJsZSwKIAkuZGlzYWJsZQkJPSB0cGRfZGlzYWJsZSwKLQogCS5j aGVja190aW1pbmdzCQk9IHRwZF9jaGVja190aW1pbmdzLAogCS5zZXRfdGltaW5ncwkJPSB0cGRf c2V0X3RpbWluZ3MsCiAKLQkucmVhZF9lZGlkCQk9IHRwZF9yZWFkX2VkaWQsCi0JLmRldGVjdAkJ CT0gdHBkX2RldGVjdCwKLQkucmVnaXN0ZXJfaHBkX2NiCT0gdHBkX3JlZ2lzdGVyX2hwZF9jYiwK LQkudW5yZWdpc3Rlcl9ocGRfY2IJPSB0cGRfdW5yZWdpc3Rlcl9ocGRfY2IsCi0JLmVuYWJsZV9o cGQJCT0gdHBkX2VuYWJsZV9ocGQsCi0JLmRpc2FibGVfaHBkCQk9IHRwZF9kaXNhYmxlX2hwZCwK LQkuc2V0X2luZm9mcmFtZQkJPSB0cGRfc2V0X2luZm9mcmFtZSwKLQkuc2V0X2hkbWlfbW9kZQkJ PSB0cGRfc2V0X2hkbWlfbW9kZSwKKwkuaGRtaSA9IHsKKwkJLnJlYWRfZWRpZAkJPSB0cGRfcmVh ZF9lZGlkLAorCQkuZGV0ZWN0CQkJPSB0cGRfZGV0ZWN0LAorCQkucmVnaXN0ZXJfaHBkX2NiCT0g dHBkX3JlZ2lzdGVyX2hwZF9jYiwKKwkJLnVucmVnaXN0ZXJfaHBkX2NiCT0gdHBkX3VucmVnaXN0 ZXJfaHBkX2NiLAorCQkuZW5hYmxlX2hwZAkJPSB0cGRfZW5hYmxlX2hwZCwKKwkJLmRpc2FibGVf aHBkCQk9IHRwZF9kaXNhYmxlX2hwZCwKKwkJLnNldF9pbmZvZnJhbWUJCT0gdHBkX3NldF9pbmZv ZnJhbWUsCisJCS5zZXRfaGRtaV9tb2RlCQk9IHRwZF9zZXRfaGRtaV9tb2RlLAorCX0sCiB9Owog CiBzdGF0aWMgaXJxcmV0dXJuX3QgdHBkX2hwZF9pc3IoaW50IGlycSwgdm9pZCAqZGF0YSkKQEAg LTMxNSw3ICszMTUsNyBAQCBzdGF0aWMgaW50IHRwZF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpwZGV2KQogCQlyZXR1cm4gcjsKIAogCWRzc2RldiA9ICZkZGF0YS0+ZHNzZGV2OwotCWRz c2Rldi0+b3BzLmhkbWkgPSAmdHBkX2hkbWlfb3BzOworCWRzc2Rldi0+b3BzID0gJnRwZF9vcHM7 CiAJZHNzZGV2LT5kZXYgPSAmcGRldi0+ZGV2OwogCWRzc2Rldi0+dHlwZSA9IE9NQVBfRElTUExB WV9UWVBFX0hETUk7CiAJZHNzZGV2LT5vdXRwdXRfdHlwZSA9IE9NQVBfRElTUExBWV9UWVBFX0hE TUk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9kaXNwbGF5cy9wYW5lbC1k cGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL2Rpc3BsYXlzL3BhbmVsLWRwaS5jCmluZGV4 IGJiZDYzMGVhZDNjMS4uMTUwNDIzNTFhY2UzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v b21hcGRybS9kaXNwbGF5cy9wYW5lbC1kcGkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRy bS9kaXNwbGF5cy9wYW5lbC1kcGkuYwpAQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgaW50IHBhbmVs X2RwaV9jb25uZWN0KHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldikKIAkJcmV0dXJuIFBU Ul9FUlIoaW4pOwogCX0KIAotCXIgPSBpbi0+b3BzLmRwaS0+Y29ubmVjdChpbiwgZHNzZGV2KTsK KwlyID0gaW4tPm9wcy0+Y29ubmVjdChpbiwgZHNzZGV2KTsKIAlpZiAocikgewogCQlvbWFwX2Rz c19wdXRfZGV2aWNlKGluKTsKIAkJcmV0dXJuIHI7CkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2 b2lkIHBhbmVsX2RwaV9kaXNjb25uZWN0KHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldikK IAlpZiAoIW9tYXBkc3NfZGV2aWNlX2lzX2Nvbm5lY3RlZChkc3NkZXYpKQogCQlyZXR1cm47CiAK LQlpbi0+b3BzLmRwaS0+ZGlzY29ubmVjdChpbiwgZHNzZGV2KTsKKwlpbi0+b3BzLT5kaXNjb25u ZWN0KGluLCBkc3NkZXYpOwogCiAJb21hcF9kc3NfcHV0X2RldmljZShpbik7CiAJZGRhdGEtPmlu ID0gTlVMTDsKQEAgLTg2LDE1ICs4NiwxNSBAQCBzdGF0aWMgaW50IHBhbmVsX2RwaV9lbmFibGUo c3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2KQogCWlmIChvbWFwZHNzX2RldmljZV9pc19l bmFibGVkKGRzc2RldikpCiAJCXJldHVybiAwOwogCi0JaW4tPm9wcy5kcGktPnNldF90aW1pbmdz KGluLCAmZGRhdGEtPnZtKTsKKwlpbi0+b3BzLT5zZXRfdGltaW5ncyhpbiwgJmRkYXRhLT52bSk7 CiAKLQlyID0gaW4tPm9wcy5kcGktPmVuYWJsZShpbik7CisJciA9IGluLT5vcHMtPmVuYWJsZShp bik7CiAJaWYgKHIpCiAJCXJldHVybiByOwogCiAJciA9IHJlZ3VsYXRvcl9lbmFibGUoZGRhdGEt PnZjY19zdXBwbHkpOwogCWlmIChyKSB7Ci0JCWluLT5vcHMuZHBpLT5kaXNhYmxlKGluKTsKKwkJ aW4tPm9wcy0+ZGlzYWJsZShpbik7CiAJCXJldHVybiByOwogCX0KIApAQCAtMTE5LDcgKzExOSw3 IEBAIHN0YXRpYyB2b2lkIHBhbmVsX2RwaV9kaXNhYmxlKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2Ug KmRzc2RldikKIAlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoZGRhdGEtPmVuYWJsZV9ncGlvLCAw KTsKIAlyZWd1bGF0b3JfZGlzYWJsZShkZGF0YS0+dmNjX3N1cHBseSk7CiAKLQlpbi0+b3BzLmRw aS0+ZGlzYWJsZShpbik7CisJaW4tPm9wcy0+ZGlzYWJsZShpbik7CiAKIAlkc3NkZXYtPnN0YXRl ID0gT01BUF9EU1NfRElTUExBWV9ESVNBQkxFRDsKIH0KQEAgLTEzMiw3ICsxMzIsNyBAQCBzdGF0 aWMgdm9pZCBwYW5lbF9kcGlfc2V0X3RpbWluZ3Moc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNz ZGV2LAogCiAJZGRhdGEtPnZtID0gKnZtOwogCi0JaW4tPm9wcy5kcGktPnNldF90aW1pbmdzKGlu LCB2bSk7CisJaW4tPm9wcy0+c2V0X3RpbWluZ3MoaW4sIHZtKTsKIH0KIAogc3RhdGljIHZvaWQg cGFuZWxfZHBpX2dldF90aW1pbmdzKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldiwKQEAg LTE0OSw3ICsxNDksNyBAQCBzdGF0aWMgaW50IHBhbmVsX2RwaV9jaGVja190aW1pbmdzKHN0cnVj dCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldiwKIAlzdHJ1Y3QgcGFuZWxfZHJ2X2RhdGEgKmRkYXRh ID0gdG9fcGFuZWxfZGF0YShkc3NkZXYpOwogCXN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmluID0g ZGRhdGEtPmluOwogCi0JcmV0dXJuIGluLT5vcHMuZHBpLT5jaGVja190aW1pbmdzKGluLCB2bSk7 CisJcmV0dXJuIGluLT5vcHMtPmNoZWNrX3RpbWluZ3MoaW4sIHZtKTsKIH0KIAogc3RhdGljIGNv bnN0IHN0cnVjdCBvbWFwX2Rzc19kcml2ZXIgcGFuZWxfZHBpX29wcyA9IHsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL2Rpc3BsYXlzL3BhbmVsLWRzaS1jbS5jIGIvZHJpdmVy cy9ncHUvZHJtL29tYXBkcm0vZGlzcGxheXMvcGFuZWwtZHNpLWNtLmMKaW5kZXggOGQ5OGNkNjI4 ZTExLi40Mjk2ZjRjYTM5ZmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL2Rp c3BsYXlzL3BhbmVsLWRzaS1jbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL2Rpc3Bs YXlzL3BhbmVsLWRzaS1jbS5jCkBAIC0xNDYsNyArMTQ2LDcgQEAgc3RhdGljIGludCBkc2ljbV9k Y3NfcmVhZF8xKHN0cnVjdCBwYW5lbF9kcnZfZGF0YSAqZGRhdGEsIHU4IGRjc19jbWQsIHU4ICpk YXRhKQogCWludCByOwogCXU4IGJ1ZlsxXTsKIAotCXIgPSBpbi0+b3BzLmRzaS0+ZGNzX3JlYWQo aW4sIGRkYXRhLT5jaGFubmVsLCBkY3NfY21kLCBidWYsIDEpOworCXIgPSBpbi0+b3BzLT5kc2ku ZGNzX3JlYWQoaW4sIGRkYXRhLT5jaGFubmVsLCBkY3NfY21kLCBidWYsIDEpOwogCiAJaWYgKHIg PCAwKQogCQlyZXR1cm4gcjsKQEAgLTE1OSw3ICsxNTksNyBAQCBzdGF0aWMgaW50IGRzaWNtX2Rj c19yZWFkXzEoc3RydWN0IHBhbmVsX2Rydl9kYXRhICpkZGF0YSwgdTggZGNzX2NtZCwgdTggKmRh dGEpCiBzdGF0aWMgaW50IGRzaWNtX2Rjc193cml0ZV8wKHN0cnVjdCBwYW5lbF9kcnZfZGF0YSAq ZGRhdGEsIHU4IGRjc19jbWQpCiB7CiAJc3RydWN0IG9tYXBfZHNzX2RldmljZSAqaW4gPSBkZGF0 YS0+aW47Ci0JcmV0dXJuIGluLT5vcHMuZHNpLT5kY3Nfd3JpdGUoaW4sIGRkYXRhLT5jaGFubmVs LCAmZGNzX2NtZCwgMSk7CisJcmV0dXJuIGluLT5vcHMtPmRzaS5kY3Nfd3JpdGUoaW4sIGRkYXRh LT5jaGFubmVsLCAmZGNzX2NtZCwgMSk7CiB9CiAKIHN0YXRpYyBpbnQgZHNpY21fZGNzX3dyaXRl XzEoc3RydWN0IHBhbmVsX2Rydl9kYXRhICpkZGF0YSwgdTggZGNzX2NtZCwgdTggcGFyYW0pCkBA IC0xNjcsNyArMTY3LDcgQEAgc3RhdGljIGludCBkc2ljbV9kY3Nfd3JpdGVfMShzdHJ1Y3QgcGFu ZWxfZHJ2X2RhdGEgKmRkYXRhLCB1OCBkY3NfY21kLCB1OCBwYXJhbSkKIAlzdHJ1Y3Qgb21hcF9k c3NfZGV2aWNlICppbiA9IGRkYXRhLT5pbjsKIAl1OCBidWZbMl0gPSB7IGRjc19jbWQsIHBhcmFt IH07CiAKLQlyZXR1cm4gaW4tPm9wcy5kc2ktPmRjc193cml0ZShpbiwgZGRhdGEtPmNoYW5uZWws IGJ1ZiwgMik7CisJcmV0dXJuIGluLT5vcHMtPmRzaS5kY3Nfd3JpdGUoaW4sIGRkYXRhLT5jaGFu bmVsLCBidWYsIDIpOwogfQogCiBzdGF0aWMgaW50IGRzaWNtX3NsZWVwX2luKHN0cnVjdCBwYW5l bF9kcnZfZGF0YSAqZGRhdGEpCkBAIC0xODAsNyArMTgwLDcgQEAgc3RhdGljIGludCBkc2ljbV9z bGVlcF9pbihzdHJ1Y3QgcGFuZWxfZHJ2X2RhdGEgKmRkYXRhKQogCWh3X2d1YXJkX3dhaXQoZGRh dGEpOwogCiAJY21kID0gTUlQSV9EQ1NfRU5URVJfU0xFRVBfTU9ERTsKLQlyID0gaW4tPm9wcy5k c2ktPmRjc193cml0ZV9ub3N5bmMoaW4sIGRkYXRhLT5jaGFubmVsLCAmY21kLCAxKTsKKwlyID0g aW4tPm9wcy0+ZHNpLmRjc193cml0ZV9ub3N5bmMoaW4sIGRkYXRhLT5jaGFubmVsLCAmY21kLCAx KTsKIAlpZiAocikKIAkJcmV0dXJuIHI7CiAKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgaW50 IGRzaWNtX3NldF91cGRhdGVfd2luZG93KHN0cnVjdCBwYW5lbF9kcnZfZGF0YSAqZGRhdGEsCiAJ YnVmWzNdID0gKHgyID4+IDgpICYgMHhmZjsKIAlidWZbNF0gPSAoeDIgPj4gMCkgJiAweGZmOwog Ci0JciA9IGluLT5vcHMuZHNpLT5kY3Nfd3JpdGVfbm9zeW5jKGluLCBkZGF0YS0+Y2hhbm5lbCwg YnVmLCBzaXplb2YoYnVmKSk7CisJciA9IGluLT5vcHMtPmRzaS5kY3Nfd3JpdGVfbm9zeW5jKGlu LCBkZGF0YS0+Y2hhbm5lbCwgYnVmLCBzaXplb2YoYnVmKSk7CiAJaWYgKHIpCiAJCXJldHVybiBy OwogCkBAIC0yNTIsMTEgKzI1MiwxMSBAQCBzdGF0aWMgaW50IGRzaWNtX3NldF91cGRhdGVfd2lu ZG93KHN0cnVjdCBwYW5lbF9kcnZfZGF0YSAqZGRhdGEsCiAJYnVmWzNdID0gKHkyID4+IDgpICYg MHhmZjsKIAlidWZbNF0gPSAoeTIgPj4gMCkgJiAweGZmOwogCi0JciA9IGluLT5vcHMuZHNpLT5k Y3Nfd3JpdGVfbm9zeW5jKGluLCBkZGF0YS0+Y2hhbm5lbCwgYnVmLCBzaXplb2YoYnVmKSk7CisJ ciA9IGluLT5vcHMtPmRzaS5kY3Nfd3JpdGVfbm9zeW5jKGluLCBkZGF0YS0+Y2hhbm5lbCwgYnVm LCBzaXplb2YoYnVmKSk7CiAJaWYgKHIpCiAJCXJldHVybiByOwogCi0JaW4tPm9wcy5kc2ktPmJ0 YV9zeW5jKGluLCBkZGF0YS0+Y2hhbm5lbCk7CisJaW4tPm9wcy0+ZHNpLmJ0YV9zeW5jKGluLCBk ZGF0YS0+Y2hhbm5lbCk7CiAKIAlyZXR1cm4gcjsKIH0KQEAgLTI5MCw3ICsyOTAsNyBAQCBzdGF0 aWMgaW50IGRzaWNtX2VudGVyX3VscHMoc3RydWN0IHBhbmVsX2Rydl9kYXRhICpkZGF0YSkKIAlp ZiAoZGRhdGEtPmV4dF90ZV9ncGlvKQogCQlkaXNhYmxlX2lycShncGlvZF90b19pcnEoZGRhdGEt PmV4dF90ZV9ncGlvKSk7CiAKLQlpbi0+b3BzLmRzaS0+ZGlzYWJsZShpbiwgZmFsc2UsIHRydWUp OworCWluLT5vcHMtPmRzaS5kaXNhYmxlKGluLCBmYWxzZSwgdHJ1ZSk7CiAKIAlkZGF0YS0+dWxw c19lbmFibGVkID0gdHJ1ZTsKIApAQCAtMzE1LDEzICszMTUsMTMgQEAgc3RhdGljIGludCBkc2lj bV9leGl0X3VscHMoc3RydWN0IHBhbmVsX2Rydl9kYXRhICpkZGF0YSkKIAlpZiAoIWRkYXRhLT51 bHBzX2VuYWJsZWQpCiAJCXJldHVybiAwOwogCi0JciA9IGluLT5vcHMuZHNpLT5lbmFibGUoaW4p OworCXIgPSBpbi0+b3BzLT5lbmFibGUoaW4pOwogCWlmIChyKSB7CiAJCWRldl9lcnIoJmRkYXRh LT5wZGV2LT5kZXYsICJmYWlsZWQgdG8gZW5hYmxlIERTSVxuIik7CiAJCWdvdG8gZXJyMTsKIAl9 CiAKLQlpbi0+b3BzLmRzaS0+ZW5hYmxlX2hzKGluLCBkZGF0YS0+Y2hhbm5lbCwgdHJ1ZSk7CisJ aW4tPm9wcy0+ZHNpLmVuYWJsZV9ocyhpbiwgZGRhdGEtPmNoYW5uZWwsIHRydWUpOwogCiAJciA9 IF9kc2ljbV9lbmFibGVfdGUoZGRhdGEsIHRydWUpOwogCWlmIChyKSB7CkBAIC0zODEsMTMgKzM4 MSwxMyBAQCBzdGF0aWMgaW50IGRzaWNtX2JsX3VwZGF0ZV9zdGF0dXMoc3RydWN0IGJhY2tsaWdo dF9kZXZpY2UgKmRldikKIAltdXRleF9sb2NrKCZkZGF0YS0+bG9jayk7CiAKIAlpZiAoZGRhdGEt PmVuYWJsZWQpIHsKLQkJaW4tPm9wcy5kc2ktPmJ1c19sb2NrKGluKTsKKwkJaW4tPm9wcy0+ZHNp LmJ1c19sb2NrKGluKTsKIAogCQlyID0gZHNpY21fd2FrZV91cChkZGF0YSk7CiAJCWlmICghcikK IAkJCXIgPSBkc2ljbV9kY3Nfd3JpdGVfMShkZGF0YSwgRENTX0JSSUdIVE5FU1MsIGxldmVsKTsK IAotCQlpbi0+b3BzLmRzaS0+YnVzX3VubG9jayhpbik7CisJCWluLT5vcHMtPmRzaS5idXNfdW5s b2NrKGluKTsKIAl9CiAKIAltdXRleF91bmxvY2soJmRkYXRhLT5sb2NrKTsKQEAgLTQyMSwxNCAr NDIxLDE0IEBAIHN0YXRpYyBzc2l6ZV90IGRzaWNtX251bV9lcnJvcnNfc2hvdyhzdHJ1Y3QgZGV2 aWNlICpkZXYsCiAJbXV0ZXhfbG9jaygmZGRhdGEtPmxvY2spOwogCiAJaWYgKGRkYXRhLT5lbmFi bGVkKSB7Ci0JCWluLT5vcHMuZHNpLT5idXNfbG9jayhpbik7CisJCWluLT5vcHMtPmRzaS5idXNf bG9jayhpbik7CiAKIAkJciA9IGRzaWNtX3dha2VfdXAoZGRhdGEpOwogCQlpZiAoIXIpCiAJCQly ID0gZHNpY21fZGNzX3JlYWRfMShkZGF0YSwgRENTX1JFQURfTlVNX0VSUk9SUywKIAkJCQkJJmVy cm9ycyk7CiAKLQkJaW4tPm9wcy5kc2ktPmJ1c191bmxvY2soaW4pOworCQlpbi0+b3BzLT5kc2ku YnVzX3VubG9jayhpbik7CiAJfSBlbHNlIHsKIAkJciA9IC1FTk9ERVY7CiAJfQpAQCAtNDUzLDEz ICs0NTMsMTMgQEAgc3RhdGljIHNzaXplX3QgZHNpY21faHdfcmV2aXNpb25fc2hvdyhzdHJ1Y3Qg ZGV2aWNlICpkZXYsCiAJbXV0ZXhfbG9jaygmZGRhdGEtPmxvY2spOwogCiAJaWYgKGRkYXRhLT5l bmFibGVkKSB7Ci0JCWluLT5vcHMuZHNpLT5idXNfbG9jayhpbik7CisJCWluLT5vcHMtPmRzaS5i dXNfbG9jayhpbik7CiAKIAkJciA9IGRzaWNtX3dha2VfdXAoZGRhdGEpOwogCQlpZiAoIXIpCiAJ CQlyID0gZHNpY21fZ2V0X2lkKGRkYXRhLCAmaWQxLCAmaWQyLCAmaWQzKTsKIAotCQlpbi0+b3Bz LmRzaS0+YnVzX3VubG9jayhpbik7CisJCWluLT5vcHMtPmRzaS5idXNfdW5sb2NrKGluKTsKIAl9 IGVsc2UgewogCQlyID0gLUVOT0RFVjsKIAl9CkBAIC00ODksMTQgKzQ4OSwxNCBAQCBzdGF0aWMg c3NpemVfdCBkc2ljbV9zdG9yZV91bHBzKHN0cnVjdCBkZXZpY2UgKmRldiwKIAltdXRleF9sb2Nr KCZkZGF0YS0+bG9jayk7CiAKIAlpZiAoZGRhdGEtPmVuYWJsZWQpIHsKLQkJaW4tPm9wcy5kc2kt PmJ1c19sb2NrKGluKTsKKwkJaW4tPm9wcy0+ZHNpLmJ1c19sb2NrKGluKTsKIAogCQlpZiAodCkK IAkJCXIgPSBkc2ljbV9lbnRlcl91bHBzKGRkYXRhKTsKIAkJZWxzZQogCQkJciA9IGRzaWNtX3dh a2VfdXAoZGRhdGEpOwogCi0JCWluLT5vcHMuZHNpLT5idXNfdW5sb2NrKGluKTsKKwkJaW4tPm9w cy0+ZHNpLmJ1c191bmxvY2soaW4pOwogCX0KIAogCW11dGV4X3VubG9jaygmZGRhdGEtPmxvY2sp OwpAQCAtNTQxLDkgKzU0MSw5IEBAIHN0YXRpYyBzc2l6ZV90IGRzaWNtX3N0b3JlX3VscHNfdGlt ZW91dChzdHJ1Y3QgZGV2aWNlICpkZXYsCiAKIAlpZiAoZGRhdGEtPmVuYWJsZWQpIHsKIAkJLyog ZHNpY21fd2FrZV91cCB3aWxsIHJlc3RhcnQgdGhlIHRpbWVyICovCi0JCWluLT5vcHMuZHNpLT5i dXNfbG9jayhpbik7CisJCWluLT5vcHMtPmRzaS5idXNfbG9jayhpbik7CiAJCXIgPSBkc2ljbV93 YWtlX3VwKGRkYXRhKTsKLQkJaW4tPm9wcy5kc2ktPmJ1c191bmxvY2soaW4pOworCQlpbi0+b3Bz LT5kc2kuYnVzX3VubG9jayhpbik7CiAJfQogCiAJbXV0ZXhfdW5sb2NrKCZkZGF0YS0+bG9jayk7 CkBAIC02MzUsNyArNjM1LDcgQEAgc3RhdGljIGludCBkc2ljbV9wb3dlcl9vbihzdHJ1Y3QgcGFu ZWxfZHJ2X2RhdGEgKmRkYXRhKQogCX0KIAogCWlmIChkZGF0YS0+cGluX2NvbmZpZy5udW1fcGlu cyA+IDApIHsKLQkJciA9IGluLT5vcHMuZHNpLT5jb25maWd1cmVfcGlucyhpbiwgJmRkYXRhLT5w aW5fY29uZmlnKTsKKwkJciA9IGluLT5vcHMtPmRzaS5jb25maWd1cmVfcGlucyhpbiwgJmRkYXRh LT5waW5fY29uZmlnKTsKIAkJaWYgKHIpIHsKIAkJCWRldl9lcnIoJmRkYXRhLT5wZGV2LT5kZXYs CiAJCQkJImZhaWxlZCB0byBjb25maWd1cmUgRFNJIHBpbnNcbiIpOwpAQCAtNjQzLDEzICs2NDMs MTMgQEAgc3RhdGljIGludCBkc2ljbV9wb3dlcl9vbihzdHJ1Y3QgcGFuZWxfZHJ2X2RhdGEgKmRk YXRhKQogCQl9CiAJfQogCi0JciA9IGluLT5vcHMuZHNpLT5zZXRfY29uZmlnKGluLCAmZHNpX2Nv bmZpZyk7CisJciA9IGluLT5vcHMtPmRzaS5zZXRfY29uZmlnKGluLCAmZHNpX2NvbmZpZyk7CiAJ aWYgKHIpIHsKIAkJZGV2X2VycigmZGRhdGEtPnBkZXYtPmRldiwgImZhaWxlZCB0byBjb25maWd1 cmUgRFNJXG4iKTsKIAkJZ290byBlcnJfdmRkaTsKIAl9CiAKLQlyID0gaW4tPm9wcy5kc2ktPmVu YWJsZShpbik7CisJciA9IGluLT5vcHMtPmVuYWJsZShpbik7CiAJaWYgKHIpIHsKIAkJZGV2X2Vy cigmZGRhdGEtPnBkZXYtPmRldiwgImZhaWxlZCB0byBlbmFibGUgRFNJXG4iKTsKIAkJZ290byBl cnJfdmRkaTsKQEAgLTY1Nyw3ICs2NTcsNyBAQCBzdGF0aWMgaW50IGRzaWNtX3Bvd2VyX29uKHN0 cnVjdCBwYW5lbF9kcnZfZGF0YSAqZGRhdGEpCiAKIAlkc2ljbV9od19yZXNldChkZGF0YSk7CiAK LQlpbi0+b3BzLmRzaS0+ZW5hYmxlX2hzKGluLCBkZGF0YS0+Y2hhbm5lbCwgZmFsc2UpOworCWlu LT5vcHMtPmRzaS5lbmFibGVfaHMoaW4sIGRkYXRhLT5jaGFubmVsLCBmYWxzZSk7CiAKIAlyID0g ZHNpY21fc2xlZXBfb3V0KGRkYXRhKTsKIAlpZiAocikKQEAgLTY4OSw3ICs2ODksNyBAQCBzdGF0 aWMgaW50IGRzaWNtX3Bvd2VyX29uKHN0cnVjdCBwYW5lbF9kcnZfZGF0YSAqZGRhdGEpCiAJaWYg KHIpCiAJCWdvdG8gZXJyOwogCi0JciA9IGluLT5vcHMuZHNpLT5lbmFibGVfdmlkZW9fb3V0cHV0 KGluLCBkZGF0YS0+Y2hhbm5lbCk7CisJciA9IGluLT5vcHMtPmRzaS5lbmFibGVfdmlkZW9fb3V0 cHV0KGluLCBkZGF0YS0+Y2hhbm5lbCk7CiAJaWYgKHIpCiAJCWdvdG8gZXJyOwogCkBAIC03MDEs NyArNzAxLDcgQEAgc3RhdGljIGludCBkc2ljbV9wb3dlcl9vbihzdHJ1Y3QgcGFuZWxfZHJ2X2Rh dGEgKmRkYXRhKQogCQlkZGF0YS0+aW50cm9fcHJpbnRlZCA9IHRydWU7CiAJfQogCi0JaW4tPm9w cy5kc2ktPmVuYWJsZV9ocyhpbiwgZGRhdGEtPmNoYW5uZWwsIHRydWUpOworCWluLT5vcHMtPmRz aS5lbmFibGVfaHMoaW4sIGRkYXRhLT5jaGFubmVsLCB0cnVlKTsKIAogCXJldHVybiAwOwogZXJy OgpAQCAtNzA5LDcgKzcwOSw3IEBAIHN0YXRpYyBpbnQgZHNpY21fcG93ZXJfb24oc3RydWN0IHBh bmVsX2Rydl9kYXRhICpkZGF0YSkKIAogCWRzaWNtX2h3X3Jlc2V0KGRkYXRhKTsKIAotCWluLT5v cHMuZHNpLT5kaXNhYmxlKGluLCB0cnVlLCBmYWxzZSk7CisJaW4tPm9wcy0+ZHNpLmRpc2FibGUo aW4sIHRydWUsIGZhbHNlKTsKIGVycl92ZGRpOgogCWlmIChkZGF0YS0+dmRkaSkKIAkJcmVndWxh dG9yX2Rpc2FibGUoZGRhdGEtPnZkZGkpOwpAQCAtNzI1LDcgKzcyNSw3IEBAIHN0YXRpYyB2b2lk IGRzaWNtX3Bvd2VyX29mZihzdHJ1Y3QgcGFuZWxfZHJ2X2RhdGEgKmRkYXRhKQogCXN0cnVjdCBv bWFwX2Rzc19kZXZpY2UgKmluID0gZGRhdGEtPmluOwogCWludCByOwogCi0JaW4tPm9wcy5kc2kt PmRpc2FibGVfdmlkZW9fb3V0cHV0KGluLCBkZGF0YS0+Y2hhbm5lbCk7CisJaW4tPm9wcy0+ZHNp LmRpc2FibGVfdmlkZW9fb3V0cHV0KGluLCBkZGF0YS0+Y2hhbm5lbCk7CiAKIAlyID0gZHNpY21f ZGNzX3dyaXRlXzAoZGRhdGEsIE1JUElfRENTX1NFVF9ESVNQTEFZX09GRik7CiAJaWYgKCFyKQpA QCAtNzM3LDcgKzczNyw3IEBAIHN0YXRpYyB2b2lkIGRzaWNtX3Bvd2VyX29mZihzdHJ1Y3QgcGFu ZWxfZHJ2X2RhdGEgKmRkYXRhKQogCQlkc2ljbV9od19yZXNldChkZGF0YSk7CiAJfQogCi0JaW4t Pm9wcy5kc2ktPmRpc2FibGUoaW4sIHRydWUsIGZhbHNlKTsKKwlpbi0+b3BzLT5kc2kuZGlzYWJs ZShpbiwgdHJ1ZSwgZmFsc2UpOwogCiAJaWYgKGRkYXRhLT52ZGRpKQogCQlyZWd1bGF0b3JfZGlz YWJsZShkZGF0YS0+dmRkaSk7CkBAIC03NzIsMTkgKzc3MiwxOSBAQCBzdGF0aWMgaW50IGRzaWNt X2Nvbm5lY3Qoc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2KQogCQlyZXR1cm4gUFRSX0VS Uihpbik7CiAJfQogCi0JciA9IGluLT5vcHMuZHNpLT5jb25uZWN0KGluLCBkc3NkZXYpOworCXIg PSBpbi0+b3BzLT5jb25uZWN0KGluLCBkc3NkZXYpOwogCWlmIChyKSB7CiAJCWRldl9lcnIoZGV2 LCAiRmFpbGVkIHRvIGNvbm5lY3QgdG8gdmlkZW8gc291cmNlXG4iKTsKIAkJZ290byBlcnJfY29u bmVjdDsKIAl9CiAKLQlyID0gaW4tPm9wcy5kc2ktPnJlcXVlc3RfdmMoaW4sICZkZGF0YS0+Y2hh bm5lbCk7CisJciA9IGluLT5vcHMtPmRzaS5yZXF1ZXN0X3ZjKGluLCAmZGRhdGEtPmNoYW5uZWwp OwogCWlmIChyKSB7CiAJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGdldCB2aXJ0dWFsIGNoYW5u ZWxcbiIpOwogCQlnb3RvIGVycl9yZXFfdmM7CiAJfQogCi0JciA9IGluLT5vcHMuZHNpLT5zZXRf dmNfaWQoaW4sIGRkYXRhLT5jaGFubmVsLCBUQ0gpOworCXIgPSBpbi0+b3BzLT5kc2kuc2V0X3Zj X2lkKGluLCBkZGF0YS0+Y2hhbm5lbCwgVENIKTsKIAlpZiAocikgewogCQlkZXZfZXJyKGRldiwg ImZhaWxlZCB0byBzZXQgVkNfSURcbiIpOwogCQlnb3RvIGVycl92Y19pZDsKQEAgLTc5NCw5ICs3 OTQsOSBAQCBzdGF0aWMgaW50IGRzaWNtX2Nvbm5lY3Qoc3RydWN0IG9tYXBfZHNzX2RldmljZSAq ZHNzZGV2KQogCXJldHVybiAwOwogCiBlcnJfdmNfaWQ6Ci0JaW4tPm9wcy5kc2ktPnJlbGVhc2Vf dmMoaW4sIGRkYXRhLT5jaGFubmVsKTsKKwlpbi0+b3BzLT5kc2kucmVsZWFzZV92YyhpbiwgZGRh dGEtPmNoYW5uZWwpOwogZXJyX3JlcV92YzoKLQlpbi0+b3BzLmRzaS0+ZGlzY29ubmVjdChpbiwg ZHNzZGV2KTsKKwlpbi0+b3BzLT5kaXNjb25uZWN0KGluLCBkc3NkZXYpOwogZXJyX2Nvbm5lY3Q6 CiAJb21hcF9kc3NfcHV0X2RldmljZShpbik7CiAJcmV0dXJuIHI7CkBAIC04MTAsOCArODEwLDgg QEAgc3RhdGljIHZvaWQgZHNpY21fZGlzY29ubmVjdChzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpk c3NkZXYpCiAJaWYgKCFvbWFwZHNzX2RldmljZV9pc19jb25uZWN0ZWQoZHNzZGV2KSkKIAkJcmV0 dXJuOwogCi0JaW4tPm9wcy5kc2ktPnJlbGVhc2VfdmMoaW4sIGRkYXRhLT5jaGFubmVsKTsKLQlp bi0+b3BzLmRzaS0+ZGlzY29ubmVjdChpbiwgZHNzZGV2KTsKKwlpbi0+b3BzLT5kc2kucmVsZWFz ZV92YyhpbiwgZGRhdGEtPmNoYW5uZWwpOworCWluLT5vcHMtPmRpc2Nvbm5lY3QoaW4sIGRzc2Rl dik7CiAKIAlvbWFwX2Rzc19wdXRfZGV2aWNlKGluKTsKIAlkZGF0YS0+aW4gPSBOVUxMOwpAQCAt ODM3LDExICs4MzcsMTEgQEAgc3RhdGljIGludCBkc2ljbV9lbmFibGUoc3RydWN0IG9tYXBfZHNz X2RldmljZSAqZHNzZGV2KQogCQlnb3RvIGVycjsKIAl9CiAKLQlpbi0+b3BzLmRzaS0+YnVzX2xv Y2soaW4pOworCWluLT5vcHMtPmRzaS5idXNfbG9jayhpbik7CiAKIAlyID0gZHNpY21fcG93ZXJf b24oZGRhdGEpOwogCi0JaW4tPm9wcy5kc2ktPmJ1c191bmxvY2soaW4pOworCWluLT5vcHMtPmRz aS5idXNfdW5sb2NrKGluKTsKIAogCWlmIChyKQogCQlnb3RvIGVycjsKQEAgLTg3Myw3ICs4NzMs NyBAQCBzdGF0aWMgdm9pZCBkc2ljbV9kaXNhYmxlKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRz c2RldikKIAogCWRzaWNtX2NhbmNlbF91bHBzX3dvcmsoZGRhdGEpOwogCi0JaW4tPm9wcy5kc2kt PmJ1c19sb2NrKGluKTsKKwlpbi0+b3BzLT5kc2kuYnVzX2xvY2soaW4pOwogCiAJaWYgKG9tYXBk c3NfZGV2aWNlX2lzX2VuYWJsZWQoZHNzZGV2KSkgewogCQlyID0gZHNpY21fd2FrZV91cChkZGF0 YSk7CkBAIC04ODEsNyArODgxLDcgQEAgc3RhdGljIHZvaWQgZHNpY21fZGlzYWJsZShzdHJ1Y3Qg b21hcF9kc3NfZGV2aWNlICpkc3NkZXYpCiAJCQlkc2ljbV9wb3dlcl9vZmYoZGRhdGEpOwogCX0K IAotCWluLT5vcHMuZHNpLT5idXNfdW5sb2NrKGluKTsKKwlpbi0+b3BzLT5kc2kuYnVzX3VubG9j ayhpbik7CiAKIAlkc3NkZXYtPnN0YXRlID0gT01BUF9EU1NfRElTUExBWV9ESVNBQkxFRDsKIApA QCAtODk0LDcgKzg5NCw3IEBAIHN0YXRpYyB2b2lkIGRzaWNtX2ZyYW1lZG9uZV9jYihpbnQgZXJy LCB2b2lkICpkYXRhKQogCXN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmluID0gZGRhdGEtPmluOwog CiAJZGV2X2RiZygmZGRhdGEtPnBkZXYtPmRldiwgImZyYW1lZG9uZSwgZXJyICVkXG4iLCBlcnIp OwotCWluLT5vcHMuZHNpLT5idXNfdW5sb2NrKGRkYXRhLT5pbik7CisJaW4tPm9wcy0+ZHNpLmJ1 c191bmxvY2soZGRhdGEtPmluKTsKIH0KIAogc3RhdGljIGlycXJldHVybl90IGRzaWNtX3RlX2lz cihpbnQgaXJxLCB2b2lkICpkYXRhKQpAQCAtOTA5LDcgKzkwOSw3IEBAIHN0YXRpYyBpcnFyZXR1 cm5fdCBkc2ljbV90ZV9pc3IoaW50IGlycSwgdm9pZCAqZGF0YSkKIAlpZiAob2xkKSB7CiAJCWNh bmNlbF9kZWxheWVkX3dvcmsoJmRkYXRhLT50ZV90aW1lb3V0X3dvcmspOwogCi0JCXIgPSBpbi0+ b3BzLmRzaS0+dXBkYXRlKGluLCBkZGF0YS0+Y2hhbm5lbCwgZHNpY21fZnJhbWVkb25lX2NiLAor CQlyID0gaW4tPm9wcy0+ZHNpLnVwZGF0ZShpbiwgZGRhdGEtPmNoYW5uZWwsIGRzaWNtX2ZyYW1l ZG9uZV9jYiwKIAkJCQlkZGF0YSk7CiAJCWlmIChyKQogCQkJZ290byBlcnI7CkBAIC05MTgsNyAr OTE4LDcgQEAgc3RhdGljIGlycXJldHVybl90IGRzaWNtX3RlX2lzcihpbnQgaXJxLCB2b2lkICpk YXRhKQogCXJldHVybiBJUlFfSEFORExFRDsKIGVycjoKIAlkZXZfZXJyKCZkZGF0YS0+cGRldi0+ ZGV2LCAic3RhcnQgdXBkYXRlIGZhaWxlZFxuIik7Ci0JaW4tPm9wcy5kc2ktPmJ1c191bmxvY2so aW4pOworCWluLT5vcHMtPmRzaS5idXNfdW5sb2NrKGluKTsKIAlyZXR1cm4gSVJRX0hBTkRMRUQ7 CiB9CiAKQEAgLTkzMSw3ICs5MzEsNyBAQCBzdGF0aWMgdm9pZCBkc2ljbV90ZV90aW1lb3V0X3dv cmtfY2FsbGJhY2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCWRldl9lcnIoJmRkYXRhLT5w ZGV2LT5kZXYsICJURSBub3QgcmVjZWl2ZWQgZm9yIDI1MG1zIVxuIik7CiAKIAlhdG9taWNfc2V0 KCZkZGF0YS0+ZG9fdXBkYXRlLCAwKTsKLQlpbi0+b3BzLmRzaS0+YnVzX3VubG9jayhpbik7CisJ aW4tPm9wcy0+ZHNpLmJ1c191bmxvY2soaW4pOwogfQogCiBzdGF0aWMgaW50IGRzaWNtX3VwZGF0 ZShzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYsCkBAIC05NDQsNyArOTQ0LDcgQEAgc3Rh dGljIGludCBkc2ljbV91cGRhdGUoc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2LAogCWRl dl9kYmcoJmRkYXRhLT5wZGV2LT5kZXYsICJ1cGRhdGUgJWQsICVkLCAlZCB4ICVkXG4iLCB4LCB5 LCB3LCBoKTsKIAogCW11dGV4X2xvY2soJmRkYXRhLT5sb2NrKTsKLQlpbi0+b3BzLmRzaS0+YnVz X2xvY2soaW4pOworCWluLT5vcHMtPmRzaS5idXNfbG9jayhpbik7CiAKIAlyID0gZHNpY21fd2Fr ZV91cChkZGF0YSk7CiAJaWYgKHIpCkBAIC05NjYsNyArOTY2LDcgQEAgc3RhdGljIGludCBkc2lj bV91cGRhdGUoc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2LAogCQkJCW1zZWNzX3RvX2pp ZmZpZXMoMjUwKSk7CiAJCWF0b21pY19zZXQoJmRkYXRhLT5kb191cGRhdGUsIDEpOwogCX0gZWxz ZSB7Ci0JCXIgPSBpbi0+b3BzLmRzaS0+dXBkYXRlKGluLCBkZGF0YS0+Y2hhbm5lbCwgZHNpY21f ZnJhbWVkb25lX2NiLAorCQlyID0gaW4tPm9wcy0+ZHNpLnVwZGF0ZShpbiwgZGRhdGEtPmNoYW5u ZWwsIGRzaWNtX2ZyYW1lZG9uZV9jYiwKIAkJCQlkZGF0YSk7CiAJCWlmIChyKQogCQkJZ290byBl cnI7CkBAIC05NzYsNyArOTc2LDcgQEAgc3RhdGljIGludCBkc2ljbV91cGRhdGUoc3RydWN0IG9t YXBfZHNzX2RldmljZSAqZHNzZGV2LAogCW11dGV4X3VubG9jaygmZGRhdGEtPmxvY2spOwogCXJl dHVybiAwOwogZXJyOgotCWluLT5vcHMuZHNpLT5idXNfdW5sb2NrKGluKTsKKwlpbi0+b3BzLT5k c2kuYnVzX3VubG9jayhpbik7CiAJbXV0ZXhfdW5sb2NrKCZkZGF0YS0+bG9jayk7CiAJcmV0dXJu IHI7CiB9CkBAIC05ODksOCArOTg5LDggQEAgc3RhdGljIGludCBkc2ljbV9zeW5jKHN0cnVjdCBv bWFwX2Rzc19kZXZpY2UgKmRzc2RldikKIAlkZXZfZGJnKCZkZGF0YS0+cGRldi0+ZGV2LCAic3lu Y1xuIik7CiAKIAltdXRleF9sb2NrKCZkZGF0YS0+bG9jayk7Ci0JaW4tPm9wcy5kc2ktPmJ1c19s b2NrKGluKTsKLQlpbi0+b3BzLmRzaS0+YnVzX3VubG9jayhpbik7CisJaW4tPm9wcy0+ZHNpLmJ1 c19sb2NrKGluKTsKKwlpbi0+b3BzLT5kc2kuYnVzX3VubG9jayhpbik7CiAJbXV0ZXhfdW5sb2Nr KCZkZGF0YS0+bG9jayk7CiAKIAlkZXZfZGJnKCZkZGF0YS0+cGRldi0+ZGV2LCAic3luYyBkb25l XG4iKTsKQEAgLTEwMDksNyArMTAwOSw3IEBAIHN0YXRpYyBpbnQgX2RzaWNtX2VuYWJsZV90ZShz dHJ1Y3QgcGFuZWxfZHJ2X2RhdGEgKmRkYXRhLCBib29sIGVuYWJsZSkKIAkJciA9IGRzaWNtX2Rj c193cml0ZV8wKGRkYXRhLCBNSVBJX0RDU19TRVRfVEVBUl9PRkYpOwogCiAJaWYgKCFkZGF0YS0+ ZXh0X3RlX2dwaW8pCi0JCWluLT5vcHMuZHNpLT5lbmFibGVfdGUoaW4sIGVuYWJsZSk7CisJCWlu LT5vcHMtPmRzaS5lbmFibGVfdGUoaW4sIGVuYWJsZSk7CiAKIAkvKiBwb3NzaWJsZSBwYW5lbCBi dWcgKi8KIAltc2xlZXAoMTAwKTsKQEAgLTEwMjgsNyArMTAyOCw3IEBAIHN0YXRpYyBpbnQgZHNp Y21fZW5hYmxlX3RlKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldiwgYm9vbCBlbmFibGUp CiAJaWYgKGRkYXRhLT50ZV9lbmFibGVkID09IGVuYWJsZSkKIAkJZ290byBlbmQ7CiAKLQlpbi0+ b3BzLmRzaS0+YnVzX2xvY2soaW4pOworCWluLT5vcHMtPmRzaS5idXNfbG9jayhpbik7CiAKIAlp ZiAoZGRhdGEtPmVuYWJsZWQpIHsKIAkJciA9IGRzaWNtX3dha2VfdXAoZGRhdGEpOwpAQCAtMTA0 MiwxMyArMTA0MiwxMyBAQCBzdGF0aWMgaW50IGRzaWNtX2VuYWJsZV90ZShzdHJ1Y3Qgb21hcF9k c3NfZGV2aWNlICpkc3NkZXYsIGJvb2wgZW5hYmxlKQogCiAJZGRhdGEtPnRlX2VuYWJsZWQgPSBl bmFibGU7CiAKLQlpbi0+b3BzLmRzaS0+YnVzX3VubG9jayhpbik7CisJaW4tPm9wcy0+ZHNpLmJ1 c191bmxvY2soaW4pOwogZW5kOgogCW11dGV4X3VubG9jaygmZGRhdGEtPmxvY2spOwogCiAJcmV0 dXJuIDA7CiBlcnI6Ci0JaW4tPm9wcy5kc2ktPmJ1c191bmxvY2soaW4pOworCWluLT5vcHMtPmRz aS5idXNfdW5sb2NrKGluKTsKIAltdXRleF91bmxvY2soJmRkYXRhLT5sb2NrKTsKIAogCXJldHVy biByOwpAQCAtMTA5MCw3ICsxMDkwLDcgQEAgc3RhdGljIGludCBkc2ljbV9tZW1vcnlfcmVhZChz dHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYsCiAJc2l6ZSA9IG1pbigodTMyKXcgKiBoICog MywKIAkJICAgZGRhdGEtPnZtLmhhY3RpdmUgKiBkZGF0YS0+dm0udmFjdGl2ZSAqIDMpOwogCi0J aW4tPm9wcy5kc2ktPmJ1c19sb2NrKGluKTsKKwlpbi0+b3BzLT5kc2kuYnVzX2xvY2soaW4pOwog CiAJciA9IGRzaWNtX3dha2VfdXAoZGRhdGEpOwogCWlmIChyKQpAQCAtMTEwNiw3ICsxMTA2LDcg QEAgc3RhdGljIGludCBkc2ljbV9tZW1vcnlfcmVhZChzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpk c3NkZXYsCiAKIAlkc2ljbV9zZXRfdXBkYXRlX3dpbmRvdyhkZGF0YSwgeCwgeSwgdywgaCk7CiAK LQlyID0gaW4tPm9wcy5kc2ktPnNldF9tYXhfcnhfcGFja2V0X3NpemUoaW4sIGRkYXRhLT5jaGFu bmVsLCBwbGVuKTsKKwlyID0gaW4tPm9wcy0+ZHNpLnNldF9tYXhfcnhfcGFja2V0X3NpemUoaW4s IGRkYXRhLT5jaGFubmVsLCBwbGVuKTsKIAlpZiAocikKIAkJZ290byBlcnIyOwogCkBAIC0xMTE0 LDcgKzExMTQsNyBAQCBzdGF0aWMgaW50IGRzaWNtX21lbW9yeV9yZWFkKHN0cnVjdCBvbWFwX2Rz c19kZXZpY2UgKmRzc2RldiwKIAkJdTggZGNzX2NtZCA9IGZpcnN0ID8gMHgyZSA6IDB4M2U7CiAJ CWZpcnN0ID0gMDsKIAotCQlyID0gaW4tPm9wcy5kc2ktPmRjc19yZWFkKGluLCBkZGF0YS0+Y2hh bm5lbCwgZGNzX2NtZCwKKwkJciA9IGluLT5vcHMtPmRzaS5kY3NfcmVhZChpbiwgZGRhdGEtPmNo YW5uZWwsIGRjc19jbWQsCiAJCQkJYnVmICsgYnVmX3VzZWQsIHNpemUgLSBidWZfdXNlZCk7CiAK IAkJaWYgKHIgPCAwKSB7CkBAIC0xMTQwLDkgKzExNDAsOSBAQCBzdGF0aWMgaW50IGRzaWNtX21l bW9yeV9yZWFkKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldiwKIAlyID0gYnVmX3VzZWQ7 CiAKIGVycjM6Ci0JaW4tPm9wcy5kc2ktPnNldF9tYXhfcnhfcGFja2V0X3NpemUoaW4sIGRkYXRh LT5jaGFubmVsLCAxKTsKKwlpbi0+b3BzLT5kc2kuc2V0X21heF9yeF9wYWNrZXRfc2l6ZShpbiwg ZGRhdGEtPmNoYW5uZWwsIDEpOwogZXJyMjoKLQlpbi0+b3BzLmRzaS0+YnVzX3VubG9jayhpbik7 CisJaW4tPm9wcy0+ZHNpLmJ1c191bmxvY2soaW4pOwogZXJyMToKIAltdXRleF91bmxvY2soJmRk YXRhLT5sb2NrKTsKIAlyZXR1cm4gcjsKQEAgLTExNjIsMTEgKzExNjIsMTEgQEAgc3RhdGljIHZv aWQgZHNpY21fdWxwc193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJcmV0dXJuOwog CX0KIAotCWluLT5vcHMuZHNpLT5idXNfbG9jayhpbik7CisJaW4tPm9wcy0+ZHNpLmJ1c19sb2Nr KGluKTsKIAogCWRzaWNtX2VudGVyX3VscHMoZGRhdGEpOwogCi0JaW4tPm9wcy5kc2ktPmJ1c191 bmxvY2soaW4pOworCWluLT5vcHMtPmRzaS5idXNfdW5sb2NrKGluKTsKIAltdXRleF91bmxvY2so JmRkYXRhLT5sb2NrKTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0v ZGlzcGxheXMvcGFuZWwtbGdwaGlsaXBzLWxiMDM1cTAyLmMgYi9kcml2ZXJzL2dwdS9kcm0vb21h cGRybS9kaXNwbGF5cy9wYW5lbC1sZ3BoaWxpcHMtbGIwMzVxMDIuYwppbmRleCAwYTZhYjY0NzAy NTMuLjhlMjkzNzA4MjYxYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vZGlz cGxheXMvcGFuZWwtbGdwaGlsaXBzLWxiMDM1cTAyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL29t YXBkcm0vZGlzcGxheXMvcGFuZWwtbGdwaGlsaXBzLWxiMDM1cTAyLmMKQEAgLTEzMSw3ICsxMzEs NyBAQCBzdGF0aWMgaW50IGxiMDM1cTAyX2Nvbm5lY3Qoc3RydWN0IG9tYXBfZHNzX2RldmljZSAq ZHNzZGV2KQogCQlyZXR1cm4gUFRSX0VSUihpbik7CiAJfQogCi0JciA9IGluLT5vcHMuZHBpLT5j b25uZWN0KGluLCBkc3NkZXYpOworCXIgPSBpbi0+b3BzLT5jb25uZWN0KGluLCBkc3NkZXYpOwog CWlmIChyKSB7CiAJCW9tYXBfZHNzX3B1dF9kZXZpY2UoaW4pOwogCQlyZXR1cm4gcjsKQEAgLTE1 MSw3ICsxNTEsNyBAQCBzdGF0aWMgdm9pZCBsYjAzNXEwMl9kaXNjb25uZWN0KHN0cnVjdCBvbWFw X2Rzc19kZXZpY2UgKmRzc2RldikKIAlpZiAoIW9tYXBkc3NfZGV2aWNlX2lzX2Nvbm5lY3RlZChk c3NkZXYpKQogCQlyZXR1cm47CiAKLQlpbi0+b3BzLmRwaS0+ZGlzY29ubmVjdChpbiwgZHNzZGV2 KTsKKwlpbi0+b3BzLT5kaXNjb25uZWN0KGluLCBkc3NkZXYpOwogCiAJb21hcF9kc3NfcHV0X2Rl dmljZShpbik7CiAJZGRhdGEtPmluID0gTlVMTDsKQEAgLTE2OSw5ICsxNjksOSBAQCBzdGF0aWMg aW50IGxiMDM1cTAyX2VuYWJsZShzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYpCiAJaWYg KG9tYXBkc3NfZGV2aWNlX2lzX2VuYWJsZWQoZHNzZGV2KSkKIAkJcmV0dXJuIDA7CiAKLQlpbi0+ b3BzLmRwaS0+c2V0X3RpbWluZ3MoaW4sICZkZGF0YS0+dm0pOworCWluLT5vcHMtPnNldF90aW1p bmdzKGluLCAmZGRhdGEtPnZtKTsKIAotCXIgPSBpbi0+b3BzLmRwaS0+ZW5hYmxlKGluKTsKKwly ID0gaW4tPm9wcy0+ZW5hYmxlKGluKTsKIAlpZiAocikKIAkJcmV0dXJuIHI7CiAKQEAgLTE5NCw3 ICsxOTQsNyBAQCBzdGF0aWMgdm9pZCBsYjAzNXEwMl9kaXNhYmxlKHN0cnVjdCBvbWFwX2Rzc19k ZXZpY2UgKmRzc2RldikKIAlpZiAoZGRhdGEtPmVuYWJsZV9ncGlvKQogCQlncGlvZF9zZXRfdmFs dWVfY2Fuc2xlZXAoZGRhdGEtPmVuYWJsZV9ncGlvLCAwKTsKIAotCWluLT5vcHMuZHBpLT5kaXNh YmxlKGluKTsKKwlpbi0+b3BzLT5kaXNhYmxlKGluKTsKIAogCWRzc2Rldi0+c3RhdGUgPSBPTUFQ X0RTU19ESVNQTEFZX0RJU0FCTEVEOwogfQpAQCAtMjA3LDcgKzIwNyw3IEBAIHN0YXRpYyB2b2lk IGxiMDM1cTAyX3NldF90aW1pbmdzKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldiwKIAog CWRkYXRhLT52bSA9ICp2bTsKIAotCWluLT5vcHMuZHBpLT5zZXRfdGltaW5ncyhpbiwgdm0pOwor CWluLT5vcHMtPnNldF90aW1pbmdzKGluLCB2bSk7CiB9CiAKIHN0YXRpYyB2b2lkIGxiMDM1cTAy X2dldF90aW1pbmdzKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldiwKQEAgLTIyNCw3ICsy MjQsNyBAQCBzdGF0aWMgaW50IGxiMDM1cTAyX2NoZWNrX3RpbWluZ3Moc3RydWN0IG9tYXBfZHNz X2RldmljZSAqZHNzZGV2LAogCXN0cnVjdCBwYW5lbF9kcnZfZGF0YSAqZGRhdGEgPSB0b19wYW5l bF9kYXRhKGRzc2Rldik7CiAJc3RydWN0IG9tYXBfZHNzX2RldmljZSAqaW4gPSBkZGF0YS0+aW47 CiAKLQlyZXR1cm4gaW4tPm9wcy5kcGktPmNoZWNrX3RpbWluZ3MoaW4sIHZtKTsKKwlyZXR1cm4g aW4tPm9wcy0+Y2hlY2tfdGltaW5ncyhpbiwgdm0pOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0 IG9tYXBfZHNzX2RyaXZlciBsYjAzNXEwMl9vcHMgPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vb21hcGRybS9kaXNwbGF5cy9wYW5lbC1uZWMtbmw4MDQ4aGwxMS5jIGIvZHJpdmVycy9n cHUvZHJtL29tYXBkcm0vZGlzcGxheXMvcGFuZWwtbmVjLW5sODA0OGhsMTEuYwppbmRleCA5ODE2 ZTY2MWM5N2QuLjcyOTZjNzk0MzI2YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL29tYXBk cm0vZGlzcGxheXMvcGFuZWwtbmVjLW5sODA0OGhsMTEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v b21hcGRybS9kaXNwbGF5cy9wYW5lbC1uZWMtbmw4MDQ4aGwxMS5jCkBAIC0xMjcsNyArMTI3LDcg QEAgc3RhdGljIGludCBuZWNfODA0OF9jb25uZWN0KHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRz c2RldikKIAkJcmV0dXJuIFBUUl9FUlIoaW4pOwogCX0KIAotCXIgPSBpbi0+b3BzLmRwaS0+Y29u bmVjdChpbiwgZHNzZGV2KTsKKwlyID0gaW4tPm9wcy0+Y29ubmVjdChpbiwgZHNzZGV2KTsKIAlp ZiAocikgewogCQlvbWFwX2Rzc19wdXRfZGV2aWNlKGluKTsKIAkJcmV0dXJuIHI7CkBAIC0xNDUs NyArMTQ1LDcgQEAgc3RhdGljIHZvaWQgbmVjXzgwNDhfZGlzY29ubmVjdChzdHJ1Y3Qgb21hcF9k c3NfZGV2aWNlICpkc3NkZXYpCiAJaWYgKCFvbWFwZHNzX2RldmljZV9pc19jb25uZWN0ZWQoZHNz ZGV2KSkKIAkJcmV0dXJuOwogCi0JaW4tPm9wcy5kcGktPmRpc2Nvbm5lY3QoaW4sIGRzc2Rldik7 CisJaW4tPm9wcy0+ZGlzY29ubmVjdChpbiwgZHNzZGV2KTsKIAogCW9tYXBfZHNzX3B1dF9kZXZp Y2UoaW4pOwogCWRkYXRhLT5pbiA9IE5VTEw7CkBAIC0xNjMsOSArMTYzLDkgQEAgc3RhdGljIGlu dCBuZWNfODA0OF9lbmFibGUoc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2KQogCWlmIChv bWFwZHNzX2RldmljZV9pc19lbmFibGVkKGRzc2RldikpCiAJCXJldHVybiAwOwogCi0JaW4tPm9w cy5kcGktPnNldF90aW1pbmdzKGluLCAmZGRhdGEtPnZtKTsKKwlpbi0+b3BzLT5zZXRfdGltaW5n cyhpbiwgJmRkYXRhLT52bSk7CiAKLQlyID0gaW4tPm9wcy5kcGktPmVuYWJsZShpbik7CisJciA9 IGluLT5vcHMtPmVuYWJsZShpbik7CiAJaWYgKHIpCiAJCXJldHVybiByOwogCkBAIC0xODgsNyAr MTg4LDcgQEAgc3RhdGljIHZvaWQgbmVjXzgwNDhfZGlzYWJsZShzdHJ1Y3Qgb21hcF9kc3NfZGV2 aWNlICpkc3NkZXYpCiAJaWYgKGdwaW9faXNfdmFsaWQoZGRhdGEtPnJlc19ncGlvKSkKIAkJZ3Bp b19zZXRfdmFsdWVfY2Fuc2xlZXAoZGRhdGEtPnJlc19ncGlvLCAwKTsKIAotCWluLT5vcHMuZHBp LT5kaXNhYmxlKGluKTsKKwlpbi0+b3BzLT5kaXNhYmxlKGluKTsKIAogCWRzc2Rldi0+c3RhdGUg PSBPTUFQX0RTU19ESVNQTEFZX0RJU0FCTEVEOwogfQpAQCAtMjAxLDcgKzIwMSw3IEBAIHN0YXRp YyB2b2lkIG5lY184MDQ4X3NldF90aW1pbmdzKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2Rl diwKIAogCWRkYXRhLT52bSA9ICp2bTsKIAotCWluLT5vcHMuZHBpLT5zZXRfdGltaW5ncyhpbiwg dm0pOworCWluLT5vcHMtPnNldF90aW1pbmdzKGluLCB2bSk7CiB9CiAKIHN0YXRpYyB2b2lkIG5l Y184MDQ4X2dldF90aW1pbmdzKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldiwKQEAgLTIx OCw3ICsyMTgsNyBAQCBzdGF0aWMgaW50IG5lY184MDQ4X2NoZWNrX3RpbWluZ3Moc3RydWN0IG9t YXBfZHNzX2RldmljZSAqZHNzZGV2LAogCXN0cnVjdCBwYW5lbF9kcnZfZGF0YSAqZGRhdGEgPSB0 b19wYW5lbF9kYXRhKGRzc2Rldik7CiAJc3RydWN0IG9tYXBfZHNzX2RldmljZSAqaW4gPSBkZGF0 YS0+aW47CiAKLQlyZXR1cm4gaW4tPm9wcy5kcGktPmNoZWNrX3RpbWluZ3MoaW4sIHZtKTsKKwly ZXR1cm4gaW4tPm9wcy0+Y2hlY2tfdGltaW5ncyhpbiwgdm0pOwogfQogCiBzdGF0aWMgY29uc3Qg c3RydWN0IG9tYXBfZHNzX2RyaXZlciBuZWNfODA0OF9vcHMgPSB7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vb21hcGRybS9kaXNwbGF5cy9wYW5lbC1zaGFycC1sczAzN3Y3ZHcwMS5jIGIv ZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vZGlzcGxheXMvcGFuZWwtc2hhcnAtbHMwMzd2N2R3MDEu YwppbmRleCBlMjU5MjQwZjk2ZmEuLjAwMjkxYjllY2ZkZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL29tYXBkcm0vZGlzcGxheXMvcGFuZWwtc2hhcnAtbHMwMzd2N2R3MDEuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vb21hcGRybS9kaXNwbGF5cy9wYW5lbC1zaGFycC1sczAzN3Y3ZHcwMS5j CkBAIC03Myw3ICs3Myw3IEBAIHN0YXRpYyBpbnQgc2hhcnBfbHNfY29ubmVjdChzdHJ1Y3Qgb21h cF9kc3NfZGV2aWNlICpkc3NkZXYpCiAJCXJldHVybiBQVFJfRVJSKGluKTsKIAl9CiAKLQlyID0g aW4tPm9wcy5kcGktPmNvbm5lY3QoaW4sIGRzc2Rldik7CisJciA9IGluLT5vcHMtPmNvbm5lY3Qo aW4sIGRzc2Rldik7CiAJaWYgKHIpIHsKIAkJb21hcF9kc3NfcHV0X2RldmljZShpbik7CiAJCXJl dHVybiByOwpAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgdm9pZCBzaGFycF9sc19kaXNjb25uZWN0 KHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldikKIAlpZiAoIW9tYXBkc3NfZGV2aWNlX2lz X2Nvbm5lY3RlZChkc3NkZXYpKQogCQlyZXR1cm47CiAKLQlpbi0+b3BzLmRwaS0+ZGlzY29ubmVj dChpbiwgZHNzZGV2KTsKKwlpbi0+b3BzLT5kaXNjb25uZWN0KGluLCBkc3NkZXYpOwogCiAJb21h cF9kc3NfcHV0X2RldmljZShpbik7CiAJZGRhdGEtPmluID0gTlVMTDsKQEAgLTEwOSw3ICsxMDks NyBAQCBzdGF0aWMgaW50IHNoYXJwX2xzX2VuYWJsZShzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpk c3NkZXYpCiAJaWYgKG9tYXBkc3NfZGV2aWNlX2lzX2VuYWJsZWQoZHNzZGV2KSkKIAkJcmV0dXJu IDA7CiAKLQlpbi0+b3BzLmRwaS0+c2V0X3RpbWluZ3MoaW4sICZkZGF0YS0+dm0pOworCWluLT5v cHMtPnNldF90aW1pbmdzKGluLCAmZGRhdGEtPnZtKTsKIAogCWlmIChkZGF0YS0+dmNjKSB7CiAJ CXIgPSByZWd1bGF0b3JfZW5hYmxlKGRkYXRhLT52Y2MpOwpAQCAtMTE3LDcgKzExNyw3IEBAIHN0 YXRpYyBpbnQgc2hhcnBfbHNfZW5hYmxlKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldikK IAkJCXJldHVybiByOwogCX0KIAotCXIgPSBpbi0+b3BzLmRwaS0+ZW5hYmxlKGluKTsKKwlyID0g aW4tPm9wcy0+ZW5hYmxlKGluKTsKIAlpZiAocikgewogCQlyZWd1bGF0b3JfZGlzYWJsZShkZGF0 YS0+dmNjKTsKIAkJcmV0dXJuIHI7CkBAIC0xNTUsNyArMTU1LDcgQEAgc3RhdGljIHZvaWQgc2hh cnBfbHNfZGlzYWJsZShzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYpCiAKIAltc2xlZXAo MTAwKTsKIAotCWluLT5vcHMuZHBpLT5kaXNhYmxlKGluKTsKKwlpbi0+b3BzLT5kaXNhYmxlKGlu KTsKIAogCWlmIChkZGF0YS0+dmNjKQogCQlyZWd1bGF0b3JfZGlzYWJsZShkZGF0YS0+dmNjKTsK QEAgLTE3MSw3ICsxNzEsNyBAQCBzdGF0aWMgdm9pZCBzaGFycF9sc19zZXRfdGltaW5ncyhzdHJ1 Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYsCiAKIAlkZGF0YS0+dm0gPSAqdm07CiAKLQlpbi0+ b3BzLmRwaS0+c2V0X3RpbWluZ3MoaW4sIHZtKTsKKwlpbi0+b3BzLT5zZXRfdGltaW5ncyhpbiwg dm0pOwogfQogCiBzdGF0aWMgdm9pZCBzaGFycF9sc19nZXRfdGltaW5ncyhzdHJ1Y3Qgb21hcF9k c3NfZGV2aWNlICpkc3NkZXYsCkBAIC0xODgsNyArMTg4LDcgQEAgc3RhdGljIGludCBzaGFycF9s c19jaGVja190aW1pbmdzKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldiwKIAlzdHJ1Y3Qg cGFuZWxfZHJ2X2RhdGEgKmRkYXRhID0gdG9fcGFuZWxfZGF0YShkc3NkZXYpOwogCXN0cnVjdCBv bWFwX2Rzc19kZXZpY2UgKmluID0gZGRhdGEtPmluOwogCi0JcmV0dXJuIGluLT5vcHMuZHBpLT5j aGVja190aW1pbmdzKGluLCB2bSk7CisJcmV0dXJuIGluLT5vcHMtPmNoZWNrX3RpbWluZ3MoaW4s IHZtKTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBvbWFwX2Rzc19kcml2ZXIgc2hhcnBfbHNf b3BzID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vZGlzcGxheXMvcGFu ZWwtc29ueS1hY3g1NjVha20uYyBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL2Rpc3BsYXlzL3Bh bmVsLXNvbnktYWN4NTY1YWttLmMKaW5kZXggYjQ5MTdkMTJkOTEzLi4wM2ZiMjk3NTgxZmQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL2Rpc3BsYXlzL3BhbmVsLXNvbnktYWN4 NTY1YWttLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vZGlzcGxheXMvcGFuZWwtc29u eS1hY3g1NjVha20uYwpAQCAtNTIyLDcgKzUyMiw3IEBAIHN0YXRpYyBpbnQgYWN4NTY1YWttX2Nv bm5lY3Qoc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2KQogCQlyZXR1cm4gUFRSX0VSUihp bik7CiAJfQogCi0JciA9IGluLT5vcHMuc2RpLT5jb25uZWN0KGluLCBkc3NkZXYpOworCXIgPSBp bi0+b3BzLT5jb25uZWN0KGluLCBkc3NkZXYpOwogCWlmIChyKSB7CiAJCW9tYXBfZHNzX3B1dF9k ZXZpY2UoaW4pOwogCQlyZXR1cm4gcjsKQEAgLTU0MCw3ICs1NDAsNyBAQCBzdGF0aWMgdm9pZCBh Y3g1NjVha21fZGlzY29ubmVjdChzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYpCiAJaWYg KCFvbWFwZHNzX2RldmljZV9pc19jb25uZWN0ZWQoZHNzZGV2KSkKIAkJcmV0dXJuOwogCi0JaW4t Pm9wcy5zZGktPmRpc2Nvbm5lY3QoaW4sIGRzc2Rldik7CisJaW4tPm9wcy0+ZGlzY29ubmVjdChp biwgZHNzZGV2KTsKIAogCW9tYXBfZHNzX3B1dF9kZXZpY2UoaW4pOwogCWRkYXRhLT5pbiA9IE5V TEw7CkBAIC01NTQsOSArNTU0LDkgQEAgc3RhdGljIGludCBhY3g1NjVha21fcGFuZWxfcG93ZXJf b24oc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2KQogCiAJZGV2X2RiZygmZGRhdGEtPnNw aS0+ZGV2LCAiJXNcbiIsIF9fZnVuY19fKTsKIAotCWluLT5vcHMuc2RpLT5zZXRfdGltaW5ncyhp biwgJmRkYXRhLT52bSk7CisJaW4tPm9wcy0+c2V0X3RpbWluZ3MoaW4sICZkZGF0YS0+dm0pOwog Ci0JciA9IGluLT5vcHMuc2RpLT5lbmFibGUoaW4pOworCXIgPSBpbi0+b3BzLT5lbmFibGUoaW4p OwogCWlmIChyKSB7CiAJCXByX2VycigiJXMgc2RpIGVuYWJsZSBmYWlsZWRcbiIsIF9fZnVuY19f KTsKIAkJcmV0dXJuIHI7CkBAIC02MjEsNyArNjIxLDcgQEAgc3RhdGljIHZvaWQgYWN4NTY1YWtt X3BhbmVsX3Bvd2VyX29mZihzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYpCiAJLyogRklY TUUgbmVlZCB0byB0d2VhayB0aGlzIGRlbGF5ICovCiAJbXNsZWVwKDEwMCk7CiAKLQlpbi0+b3Bz LnNkaS0+ZGlzYWJsZShpbik7CisJaW4tPm9wcy0+ZGlzYWJsZShpbik7CiB9CiAKIHN0YXRpYyBp bnQgYWN4NTY1YWttX2VuYWJsZShzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYpCkBAIC02 NzIsNyArNjcyLDcgQEAgc3RhdGljIHZvaWQgYWN4NTY1YWttX3NldF90aW1pbmdzKHN0cnVjdCBv bWFwX2Rzc19kZXZpY2UgKmRzc2RldiwKIAogCWRkYXRhLT52bSA9ICp2bTsKIAotCWluLT5vcHMu c2RpLT5zZXRfdGltaW5ncyhpbiwgdm0pOworCWluLT5vcHMtPnNldF90aW1pbmdzKGluLCB2bSk7 CiB9CiAKIHN0YXRpYyB2b2lkIGFjeDU2NWFrbV9nZXRfdGltaW5ncyhzdHJ1Y3Qgb21hcF9kc3Nf ZGV2aWNlICpkc3NkZXYsCkBAIC02ODksNyArNjg5LDcgQEAgc3RhdGljIGludCBhY3g1NjVha21f Y2hlY2tfdGltaW5ncyhzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYsCiAJc3RydWN0IHBh bmVsX2Rydl9kYXRhICpkZGF0YSA9IHRvX3BhbmVsX2RhdGEoZHNzZGV2KTsKIAlzdHJ1Y3Qgb21h cF9kc3NfZGV2aWNlICppbiA9IGRkYXRhLT5pbjsKIAotCXJldHVybiBpbi0+b3BzLnNkaS0+Y2hl Y2tfdGltaW5ncyhpbiwgdm0pOworCXJldHVybiBpbi0+b3BzLT5jaGVja190aW1pbmdzKGluLCB2 bSk7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb21hcF9kc3NfZHJpdmVyIGFjeDU2NWFrbV9v cHMgPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9kaXNwbGF5cy9wYW5l bC10cG8tdGQwMjh0dGVjMS5jIGIvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vZGlzcGxheXMvcGFu ZWwtdHBvLXRkMDI4dHRlYzEuYwppbmRleCA1ZmFhZjc2MGU4MWIuLmFiZGJiYWYwMjY3NCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vZGlzcGxheXMvcGFuZWwtdHBvLXRkMDI4 dHRlYzEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9kaXNwbGF5cy9wYW5lbC10cG8t dGQwMjh0dGVjMS5jCkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGljIGludCB0ZDAyOHR0ZWMxX3Bh bmVsX2Nvbm5lY3Qoc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2KQogCQlyZXR1cm4gUFRS X0VSUihpbik7CiAJfQogCi0JciA9IGluLT5vcHMuZHBpLT5jb25uZWN0KGluLCBkc3NkZXYpOwor CXIgPSBpbi0+b3BzLT5jb25uZWN0KGluLCBkc3NkZXYpOwogCWlmIChyKSB7CiAJCW9tYXBfZHNz X3B1dF9kZXZpY2UoaW4pOwogCQlyZXR1cm4gcjsKQEAgLTE5OSw3ICsxOTksNyBAQCBzdGF0aWMg dm9pZCB0ZDAyOHR0ZWMxX3BhbmVsX2Rpc2Nvbm5lY3Qoc3RydWN0IG9tYXBfZHNzX2RldmljZSAq ZHNzZGV2KQogCWlmICghb21hcGRzc19kZXZpY2VfaXNfY29ubmVjdGVkKGRzc2RldikpCiAJCXJl dHVybjsKIAotCWluLT5vcHMuZHBpLT5kaXNjb25uZWN0KGluLCBkc3NkZXYpOworCWluLT5vcHMt PmRpc2Nvbm5lY3QoaW4sIGRzc2Rldik7CiAKIAlvbWFwX2Rzc19wdXRfZGV2aWNlKGluKTsKIAlk ZGF0YS0+aW4gPSBOVUxMOwpAQCAtMjE3LDkgKzIxNyw5IEBAIHN0YXRpYyBpbnQgdGQwMjh0dGVj MV9wYW5lbF9lbmFibGUoc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2KQogCWlmIChvbWFw ZHNzX2RldmljZV9pc19lbmFibGVkKGRzc2RldikpCiAJCXJldHVybiAwOwogCi0JaW4tPm9wcy5k cGktPnNldF90aW1pbmdzKGluLCAmZGRhdGEtPnZtKTsKKwlpbi0+b3BzLT5zZXRfdGltaW5ncyhp biwgJmRkYXRhLT52bSk7CiAKLQlyID0gaW4tPm9wcy5kcGktPmVuYWJsZShpbik7CisJciA9IGlu LT5vcHMtPmVuYWJsZShpbik7CiAJaWYgKHIpCiAJCXJldHVybiByOwogCkBAIC0zMjgsNyArMzI4 LDcgQEAgc3RhdGljIHZvaWQgdGQwMjh0dGVjMV9wYW5lbF9kaXNhYmxlKHN0cnVjdCBvbWFwX2Rz c19kZXZpY2UgKmRzc2RldikKIAlqYnRfcmV0X3dyaXRlXzAoZGRhdGEsIEpCVF9SRUdfU0xFRVBf SU4pOwogCWpidF9yZWdfd3JpdGVfMShkZGF0YSwgSkJUX1JFR19QT1dFUl9PTl9PRkYsIDB4MDAp OwogCi0JaW4tPm9wcy5kcGktPmRpc2FibGUoaW4pOworCWluLT5vcHMtPmRpc2FibGUoaW4pOwog CiAJZHNzZGV2LT5zdGF0ZSA9IE9NQVBfRFNTX0RJU1BMQVlfRElTQUJMRUQ7CiB9CkBAIC0zNDEs NyArMzQxLDcgQEAgc3RhdGljIHZvaWQgdGQwMjh0dGVjMV9wYW5lbF9zZXRfdGltaW5ncyhzdHJ1 Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYsCiAKIAlkZGF0YS0+dm0gPSAqdm07CiAKLQlpbi0+ b3BzLmRwaS0+c2V0X3RpbWluZ3MoaW4sIHZtKTsKKwlpbi0+b3BzLT5zZXRfdGltaW5ncyhpbiwg dm0pOwogfQogCiBzdGF0aWMgdm9pZCB0ZDAyOHR0ZWMxX3BhbmVsX2dldF90aW1pbmdzKHN0cnVj dCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldiwKQEAgLTM1OCw3ICszNTgsNyBAQCBzdGF0aWMgaW50 IHRkMDI4dHRlYzFfcGFuZWxfY2hlY2tfdGltaW5ncyhzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpk c3NkZXYsCiAJc3RydWN0IHBhbmVsX2Rydl9kYXRhICpkZGF0YSA9IHRvX3BhbmVsX2RhdGEoZHNz ZGV2KTsKIAlzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICppbiA9IGRkYXRhLT5pbjsKIAotCXJldHVy biBpbi0+b3BzLmRwaS0+Y2hlY2tfdGltaW5ncyhpbiwgdm0pOworCXJldHVybiBpbi0+b3BzLT5j aGVja190aW1pbmdzKGluLCB2bSk7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb21hcF9kc3Nf ZHJpdmVyIHRkMDI4dHRlYzFfb3BzID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL29t YXBkcm0vZGlzcGxheXMvcGFuZWwtdHBvLXRkMDQzbXRlYTEuYyBiL2RyaXZlcnMvZ3B1L2RybS9v bWFwZHJtL2Rpc3BsYXlzL3BhbmVsLXRwby10ZDA0M210ZWExLmMKaW5kZXggOGU5ODIzMmVlOWQ5 Li5kZTExNDAzMTRhN2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL2Rpc3Bs YXlzL3BhbmVsLXRwby10ZDA0M210ZWExLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0v ZGlzcGxheXMvcGFuZWwtdHBvLXRkMDQzbXRlYTEuYwpAQCAtMzUyLDcgKzM1Miw3IEBAIHN0YXRp YyBpbnQgdHBvX3RkMDQzX2Nvbm5lY3Qoc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2KQog CQlyZXR1cm4gUFRSX0VSUihpbik7CiAJfQogCi0JciA9IGluLT5vcHMuZHBpLT5jb25uZWN0KGlu LCBkc3NkZXYpOworCXIgPSBpbi0+b3BzLT5jb25uZWN0KGluLCBkc3NkZXYpOwogCWlmIChyKSB7 CiAJCW9tYXBfZHNzX3B1dF9kZXZpY2UoaW4pOwogCQlyZXR1cm4gcjsKQEAgLTM3MCw3ICszNzAs NyBAQCBzdGF0aWMgdm9pZCB0cG9fdGQwNDNfZGlzY29ubmVjdChzdHJ1Y3Qgb21hcF9kc3NfZGV2 aWNlICpkc3NkZXYpCiAJaWYgKCFvbWFwZHNzX2RldmljZV9pc19jb25uZWN0ZWQoZHNzZGV2KSkK IAkJcmV0dXJuOwogCi0JaW4tPm9wcy5kcGktPmRpc2Nvbm5lY3QoaW4sIGRzc2Rldik7CisJaW4t Pm9wcy0+ZGlzY29ubmVjdChpbiwgZHNzZGV2KTsKIAogCW9tYXBfZHNzX3B1dF9kZXZpY2UoaW4p OwogCWRkYXRhLT5pbiA9IE5VTEw7CkBAIC0zODgsOSArMzg4LDkgQEAgc3RhdGljIGludCB0cG9f dGQwNDNfZW5hYmxlKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldikKIAlpZiAob21hcGRz c19kZXZpY2VfaXNfZW5hYmxlZChkc3NkZXYpKQogCQlyZXR1cm4gMDsKIAotCWluLT5vcHMuZHBp LT5zZXRfdGltaW5ncyhpbiwgJmRkYXRhLT52bSk7CisJaW4tPm9wcy0+c2V0X3RpbWluZ3MoaW4s ICZkZGF0YS0+dm0pOwogCi0JciA9IGluLT5vcHMuZHBpLT5lbmFibGUoaW4pOworCXIgPSBpbi0+ b3BzLT5lbmFibGUoaW4pOwogCWlmIChyKQogCQlyZXR1cm4gcjsKIApAQCAtNDAxLDcgKzQwMSw3 IEBAIHN0YXRpYyBpbnQgdHBvX3RkMDQzX2VuYWJsZShzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpk c3NkZXYpCiAJaWYgKCFkZGF0YS0+c3BpX3N1c3BlbmRlZCkgewogCQlyID0gdHBvX3RkMDQzX3Bv d2VyX29uKGRkYXRhKTsKIAkJaWYgKHIpIHsKLQkJCWluLT5vcHMuZHBpLT5kaXNhYmxlKGluKTsK KwkJCWluLT5vcHMtPmRpc2FibGUoaW4pOwogCQkJcmV0dXJuIHI7CiAJCX0KIAl9CkBAIC00MTks NyArNDE5LDcgQEAgc3RhdGljIHZvaWQgdHBvX3RkMDQzX2Rpc2FibGUoc3RydWN0IG9tYXBfZHNz X2RldmljZSAqZHNzZGV2KQogCWlmICghb21hcGRzc19kZXZpY2VfaXNfZW5hYmxlZChkc3NkZXYp KQogCQlyZXR1cm47CiAKLQlpbi0+b3BzLmRwaS0+ZGlzYWJsZShpbik7CisJaW4tPm9wcy0+ZGlz YWJsZShpbik7CiAKIAlpZiAoIWRkYXRhLT5zcGlfc3VzcGVuZGVkKQogCQl0cG9fdGQwNDNfcG93 ZXJfb2ZmKGRkYXRhKTsKQEAgLTQzNSw3ICs0MzUsNyBAQCBzdGF0aWMgdm9pZCB0cG9fdGQwNDNf c2V0X3RpbWluZ3Moc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2LAogCiAJZGRhdGEtPnZt ID0gKnZtOwogCi0JaW4tPm9wcy5kcGktPnNldF90aW1pbmdzKGluLCB2bSk7CisJaW4tPm9wcy0+ c2V0X3RpbWluZ3MoaW4sIHZtKTsKIH0KIAogc3RhdGljIHZvaWQgdHBvX3RkMDQzX2dldF90aW1p bmdzKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldiwKQEAgLTQ1Miw3ICs0NTIsNyBAQCBz dGF0aWMgaW50IHRwb190ZDA0M19jaGVja190aW1pbmdzKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2Ug KmRzc2RldiwKIAlzdHJ1Y3QgcGFuZWxfZHJ2X2RhdGEgKmRkYXRhID0gdG9fcGFuZWxfZGF0YShk c3NkZXYpOwogCXN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmluID0gZGRhdGEtPmluOwogCi0JcmV0 dXJuIGluLT5vcHMuZHBpLT5jaGVja190aW1pbmdzKGluLCB2bSk7CisJcmV0dXJuIGluLT5vcHMt PmNoZWNrX3RpbWluZ3MoaW4sIHZtKTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBvbWFwX2Rz c19kcml2ZXIgdHBvX3RkMDQzX29wcyA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9v bWFwZHJtL2Rzcy9kcGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL2Rzcy9kcGkuYwppbmRl eCBhZjAwMmM1N2E0MWQuLjQ1MTYwODZlODVmYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L29tYXBkcm0vZHNzL2RwaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL2Rzcy9kcGku YwpAQCAtNjgxLDcgKzY4MSw3IEBAIHN0YXRpYyB2b2lkIGRwaV9kaXNjb25uZWN0KHN0cnVjdCBv bWFwX2Rzc19kZXZpY2UgKmRzc2RldiwKIAlkc3NfbWdyX2Rpc2Nvbm5lY3QoJmRwaS0+b3V0cHV0 LCBkc3NkZXYpOwogfQogCi1zdGF0aWMgY29uc3Qgc3RydWN0IG9tYXBkc3NfZHBpX29wcyBkcGlf b3BzID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBvbWFwX2Rzc19kZXZpY2Vfb3BzIGRwaV9vcHMg PSB7CiAJLmNvbm5lY3QgPSBkcGlfY29ubmVjdCwKIAkuZGlzY29ubmVjdCA9IGRwaV9kaXNjb25u ZWN0LAogCkBAIC03MjAsNyArNzIwLDcgQEAgc3RhdGljIHZvaWQgZHBpX2luaXRfb3V0cHV0X3Bv cnQoc3RydWN0IGRwaV9kYXRhICpkcGksIHN0cnVjdCBkZXZpY2Vfbm9kZSAqcG9ydCkKIAlvdXQt Pm91dHB1dF90eXBlID0gT01BUF9ESVNQTEFZX1RZUEVfRFBJOwogCW91dC0+ZGlzcGNfY2hhbm5l bCA9IGRwaV9nZXRfY2hhbm5lbChkcGksIHBvcnRfbnVtKTsKIAlvdXQtPnBvcnRfbnVtID0gcG9y dF9udW07Ci0Jb3V0LT5vcHMuZHBpID0gJmRwaV9vcHM7CisJb3V0LT5vcHMgPSAmZHBpX29wczsK IAlvdXQtPm93bmVyID0gVEhJU19NT0RVTEU7CiAKIAlvbWFwZHNzX3JlZ2lzdGVyX291dHB1dChv dXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vZHNzL2RzaS5jIGIvZHJp dmVycy9ncHUvZHJtL29tYXBkcm0vZHNzL2RzaS5jCmluZGV4IGQ0YTY4MDYyOTgyNS4uZTRmNDk2 MzgyNjE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9kc3MvZHNpLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vZHNzL2RzaS5jCkBAIC01MDAwLDQzICs1MDAwLDQ1 IEBAIHN0YXRpYyB2b2lkIGRzaV9kaXNjb25uZWN0KHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRz c2RldiwKIAlkc3NfbWdyX2Rpc2Nvbm5lY3QoJmRzaS0+b3V0cHV0LCBkc3NkZXYpOwogfQogCi1z dGF0aWMgY29uc3Qgc3RydWN0IG9tYXBkc3NfZHNpX29wcyBkc2lfb3BzID0geworc3RhdGljIGNv bnN0IHN0cnVjdCBvbWFwX2Rzc19kZXZpY2Vfb3BzIGRzaV9vcHMgPSB7CiAJLmNvbm5lY3QgPSBk c2lfY29ubmVjdCwKIAkuZGlzY29ubmVjdCA9IGRzaV9kaXNjb25uZWN0LAorCS5lbmFibGUgPSBk c2lfZGlzcGxheV9lbmFibGUsCiAKLQkuYnVzX2xvY2sgPSBkc2lfYnVzX2xvY2ssCi0JLmJ1c191 bmxvY2sgPSBkc2lfYnVzX3VubG9jaywKKwkuZHNpID0geworCQkuYnVzX2xvY2sgPSBkc2lfYnVz X2xvY2ssCisJCS5idXNfdW5sb2NrID0gZHNpX2J1c191bmxvY2ssCiAKLQkuZW5hYmxlID0gZHNp X2Rpc3BsYXlfZW5hYmxlLAotCS5kaXNhYmxlID0gZHNpX2Rpc3BsYXlfZGlzYWJsZSwKKwkJLmRp c2FibGUgPSBkc2lfZGlzcGxheV9kaXNhYmxlLAogCi0JLmVuYWJsZV9ocyA9IGRzaV92Y19lbmFi bGVfaHMsCisJCS5lbmFibGVfaHMgPSBkc2lfdmNfZW5hYmxlX2hzLAogCi0JLmNvbmZpZ3VyZV9w aW5zID0gZHNpX2NvbmZpZ3VyZV9waW5zLAotCS5zZXRfY29uZmlnID0gZHNpX3NldF9jb25maWcs CisJCS5jb25maWd1cmVfcGlucyA9IGRzaV9jb25maWd1cmVfcGlucywKKwkJLnNldF9jb25maWcg PSBkc2lfc2V0X2NvbmZpZywKIAotCS5lbmFibGVfdmlkZW9fb3V0cHV0ID0gZHNpX2VuYWJsZV92 aWRlb19vdXRwdXQsCi0JLmRpc2FibGVfdmlkZW9fb3V0cHV0ID0gZHNpX2Rpc2FibGVfdmlkZW9f b3V0cHV0LAorCQkuZW5hYmxlX3ZpZGVvX291dHB1dCA9IGRzaV9lbmFibGVfdmlkZW9fb3V0cHV0 LAorCQkuZGlzYWJsZV92aWRlb19vdXRwdXQgPSBkc2lfZGlzYWJsZV92aWRlb19vdXRwdXQsCiAK LQkudXBkYXRlID0gZHNpX3VwZGF0ZSwKKwkJLnVwZGF0ZSA9IGRzaV91cGRhdGUsCiAKLQkuZW5h YmxlX3RlID0gZHNpX2VuYWJsZV90ZSwKKwkJLmVuYWJsZV90ZSA9IGRzaV9lbmFibGVfdGUsCiAK LQkucmVxdWVzdF92YyA9IGRzaV9yZXF1ZXN0X3ZjLAotCS5zZXRfdmNfaWQgPSBkc2lfc2V0X3Zj X2lkLAotCS5yZWxlYXNlX3ZjID0gZHNpX3JlbGVhc2VfdmMsCisJCS5yZXF1ZXN0X3ZjID0gZHNp X3JlcXVlc3RfdmMsCisJCS5zZXRfdmNfaWQgPSBkc2lfc2V0X3ZjX2lkLAorCQkucmVsZWFzZV92 YyA9IGRzaV9yZWxlYXNlX3ZjLAogCi0JLmRjc193cml0ZSA9IGRzaV92Y19kY3Nfd3JpdGUsCi0J LmRjc193cml0ZV9ub3N5bmMgPSBkc2lfdmNfZGNzX3dyaXRlX25vc3luYywKLQkuZGNzX3JlYWQg PSBkc2lfdmNfZGNzX3JlYWQsCisJCS5kY3Nfd3JpdGUgPSBkc2lfdmNfZGNzX3dyaXRlLAorCQku ZGNzX3dyaXRlX25vc3luYyA9IGRzaV92Y19kY3Nfd3JpdGVfbm9zeW5jLAorCQkuZGNzX3JlYWQg PSBkc2lfdmNfZGNzX3JlYWQsCiAKLQkuZ2VuX3dyaXRlID0gZHNpX3ZjX2dlbmVyaWNfd3JpdGUs Ci0JLmdlbl93cml0ZV9ub3N5bmMgPSBkc2lfdmNfZ2VuZXJpY193cml0ZV9ub3N5bmMsCi0JLmdl bl9yZWFkID0gZHNpX3ZjX2dlbmVyaWNfcmVhZCwKKwkJLmdlbl93cml0ZSA9IGRzaV92Y19nZW5l cmljX3dyaXRlLAorCQkuZ2VuX3dyaXRlX25vc3luYyA9IGRzaV92Y19nZW5lcmljX3dyaXRlX25v c3luYywKKwkJLmdlbl9yZWFkID0gZHNpX3ZjX2dlbmVyaWNfcmVhZCwKIAotCS5idGFfc3luYyA9 IGRzaV92Y19zZW5kX2J0YV9zeW5jLAorCQkuYnRhX3N5bmMgPSBkc2lfdmNfc2VuZF9idGFfc3lu YywKIAotCS5zZXRfbWF4X3J4X3BhY2tldF9zaXplID0gZHNpX3ZjX3NldF9tYXhfcnhfcGFja2V0 X3NpemUsCisJCS5zZXRfbWF4X3J4X3BhY2tldF9zaXplID0gZHNpX3ZjX3NldF9tYXhfcnhfcGFj a2V0X3NpemUsCisJfSwKIH07CiAKIHN0YXRpYyB2b2lkIGRzaV9pbml0X291dHB1dChzdHJ1Y3Qg ZHNpX2RhdGEgKmRzaSkKQEAgLTUwNTAsNyArNTA1Miw3IEBAIHN0YXRpYyB2b2lkIGRzaV9pbml0 X291dHB1dChzdHJ1Y3QgZHNpX2RhdGEgKmRzaSkKIAlvdXQtPm91dHB1dF90eXBlID0gT01BUF9E SVNQTEFZX1RZUEVfRFNJOwogCW91dC0+bmFtZSA9IGRzaS0+bW9kdWxlX2lkID09IDAgPyAiZHNp LjAiIDogImRzaS4xIjsKIAlvdXQtPmRpc3BjX2NoYW5uZWwgPSBkc2lfZ2V0X2NoYW5uZWwoZHNp KTsKLQlvdXQtPm9wcy5kc2kgPSAmZHNpX29wczsKKwlvdXQtPm9wcyA9ICZkc2lfb3BzOwogCW91 dC0+b3duZXIgPSBUSElTX01PRFVMRTsKIAogCW9tYXBkc3NfcmVnaXN0ZXJfb3V0cHV0KG91dCk7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9kc3MvaGRtaTQuYyBiL2RyaXZl cnMvZ3B1L2RybS9vbWFwZHJtL2Rzcy9oZG1pNC5jCmluZGV4IGIzZDc4NjUzNDdhMy4uZTA0MDZm MmE5MGU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9kc3MvaGRtaTQuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9kc3MvaGRtaTQuYwpAQCAtNTQwLDcgKzU0MCw3 IEBAIHN0YXRpYyBpbnQgaGRtaV9zZXRfaGRtaV9tb2RlKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2Ug KmRzc2RldiwKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBvbWFwZHNzX2hk bWlfb3BzIGhkbWlfb3BzID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBvbWFwX2Rzc19kZXZpY2Vf b3BzIGhkbWlfb3BzID0gewogCS5jb25uZWN0CQk9IGhkbWlfY29ubmVjdCwKIAkuZGlzY29ubmVj dAkJPSBoZG1pX2Rpc2Nvbm5lY3QsCiAKQEAgLTU1MCwxMCArNTUwLDEyIEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3Qgb21hcGRzc19oZG1pX29wcyBoZG1pX29wcyA9IHsKIAkuY2hlY2tfdGltaW5ncwkJ PSBoZG1pX2Rpc3BsYXlfY2hlY2tfdGltaW5nLAogCS5zZXRfdGltaW5ncwkJPSBoZG1pX2Rpc3Bs YXlfc2V0X3RpbWluZywKIAotCS5yZWFkX2VkaWQJCT0gaGRtaV9yZWFkX2VkaWQsCi0JLmxvc3Rf aG90cGx1ZwkJPSBoZG1pX2xvc3RfaG90cGx1ZywKLQkuc2V0X2luZm9mcmFtZQkJPSBoZG1pX3Nl dF9pbmZvZnJhbWUsCi0JLnNldF9oZG1pX21vZGUJCT0gaGRtaV9zZXRfaGRtaV9tb2RlLAorCS5o ZG1pID0geworCQkucmVhZF9lZGlkCQk9IGhkbWlfcmVhZF9lZGlkLAorCQkubG9zdF9ob3RwbHVn CQk9IGhkbWlfbG9zdF9ob3RwbHVnLAorCQkuc2V0X2luZm9mcmFtZQkJPSBoZG1pX3NldF9pbmZv ZnJhbWUsCisJCS5zZXRfaGRtaV9tb2RlCQk9IGhkbWlfc2V0X2hkbWlfbW9kZSwKKwl9LAogfTsK IAogc3RhdGljIHZvaWQgaGRtaV9pbml0X291dHB1dChzdHJ1Y3Qgb21hcF9oZG1pICpoZG1pKQpA QCAtNTY1LDcgKzU2Nyw3IEBAIHN0YXRpYyB2b2lkIGhkbWlfaW5pdF9vdXRwdXQoc3RydWN0IG9t YXBfaGRtaSAqaGRtaSkKIAlvdXQtPm91dHB1dF90eXBlID0gT01BUF9ESVNQTEFZX1RZUEVfSERN STsKIAlvdXQtPm5hbWUgPSAiaGRtaS4wIjsKIAlvdXQtPmRpc3BjX2NoYW5uZWwgPSBPTUFQX0RT U19DSEFOTkVMX0RJR0lUOwotCW91dC0+b3BzLmhkbWkgPSAmaGRtaV9vcHM7CisJb3V0LT5vcHMg PSAmaGRtaV9vcHM7CiAJb3V0LT5vd25lciA9IFRISVNfTU9EVUxFOwogCiAJb21hcGRzc19yZWdp c3Rlcl9vdXRwdXQob3V0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL2Rz cy9oZG1pNS5jIGIvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vZHNzL2hkbWk1LmMKaW5kZXggOGU5 YjNhMjRiMmFiLi40NWQyZWFjZWRiMmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9vbWFw ZHJtL2Rzcy9oZG1pNS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL2Rzcy9oZG1pNS5j CkBAIC01MzIsNyArNTMyLDcgQEAgc3RhdGljIGludCBoZG1pX3NldF9oZG1pX21vZGUoc3RydWN0 IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2LAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgY29uc3Qg c3RydWN0IG9tYXBkc3NfaGRtaV9vcHMgaGRtaV9vcHMgPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0 IG9tYXBfZHNzX2RldmljZV9vcHMgaGRtaV9vcHMgPSB7CiAJLmNvbm5lY3QJCT0gaGRtaV9jb25u ZWN0LAogCS5kaXNjb25uZWN0CQk9IGhkbWlfZGlzY29ubmVjdCwKIApAQCAtNTQyLDkgKzU0Miwx MSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG9tYXBkc3NfaGRtaV9vcHMgaGRtaV9vcHMgPSB7CiAJ LmNoZWNrX3RpbWluZ3MJCT0gaGRtaV9kaXNwbGF5X2NoZWNrX3RpbWluZywKIAkuc2V0X3RpbWlu Z3MJCT0gaGRtaV9kaXNwbGF5X3NldF90aW1pbmcsCiAKLQkucmVhZF9lZGlkCQk9IGhkbWlfcmVh ZF9lZGlkLAotCS5zZXRfaW5mb2ZyYW1lCQk9IGhkbWlfc2V0X2luZm9mcmFtZSwKLQkuc2V0X2hk bWlfbW9kZQkJPSBoZG1pX3NldF9oZG1pX21vZGUsCisJLmhkbWkgPSB7CisJCS5yZWFkX2VkaWQJ CT0gaGRtaV9yZWFkX2VkaWQsCisJCS5zZXRfaW5mb2ZyYW1lCQk9IGhkbWlfc2V0X2luZm9mcmFt ZSwKKwkJLnNldF9oZG1pX21vZGUJCT0gaGRtaV9zZXRfaGRtaV9tb2RlLAorCX0sCiB9OwogCiBz dGF0aWMgdm9pZCBoZG1pX2luaXRfb3V0cHV0KHN0cnVjdCBvbWFwX2hkbWkgKmhkbWkpCkBAIC01 NTYsNyArNTU4LDcgQEAgc3RhdGljIHZvaWQgaGRtaV9pbml0X291dHB1dChzdHJ1Y3Qgb21hcF9o ZG1pICpoZG1pKQogCW91dC0+b3V0cHV0X3R5cGUgPSBPTUFQX0RJU1BMQVlfVFlQRV9IRE1JOwog CW91dC0+bmFtZSA9ICJoZG1pLjAiOwogCW91dC0+ZGlzcGNfY2hhbm5lbCA9IE9NQVBfRFNTX0NI QU5ORUxfRElHSVQ7Ci0Jb3V0LT5vcHMuaGRtaSA9ICZoZG1pX29wczsKKwlvdXQtPm9wcyA9ICZo ZG1pX29wczsKIAlvdXQtPm93bmVyID0gVEhJU19NT0RVTEU7CiAKIAlvbWFwZHNzX3JlZ2lzdGVy X291dHB1dChvdXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vZHNzL29t YXBkc3MuaCBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL2Rzcy9vbWFwZHNzLmgKaW5kZXggMmVj NzQyMDZiY2ZmLi5mYjZjOWQ1MjIwMTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9vbWFw ZHJtL2Rzcy9vbWFwZHNzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vZHNzL29tYXBk c3MuaApAQCAtMjk2LDgwICsyOTYsNyBAQCBzdHJ1Y3Qgb21hcF9kc3Nfd3JpdGViYWNrX2luZm8g ewogCXU4IHByZV9tdWx0X2FscGhhOwogfTsKIAotc3RydWN0IG9tYXBkc3NfZHBpX29wcyB7Ci0J aW50ICgqY29ubmVjdCkoc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2LAotCQkJc3RydWN0 IG9tYXBfZHNzX2RldmljZSAqZHN0KTsKLQl2b2lkICgqZGlzY29ubmVjdCkoc3RydWN0IG9tYXBf ZHNzX2RldmljZSAqZHNzZGV2LAotCQkJc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHN0KTsKLQot CWludCAoKmVuYWJsZSkoc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2KTsKLQl2b2lkICgq ZGlzYWJsZSkoc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2KTsKLQotCWludCAoKmNoZWNr X3RpbWluZ3MpKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldiwKLQkJCSAgICAgc3RydWN0 IHZpZGVvbW9kZSAqdm0pOwotCXZvaWQgKCpzZXRfdGltaW5ncykoc3RydWN0IG9tYXBfZHNzX2Rl dmljZSAqZHNzZGV2LAotCQkJICAgIHN0cnVjdCB2aWRlb21vZGUgKnZtKTsKLX07Ci0KLXN0cnVj dCBvbWFwZHNzX3NkaV9vcHMgewotCWludCAoKmNvbm5lY3QpKHN0cnVjdCBvbWFwX2Rzc19kZXZp Y2UgKmRzc2RldiwKLQkJCXN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzdCk7Ci0Jdm9pZCAoKmRp c2Nvbm5lY3QpKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldiwKLQkJCXN0cnVjdCBvbWFw X2Rzc19kZXZpY2UgKmRzdCk7Ci0KLQlpbnQgKCplbmFibGUpKHN0cnVjdCBvbWFwX2Rzc19kZXZp Y2UgKmRzc2Rldik7Ci0Jdm9pZCAoKmRpc2FibGUpKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRz c2Rldik7Ci0KLQlpbnQgKCpjaGVja190aW1pbmdzKShzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpk c3NkZXYsCi0JCQkgICAgIHN0cnVjdCB2aWRlb21vZGUgKnZtKTsKLQl2b2lkICgqc2V0X3RpbWlu Z3MpKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldiwKLQkJCSAgICBzdHJ1Y3QgdmlkZW9t b2RlICp2bSk7Ci19OwotCi1zdHJ1Y3Qgb21hcGRzc19kdmlfb3BzIHsKLQlpbnQgKCpjb25uZWN0 KShzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYsCi0JCQlzdHJ1Y3Qgb21hcF9kc3NfZGV2 aWNlICpkc3QpOwotCXZvaWQgKCpkaXNjb25uZWN0KShzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpk c3NkZXYsCi0JCQlzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3QpOwotCi0JaW50ICgqZW5hYmxl KShzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYpOwotCXZvaWQgKCpkaXNhYmxlKShzdHJ1 Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYpOwotCi0JaW50ICgqY2hlY2tfdGltaW5ncykoc3Ry dWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2LAotCQkJICAgICBzdHJ1Y3QgdmlkZW9tb2RlICp2 bSk7Ci0Jdm9pZCAoKnNldF90aW1pbmdzKShzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYs Ci0JCQkgICAgc3RydWN0IHZpZGVvbW9kZSAqdm0pOwotfTsKLQotc3RydWN0IG9tYXBkc3NfYXR2 X29wcyB7Ci0JaW50ICgqY29ubmVjdCkoc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2LAot CQkJc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHN0KTsKLQl2b2lkICgqZGlzY29ubmVjdCkoc3Ry dWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2LAotCQkJc3RydWN0IG9tYXBfZHNzX2RldmljZSAq ZHN0KTsKLQotCWludCAoKmVuYWJsZSkoc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2KTsK LQl2b2lkICgqZGlzYWJsZSkoc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2KTsKLQotCWlu dCAoKmNoZWNrX3RpbWluZ3MpKHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldiwKLQkJCSAg ICAgc3RydWN0IHZpZGVvbW9kZSAqdm0pOwotCXZvaWQgKCpzZXRfdGltaW5ncykoc3RydWN0IG9t YXBfZHNzX2RldmljZSAqZHNzZGV2LAotCQkJICAgIHN0cnVjdCB2aWRlb21vZGUgKnZtKTsKLX07 Ci0KIHN0cnVjdCBvbWFwZHNzX2hkbWlfb3BzIHsKLQlpbnQgKCpjb25uZWN0KShzdHJ1Y3Qgb21h cF9kc3NfZGV2aWNlICpkc3NkZXYsCi0JCQlzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3QpOwot CXZvaWQgKCpkaXNjb25uZWN0KShzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYsCi0JCQlz dHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3QpOwotCi0JaW50ICgqZW5hYmxlKShzdHJ1Y3Qgb21h cF9kc3NfZGV2aWNlICpkc3NkZXYpOwotCXZvaWQgKCpkaXNhYmxlKShzdHJ1Y3Qgb21hcF9kc3Nf ZGV2aWNlICpkc3NkZXYpOwotCi0JaW50ICgqY2hlY2tfdGltaW5ncykoc3RydWN0IG9tYXBfZHNz X2RldmljZSAqZHNzZGV2LAotCQkJICAgICBzdHJ1Y3QgdmlkZW9tb2RlICp2bSk7Ci0Jdm9pZCAo KnNldF90aW1pbmdzKShzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYsCi0JCQkgICAgc3Ry dWN0IHZpZGVvbW9kZSAqdm0pOwotCiAJaW50ICgqcmVhZF9lZGlkKShzdHJ1Y3Qgb21hcF9kc3Nf ZGV2aWNlICpkc3NkZXYsIHU4ICpidWYsIGludCBsZW4pOwogCXZvaWQgKCpsb3N0X2hvdHBsdWcp KHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2Rldik7CiAJYm9vbCAoKmRldGVjdCkoc3RydWN0 IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2KTsKQEAgLTM4OCwxMiArMzE1LDYgQEAgc3RydWN0IG9t YXBkc3NfaGRtaV9vcHMgewogfTsKIAogc3RydWN0IG9tYXBkc3NfZHNpX29wcyB7Ci0JaW50ICgq Y29ubmVjdCkoc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2LAotCQkJc3RydWN0IG9tYXBf ZHNzX2RldmljZSAqZHN0KTsKLQl2b2lkICgqZGlzY29ubmVjdCkoc3RydWN0IG9tYXBfZHNzX2Rl dmljZSAqZHNzZGV2LAotCQkJc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHN0KTsKLQotCWludCAo KmVuYWJsZSkoc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2KTsKIAl2b2lkICgqZGlzYWJs ZSkoc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2LCBib29sIGRpc2Nvbm5lY3RfbGFuZXMs CiAJCQlib29sIGVudGVyX3VscHMpOwogCkBAIC00NDQsNiArMzY1LDI2IEBAIHN0cnVjdCBvbWFw ZHNzX2RzaV9vcHMgewogCQkJaW50IGNoYW5uZWwsIHUxNiBwbGVuKTsKIH07CiAKK3N0cnVjdCBv bWFwX2Rzc19kZXZpY2Vfb3BzIHsKKwlpbnQgKCpjb25uZWN0KShzdHJ1Y3Qgb21hcF9kc3NfZGV2 aWNlICpkc3NkZXYsCisJCQlzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3QpOworCXZvaWQgKCpk aXNjb25uZWN0KShzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYsCisJCQlzdHJ1Y3Qgb21h cF9kc3NfZGV2aWNlICpkc3QpOworCisJaW50ICgqZW5hYmxlKShzdHJ1Y3Qgb21hcF9kc3NfZGV2 aWNlICpkc3NkZXYpOworCXZvaWQgKCpkaXNhYmxlKShzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpk c3NkZXYpOworCisJaW50ICgqY2hlY2tfdGltaW5ncykoc3RydWN0IG9tYXBfZHNzX2RldmljZSAq ZHNzZGV2LAorCQkJICAgICBzdHJ1Y3QgdmlkZW9tb2RlICp2bSk7CisJdm9pZCAoKnNldF90aW1p bmdzKShzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYsCisJCQkgICAgc3RydWN0IHZpZGVv bW9kZSAqdm0pOworCisJdW5pb24geworCQljb25zdCBzdHJ1Y3Qgb21hcGRzc19oZG1pX29wcyBo ZG1pOworCQljb25zdCBzdHJ1Y3Qgb21hcGRzc19kc2lfb3BzIGRzaTsKKwl9OworfTsKKwogc3Ry dWN0IG9tYXBfZHNzX2RldmljZSB7CiAJc3RydWN0IGtvYmplY3Qga29iajsKIAlzdHJ1Y3QgZGV2 aWNlICpkZXY7CkBAIC00NjEsMTUgKzQwMiw3IEBAIHN0cnVjdCBvbWFwX2Rzc19kZXZpY2Ugewog CWNvbnN0IGNoYXIgKm5hbWU7CiAKIAljb25zdCBzdHJ1Y3Qgb21hcF9kc3NfZHJpdmVyICpkcml2 ZXI7Ci0KLQl1bmlvbiB7Ci0JCWNvbnN0IHN0cnVjdCBvbWFwZHNzX2RwaV9vcHMgKmRwaTsKLQkJ Y29uc3Qgc3RydWN0IG9tYXBkc3Nfc2RpX29wcyAqc2RpOwotCQljb25zdCBzdHJ1Y3Qgb21hcGRz c19kdmlfb3BzICpkdmk7Ci0JCWNvbnN0IHN0cnVjdCBvbWFwZHNzX2hkbWlfb3BzICpoZG1pOwot CQljb25zdCBzdHJ1Y3Qgb21hcGRzc19hdHZfb3BzICphdHY7Ci0JCWNvbnN0IHN0cnVjdCBvbWFw ZHNzX2RzaV9vcHMgKmRzaTsKLQl9IG9wczsKKwljb25zdCBzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNl X29wcyAqb3BzOwogCiAJLyogaGVscGVyIHZhcmlhYmxlIGZvciBkcml2ZXIgc3VzcGVuZC9yZXN1 bWUgKi8KIAlib29sIGFjdGl2YXRlX2FmdGVyX3Jlc3VtZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9vbWFwZHJtL2Rzcy9zZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL2Rzcy9z ZGkuYwppbmRleCAyYTYxNDA5Y2ZhZjYuLjQ5NDk5YTJhYWU0NiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL29tYXBkcm0vZHNzL3NkaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJt L2Rzcy9zZGkuYwpAQCAtMzA4LDcgKzMwOCw3IEBAIHN0YXRpYyB2b2lkIHNkaV9kaXNjb25uZWN0 KHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldiwKIAlkc3NfbWdyX2Rpc2Nvbm5lY3QoJnNk aS0+b3V0cHV0LCBkc3NkZXYpOwogfQogCi1zdGF0aWMgY29uc3Qgc3RydWN0IG9tYXBkc3Nfc2Rp X29wcyBzZGlfb3BzID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBvbWFwX2Rzc19kZXZpY2Vfb3Bz IHNkaV9vcHMgPSB7CiAJLmNvbm5lY3QgPSBzZGlfY29ubmVjdCwKIAkuZGlzY29ubmVjdCA9IHNk aV9kaXNjb25uZWN0LAogCkBAIC0zMzAsNyArMzMwLDcgQEAgc3RhdGljIHZvaWQgc2RpX2luaXRf b3V0cHV0KHN0cnVjdCBzZGlfZGV2aWNlICpzZGkpCiAJb3V0LT5kaXNwY19jaGFubmVsID0gT01B UF9EU1NfQ0hBTk5FTF9MQ0Q7CiAJLyogV2UgaGF2ZSBTREkgb25seSBvbiBPTUFQMywgd2hlcmUg aXQncyBvbiBwb3J0IDEgKi8KIAlvdXQtPnBvcnRfbnVtID0gMTsKLQlvdXQtPm9wcy5zZGkgPSAm c2RpX29wczsKKwlvdXQtPm9wcyA9ICZzZGlfb3BzOwogCW91dC0+b3duZXIgPSBUSElTX01PRFVM RTsKIAogCW9tYXBkc3NfcmVnaXN0ZXJfb3V0cHV0KG91dCk7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vb21hcGRybS9kc3MvdmVuYy5jIGIvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vZHNz L3ZlbmMuYwppbmRleCBhOTIyNWJkMmRmNmQuLmMyZWExODJmMTA3NCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL29tYXBkcm0vZHNzL3ZlbmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vb21h cGRybS9kc3MvdmVuYy5jCkBAIC03NTAsNyArNzUwLDcgQEAgc3RhdGljIHZvaWQgdmVuY19kaXNj b25uZWN0KHN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldiwKIAlkc3NfbWdyX2Rpc2Nvbm5l Y3QoJnZlbmMtPm91dHB1dCwgZHNzZGV2KTsKIH0KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBvbWFw ZHNzX2F0dl9vcHMgdmVuY19vcHMgPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IG9tYXBfZHNzX2Rl dmljZV9vcHMgdmVuY19vcHMgPSB7CiAJLmNvbm5lY3QgPSB2ZW5jX2Nvbm5lY3QsCiAJLmRpc2Nv bm5lY3QgPSB2ZW5jX2Rpc2Nvbm5lY3QsCiAKQEAgLTc3MCw3ICs3NzAsNyBAQCBzdGF0aWMgdm9p ZCB2ZW5jX2luaXRfb3V0cHV0KHN0cnVjdCB2ZW5jX2RldmljZSAqdmVuYykKIAlvdXQtPm91dHB1 dF90eXBlID0gT01BUF9ESVNQTEFZX1RZUEVfVkVOQzsKIAlvdXQtPm5hbWUgPSAidmVuYy4wIjsK IAlvdXQtPmRpc3BjX2NoYW5uZWwgPSBPTUFQX0RTU19DSEFOTkVMX0RJR0lUOwotCW91dC0+b3Bz LmF0diA9ICZ2ZW5jX29wczsKKwlvdXQtPm9wcyA9ICZ2ZW5jX29wczsKIAlvdXQtPm93bmVyID0g VEhJU19NT0RVTEU7CiAKIAlvbWFwZHNzX3JlZ2lzdGVyX291dHB1dChvdXQpOwotLSAKUmVnYXJk cywKCkxhdXJlbnQgUGluY2hhcnQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbAo=