From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Airlie Subject: [PATCH 09/11] i915: add DP 1.2 MST support (v0.6) Date: Thu, 5 Jun 2014 14:01:36 +1000 Message-ID: <1401940898-2825-10-git-send-email-airlied@gmail.com> References: <1401940898-2825-1-git-send-email-airlied@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1401940898-2825-1-git-send-email-airlied@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KClRoaXMgYWRkcyBEUCAxLjIg TVNUIHN1cHBvcnQgb24gSGFzd2VsbCBzeXN0ZW1zLgoKTm90ZXM6CmEpIHRoaXMgcmV3b3JrcyBp cnEgaGFuZGxpbmcgZm9yIERQIE1TVCBwb3J0cywgc28gdGhhdCB3ZSBjYW4KYXZvaWQgdGhlIG1v ZGUgY29uZmlnIGxvY2tpbmcgaW4gdGhlIGN1cnJlbnQgaHBkIGhhbmRsZXJzLCBhcwp3ZSBuZWVk IHRvIHByb2Nlc3MgdXAvZG93biBtc2dzIGF0IGEgYmV0dGVyIHRpbWUuCgpDaGFuZ2VzIHNpbmNl IHYwLjE6CnVzZSBQT1JUX1BDSF9IT1RQTFVHIHRvIGRldGVjdCBzaG9ydCB2cyBsb25nIHB1bHNl cwphZGQgYSB3b3JrcXVldWUgdG8gZGVhbCB3aXRoIGRpZ2l0YWwgZXZlbnRzIGFzIHRoZXkgY2Fu IGdldCBibG9ja2VkIG9uIHRoZQptYWluIHdvcmtxdWV1ZSBiZXlvbmcgbW9kZV9jb25maWcgbXV0 ZXgKZml4IGEgYnVuY2ggb2YgbW9kZXNldCBjaGVja2VyIHdhcm5pbmdzCmFja3MgaXJxcyBpbiB0 aGUgZHJpdmVyCmNsZWFudXAgdGhlIE1TVCBlbmNvZGVycwoKQ2hhbmdlcyBzaW5jZSB2MC4yOgpj aGVjayBpcnEgc3RhdHVzIGFnYWluIGluIHdvcmsgaGFuZGxlcgptb3ZlIGFyb3VuZCBicmluZyB1 cCBhbmQgdGVhciBkb3duIHRvIGZpeCBEUE1TIG9uL29mZgp1c2UgcGF0aCBwcm9wZXJ0aWVzLgoK Q2hhbmdlcyBzaW5jZSB2MC4zOgp1cGRhdGVzIGZvciBtc3QgYXBpcwptb3JlIHN0YXRlIGNoZWNr ZXIgZml4ZXMKaXJxIGhhbmRsaW5nIGltcHJvdmVtZW50cwpmYmNvbiBoYW5kbGluZyBzdXBwb3J0 CmltcHJvdmVkIHJlZmVyZW5jZSBjb3VudGluZyBvZiBsaW5rIC0gZml4ZXMgcmVkb2NraW5nLgoK Q2hhbmdlcyBzaW5jZSB2MC40OgpoYW5kbGUgZ3B1IHJlc2V0IGhwZCByZWluaXQgd2l0aG91dCBv b3BzaW5nCmNoZWNrIGxpbmsgc3RhdHVzIG9uIEhQRCBpcnFzCmZpeCBzdXNwZW5kL3Jlc3VtZQoK Q2hhbmdlcyBzaW5jZSB2MC41Ogp1c2UgcHJvcGVyIGZ1bmN0aW9ucyB0byBnZXQgbWF4IGxpbmsv bGFuZSBjb3VudHMKZml4IGFub3RoZXIgY2hlY2tlciBiYWNrdHJhY2UgLSBkdWUgdG8gY29ubmVj dG9ycyBkaXNhcHBlYXJpbmcuCnNldCBvdXRwdXQgdHlwZSBpbiBtb3JlIHBsYWNlcyBmcm8sIHVu a25vd24tPmRpc3BsYXlwb3J0CmRvbid0IHRhbGsgdG8gZGV2aWNlcyBpZiBubyBIUEQgYXNzZXJ0 ZWQKY2hlY2sgbXN0IG9uIHNob3J0IGlycXMgb25seQpjaGVjayBsaW5rIHN0YXR1cyBwcm9wZXJs eQpyZWJhc2Ugb250byBwcmVwcGluZyBpcnEgY2hhbmdlcy4KZHJvcCB1bnN1ZWQgZm9yY2VfYWN0 CgpUT0RPOgpwb3NzaWJseSBmdXJ0aGVyIHN0YXRlIGNoZWNrZXIgZml4ZXMKSERNSSBzY3JlYW1p bmcgSVJRIG5lZWRzIGZpeGluZy4KClNpZ25lZC1vZmYtYnk6IERhdmUgQWlybGllIDxhaXJsaWVk QHJlZGhhdC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICB8 ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jICAgICAgIHwgIDEwICsKIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgfCAgMTMgKy0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgfCAgIDkgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9pcnEuYyAgICAgICB8ICAgNiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRp LmMgICAgICB8ICA4NSArKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku YyAgfCAgNDAgKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgICAgIHwgMjM0 ICsrKysrKysrKysrKysrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMgICB8 IDUzNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaCAgICAgIHwgIDQ1ICsrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZmJkZXYuYyAgICB8ICAgNSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vcHJlZ2lv bi5jIHwgICAxICsKIDEyIGZpbGVzIGNoYW5nZWQsIDk0NSBpbnNlcnRpb25zKCspLCAzOSBkZWxl dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cF9tc3QuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXggN2IyZjNiZS4uMDNiNzUyNSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvTWFrZWZpbGUKQEAgLTU5LDYgKzU5LDcgQEAgaTkxNS15ICs9IGR2b19jaDcwMTcubyBc CiAJICBpbnRlbF9jcnQubyBcCiAJICBpbnRlbF9kZGkubyBcCiAJICBpbnRlbF9kcC5vIFwKKwkg IGludGVsX2RwX21zdC5vIFwKIAkgIGludGVsX2RzaV9jbWQubyBcCiAJICBpbnRlbF9kc2kubyBc CiAJICBpbnRlbF9kc2lfcGxsLm8gXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kbWEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKaW5kZXggNGU3MGRl Ni4uM2JmMmYxZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCkBAIC0xNjc2LDYgKzE2NzYsMTMg QEAgaW50IGk5MTVfZHJpdmVyX2xvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQg bG9uZyBmbGFncykKIAkJZ290byBvdXRfbXRycmZyZWU7CiAJfQogCisJZGV2X3ByaXYtPmRwX3dx ID0gYWxsb2Nfb3JkZXJlZF93b3JrcXVldWUoImk5MTUtZHAiLCAwKTsKKwlpZiAoZGV2X3ByaXYt PmRwX3dxID09IE5VTEwpIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIG91ciBkcCB3 b3JrcXVldWUuXG4iKTsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBvdXRfZnJlZXdxOworCX0K KwogCWludGVsX2lycV9pbml0KGRldik7CiAJaW50ZWxfdW5jb3JlX3Nhbml0aXplKGRldik7CiAK QEAgLTE3NTEsNiArMTc1OCw4IEBAIG91dF9nZW1fdW5sb2FkOgogCWludGVsX3RlYXJkb3duX2dt YnVzKGRldik7CiAJaW50ZWxfdGVhcmRvd25fbWNoYmFyKGRldik7CiAJcG1fcW9zX3JlbW92ZV9y ZXF1ZXN0KCZkZXZfcHJpdi0+cG1fcW9zKTsKKwlkZXN0cm95X3dvcmtxdWV1ZShkZXZfcHJpdi0+ ZHBfd3EpOworb3V0X2ZyZWV3cToKIAlkZXN0cm95X3dvcmtxdWV1ZShkZXZfcHJpdi0+d3EpOwog b3V0X210cnJmcmVlOgogCWFyY2hfcGh5c193Y19kZWwoZGV2X3ByaXYtPmd0dC5tdHJyKTsKQEAg LTE4NTUsNiArMTg2NCw3IEBAIGludCBpOTE1X2RyaXZlcl91bmxvYWQoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKIAlpbnRlbF90ZWFyZG93bl9nbWJ1cyhkZXYpOwogCWludGVsX3RlYXJkb3duX21j aGJhcihkZXYpOwogCisJZGVzdHJveV93b3JrcXVldWUoZGV2X3ByaXYtPmRwX3dxKTsKIAlkZXN0 cm95X3dvcmtxdWV1ZShkZXZfcHJpdi0+d3EpOwogCXBtX3Fvc19yZW1vdmVfcmVxdWVzdCgmZGV2 X3ByaXYtPnBtX3Fvcyk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCmluZGV4IDViNWI4MmMuLjA1 MWNmOTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAtNTI0LDcgKzUyNCw2IEBAIHN0YXRp YyBpbnQgaTkxNV9kcm1fZnJlZXplKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCQlyZXR1cm4g ZXJyb3I7CiAJCX0KIAotCQlkcm1faXJxX3VuaW5zdGFsbChkZXYpOwogCQlkZXZfcHJpdi0+ZW5h YmxlX2hvdHBsdWdfcHJvY2Vzc2luZyA9IGZhbHNlOwogCiAJCWludGVsX2Rpc2FibGVfZ3RfcG93 ZXJzYXZlKGRldik7CkBAIC01MzksNiArNTM4LDkgQEAgc3RhdGljIGludCBpOTE1X2RybV9mcmVl emUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJfQogCQlkcm1fbW9kZXNldF91bmxvY2tfYWxs KGRldik7CiAKKwkJaW50ZWxfZHBfbXN0X3N1c3BlbmQoZGV2KTsKKwkJZHJtX2lycV91bmluc3Rh bGwoZGV2KTsKKwogCQlpbnRlbF9tb2Rlc2V0X3N1c3BlbmRfaHcoZGV2KTsKIAl9CiAKQEAgLTY0 Miw2ICs2NDQsMTUgQEAgc3RhdGljIGludCBfX2k5MTVfZHJtX3RoYXcoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgYm9vbCByZXN0b3JlX2d0dF9tYXBwaW5ncykKIAogCQlpbnRlbF9tb2Rlc2V0X2lu aXRfaHcoZGV2KTsKIAorCQl7CisJCQl1bnNpZ25lZCBsb25nIGlycWZsYWdzOworCQkJc3Bpbl9s b2NrX2lycXNhdmUoJmRldl9wcml2LT5pcnFfbG9jaywgaXJxZmxhZ3MpOworCQkJaWYgKGRldl9w cml2LT5kaXNwbGF5LmhwZF9pcnFfc2V0dXApCisJCQkJZGV2X3ByaXYtPmRpc3BsYXkuaHBkX2ly cV9zZXR1cChkZXYpOworCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2X3ByaXYtPmlycV9s b2NrLCBpcnFmbGFncyk7CisJCX0KKworCQlpbnRlbF9kcF9tc3RfcmVzdW1lKGRldik7CiAJCWRy bV9tb2Rlc2V0X2xvY2tfYWxsKGRldik7CiAJCWludGVsX21vZGVzZXRfc2V0dXBfaHdfc3RhdGUo ZGV2LCB0cnVlKTsKIAkJZHJtX21vZGVzZXRfdW5sb2NrX2FsbChkZXYpOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKaW5kZXggNWZkNWJmMy4uMWYzZTkyOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o CkBAIC0xNTU2LDYgKzE1NTYsMTUgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCXUzMiBz aG9ydF9ocGRfcG9ydF9tYXNrOwogCXN0cnVjdCB3b3JrX3N0cnVjdCBkaWdfcG9ydF93b3JrOwog CisJLyoKKwkgKiBpZiB3ZSBnZXQgYSBIUEQgaXJxIGZyb20gRFAgYW5kIGEgSFBEIGlycSBmcm9t IG5vbi1EUAorCSAqIHRoZSBub24tRFAgSFBEIGNvdWxkIGJsb2NrIHRoZSB3b3JrcXVldWUgb24g YSBtb2RlIGNvbmZpZworCSAqIG11dGV4IGdldHRpbmcsIHRoYXQgdXNlcnNwYWNlIG1heSBoYXZl IHRha2VuLiBIb3dldmVyCisJICogdXNlcnNwYWNlIGlzIHdhaXRpbmcgb24gdGhlIERQIHdvcmtx dWV1ZSB0byBydW4gd2hpY2ggaXMKKwkgKiBibG9ja2VkIGJlaGluZCB0aGUgbm9uLURQIG9uZS4K KwkgKi8KKwlzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqZHBfd3E7CisKIAkvKiBPbGQgZHJpMSBz dXBwb3J0IGluZnJhc3RydWN0dXJlLCBiZXdhcmUgdGhlIGRyYWdvbnMgeWEgZm9vbHMgZW50ZXJp bmcKIAkgKiBoZXJlISAqLwogCXN0cnVjdCBpOTE1X2RyaTFfc3RhdGUgZHJpMTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2lycS5jCmluZGV4IGUzNTU0ZDkuLjRlOGY4MjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9p cnEuYwpAQCAtMTcwMCw3ICsxNzAwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGludGVsX2hwZF9p cnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCSAqIGRlYWRsb2NrLgogCSAqLwog CWlmIChxdWV1ZV9kaWcpCi0JCXNjaGVkdWxlX3dvcmsoJmRldl9wcml2LT5kaWdfcG9ydF93b3Jr KTsKKwkJcXVldWVfd29yayhkZXZfcHJpdi0+ZHBfd3EsICZkZXZfcHJpdi0+ZGlnX3BvcnRfd29y ayk7CiAJaWYgKHF1ZXVlX2hwKQogCQlzY2hlZHVsZV93b3JrKCZkZXZfcHJpdi0+aG90cGx1Z193 b3JrKTsKIH0KQEAgLTQ1NjYsNyArNDU2Niw5IEBAIHZvaWQgaW50ZWxfaHBkX2luaXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNvbm5lY3RvciwgJm1vZGVf Y29uZmlnLT5jb25uZWN0b3JfbGlzdCwgaGVhZCkgewogCQlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICppbnRlbF9jb25uZWN0b3IgPSB0b19pbnRlbF9jb25uZWN0b3IoY29ubmVjdG9yKTsKIAkJY29u bmVjdG9yLT5wb2xsZWQgPSBpbnRlbF9jb25uZWN0b3ItPnBvbGxlZDsKLQkJaWYgKCFjb25uZWN0 b3ItPnBvbGxlZCAmJiBJOTE1X0hBU19IT1RQTFVHKGRldikgJiYgaW50ZWxfY29ubmVjdG9yLT5l bmNvZGVyLT5ocGRfcGluID4gSFBEX05PTkUpCisJCWlmIChjb25uZWN0b3ItPmVuY29kZXIgJiYg IWNvbm5lY3Rvci0+cG9sbGVkICYmIEk5MTVfSEFTX0hPVFBMVUcoZGV2KSAmJiBpbnRlbF9jb25u ZWN0b3ItPmVuY29kZXItPmhwZF9waW4gPiBIUERfTk9ORSkKKwkJCWNvbm5lY3Rvci0+cG9sbGVk ID0gRFJNX0NPTk5FQ1RPUl9QT0xMX0hQRDsKKwkJaWYgKGludGVsX2Nvbm5lY3Rvci0+bXN0X3Bv cnQpCiAJCQljb25uZWN0b3ItPnBvbGxlZCA9IERSTV9DT05ORUNUT1JfUE9MTF9IUEQ7CiAJfQog CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCmluZGV4IDI3MzNhM2QuLjJkODE5MmEgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RkaS5jCkBAIC0xMTYsNyArMTE2LDEwIEBAIGVudW0gcG9ydCBpbnRlbF9k ZGlfZ2V0X2VuY29kZXJfcG9ydChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikK IAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIgPSAmaW50ZWxfZW5jb2Rlci0+YmFzZTsKIAlp bnQgdHlwZSA9IGludGVsX2VuY29kZXItPnR5cGU7CiAKLQlpZiAodHlwZSA9PSBJTlRFTF9PVVRQ VVRfRElTUExBWVBPUlQgfHwgdHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQIHx8CisJaWYgKHR5cGUg PT0gSU5URUxfT1VUUFVUX0RQX01TVCkgeworCQlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpp bnRlbF9kaWdfcG9ydCA9IGVuY190b19tc3QoZW5jb2RlciktPnByaW1hcnk7CisJCXJldHVybiBp bnRlbF9kaWdfcG9ydC0+cG9ydDsKKwl9IGVsc2UgaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0RJ U1BMQVlQT1JUIHx8IHR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCB8fAogCSAgICB0eXBlID09IElO VEVMX09VVFBVVF9IRE1JIHx8IHR5cGUgPT0gSU5URUxfT1VUUFVUX1VOS05PV04pIHsKIAkJc3Ry dWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPQogCQkJZW5jX3RvX2RpZ19w b3J0KGVuY29kZXIpOwpAQCAtNjMwLDggKzYzMyw4IEBAIHN0YXRpYyBpbnQgaW50ZWxfZGRpX2Nh bGNfd3JwbGxfbGluayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJcmV0dXJu IChyZWZjbGsgKiBuICogMTAwKSAvIChwICogcik7CiB9CiAKLXN0YXRpYyB2b2lkIGludGVsX2Rk aV9jbG9ja19nZXQoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCi0JCQkJc3RydWN0IGlu dGVsX2NydGNfY29uZmlnICpwaXBlX2NvbmZpZykKK3ZvaWQgaW50ZWxfZGRpX2Nsb2NrX2dldChz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCSBzdHJ1Y3QgaW50ZWxfY3J0Y19jb25m aWcgKnBpcGVfY29uZmlnKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGVuY29kZXItPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKIAllbnVtIHBvcnQgcG9ydCA9IGludGVs X2RkaV9nZXRfZW5jb2Rlcl9wb3J0KGVuY29kZXIpOwpAQCAtNzg1LDcgKzc4OCwxNSBAQCBib29s IGludGVsX2RkaV9wbGxfc2VsZWN0KHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjKQogCiAJ aW50ZWxfZGRpX3B1dF9jcnRjX3BsbChjcnRjKTsKIAotCWlmICh0eXBlID09IElOVEVMX09VVFBV VF9ESVNQTEFZUE9SVCB8fCB0eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsKKwlpZiAodHlwZSA9 PSBJTlRFTF9PVVRQVVRfRFBfTVNUKSB7CisJCXN0cnVjdCBpbnRlbF9kcF9tc3RfZW5jb2RlciAq aW50ZWxfbXN0ID0gZW5jX3RvX21zdChlbmNvZGVyKTsKKwkJaW50ZWxfY3J0Yy0+ZGRpX3BsbF9z ZWwgPSBsaW5rX2J3X3RvX3BsbF9zZWwoaW50ZWxfbXN0LT5wcmltYXJ5LT5kcC5saW5rX2J3KTsK KwkJaWYgKGludGVsX2NydGMtPmRkaV9wbGxfc2VsID09IC0xKSB7CisJCQlEUk1fRVJST1IoIkxp bmsgYmFuZHdpZHRoICVkIHVuc3VwcG9ydGVkXG4iLAorCQkJCSAgaW50ZWxfbXN0LT5wcmltYXJ5 LT5kcC5saW5rX2J3KTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCX0gZWxzZSBpZiAodHlwZSA9 PSBJTlRFTF9PVVRQVVRfRElTUExBWVBPUlQgfHwgdHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7 CiAJCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoZW5jb2Rlcik7 CiAKIAkJaW50ZWxfY3J0Yy0+ZGRpX3BsbF9zZWwgPSBsaW5rX2J3X3RvX3BsbF9zZWwoaW50ZWxf ZHAtPmxpbmtfYncpOwpAQCAtOTQzLDggKzk1NCw3IEBAIHZvaWQgaW50ZWxfZGRpX3NldF9waXBl X3NldHRpbmdzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlpbnQgdHlwZSA9IGludGVsX2VuY29k ZXItPnR5cGU7CiAJdWludDMyX3QgdGVtcDsKIAotCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9E SVNQTEFZUE9SVCB8fCB0eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsKLQorCWlmICh0eXBlID09 IElOVEVMX09VVFBVVF9ESVNQTEFZUE9SVCB8fCB0eXBlID09IElOVEVMX09VVFBVVF9FRFAgfHwg dHlwZSA9PSBJTlRFTF9PVVRQVVRfRFBfTVNUKSB7CiAJCXRlbXAgPSBUUkFOU19NU0FfU1lOQ19D TEs7CiAJCXN3aXRjaCAoaW50ZWxfY3J0Yy0+Y29uZmlnLnBpcGVfYnBwKSB7CiAJCWNhc2UgMTg6 CkBAIC05NjYsNiArOTc2LDIxIEBAIHZvaWQgaW50ZWxfZGRpX3NldF9waXBlX3NldHRpbmdzKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YykKIAl9CiB9CiAKK3ZvaWQgaW50ZWxfZGRpX3NldF92Y19wYXls b2FkX2FsbG9jKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgYm9vbCBzdGF0ZSkKK3sKKwlzdHJ1Y3Qg aW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CisJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2Rl ciA9IGludGVsX2NydGMtPmNvbmZpZy5jcHVfdHJhbnNjb2RlcjsKKwl1aW50MzJfdCB0ZW1wOwor CXRlbXAgPSBJOTE1X1JFQUQoVFJBTlNfRERJX0ZVTkNfQ1RMKGNwdV90cmFuc2NvZGVyKSk7CisJ aWYgKHN0YXRlID09IHRydWUpCisJCXRlbXAgfD0gVFJBTlNfRERJX0RQX1ZDX1BBWUxPQURfQUxM T0M7CisJZWxzZQorCQl0ZW1wICY9IH5UUkFOU19ERElfRFBfVkNfUEFZTE9BRF9BTExPQzsKKwlJ OTE1X1dSSVRFKFRSQU5TX0RESV9GVU5DX0NUTChjcHVfdHJhbnNjb2RlciksIHRlbXApOworfQor CiB2b2lkIGludGVsX2RkaV9lbmFibGVfdHJhbnNjb2Rlcl9mdW5jKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YykKIHsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMo Y3J0Yyk7CkBAIC0xMDQzLDcgKzEwNjgsMTkgQEAgdm9pZCBpbnRlbF9kZGlfZW5hYmxlX3RyYW5z Y29kZXJfZnVuYyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJCSAgIHR5cGUgPT0gSU5URUxfT1VU UFVUX0VEUCkgewogCQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2Rw KGVuY29kZXIpOwogCi0JCXRlbXAgfD0gVFJBTlNfRERJX01PREVfU0VMRUNUX0RQX1NTVDsKKwkJ aWYgKGludGVsX2RwLT5pc19tc3QpIHsKKwkJCXRlbXAgfD0gVFJBTlNfRERJX01PREVfU0VMRUNU X0RQX01TVDsKKwkJfSBlbHNlCisJCQl0ZW1wIHw9IFRSQU5TX0RESV9NT0RFX1NFTEVDVF9EUF9T U1Q7CisKKwkJdGVtcCB8PSBERElfUE9SVF9XSURUSChpbnRlbF9kcC0+bGFuZV9jb3VudCk7CisJ fSBlbHNlIGlmICh0eXBlID09IElOVEVMX09VVFBVVF9EUF9NU1QpIHsKKwkJc3RydWN0IGludGVs X2RwICppbnRlbF9kcCA9ICZlbmNfdG9fbXN0KGVuY29kZXIpLT5wcmltYXJ5LT5kcDsKKworCQlp ZiAoaW50ZWxfZHAtPmlzX21zdCkgeworCQkJdGVtcCB8PSBUUkFOU19ERElfTU9ERV9TRUxFQ1Rf RFBfTVNUOworCQl9IGVsc2UKKwkJCXRlbXAgfD0gVFJBTlNfRERJX01PREVfU0VMRUNUX0RQX1NT VDsKIAogCQl0ZW1wIHw9IERESV9QT1JUX1dJRFRIKGludGVsX2RwLT5sYW5lX2NvdW50KTsKIAl9 IGVsc2UgewpAQCAtMTA2MCw3ICsxMDk3LDcgQEAgdm9pZCBpbnRlbF9kZGlfZGlzYWJsZV90cmFu c2NvZGVyX2Z1bmMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCXVpbnQzMl90 IHJlZyA9IFRSQU5TX0RESV9GVU5DX0NUTChjcHVfdHJhbnNjb2Rlcik7CiAJdWludDMyX3QgdmFs ID0gSTkxNV9SRUFEKHJlZyk7CiAKLQl2YWwgJj0gfihUUkFOU19ERElfRlVOQ19FTkFCTEUgfCBU UkFOU19ERElfUE9SVF9NQVNLKTsKKwl2YWwgJj0gfihUUkFOU19ERElfRlVOQ19FTkFCTEUgfCBU UkFOU19ERElfUE9SVF9NQVNLIHwgVFJBTlNfRERJX0RQX1ZDX1BBWUxPQURfQUxMT0MpOwogCXZh bCB8PSBUUkFOU19ERElfUE9SVF9OT05FOwogCUk5MTVfV1JJVEUocmVnLCB2YWwpOwogfQpAQCAt MTA5OSw4ICsxMTM2LDExIEBAIGJvb2wgaW50ZWxfZGRpX2Nvbm5lY3Rvcl9nZXRfaHdfc3RhdGUo c3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yKQogCWNhc2UgVFJBTlNfRERJ X01PREVfU0VMRUNUX0RQX1NTVDoKIAkJaWYgKHR5cGUgPT0gRFJNX01PREVfQ09OTkVDVE9SX2VE UCkKIAkJCXJldHVybiB0cnVlOwotCWNhc2UgVFJBTlNfRERJX01PREVfU0VMRUNUX0RQX01TVDoK IAkJcmV0dXJuICh0eXBlID09IERSTV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5UG9ydCk7CisJY2Fz ZSBUUkFOU19ERElfTU9ERV9TRUxFQ1RfRFBfTVNUOgorCQkvKiBpZiB0aGUgdHJhbnNjb2RlciBp cyBpbiBNU1Qgc3RhdGUgdGhlbgorCQkgKiBjb25uZWN0b3IgaXNuJ3QgY29ubmVjdGVkICovCisJ CXJldHVybiBmYWxzZTsKIAogCWNhc2UgVFJBTlNfRERJX01PREVfU0VMRUNUX0ZESToKIAkJcmV0 dXJuICh0eXBlID09IERSTV9NT0RFX0NPTk5FQ1RPUl9WR0EpOwpAQCAtMTE1Miw2ICsxMTkyLDkg QEAgYm9vbCBpbnRlbF9kZGlfZ2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyLAogCiAJCQlpZiAoKHRtcCAmIFRSQU5TX0RESV9QT1JUX01BU0spCiAJCQkgICAgPT0gVFJB TlNfRERJX1NFTEVDVF9QT1JUKHBvcnQpKSB7CisJCQkJaWYgKCh0bXAgJiBUUkFOU19ERElfTU9E RV9TRUxFQ1RfTUFTSykgPT0gVFJBTlNfRERJX01PREVfU0VMRUNUX0RQX01TVCkKKwkJCQkJcmV0 dXJuIGZhbHNlOworCiAJCQkJKnBpcGUgPSBpOwogCQkJCXJldHVybiB0cnVlOwogCQkJfQpAQCAt MTQ3OCwxMCArMTUyMSwxNSBAQCB2b2lkIGludGVsX2RkaV9wcmVwYXJlX2xpbmtfcmV0cmFpbihz dHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiAJCQlpbnRlbF93YWl0X2RkaV9idWZfaWRsZShk ZXZfcHJpdiwgcG9ydCk7CiAJfQogCi0JdmFsID0gRFBfVFBfQ1RMX0VOQUJMRSB8IERQX1RQX0NU TF9NT0RFX1NTVCB8CisJdmFsID0gRFBfVFBfQ1RMX0VOQUJMRSB8CiAJICAgICAgRFBfVFBfQ1RM X0xJTktfVFJBSU5fUEFUMSB8IERQX1RQX0NUTF9TQ1JBTUJMRV9ESVNBQkxFOwotCWlmIChkcm1f ZHBfZW5oYW5jZWRfZnJhbWVfY2FwKGludGVsX2RwLT5kcGNkKSkKLQkJdmFsIHw9IERQX1RQX0NU TF9FTkhBTkNFRF9GUkFNRV9FTkFCTEU7CisJaWYgKGludGVsX2RwLT5pc19tc3QpCisJCXZhbCB8 PSBEUF9UUF9DVExfTU9ERV9NU1Q7CisJZWxzZSB7CisJCXZhbCB8PSBEUF9UUF9DVExfTU9ERV9T U1Q7CisJCWlmIChkcm1fZHBfZW5oYW5jZWRfZnJhbWVfY2FwKGludGVsX2RwLT5kcGNkKSkKKwkJ CXZhbCB8PSBEUF9UUF9DVExfRU5IQU5DRURfRlJBTUVfRU5BQkxFOworCX0KIAlJOTE1X1dSSVRF KERQX1RQX0NUTChwb3J0KSwgdmFsKTsKIAlQT1NUSU5HX1JFQUQoRFBfVFBfQ1RMKHBvcnQpKTsK IApAQCAtMTUyMCwxMSArMTU2OCwxNiBAQCB2b2lkIGludGVsX2RkaV9mZGlfZGlzYWJsZShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpCiAKIHN0YXRpYyB2b2lkIGludGVsX2RkaV9ob3RfcGx1ZyhzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikKIHsKLQlzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZpbnRlbF9lbmNvZGVyLT5iYXNlKTsKLQlpbnQgdHlw ZSA9IGludGVsX2VuY29kZXItPnR5cGU7CisJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50 ZWxfZGlnX3BvcnQgPSBlbmNfdG9fZGlnX3BvcnQoJmludGVsX2VuY29kZXItPmJhc2UpOworCWlu dCB0eXBlID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UudHlwZTsKKworCWlmICh0eXBlICE9IElOVEVM X09VVFBVVF9ESVNQTEFZUE9SVCAmJgorCSAgICB0eXBlICE9IElOVEVMX09VVFBVVF9FRFAgJiYK KwkgICAgdHlwZSAhPSBJTlRFTF9PVVRQVVRfVU5LTk9XTikgeworCQlyZXR1cm47CisJfQogCi0J aWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0RJU1BMQVlQT1JUIHx8IHR5cGUgPT0gSU5URUxfT1VU UFVUX0VEUCkKLQkJaW50ZWxfZHBfY2hlY2tfbGlua19zdGF0dXMoaW50ZWxfZHApOworCWludGVs X2RwX2hvdF9wbHVnKGludGVsX2VuY29kZXIpOwogfQogCiB2b2lkIGludGVsX2RkaV9nZXRfY29u ZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCmluZGV4IGNlZjY0YjguLjg1ZGIxYzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMKQEAgLTY4LDYgKzY4LDE0IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfc2V0X3Bp cGVjb25mKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7CiBzdGF0aWMgdm9pZCBpbnRlbF9zZXRfcGlw ZV9jc2Moc3RydWN0IGRybV9jcnRjICpjcnRjKTsKIHN0YXRpYyB2b2lkIHZsdl9wcmVwYXJlX3Bs bChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yyk7CiAKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqaW50ZWxfZmluZF9lbmNvZGVyKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvciwg aW50IHBpcGUpCit7CisJaWYgKCFjb25uZWN0b3ItPm1zdF9wb3J0KQorCQlyZXR1cm4gY29ubmVj dG9yLT5lbmNvZGVyOworCWVsc2UKKwkJcmV0dXJuICZjb25uZWN0b3ItPm1zdF9wb3J0LT5tc3Rf ZW5jb2RlcnNbcGlwZV0tPmJhc2U7Cit9CisKIHR5cGVkZWYgc3RydWN0IHsKIAlpbnQJbWluLCBt YXg7CiB9IGludGVsX3JhbmdlX3Q7CkBAIC00MTA1LDYgKzQxMTMsOSBAQCBzdGF0aWMgdm9pZCBo YXN3ZWxsX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlpZiAoaW50ZWxfY3J0 Yy0+Y29uZmlnLmhhc19wY2hfZW5jb2RlcikKIAkJbHB0X3BjaF9lbmFibGUoY3J0Yyk7CiAKKwlp ZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLmRwX2VuY29kZXJfaXNfbXN0KQorCQlpbnRlbF9kZGlfc2V0 X3ZjX3BheWxvYWRfYWxsb2MoY3J0YywgdHJ1ZSk7CisKIAlmb3JfZWFjaF9lbmNvZGVyX29uX2Ny dGMoZGV2LCBjcnRjLCBlbmNvZGVyKSB7CiAJCWVuY29kZXItPmVuYWJsZShlbmNvZGVyKTsKIAkJ aW50ZWxfb3ByZWdpb25fbm90aWZ5X2VuY29kZXIoZW5jb2RlciwgdHJ1ZSk7CkBAIC00MTU1LDYg KzQxNjYsOSBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9jcnRjX2Rpc2FibGUoc3RydWN0IGRybV9j cnRjICpjcnRjKQogCiAJaW50ZWxfZGlzYWJsZV9waXBlKGRldl9wcml2LCBwaXBlKTsKIAorCWlm IChpbnRlbF9jcnRjLT5jb25maWcuZHBfZW5jb2Rlcl9pc19tc3QpCisJCWludGVsX2RkaV9zZXRf dmNfcGF5bG9hZF9hbGxvYyhjcnRjLCBmYWxzZSk7CisKIAlpcm9ubGFrZV9wZml0X2Rpc2FibGUo aW50ZWxfY3J0Yyk7CiAKIAlmb3JfZWFjaF9lbmNvZGVyX29uX2NydGMoZGV2LCBjcnRjLCBlbmNv ZGVyKQpAQCAtNDMxNiw2ICs0MzMwLDkgQEAgaW50ZWxfZGlzcGxheV9wb3J0X3Bvd2VyX2RvbWFp bihzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikKIAljYXNlIElOVEVMX09VVFBV VF9FRFA6CiAJCWludGVsX2RpZ19wb3J0ID0gZW5jX3RvX2RpZ19wb3J0KCZpbnRlbF9lbmNvZGVy LT5iYXNlKTsKIAkJcmV0dXJuIHBvcnRfdG9fcG93ZXJfZG9tYWluKGludGVsX2RpZ19wb3J0LT5w b3J0KTsKKwljYXNlIElOVEVMX09VVFBVVF9EUF9NU1Q6CisJCWludGVsX2RpZ19wb3J0ID0gZW5j X3RvX21zdCgmaW50ZWxfZW5jb2Rlci0+YmFzZSktPnByaW1hcnk7CisJCXJldHVybiBwb3J0X3Rv X3Bvd2VyX2RvbWFpbihpbnRlbF9kaWdfcG9ydC0+cG9ydCk7CiAJY2FzZSBJTlRFTF9PVVRQVVRf QU5BTE9HOgogCQlyZXR1cm4gUE9XRVJfRE9NQUlOX1BPUlRfQ1JUOwogCWNhc2UgSU5URUxfT1VU UFVUX0RTSToKQEAgLTQ5MzYsNiArNDk1MywxMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jb25uZWN0 b3JfY2hlY2tfc3RhdGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogCQkJICAg ICAgY29ubmVjdG9yLT5iYXNlLmJhc2UuaWQsCiAJCQkgICAgICBjb25uZWN0b3ItPmJhc2UubmFt ZSk7CiAKKwkJLyogdGhlcmUgaXMgbm8gcmVhbCBodyBzdGF0ZSBmb3IgTVNUIGNvbm5lY3RvcnMg Ki8KKwkJaWYgKGNvbm5lY3Rvci0+bXN0X3BvcnQpCisJCQlyZXR1cm47CisKIAkJV0FSTihjb25u ZWN0b3ItPmJhc2UuZHBtcyA9PSBEUk1fTU9ERV9EUE1TX09GRiwKIAkJICAgICAid3JvbmcgY29u bmVjdG9yIGRwbXMgc3RhdGVcbiIpOwogCQlXQVJOKGNvbm5lY3Rvci0+YmFzZS5lbmNvZGVyICE9 ICZlbmNvZGVyLT5iYXNlLApAQCAtMTAwODAsNiArMTAxMDEsMTQgQEAgY2hlY2tfZW5jb2Rlcl9z dGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQkJaWYgKGNvbm5lY3Rvci0+YmFzZS5kcG1z ICE9IERSTV9NT0RFX0RQTVNfT0ZGKQogCQkJCWFjdGl2ZSA9IHRydWU7CiAJCX0KKwkJLyoKKwkJ ICogZm9yIE1TVCBjb25uZWN0b3JzIGlmIHdlIHVucGx1ZyB0aGUgY29ubmVjdG9yIGlzIGdvbmUK KwkJICogYXdheSBidXQgdGhlIGVuY29kZXIgaXMgc3RpbGwgY29ubmVjdGVkIHRvIGEgY3J0Ywor CQkgKiB1bnRpbCBhIG1vZGVzZXQgaGFwcGVucyBpbiByZXNwb25zZSB0byB0aGUgaG90cGx1Zy4K KwkJICovCisJCWlmICghZW5hYmxlZCAmJiBlbmNvZGVyLT5iYXNlLmVuY29kZXJfdHlwZSA9PSBE Uk1fTU9ERV9FTkNPREVSX0RQTVNUKQorCQkJY29udGludWU7CisKIAkJV0FSTighIWVuY29kZXIt PmJhc2UuY3J0YyAhPSBlbmFibGVkLAogCQkgICAgICJlbmNvZGVyJ3MgZW5hYmxlZCBzdGF0ZSBt aXNtYXRjaCAiCiAJCSAgICAgIihleHBlY3RlZCAlaSwgZm91bmQgJWkpXG4iLApAQCAtMTA2MTcs NyArMTA2NDYsNyBAQCBpbnRlbF9tb2Rlc2V0X3N0YWdlX291dHB1dF9zdGF0ZShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAogCQkgKiBmb3IgdGhlbS4gKi8KIAkJZm9yIChybyA9IDA7IHJvIDwgc2V0 LT5udW1fY29ubmVjdG9yczsgcm8rKykgewogCQkJaWYgKHNldC0+Y29ubmVjdG9yc1tyb10gPT0g JmNvbm5lY3Rvci0+YmFzZSkgewotCQkJCWNvbm5lY3Rvci0+bmV3X2VuY29kZXIgPSBjb25uZWN0 b3ItPmVuY29kZXI7CisJCQkJY29ubmVjdG9yLT5uZXdfZW5jb2RlciA9IGludGVsX2ZpbmRfZW5j b2Rlcihjb25uZWN0b3IsIHRvX2ludGVsX2NydGMoc2V0LT5jcnRjKS0+cGlwZSk7CiAJCQkJYnJl YWs7CiAJCQl9CiAJCX0KQEAgLTEwNjYzLDcgKzEwNjkyLDcgQEAgaW50ZWxfbW9kZXNldF9zdGFn ZV9vdXRwdXRfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkJIG5ld19jcnRjKSkg ewogCQkJcmV0dXJuIC1FSU5WQUw7CiAJCX0KLQkJY29ubmVjdG9yLT5lbmNvZGVyLT5uZXdfY3J0 YyA9IHRvX2ludGVsX2NydGMobmV3X2NydGMpOworCQljb25uZWN0b3ItPm5ld19lbmNvZGVyLT5u ZXdfY3J0YyA9IHRvX2ludGVsX2NydGMobmV3X2NydGMpOwogCiAJCURSTV9ERUJVR19LTVMoIltD T05ORUNUT1I6JWQ6JXNdIHRvIFtDUlRDOiVkXVxuIiwKIAkJCWNvbm5lY3Rvci0+YmFzZS5iYXNl LmlkLApAQCAtMTA2OTcsNyArMTA3MjYsMTIgQEAgaW50ZWxfbW9kZXNldF9zdGFnZV9vdXRwdXRf c3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJfQogCX0KIAkvKiBOb3cgd2UndmUgYWxz byB1cGRhdGVkIGVuY29kZXItPm5ld19jcnRjIGZvciBhbGwgZW5jb2RlcnMuICovCi0KKwlsaXN0 X2Zvcl9lYWNoX2VudHJ5KGNvbm5lY3RvciwgJmRldi0+bW9kZV9jb25maWcuY29ubmVjdG9yX2xp c3QsCisJCQkgICAgYmFzZS5oZWFkKSB7CisJCWlmIChjb25uZWN0b3ItPm5ld19lbmNvZGVyKQor CQkJaWYgKGNvbm5lY3Rvci0+bmV3X2VuY29kZXIgIT0gY29ubmVjdG9yLT5lbmNvZGVyKQorCQkJ CWNvbm5lY3Rvci0+ZW5jb2RlciA9IGNvbm5lY3Rvci0+bmV3X2VuY29kZXI7CisJfQogCWZvcl9l YWNoX2ludGVsX2NydGMoZGV2LCBjcnRjKSB7CiAJCWNydGMtPm5ld19lbmFibGVkID0gZmFsc2U7 CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCmluZGV4IDQ2MDNlNWYuLmM1MDBmNjMgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHAuYwpAQCAtMTEyLDcgKzExMiw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2Rw X2xpbmtfZG93bihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKIHN0YXRpYyBib29sIF9lZHBf cGFuZWxfdmRkX29uKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwogc3RhdGljIHZvaWQgZWRw X3BhbmVsX3ZkZF9vZmYoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgYm9vbCBzeW5jKTsKIAot c3RhdGljIGludAoraW50CiBpbnRlbF9kcF9tYXhfbGlua19idyhzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwKQogewogCWludCBtYXhfbGlua19idyA9IGludGVsX2RwLT5kcGNkW0RQX01BWF9MSU5L X1JBVEVdOwpAQCAtNzIzLDggKzcyMyw5IEBAIGludGVsX2RwX2Nvbm5lY3Rvcl91bnJlZ2lzdGVy KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcikKIHsKIAlzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwID0gaW50ZWxfYXR0YWNoZWRfZHAoJmludGVsX2Nvbm5lY3Rvci0+YmFz ZSk7CiAKLQlzeXNmc19yZW1vdmVfbGluaygmaW50ZWxfY29ubmVjdG9yLT5iYXNlLmtkZXYtPmtv YmosCi0JCQkgIGludGVsX2RwLT5hdXguZGRjLmRldi5rb2JqLm5hbWUpOworCWlmICghaW50ZWxf Y29ubmVjdG9yLT5tc3RfcG9ydCkKKwkJc3lzZnNfcmVtb3ZlX2xpbmsoJmludGVsX2Nvbm5lY3Rv ci0+YmFzZS5rZGV2LT5rb2JqLAorCQkJCSAgaW50ZWxfZHAtPmF1eC5kZGMuZGV2LmtvYmoubmFt ZSk7CiAJaW50ZWxfY29ubmVjdG9yX3VucmVnaXN0ZXIoaW50ZWxfY29ubmVjdG9yKTsKIH0KIApA QCAtMzE3NSw2ICszMTc2LDMzIEBAIGludGVsX2RwX3Byb2JlX291aShzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwKQogCWVkcF9wYW5lbF92ZGRfb2ZmKGludGVsX2RwLCBmYWxzZSk7CiB9CiAKK3N0 YXRpYyBib29sCitpbnRlbF9kcF9wcm9iZV9tc3Qoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK K3sKKwl1OCBidWZbMV07CisKKwlpZiAoIWludGVsX2RwLT5jYW5fbXN0KQorCQlyZXR1cm4gZmFs c2U7CisKKwlpZiAoaW50ZWxfZHAtPmRwY2RbRFBfRFBDRF9SRVZdIDwgMHgxMikKKwkJcmV0dXJu IGZhbHNlOworCisJX2VkcF9wYW5lbF92ZGRfb24oaW50ZWxfZHApOworCWlmIChpbnRlbF9kcF9k cGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAtPmF1eCwgRFBfTVNUTV9DQVAsIGJ1ZiwgMSkpIHsKKwkJ aWYgKGJ1ZlswXSAmIERQX01TVF9DQVApIHsKKwkJCURSTV9ERUJVR19LTVMoIlNpbmsgaXMgTVNU IGNhcGFibGVcbiIpOworCQkJaW50ZWxfZHAtPmlzX21zdCA9IHRydWU7CisJCX0gZWxzZSB7CisJ CQlEUk1fREVCVUdfS01TKCJTaW5rIGlzIG5vdCBNU1QgY2FwYWJsZVxuIik7CisJCQlpbnRlbF9k cC0+aXNfbXN0ID0gZmFsc2U7CisJCX0KKwl9CisJZWRwX3BhbmVsX3ZkZF9vZmYoaW50ZWxfZHAs IGZhbHNlKTsKKworCWRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyX3NldF9tc3QoJmludGVsX2RwLT5t c3RfbWdyLCBpbnRlbF9kcC0+aXNfbXN0KTsKKwlyZXR1cm4gaW50ZWxfZHAtPmlzX21zdDsKK30K KwogaW50IGludGVsX2RwX3NpbmtfY3JjKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHU4ICpj cmMpCiB7CiAJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBkcF90 b19kaWdfcG9ydChpbnRlbF9kcCk7CkBAIC0zMjEyLDYgKzMyNDAsMjAgQEAgaW50ZWxfZHBfZ2V0 X3NpbmtfaXJxKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHU4ICpzaW5rX2lycV92ZWN0b3Ip CiAJCQkJICAgICAgIHNpbmtfaXJxX3ZlY3RvciwgMSkgPT0gMTsKIH0KIAorc3RhdGljIGJvb2wK K2ludGVsX2RwX2dldF9zaW5rX2lycV9lc2koc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgdTgg KnNpbmtfaXJxX3ZlY3RvcikKK3sKKwlpbnQgcmV0OworCisJcmV0ID0gaW50ZWxfZHBfZHBjZF9y ZWFkX3dha2UoJmludGVsX2RwLT5hdXgsCisJCQkJCSAgICAgRFBfU0lOS19DT1VOVF9FU0ksCisJ CQkJCSAgICAgc2lua19pcnFfdmVjdG9yLCAxNCk7CisJaWYgKHJldCAhPSAxNCkKKwkJcmV0dXJu IGZhbHNlOworCisJcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyB2b2lkCiBpbnRlbF9kcF9oYW5k bGVfdGVzdF9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiB7CkBAIC0zMjE5LDYg KzMyNjEsNjMgQEAgaW50ZWxfZHBfaGFuZGxlX3Rlc3RfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwKQogCWRybV9kcF9kcGNkX3dyaXRlYigmaW50ZWxfZHAtPmF1eCwgRFBfVEVTVF9S RVNQT05TRSwgRFBfVEVTVF9OQUspOwogfQogCitzdGF0aWMgaW50CitpbnRlbF9kcF9jaGVja19t c3Rfc3RhdHVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCit7CisJYm9vbCBicmV0OworCisJ aWYgKGludGVsX2RwLT5pc19tc3QpIHsKKwkJdTggZXNpWzE2XSA9IHsgMCB9OworCQlpbnQgcmV0 ID0gMDsKKwkJaW50IHJldHJ5OworCQlib29sIGhhbmRsZWQ7CisJCWJyZXQgPSBpbnRlbF9kcF9n ZXRfc2lua19pcnFfZXNpKGludGVsX2RwLCBlc2kpOworCWdvX2FnYWluOgorCQlpZiAoYnJldCA9 PSB0cnVlKSB7CisKKwkJCS8qIGNoZWNrIGxpbmsgc3RhdHVzIC0gZXNpWzEwXSA9IDB4MjAwYyAq LworCQkJaWYgKGludGVsX2RwLT5hY3RpdmVfbXN0X2xpbmtzICYmICFkcm1fZHBfY2hhbm5lbF9l cV9vaygmZXNpWzEwXSwgaW50ZWxfZHAtPmxhbmVfY291bnQpKSB7CisJCQkJRFJNX0RFQlVHX0tN UygiY2hhbm5lbCBFUSBub3Qgb2ssIHJldHJhaW5pbmdcbiIpOworCQkJCWludGVsX2RwX3N0YXJ0 X2xpbmtfdHJhaW4oaW50ZWxfZHApOworCQkJCWludGVsX2RwX2NvbXBsZXRlX2xpbmtfdHJhaW4o aW50ZWxfZHApOworCQkJCWludGVsX2RwX3N0b3BfbGlua190cmFpbihpbnRlbF9kcCk7CisJCQl9 CisKKwkJCURSTV9ERUJVR19LTVMoImdvdCBlc2kgJTAyeCAlMDJ4ICUwMnhcbiIsIGVzaVswXSwg ZXNpWzFdLCBlc2lbMl0pOworCQkJcmV0ID0gZHJtX2RwX21zdF9ocGRfaXJxKCZpbnRlbF9kcC0+ bXN0X21nciwgZXNpLCAmaGFuZGxlZCk7CisKKwkJCWlmIChoYW5kbGVkKSB7CisJCQkJZm9yIChy ZXRyeSA9IDA7IHJldHJ5IDwgMzsgcmV0cnkrKykgeworCQkJCQlpbnQgd3JldDsKKwkJCQkJd3Jl dCA9IGRybV9kcF9kcGNkX3dyaXRlKCZpbnRlbF9kcC0+YXV4LAorCQkJCQkJCQkgRFBfU0lOS19D T1VOVF9FU0krMSwKKwkJCQkJCQkJICZlc2lbMV0sIDMpOworCQkJCQlpZiAod3JldCA9PSAzKSB7 CisJCQkJCQlicmVhazsKKwkJCQkJfQorCQkJCX0KKworCQkJCWJyZXQgPSBpbnRlbF9kcF9nZXRf c2lua19pcnFfZXNpKGludGVsX2RwLCBlc2kpOworCQkJCWlmIChicmV0ID09IHRydWUpIHsKKwkJ CQkJRFJNX0RFQlVHX0tNUygiZ290IGVzaTIgJTAyeCAlMDJ4ICUwMnhcbiIsIGVzaVswXSwgZXNp WzFdLCBlc2lbMl0pOworCQkJCQlnb3RvIGdvX2FnYWluOworCQkJCX0KKwkJCX0gZWxzZQorCQkJ CXJldCA9IDA7CisKKwkJCXJldHVybiByZXQ7CisJCX0gZWxzZSB7CisJCQlzdHJ1Y3QgaW50ZWxf ZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsK KwkJCURSTV9ERUJVR19LTVMoImZhaWxlZCB0byBnZXQgRVNJIC0gZGV2aWNlIG1heSBoYXZlIGZh aWxlZFxuIik7CisJCQlpbnRlbF9kcC0+aXNfbXN0ID0gZmFsc2U7CisJCQlkcm1fZHBfbXN0X3Rv cG9sb2d5X21ncl9zZXRfbXN0KCZpbnRlbF9kcC0+bXN0X21nciwgaW50ZWxfZHAtPmlzX21zdCk7 CisJCQkvKiBzZW5kIGEgaG90cGx1ZyBldmVudCAqLworCQkJZHJtX2ttc19oZWxwZXJfaG90cGx1 Z19ldmVudChpbnRlbF9kaWdfcG9ydC0+YmFzZS5iYXNlLmRldik7CisJCX0KKwl9CisJcmV0dXJu IC1FSU5WQUw7Cit9CisKIC8qCiAgKiBBY2NvcmRpbmcgdG8gRFAgc3BlYwogICogNS4xLjI6CkBA IC0zMjI3LDcgKzMzMjYsNiBAQCBpbnRlbF9kcF9oYW5kbGVfdGVzdF9yZXF1ZXN0KHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHApCiAgKiAgMy4gVXNlIExpbmsgVHJhaW5pbmcgZnJvbSAyLjUuMy4z IGFuZCAzLjUuMS4zCiAgKiAgNC4gQ2hlY2sgbGluayBzdGF0dXMgb24gcmVjZWlwdCBvZiBob3Qt cGx1ZyBpbnRlcnJ1cHQKICAqLwotCiB2b2lkCiBpbnRlbF9kcF9jaGVja19saW5rX3N0YXR1cyhz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogewpAQCAtMzQ0Nyw2ICszNTQ1LDcgQEAgaW50ZWxf ZHBfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGJvb2wgZm9yY2UpCiAJ ZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0dXM7CiAJZW51bSBpbnRlbF9kaXNwbGF5X3Bv d2VyX2RvbWFpbiBwb3dlcl9kb21haW47CiAJc3RydWN0IGVkaWQgKmVkaWQgPSBOVUxMOworCWJv b2wgcmV0OwogCiAJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwogCkBAIC0zNDU2LDYg KzM1NTUsMTQgQEAgaW50ZWxfZHBfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0 b3IsIGJvb2wgZm9yY2UpCiAJRFJNX0RFQlVHX0tNUygiW0NPTk5FQ1RPUjolZDolc11cbiIsCiAJ CSAgICAgIGNvbm5lY3Rvci0+YmFzZS5pZCwgY29ubmVjdG9yLT5uYW1lKTsKIAorCWlmIChpbnRl bF9kcC0+aXNfbXN0KSB7CisJCS8qIE1TVCBkZXZpY2VzIGFyZSBkaXNjb25uZWN0ZWQgZnJvbSBh IG1vbml0b3IgUE9WICovCisJCWlmIChpbnRlbF9lbmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBV VF9FRFApCisJCQlpbnRlbF9lbmNvZGVyLT50eXBlID0gSU5URUxfT1VUUFVUX0RJU1BMQVlQT1JU OworCQlzdGF0dXMgPSBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsKKwkJZ290byBvdXQ7 CisJfQorCiAJaW50ZWxfZHAtPmhhc19hdWRpbyA9IGZhbHNlOwogCiAJaWYgKEhBU19QQ0hfU1BM SVQoZGV2KSkKQEAgLTM0NjgsNiArMzU3NSwxNiBAQCBpbnRlbF9kcF9kZXRlY3Qoc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkKIAogCWludGVsX2RwX3Byb2JlX291 aShpbnRlbF9kcCk7CiAKKwlyZXQgPSBpbnRlbF9kcF9wcm9iZV9tc3QoaW50ZWxfZHApOworCWlm IChyZXQpIHsKKwkJLyogaWYgd2UgYXJlIGluIE1TVCBtb2RlIHRoZW4gdGhpcyBjb25uZWN0b3IK KwkJICAgd29uJ3QgYXBwZWFyIGNvbm5lY3RlZCBvciBoYXZlIGFueXRoaW5nIHdpdGggRURJRCBv biBpdCAqLworCQlpZiAoaW50ZWxfZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfRURQKQor CQkJaW50ZWxfZW5jb2Rlci0+dHlwZSA9IElOVEVMX09VVFBVVF9ESVNQTEFZUE9SVDsKKwkJc3Rh dHVzID0gY29ubmVjdG9yX3N0YXR1c19kaXNjb25uZWN0ZWQ7CisJCWdvdG8gb3V0OworCX0KKwog CWlmIChpbnRlbF9kcC0+Zm9yY2VfYXVkaW8gIT0gSERNSV9BVURJT19BVVRPKSB7CiAJCWludGVs X2RwLT5oYXNfYXVkaW8gPSAoaW50ZWxfZHAtPmZvcmNlX2F1ZGlvID09IEhETUlfQVVESU9fT04p OwogCX0gZWxzZSB7CkBAIC0zNjYzLDYgKzM3ODAsNyBAQCB2b2lkIGludGVsX2RwX2VuY29kZXJf ZGVzdHJveShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiAJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGludGVsX2RwX3RvX2RldihpbnRlbF9kcCk7CiAKIAlkcm1fZHBfYXV4X3VucmVnaXN0 ZXIoJmludGVsX2RwLT5hdXgpOworCWludGVsX2RwX21zdF9lbmNvZGVyX2NsZWFudXAoaW50ZWxf ZGlnX3BvcnQpOwogCWRybV9lbmNvZGVyX2NsZWFudXAoZW5jb2Rlcik7CiAJaWYgKGlzX2VkcChp bnRlbF9kcCkpIHsKIAkJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZpbnRlbF9kcC0+cGFuZWxf dmRkX3dvcmspOwpAQCAtMzY5MSwyOCArMzgwOSw2MiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRy bV9lbmNvZGVyX2Z1bmNzIGludGVsX2RwX2VuY19mdW5jcyA9IHsKIAkuZGVzdHJveSA9IGludGVs X2RwX2VuY29kZXJfZGVzdHJveSwKIH07CiAKLXN0YXRpYyB2b2lkCit2b2lkCiBpbnRlbF9kcF9o b3RfcGx1ZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikKIHsKLQlzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZpbnRlbF9lbmNvZGVyLT5iYXNl KTsKLQotCWludGVsX2RwX2NoZWNrX2xpbmtfc3RhdHVzKGludGVsX2RwKTsKKwlyZXR1cm47CiB9 CiAKIGJvb2wKIGludGVsX2RwX2hwZF9wdWxzZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpp bnRlbF9kaWdfcG9ydCwgYm9vbCBsb25nX2hwZCkKIHsKIAlzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwID0gJmludGVsX2RpZ19wb3J0LT5kcDsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50 ZWxfZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlpbnQgcmV0OworCWlmIChpbnRlbF9kaWdfcG9y dC0+YmFzZS50eXBlICE9IElOVEVMX09VVFBVVF9FRFApCisJCWludGVsX2RpZ19wb3J0LT5iYXNl LnR5cGUgPSBJTlRFTF9PVVRQVVRfRElTUExBWVBPUlQ7CiAKLQlpZiAobG9uZ19ocGQpCi0JCXJl dHVybiB0cnVlOworCURSTV9ERUJVR19LTVMoImdvdCBocGQgaXJxIG9uIHBvcnQgJWQgLSAlc1xu IiwgaW50ZWxfZGlnX3BvcnQtPnBvcnQsCisJCSAgICAgIGxvbmdfaHBkID8gImxvbmciIDogInNo b3J0Iik7CiAKLQkvKgotCSAqIHdlJ2xsIGNoZWNrIHRoZSBsaW5rIHN0YXR1cyB2aWEgdGhlIG5v cm1hbCBob3QgcGx1ZyBwYXRoIGxhdGVyIC0KLQkgKiBidXQgZm9yIHNob3J0IGhwZHMgd2Ugc2hv dWxkIGNoZWNrIGl0IG5vdwotCSAqLwotCWludGVsX2RwX2NoZWNrX2xpbmtfc3RhdHVzKGludGVs X2RwKTsKKwlpZiAobG9uZ19ocGQpIHsKKwkJaWYgKCFpYnhfZGlnaXRhbF9wb3J0X2Nvbm5lY3Rl ZChkZXZfcHJpdiwgaW50ZWxfZGlnX3BvcnQpKQorCQkJZ290byBtc3RfZmFpbDsKKworCQlpZiAo IWludGVsX2RwX2dldF9kcGNkKGludGVsX2RwKSkgeworCQkJZ290byBtc3RfZmFpbDsKKwkJfQor CisJCWludGVsX2RwX3Byb2JlX291aShpbnRlbF9kcCk7CisKKwkJaWYgKCFpbnRlbF9kcF9wcm9i ZV9tc3QoaW50ZWxfZHApKQorCQkJZ290byBtc3RfZmFpbDsKKworCX0gZWxzZSB7CisJCWlmIChp bnRlbF9kcC0+aXNfbXN0KSB7CisJCQlyZXQgPSBpbnRlbF9kcF9jaGVja19tc3Rfc3RhdHVzKGlu dGVsX2RwKTsKKwkJCWlmIChyZXQgPT0gLUVJTlZBTCkKKwkJCQlnb3RvIG1zdF9mYWlsOworCQl9 CisKKwkJaWYgKCFpbnRlbF9kcC0+aXNfbXN0KSB7CisJCQkvKgorCQkJICogd2UnbGwgY2hlY2sg dGhlIGxpbmsgc3RhdHVzIHZpYSB0aGUgbm9ybWFsIGhvdCBwbHVnIHBhdGggbGF0ZXIgLQorCQkJ ICogYnV0IGZvciBzaG9ydCBocGRzIHdlIHNob3VsZCBjaGVjayBpdCBub3cKKwkJCSAqLworCQkJ aW50ZWxfZHBfY2hlY2tfbGlua19zdGF0dXMoaW50ZWxfZHApOworCQl9CisJfQogCXJldHVybiBm YWxzZTsKK21zdF9mYWlsOgorCS8qIGlmIHdlIHdlcmUgaW4gTVNUIG1vZGUsIGFuZCBkZXZpY2Ug aXMgbm90IHRoZXJlIGdldCBvdXQgb2YgTVNUIG1vZGUgKi8KKwlpZiAoaW50ZWxfZHAtPmlzX21z dCkgeworCQlEUk1fREVCVUdfS01TKCJNU1QgZGV2aWNlIG1heSBoYXZlIGRpc2FwcGVhcmVkICVk IHZzICVkXG4iLCBpbnRlbF9kcC0+aXNfbXN0LCBpbnRlbF9kcC0+bXN0X21nci5tc3Rfc3RhdGUp OworCQlpbnRlbF9kcC0+aXNfbXN0ID0gZmFsc2U7CisJCWRybV9kcF9tc3RfdG9wb2xvZ3lfbWdy X3NldF9tc3QoJmludGVsX2RwLT5tc3RfbWdyLCBpbnRlbF9kcC0+aXNfbXN0KTsKKwl9CisJcmV0 dXJuIHRydWU7CiB9CiAKIC8qIFJldHVybiB3aGljaCBEUCBQb3J0IHNob3VsZCBiZSBzZWxlY3Rl ZCBmb3IgVHJhbnNjb2RlciBEUCBjb250cm9sICovCkBAIC0zNzYzLDcgKzM5MTUsNyBAQCBib29s IGludGVsX2RwX2lzX2VkcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBvcnQgcG9ydCkK IAlyZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyB2b2lkCit2b2lkCiBpbnRlbF9kcF9hZGRfcHJv cGVydGllcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yKQogewogCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvciA9 IHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uZWN0b3IpOwpAQCAtNDI1OSw2ICs0NDExLDEzIEBAIGlu dGVsX2RwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2Rp Z19wb3J0LAogCiAJaW50ZWxfZHAtPnBzcl9zZXR1cF9kb25lID0gZmFsc2U7CiAKKwkvKiBpbml0 IE1TVCBvbiBwb3J0cyB0aGF0IGNhbiBzdXBwb3J0IGl0ICovCisJaWYgKElTX0hBU1dFTEwoZGV2 KSB8fCBJU19CUk9BRFdFTEwoZGV2KSkgeworCQlpZiAocG9ydCA9PSBQT1JUX0IgfHwgcG9ydCA9 PSBQT1JUX0MgfHwgcG9ydCA9PSBQT1JUX0QpIHsKKwkJCWludGVsX2RwX21zdF9lbmNvZGVyX2lu aXQoaW50ZWxfZGlnX3BvcnQsIGludGVsX2Nvbm5lY3Rvci0+YmFzZS5iYXNlLmlkKTsKKwkJfQor CX0KKwogCWlmICghaW50ZWxfZWRwX2luaXRfY29ubmVjdG9yKGludGVsX2RwLCBpbnRlbF9jb25u ZWN0b3IsICZwb3dlcl9zZXEpKSB7CiAJCWRybV9kcF9hdXhfdW5yZWdpc3RlcigmaW50ZWxfZHAt PmF1eCk7CiAJCWlmIChpc19lZHAoaW50ZWxfZHApKSB7CkBAIC00MzU2LDMgKzQ1MTUsNDYgQEAg aW50ZWxfZHBfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgb3V0cHV0X3JlZywgZW51 bSBwb3J0IHBvcnQpCiAJCWtmcmVlKGludGVsX2Nvbm5lY3Rvcik7CiAJfQogfQorCit2b2lkIGlu dGVsX2RwX21zdF9zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlpbnQgaTsKKwor CS8qIGRpc2FibGUgTVNUICovCisJZm9yIChpID0gMDsgaSA8IEk5MTVfTUFYX1BPUlRTOyBpKysp IHsKKwkJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBkZXZfcHJp di0+aHBkX2lycV9wb3J0W2ldOworCQlpZiAoIWludGVsX2RpZ19wb3J0KQorCQkJY29udGludWU7 CisKKwkJaWYgKGludGVsX2RpZ19wb3J0LT5iYXNlLnR5cGUgPT0gSU5URUxfT1VUUFVUX0RJU1BM QVlQT1JUKSB7CisJCQlpZiAoIWludGVsX2RpZ19wb3J0LT5kcC5jYW5fbXN0KQorCQkJCWNvbnRp bnVlOworCQkJaWYgKGludGVsX2RpZ19wb3J0LT5kcC5pc19tc3QpCisJCQkJZHJtX2RwX21zdF90 b3BvbG9neV9tZ3Jfc3VzcGVuZCgmaW50ZWxfZGlnX3BvcnQtPmRwLm1zdF9tZ3IpOworCQl9CisJ fQorfQorCit2b2lkIGludGVsX2RwX21zdF9yZXN1bWUoc3RydWN0IGRybV9kZXZpY2UgKmRldikK K3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRl OworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IEk5MTVfTUFYX1BPUlRTOyBpKyspIHsKKwkJ c3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBkZXZfcHJpdi0+aHBk X2lycV9wb3J0W2ldOworCQlpZiAoIWludGVsX2RpZ19wb3J0KQorCQkJY29udGludWU7CisJCWlm IChpbnRlbF9kaWdfcG9ydC0+YmFzZS50eXBlID09IElOVEVMX09VVFBVVF9ESVNQTEFZUE9SVCkg eworCQkJaW50IHJldDsKKworCQkJaWYgKCFpbnRlbF9kaWdfcG9ydC0+ZHAuY2FuX21zdCkKKwkJ CQljb250aW51ZTsKKworCQkJcmV0ID0gZHJtX2RwX21zdF90b3BvbG9neV9tZ3JfcmVzdW1lKCZp bnRlbF9kaWdfcG9ydC0+ZHAubXN0X21ncik7CisJCQlpZiAocmV0ICE9IDApIHsKKwkJCQlpbnRl bF9kcF9jaGVja19tc3Rfc3RhdHVzKCZpbnRlbF9kaWdfcG9ydC0+ZHApOworCQkJfQorCQl9CisJ fQorfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9tc3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi5hN2RiNzQxCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHBfbXN0LmMKQEAgLTAsMCArMSw1MzUgQEAKKy8qCisgKiBDb3B5cmlnaHQg wqkgMjAwOCBJbnRlbCBDb3Jwb3JhdGlvbgorICogICAgICAgICAgICAgMjAxNCBSZWQgSGF0IElu Yy4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRl YWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0 IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9m IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0 d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k aXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p c3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUg aW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAq IFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJ TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK KyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQu ICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMg QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwg V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklT SU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP UiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICov CisKKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisjaW5jbHVk ZSAiaW50ZWxfZHJ2LmgiCisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgorI2luY2x1 ZGUgPGRybS9kcm1fZWRpZC5oPgorCitib29sCitpbnRlbF9kcF9tc3RfY29tcHV0ZV9jb25maWco c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQkgICAgc3RydWN0IGludGVsX2NydGNf Y29uZmlnICpwaXBlX2NvbmZpZykKK3sKKwlzdHJ1Y3QgaW50ZWxfZHBfbXN0X2VuY29kZXIgKmlu dGVsX21zdCA9IGVuY190b19tc3QoJmVuY29kZXItPmJhc2UpOworCXN0cnVjdCBpbnRlbF9kaWdp dGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gaW50ZWxfbXN0LT5wcmltYXJ5OworCXN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAgPSAmaW50ZWxfZGlnX3BvcnQtPmRwOworCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKKwlpbnQgYnBwOworCWludCBsYW5lX2NvdW50 LCBzbG90czsKKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBl X2NvbmZpZy0+YWRqdXN0ZWRfbW9kZTsKKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpmb3VuZCA9 IE5VTEwsICppbnRlbF9jb25uZWN0b3I7CisJaW50IG1zdF9wYm47CisKKwlwaXBlX2NvbmZpZy0+ ZHBfZW5jb2Rlcl9pc19tc3QgPSB0cnVlOworCXBpcGVfY29uZmlnLT5oYXNfcGNoX2VuY29kZXIg PSBmYWxzZTsKKwlwaXBlX2NvbmZpZy0+aGFzX2RwX2VuY29kZXIgPSB0cnVlOworCWJwcCA9IDI0 OworCS8qCisJICogZm9yIE1TVCB3ZSBhbHdheXMgY29uZmlndXJlIG1heCBsaW5rIGJ3IC0gdGhl IHNwZWMgZG9lc24ndAorCSAqIHNlZW0gdG8gc3VnZ2VzdCB3ZSBzaG91bGQgZG8gb3RoZXJ3aXNl LgorCSAqLworCWxhbmVfY291bnQgPSBkcm1fZHBfbWF4X2xhbmVfY291bnQoaW50ZWxfZHAtPmRw Y2QpOworCWludGVsX2RwLT5saW5rX2J3ID0gaW50ZWxfZHBfbWF4X2xpbmtfYncoaW50ZWxfZHAp OworCWludGVsX2RwLT5sYW5lX2NvdW50ID0gbGFuZV9jb3VudDsKKworCXBpcGVfY29uZmlnLT5w aXBlX2JwcCA9IDI0OworCXBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrID0gZHJtX2RwX2J3X2NvZGVf dG9fbGlua19yYXRlKGludGVsX2RwLT5saW5rX2J3KTsKKworCWxpc3RfZm9yX2VhY2hfZW50cnko aW50ZWxfY29ubmVjdG9yLCAmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0b3JfbGlzdCwgYmFzZS5o ZWFkKSB7CisJCWlmIChpbnRlbF9jb25uZWN0b3ItPm5ld19lbmNvZGVyID09IGVuY29kZXIpIHsK KwkJCWZvdW5kID0gaW50ZWxfY29ubmVjdG9yOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlpZiAo IWZvdW5kKSB7CisJCURSTV9FUlJPUigiY2FuJ3QgZmluZCBjb25uZWN0b3JcbiIpOworCQlyZXR1 cm4gZmFsc2U7CisJfQorCisJbXN0X3BibiA9IGRybV9kcF9jYWxjX3Bibl9tb2RlKGFkanVzdGVk X21vZGUtPmNsb2NrLCBicHApOworCisJcGlwZV9jb25maWctPnBibiA9IG1zdF9wYm47CisJc2xv dHMgPSBkcm1fZHBfZmluZF92Y3BpX3Nsb3RzKCZpbnRlbF9kcC0+bXN0X21nciwgbXN0X3Bibik7 CisKKwlpbnRlbF9saW5rX2NvbXB1dGVfbV9uKGJwcCwgbGFuZV9jb3VudCwKKwkJCSAgICAgICBh ZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrLAorCQkJICAgICAgIHBpcGVfY29uZmlnLT5wb3J0X2Ns b2NrLAorCQkJICAgICAgICZwaXBlX2NvbmZpZy0+ZHBfbV9uKTsKKworCXBpcGVfY29uZmlnLT5k cF9tX24udHUgPSBzbG90czsKKwlyZXR1cm4gdHJ1ZTsKKworfQorCitzdGF0aWMgdm9pZCBpbnRl bF9tc3RfZGlzYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKK3sKKwlzdHJ1 Y3QgaW50ZWxfZHBfbXN0X2VuY29kZXIgKmludGVsX21zdCA9IGVuY190b19tc3QoJmVuY29kZXIt PmJhc2UpOworCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gaW50 ZWxfbXN0LT5wcmltYXJ5OworCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSAmaW50ZWxfZGln X3BvcnQtPmRwOworCWludCByZXQ7CisKKwlEUk1fREVCVUdfS01TKCIlZFxuIiwgaW50ZWxfZHAt PmFjdGl2ZV9tc3RfbGlua3MpOworCisJZHJtX2RwX21zdF9yZXNldF92Y3BpX3Nsb3RzKCZpbnRl bF9kcC0+bXN0X21nciwgaW50ZWxfbXN0LT5wb3J0KTsKKworCXJldCA9IGRybV9kcF91cGRhdGVf cGF5bG9hZF9wYXJ0MSgmaW50ZWxfZHAtPm1zdF9tZ3IpOworCWlmIChyZXQpIHsKKwkJRFJNX0VS Uk9SKCJmYWlsZWQgdG8gdXBkYXRlIHBheWxvYWQgJWRcbiIsIHJldCk7CisJfQorfQorCitzdGF0 aWMgdm9pZCBpbnRlbF9tc3RfcG9zdF9kaXNhYmxlX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyKQoreworCXN0cnVjdCBpbnRlbF9kcF9tc3RfZW5jb2RlciAqaW50ZWxfbXN0ID0gZW5j X3RvX21zdCgmZW5jb2Rlci0+YmFzZSk7CisJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50 ZWxfZGlnX3BvcnQgPSBpbnRlbF9tc3QtPnByaW1hcnk7CisJc3RydWN0IGludGVsX2RwICppbnRl bF9kcCA9ICZpbnRlbF9kaWdfcG9ydC0+ZHA7CisKKwlEUk1fREVCVUdfS01TKCIlZFxuIiwgaW50 ZWxfZHAtPmFjdGl2ZV9tc3RfbGlua3MpOworCisJLyogdGhpcyBjYW4gZmFpbCAqLworCWRybV9k cF9jaGVja19hY3Rfc3RhdHVzKCZpbnRlbF9kcC0+bXN0X21ncik7CisJLyogYW5kIHRoaXMgY2Fu IGFsc28gZmFpbCAqLworCWRybV9kcF91cGRhdGVfcGF5bG9hZF9wYXJ0MigmaW50ZWxfZHAtPm1z dF9tZ3IpOworCisJZHJtX2RwX21zdF9kZWFsbG9jYXRlX3ZjcGkoJmludGVsX2RwLT5tc3RfbWdy LCBpbnRlbF9tc3QtPnBvcnQpOworCisJaW50ZWxfZHAtPmFjdGl2ZV9tc3RfbGlua3MtLTsKKwlp bnRlbF9tc3QtPnBvcnQgPSBOVUxMOworCWlmIChpbnRlbF9kcC0+YWN0aXZlX21zdF9saW5rcyA9 PSAwKSB7CisJCWludGVsX2RpZ19wb3J0LT5iYXNlLnBvc3RfZGlzYWJsZSgmaW50ZWxfZGlnX3Bv cnQtPmJhc2UpOworCQlpbnRlbF9kcF9zaW5rX2RwbXMoaW50ZWxfZHAsIERSTV9NT0RFX0RQTVNf T0ZGKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGludGVsX21zdF9wcmVfZW5hYmxlX2RwKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQoreworCXN0cnVjdCBpbnRlbF9kcF9tc3RfZW5jb2Rl ciAqaW50ZWxfbXN0ID0gZW5jX3RvX21zdCgmZW5jb2Rlci0+YmFzZSk7CisJc3RydWN0IGludGVs X2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBpbnRlbF9tc3QtPnByaW1hcnk7CisJc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCA9ICZpbnRlbF9kaWdfcG9ydC0+ZHA7CisJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmJhc2UuZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJZW51bSBwb3J0IHBvcnQgPSBpbnRl bF9kaWdfcG9ydC0+cG9ydDsKKwlpbnQgcmV0OworCXVpbnQzMl90IHRlbXA7CisJc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqZm91bmQgPSBOVUxMLCAqaW50ZWxfY29ubmVjdG9yOworCWludCBzbG90 czsKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBlbmNvZGVyLT5iYXNlLmNydGM7CisJc3RydWN0 IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOworCisJbGlzdF9m b3JfZWFjaF9lbnRyeShpbnRlbF9jb25uZWN0b3IsICZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rv cl9saXN0LCBiYXNlLmhlYWQpIHsKKwkJaWYgKGludGVsX2Nvbm5lY3Rvci0+bmV3X2VuY29kZXIg PT0gZW5jb2RlcikgeworCQkJZm91bmQgPSBpbnRlbF9jb25uZWN0b3I7CisJCQlicmVhazsKKwkJ fQorCX0KKworCWlmICghZm91bmQpIHsKKwkJRFJNX0VSUk9SKCJjYW4ndCBmaW5kIGNvbm5lY3Rv clxuIik7CisJCXJldHVybjsKKwl9CisKKwlEUk1fREVCVUdfS01TKCIlZFxuIiwgaW50ZWxfZHAt PmFjdGl2ZV9tc3RfbGlua3MpOworCWludGVsX21zdC0+cG9ydCA9IGZvdW5kLT5wb3J0OworCisJ aWYgKGludGVsX2RwLT5hY3RpdmVfbXN0X2xpbmtzID09IDApIHsKKwkJZW51bSBwb3J0IHBvcnQg PSBpbnRlbF9kZGlfZ2V0X2VuY29kZXJfcG9ydChlbmNvZGVyKTsKKworCQlJOTE1X1dSSVRFKFBP UlRfQ0xLX1NFTChwb3J0KSwgaW50ZWxfY3J0Yy0+ZGRpX3BsbF9zZWwpOworCisJCWludGVsX2Rk aV9pbml0X2RwX2J1Zl9yZWcoJmludGVsX2RpZ19wb3J0LT5iYXNlKTsKKworCQlpbnRlbF9kcF9z aW5rX2RwbXMoaW50ZWxfZHAsIERSTV9NT0RFX0RQTVNfT04pOworCisKKwkJaW50ZWxfZHBfc3Rh cnRfbGlua190cmFpbihpbnRlbF9kcCk7CisJCWludGVsX2RwX2NvbXBsZXRlX2xpbmtfdHJhaW4o aW50ZWxfZHApOworCQlpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oaW50ZWxfZHApOworCX0KKwor CXJldCA9IGRybV9kcF9tc3RfYWxsb2NhdGVfdmNwaSgmaW50ZWxfZHAtPm1zdF9tZ3IsCisJCQkJ ICAgICAgIGludGVsX21zdC0+cG9ydCwgaW50ZWxfY3J0Yy0+Y29uZmlnLnBibiwgJnNsb3RzKTsK KwlpZiAocmV0ID09IGZhbHNlKSB7CisJCURSTV9FUlJPUigiZmFpbGVkIHRvIGFsbG9jYXRlIHZj cGlcbiIpOworCQlyZXR1cm47CisJfQorCisKKwlpbnRlbF9kcC0+YWN0aXZlX21zdF9saW5rcysr OworCXRlbXAgPSBJOTE1X1JFQUQoRFBfVFBfU1RBVFVTKHBvcnQpKTsKKwlJOTE1X1dSSVRFKERQ X1RQX1NUQVRVUyhwb3J0KSwgdGVtcCk7CisKKwlyZXQgPSBkcm1fZHBfdXBkYXRlX3BheWxvYWRf cGFydDEoJmludGVsX2RwLT5tc3RfbWdyKTsKK30KKworc3RhdGljIHZvaWQgaW50ZWxfbXN0X2Vu YWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKK3sKKwlzdHJ1Y3QgaW50ZWxf ZHBfbXN0X2VuY29kZXIgKmludGVsX21zdCA9IGVuY190b19tc3QoJmVuY29kZXItPmJhc2UpOwor CXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gaW50ZWxfbXN0LT5w cmltYXJ5OworCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSAmaW50ZWxfZGlnX3BvcnQtPmRw OworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5iYXNlLmRl djsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRl OworCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPnBvcnQ7CisJaW50IHJldDsKKwor CURSTV9ERUJVR19LTVMoIiVkXG4iLCBpbnRlbF9kcC0+YWN0aXZlX21zdF9saW5rcyk7CisKKwlp ZiAod2FpdF9mb3IoKEk5MTVfUkVBRChEUF9UUF9TVEFUVVMocG9ydCkpICYgRFBfVFBfU1RBVFVT X0FDVF9TRU5UKSwKKwkJICAgICAxKSkKKwkJRFJNX0VSUk9SKCJUaW1lZCBvdXQgd2FpdGluZyBm b3IgQUNUIHNlbnRcbiIpOworCisJcmV0ID0gZHJtX2RwX2NoZWNrX2FjdF9zdGF0dXMoJmludGVs X2RwLT5tc3RfbWdyKTsKKworCXJldCA9IGRybV9kcF91cGRhdGVfcGF5bG9hZF9wYXJ0MigmaW50 ZWxfZHAtPm1zdF9tZ3IpOworfQorCitzdGF0aWMgYm9vbCBpbnRlbF9kcF9tc3RfZW5jX2dldF9o d19zdGF0ZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCQkgICAgICBlbnVtIHBp cGUgKnBpcGUpCit7CisJc3RydWN0IGludGVsX2RwX21zdF9lbmNvZGVyICppbnRlbF9tc3QgPSBl bmNfdG9fbXN0KCZlbmNvZGVyLT5iYXNlKTsKKwkqcGlwZSA9IGludGVsX21zdC0+cGlwZTsKKwlp ZiAoaW50ZWxfbXN0LT5wb3J0KQorCQlyZXR1cm4gdHJ1ZTsKKwlyZXR1cm4gZmFsc2U7Cit9CisK K3N0YXRpYyB2b2lkIGludGVsX2RwX21zdF9lbmNfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlciwKKwkJCQkJc3RydWN0IGludGVsX2NydGNfY29uZmlnICpwaXBlX2NvbmZp ZykKK3sKKwlzdHJ1Y3QgaW50ZWxfZHBfbXN0X2VuY29kZXIgKmludGVsX21zdCA9IGVuY190b19t c3QoJmVuY29kZXItPmJhc2UpOworCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2Rp Z19wb3J0ID0gaW50ZWxfbXN0LT5wcmltYXJ5OworCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0g dG9faW50ZWxfY3J0YyhlbmNvZGVyLT5iYXNlLmNydGMpOworCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkZXYtPmRldl9wcml2YXRlOworCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9 IGNydGMtPmNvbmZpZy5jcHVfdHJhbnNjb2RlcjsKKwl1MzIgdGVtcCwgZmxhZ3MgPSAwOworCisJ cGlwZV9jb25maWctPmhhc19kcF9lbmNvZGVyID0gdHJ1ZTsKKworCXRlbXAgPSBJOTE1X1JFQUQo VFJBTlNfRERJX0ZVTkNfQ1RMKGNwdV90cmFuc2NvZGVyKSk7CisJaWYgKHRlbXAgJiBUUkFOU19E RElfUEhTWU5DKQorCQlmbGFncyB8PSBEUk1fTU9ERV9GTEFHX1BIU1lOQzsKKwllbHNlCisJCWZs YWdzIHw9IERSTV9NT0RFX0ZMQUdfTkhTWU5DOworCWlmICh0ZW1wICYgVFJBTlNfRERJX1BWU1lO QykKKwkJZmxhZ3MgfD0gRFJNX01PREVfRkxBR19QVlNZTkM7CisJZWxzZQorCQlmbGFncyB8PSBE Uk1fTU9ERV9GTEFHX05WU1lOQzsKKworCXN3aXRjaCAodGVtcCAmIFRSQU5TX0RESV9CUENfTUFT SykgeworCWNhc2UgVFJBTlNfRERJX0JQQ182OgorCQlwaXBlX2NvbmZpZy0+cGlwZV9icHAgPSAx ODsKKwkJYnJlYWs7CisJY2FzZSBUUkFOU19ERElfQlBDXzg6CisJCXBpcGVfY29uZmlnLT5waXBl X2JwcCA9IDI0OworCQlicmVhazsKKwljYXNlIFRSQU5TX0RESV9CUENfMTA6CisJCXBpcGVfY29u ZmlnLT5waXBlX2JwcCA9IDMwOworCQlicmVhazsKKwljYXNlIFRSQU5TX0RESV9CUENfMTI6CisJ CXBpcGVfY29uZmlnLT5waXBlX2JwcCA9IDM2OworCQlicmVhazsKKwlkZWZhdWx0OgorCQlicmVh azsKKwl9CisJcGlwZV9jb25maWctPmFkanVzdGVkX21vZGUuZmxhZ3MgfD0gZmxhZ3M7CisJaW50 ZWxfZHBfZ2V0X21fbihjcnRjLCBwaXBlX2NvbmZpZyk7CisKKwlpbnRlbF9kZGlfY2xvY2tfZ2V0 KCZpbnRlbF9kaWdfcG9ydC0+YmFzZSwgcGlwZV9jb25maWcpOworfQorCitzdGF0aWMgaW50IGlu dGVsX2RwX21zdF9nZXRfZGRjX21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Ip Cit7CisJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yID0gdG9faW50ZWxf Y29ubmVjdG9yKGNvbm5lY3Rvcik7CisJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGludGVs X2Nvbm5lY3Rvci0+bXN0X3BvcnQ7CisJc3RydWN0IGVkaWQgKmVkaWQ7CisJaW50IHJldDsKKwor CWVkaWQgPSBkcm1fZHBfbXN0X2dldF9lZGlkKGNvbm5lY3RvciwgJmludGVsX2RwLT5tc3RfbWdy LCBpbnRlbF9jb25uZWN0b3ItPnBvcnQpOworCWlmICghZWRpZCkKKwkJcmV0dXJuIDA7CisKKwly ZXQgPSBpbnRlbF9jb25uZWN0b3JfdXBkYXRlX21vZGVzKGNvbm5lY3RvciwgZWRpZCk7CisJa2Zy ZWUoZWRpZCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgZW51bSBkcm1fY29ubmVjdG9y X3N0YXR1cworaW50ZWxfbXN0X3BvcnRfZHBfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IpCit7CisJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yID0g dG9faW50ZWxfY29ubmVjdG9yKGNvbm5lY3Rvcik7CisJc3RydWN0IGludGVsX2RwICppbnRlbF9k cCA9IGludGVsX2Nvbm5lY3Rvci0+bXN0X3BvcnQ7CisKKwlyZXR1cm4gZHJtX2RwX21zdF9kZXRl Y3RfcG9ydCgmaW50ZWxfZHAtPm1zdF9tZ3IsIGludGVsX2Nvbm5lY3Rvci0+cG9ydCk7Cit9CisK K3N0YXRpYyBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzCitpbnRlbF9kcF9tc3RfZGV0ZWN0KHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGJvb2wgZm9yY2UpCit7CisJZW51bSBkcm1f Y29ubmVjdG9yX3N0YXR1cyBzdGF0dXM7CisJc3RhdHVzID0gaW50ZWxfbXN0X3BvcnRfZHBfZGV0 ZWN0KGNvbm5lY3Rvcik7CisJcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIGludAoraW50ZWxf ZHBfbXN0X3NldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAorCQkJ ICBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKKwkJCSAgdWludDY0X3QgdmFsKQorewor CXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAoraW50ZWxfZHBfbXN0X2Nvbm5lY3Rvcl9kZXN0 cm95KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJc3RydWN0IGludGVsX2Nv bm5lY3RvciAqaW50ZWxfY29ubmVjdG9yID0gdG9faW50ZWxfY29ubmVjdG9yKGNvbm5lY3Rvcik7 CisKKwlpZiAoIUlTX0VSUl9PUl9OVUxMKGludGVsX2Nvbm5lY3Rvci0+ZWRpZCkpCisJCWtmcmVl KGludGVsX2Nvbm5lY3Rvci0+ZWRpZCk7CisKKwlkcm1fY29ubmVjdG9yX2NsZWFudXAoY29ubmVj dG9yKTsKKwlrZnJlZShjb25uZWN0b3IpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9j b25uZWN0b3JfZnVuY3MgaW50ZWxfZHBfbXN0X2Nvbm5lY3Rvcl9mdW5jcyA9IHsKKwkuZHBtcyA9 IGludGVsX2Nvbm5lY3Rvcl9kcG1zLAorCS5kZXRlY3QgPSBpbnRlbF9kcF9tc3RfZGV0ZWN0LAor CS5maWxsX21vZGVzID0gZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLAor CS5zZXRfcHJvcGVydHkgPSBpbnRlbF9kcF9tc3Rfc2V0X3Byb3BlcnR5LAorCS5kZXN0cm95ID0g aW50ZWxfZHBfbXN0X2Nvbm5lY3Rvcl9kZXN0cm95LAorfTsKKworc3RhdGljIGludCBpbnRlbF9k cF9tc3RfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJcmV0 dXJuIGludGVsX2RwX21zdF9nZXRfZGRjX21vZGVzKGNvbm5lY3Rvcik7Cit9CisKK3N0YXRpYyBl bnVtIGRybV9tb2RlX3N0YXR1cworaW50ZWxfZHBfbXN0X21vZGVfdmFsaWQoc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvciwKKwkJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQor eworCS8qIFRPRE8gLSB2YWxpZGF0ZSBtb2RlIGFnYWluc3QgYXZhaWxhYmxlIFBCTiBmb3IgbGlu ayAqLworCWlmIChtb2RlLT5jbG9jayA8IDEwMDAwKQorCQlyZXR1cm4gTU9ERV9DTE9DS19MT1c7 CisKKwlpZiAobW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0RCTENMSykKKwkJcmV0dXJuIE1P REVfSF9JTExFR0FMOworCisJcmV0dXJuIE1PREVfT0s7Cit9CisKK3N0cnVjdCBkcm1fZW5jb2Rl ciAqaW50ZWxfbXN0X2Jlc3RfZW5jb2RlcihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y KQoreworCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvciA9IHRvX2ludGVs X2Nvbm5lY3Rvcihjb25uZWN0b3IpOworCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBpbnRl bF9jb25uZWN0b3ItPm1zdF9wb3J0OworCXJldHVybiAmaW50ZWxfZHAtPm1zdF9lbmNvZGVyc1sw XS0+YmFzZS5iYXNlOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVs cGVyX2Z1bmNzIGludGVsX2RwX21zdF9jb25uZWN0b3JfaGVscGVyX2Z1bmNzID0geworCS5nZXRf bW9kZXMgPSBpbnRlbF9kcF9tc3RfZ2V0X21vZGVzLAorCS5tb2RlX3ZhbGlkID0gaW50ZWxfZHBf bXN0X21vZGVfdmFsaWQsCisJLmJlc3RfZW5jb2RlciA9IGludGVsX21zdF9iZXN0X2VuY29kZXIs Cit9OworCit2b2lkIGludGVsX2RwX21zdF9lbmNvZGVyX2Rlc3Ryb3koc3RydWN0IGRybV9lbmNv ZGVyICplbmNvZGVyKQoreworCXN0cnVjdCBpbnRlbF9kcF9tc3RfZW5jb2RlciAqaW50ZWxfbXN0 ID0gZW5jX3RvX21zdChlbmNvZGVyKTsKKworCWRybV9lbmNvZGVyX2NsZWFudXAoZW5jb2Rlcik7 CisJa2ZyZWUoaW50ZWxfbXN0KTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rl cl9mdW5jcyBpbnRlbF9kcF9tc3RfZW5jX2Z1bmNzID0geworCS5kZXN0cm95ID0gaW50ZWxfZHBf bXN0X2VuY29kZXJfZGVzdHJveSwKK307CisKK3N0YXRpYyBib29sIGludGVsX2RwX21zdF9nZXRf aHdfc3RhdGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQoreworCWlmIChjb25u ZWN0b3ItPmVuY29kZXIpIHsKKwkJZW51bSBwaXBlIHBpcGU7CisJCWlmICghY29ubmVjdG9yLT5l bmNvZGVyLT5nZXRfaHdfc3RhdGUoY29ubmVjdG9yLT5lbmNvZGVyLCAmcGlwZSkpCisJCQlyZXR1 cm4gZmFsc2U7CisJCXJldHVybiB0cnVlOworCX0KKwlyZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRp YyBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqaW50ZWxfZHBfYWRkX21zdF9jb25uZWN0b3Ioc3RydWN0 IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsIHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBv cnQsIGNoYXIgKnBhdGhwcm9wKQoreworCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBjb250 YWluZXJfb2YobWdyLCBzdHJ1Y3QgaW50ZWxfZHAsIG1zdF9tZ3IpOworCXN0cnVjdCBpbnRlbF9k aWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApOwor CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5iYXNlLmRldjsK KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwor CXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcjsKKwlzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yOworCWludCBpOworCisJaW50ZWxfY29ubmVjdG9yID0ga3phbGxv YyhzaXplb2YoKmludGVsX2Nvbm5lY3RvciksIEdGUF9LRVJORUwpOworCWlmICghaW50ZWxfY29u bmVjdG9yKQorCQlyZXR1cm4gTlVMTDsKKworCWNvbm5lY3RvciA9ICZpbnRlbF9jb25uZWN0b3It PmJhc2U7CisJZHJtX2Nvbm5lY3Rvcl9pbml0KGRldiwgY29ubmVjdG9yLCAmaW50ZWxfZHBfbXN0 X2Nvbm5lY3Rvcl9mdW5jcywgRFJNX01PREVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0KTsKKwlkcm1f Y29ubmVjdG9yX2hlbHBlcl9hZGQoY29ubmVjdG9yLCAmaW50ZWxfZHBfbXN0X2Nvbm5lY3Rvcl9o ZWxwZXJfZnVuY3MpOworCisJaW50ZWxfY29ubmVjdG9yLT51bnJlZ2lzdGVyID0gaW50ZWxfY29u bmVjdG9yX3VucmVnaXN0ZXI7CisJaW50ZWxfY29ubmVjdG9yLT5nZXRfaHdfc3RhdGUgPSBpbnRl bF9kcF9tc3RfZ2V0X2h3X3N0YXRlOworCWludGVsX2Nvbm5lY3Rvci0+bXN0X3BvcnQgPSBpbnRl bF9kcDsKKwlpbnRlbF9jb25uZWN0b3ItPnBvcnQgPSBwb3J0OworCisJZm9yIChpID0gUElQRV9B OyBpIDw9IFBJUEVfQzsgaSsrKSB7CisJCWRybV9tb2RlX2Nvbm5lY3Rvcl9hdHRhY2hfZW5jb2Rl cigmaW50ZWxfY29ubmVjdG9yLT5iYXNlLAorCQkJCQkJICAmaW50ZWxfZHAtPm1zdF9lbmNvZGVy c1tpXS0+YmFzZS5iYXNlKTsKKwl9CisJaW50ZWxfZHBfYWRkX3Byb3BlcnRpZXMoaW50ZWxfZHAs IGNvbm5lY3Rvcik7CisKKwlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY29ubmVjdG9yLT5i YXNlLCBkZXYtPm1vZGVfY29uZmlnLnBhdGhfcHJvcGVydHksIDApOworCWRybV9tb2RlX2Nvbm5l Y3Rvcl9zZXRfcGF0aF9wcm9wZXJ0eShjb25uZWN0b3IsIHBhdGhwcm9wKTsKKwlkcm1fcmVpbml0 X3ByaW1hcnlfbW9kZV9ncm91cChkZXYpOworCW11dGV4X2xvY2soJmRldi0+bW9kZV9jb25maWcu bXV0ZXgpOworCWRybV9mYl9oZWxwZXJfYWRkX29uZV9jb25uZWN0b3IoJmRldl9wcml2LT5mYmRl di0+aGVscGVyLCBjb25uZWN0b3IpOworCW11dGV4X3VubG9jaygmZGV2LT5tb2RlX2NvbmZpZy5t dXRleCk7CisJZHJtX3N5c2ZzX2Nvbm5lY3Rvcl9hZGQoJmludGVsX2Nvbm5lY3Rvci0+YmFzZSk7 CisJcmV0dXJuIGNvbm5lY3RvcjsKK30KKworc3RhdGljIHZvaWQgaW50ZWxfZHBfZGVzdHJveV9t c3RfY29ubmVjdG9yKHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyLAorCQkJCQkg ICBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQoreworCXN0cnVjdCBpbnRlbF9jb25u ZWN0b3IgKmludGVsX2Nvbm5lY3RvciA9IHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uZWN0b3IpOwor CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmRldjsKKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCS8qIG5lZWQgdG8gbnVr ZSB0aGUgY29ubmVjdG9yICovCisJbXV0ZXhfbG9jaygmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7 CisJaW50ZWxfY29ubmVjdG9yX2RwbXMoY29ubmVjdG9yLCBEUk1fTU9ERV9EUE1TX09GRik7CisJ bXV0ZXhfdW5sb2NrKCZkZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKKworCWludGVsX2Nvbm5lY3Rv ci0+dW5yZWdpc3RlcihpbnRlbF9jb25uZWN0b3IpOworCisJbXV0ZXhfbG9jaygmZGV2LT5tb2Rl X2NvbmZpZy5tdXRleCk7CisJZHJtX2ZiX2hlbHBlcl9yZW1vdmVfb25lX2Nvbm5lY3RvcigmZGV2 X3ByaXYtPmZiZGV2LT5oZWxwZXIsIGNvbm5lY3Rvcik7CisJZHJtX2Nvbm5lY3Rvcl9jbGVhbnVw KGNvbm5lY3Rvcik7CisJbXV0ZXhfdW5sb2NrKCZkZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKKwor CWRybV9yZWluaXRfcHJpbWFyeV9tb2RlX2dyb3VwKGRldik7CisKKwlrZnJlZShpbnRlbF9jb25u ZWN0b3IpOworCURSTV9ERUJVR19LTVMoIlxuIik7Cit9CisKK3N0YXRpYyB2b2lkIGludGVsX2Rw X21zdF9ob3RwbHVnKHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyKQoreworCXN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBjb250YWluZXJfb2YobWdyLCBzdHJ1Y3QgaW50ZWxf ZHAsIG1zdF9tZ3IpOworCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0 ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBp bnRlbF9kaWdfcG9ydC0+YmFzZS5iYXNlLmRldjsKKworCWRybV9rbXNfaGVscGVyX2hvdHBsdWdf ZXZlbnQoZGV2KTsKK30KKworc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfY2JzIG1zdF9jYnMg PSB7CisJLmFkZF9jb25uZWN0b3IgPSBpbnRlbF9kcF9hZGRfbXN0X2Nvbm5lY3RvciwKKwkuZGVz dHJveV9jb25uZWN0b3IgPSBpbnRlbF9kcF9kZXN0cm95X21zdF9jb25uZWN0b3IsCisJLmhvdHBs dWcgPSBpbnRlbF9kcF9tc3RfaG90cGx1ZywKK307CisKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfZHBf bXN0X2VuY29kZXIgKgoraW50ZWxfZHBfY3JlYXRlX2Zha2VfbXN0X2VuY29kZXIoc3RydWN0IGlu dGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsIGVudW0gcGlwZSBwaXBlKQoreworCXN0 cnVjdCBpbnRlbF9kcF9tc3RfZW5jb2RlciAqaW50ZWxfbXN0OworCXN0cnVjdCBpbnRlbF9lbmNv ZGVyICppbnRlbF9lbmNvZGVyOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9kaWdf cG9ydC0+YmFzZS5iYXNlLmRldjsKKworCWludGVsX21zdCA9IGt6YWxsb2Moc2l6ZW9mKCppbnRl bF9tc3QpLCBHRlBfS0VSTkVMKTsKKworCWlmICghaW50ZWxfbXN0KQorCQlyZXR1cm4gTlVMTDsK KworCWludGVsX21zdC0+cGlwZSA9IHBpcGU7CisJaW50ZWxfZW5jb2RlciA9ICZpbnRlbF9tc3Qt PmJhc2U7CisJaW50ZWxfbXN0LT5wcmltYXJ5ID0gaW50ZWxfZGlnX3BvcnQ7CisKKwlkcm1fZW5j b2Rlcl9pbml0KGRldiwgJmludGVsX2VuY29kZXItPmJhc2UsICZpbnRlbF9kcF9tc3RfZW5jX2Z1 bmNzLAorCQkJIERSTV9NT0RFX0VOQ09ERVJfRFBNU1QpOworCisJaW50ZWxfZW5jb2Rlci0+dHlw ZSA9IElOVEVMX09VVFBVVF9EUF9NU1Q7CisJaW50ZWxfZW5jb2Rlci0+Y3J0Y19tYXNrID0gMHg3 OworCWludGVsX2VuY29kZXItPmNsb25lYWJsZSA9IDA7CisKKwlpbnRlbF9lbmNvZGVyLT5jb21w dXRlX2NvbmZpZyA9IGludGVsX2RwX21zdF9jb21wdXRlX2NvbmZpZzsKKwlpbnRlbF9lbmNvZGVy LT5kaXNhYmxlID0gaW50ZWxfbXN0X2Rpc2FibGVfZHA7CisJaW50ZWxfZW5jb2Rlci0+cG9zdF9k aXNhYmxlID0gaW50ZWxfbXN0X3Bvc3RfZGlzYWJsZV9kcDsKKwlpbnRlbF9lbmNvZGVyLT5wcmVf ZW5hYmxlID0gaW50ZWxfbXN0X3ByZV9lbmFibGVfZHA7CisJaW50ZWxfZW5jb2Rlci0+ZW5hYmxl ID0gaW50ZWxfbXN0X2VuYWJsZV9kcDsKKwlpbnRlbF9lbmNvZGVyLT5nZXRfaHdfc3RhdGUgPSBp bnRlbF9kcF9tc3RfZW5jX2dldF9od19zdGF0ZTsKKwlpbnRlbF9lbmNvZGVyLT5nZXRfY29uZmln ID0gaW50ZWxfZHBfbXN0X2VuY19nZXRfY29uZmlnOworCisJcmV0dXJuIGludGVsX21zdDsKKwor fQorCitzdGF0aWMgYm9vbAoraW50ZWxfZHBfY3JlYXRlX2Zha2VfbXN0X2VuY29kZXJzKHN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KQoreworCWludCBpOworCXN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHAgPSAmaW50ZWxfZGlnX3BvcnQtPmRwOworCisJZm9yIChpID0g UElQRV9BOyBpIDw9IFBJUEVfQzsgaSsrKQorCQlpbnRlbF9kcC0+bXN0X2VuY29kZXJzW2ldID0g aW50ZWxfZHBfY3JlYXRlX2Zha2VfbXN0X2VuY29kZXIoaW50ZWxfZGlnX3BvcnQsIGkpOworCXJl dHVybiB0cnVlOworfQorCitpbnQKK2ludGVsX2RwX21zdF9lbmNvZGVyX2luaXQoc3RydWN0IGlu dGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsIGludCBjb25uX2Jhc2VfaWQpCit7CisJ c3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9ICZpbnRlbF9kaWdfcG9ydC0+ZHA7CisJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuZGV2OworCWludCBy ZXQ7CisKKwlpbnRlbF9kcC0+Y2FuX21zdCA9IHRydWU7CisJaW50ZWxfZHAtPm1zdF9tZ3IuY2Jz ID0gJm1zdF9jYnM7CisKKwkvKiBjcmVhdGUgZW5jb2RlcnMgKi8KKwlpbnRlbF9kcF9jcmVhdGVf ZmFrZV9tc3RfZW5jb2RlcnMoaW50ZWxfZGlnX3BvcnQpOworCXJldCA9IGRybV9kcF9tc3RfdG9w b2xvZ3lfbWdyX2luaXQoJmludGVsX2RwLT5tc3RfbWdyLCBkZXYtPmRldiwgJmludGVsX2RwLT5h dXgsIDE2LCAzLCBjb25uX2Jhc2VfaWQpOworCWlmIChyZXQpIHsKKwkJaW50ZWxfZHAtPmNhbl9t c3QgPSBmYWxzZTsKKwkJcmV0dXJuIHJldDsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3ZvaWQKK2lu dGVsX2RwX21zdF9lbmNvZGVyX2NsZWFudXAoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50 ZWxfZGlnX3BvcnQpCit7CisJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9ICZpbnRlbF9kaWdf cG9ydC0+ZHA7CisKKwlpZiAoIWludGVsX2RwLT5jYW5fbXN0KQorCQlyZXR1cm47CisKKwlkcm1f ZHBfbXN0X3RvcG9sb2d5X21ncl9kZXN0cm95KCZpbnRlbF9kcC0+bXN0X21ncik7CisJLyogZW5j b2RlcnMgd2lsbCBnZXQga2lsbGVkIGJ5IG5vcm1hbCBjbGVhbnVwICovCit9CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCmluZGV4IGRhNmM0NDAuLjFlZGIzOGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+CiAjaW5j bHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgogI2luY2x1ZGUgPGRybS9kcm1fZmJfaGVscGVy Lmg+Ci0jaW5jbHVkZSA8ZHJtL2RybV9kcF9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2Rw X21zdF9oZWxwZXIuaD4KIAogLyoqCiAgKiBfd2FpdF9mb3IgLSBtYWdpYyAocmVnaXN0ZXIpIHdh aXQgbWFjcm8KQEAgLTEwMCw2ICsxMDAsNyBAQAogI2RlZmluZSBJTlRFTF9PVVRQVVRfRURQIDgK ICNkZWZpbmUgSU5URUxfT1VUUFVUX0RTSSA5CiAjZGVmaW5lIElOVEVMX09VVFBVVF9VTktOT1dO IDEwCisjZGVmaW5lIElOVEVMX09VVFBVVF9EUF9NU1QgMTEKIAogI2RlZmluZSBJTlRFTF9EVk9f Q0hJUF9OT05FIDAKICNkZWZpbmUgSU5URUxfRFZPX0NISVBfTFZEUyAxCkBAIC0yMDcsNiArMjA4 LDEwIEBAIHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgewogCS8qIHNpbmNlIFBPTEwgYW5kIEhQRCBj b25uZWN0b3JzIG1heSB1c2UgdGhlIHNhbWUgSFBEIGxpbmUga2VlcCB0aGUgbmF0aXZlCiAJICAg c3RhdGUgb2YgY29ubmVjdG9yLT5wb2xsZWQgaW4gY2FzZSBob3RwbHVnIHN0b3JtIGRldGVjdGlv biBjaGFuZ2VzIGl0ICovCiAJdTggcG9sbGVkOworCisJdm9pZCAqcG9ydDsgLyogc3RvcmUgdGhp cyBvcGFxdWUgYXMgaXRzIGlsbGVnYWwgdG8gZGVyZWZlcmVuY2UgaXQgKi8KKworCXN0cnVjdCBp bnRlbF9kcCAqbXN0X3BvcnQ7CiB9OwogCiB0eXBlZGVmIHN0cnVjdCBkcGxsIHsKQEAgLTM0Nyw2 ICszNTIsOSBAQCBzdHJ1Y3QgaW50ZWxfY3J0Y19jb25maWcgewogCWJvb2wgaXBzX2VuYWJsZWQ7 CiAKIAlib29sIGRvdWJsZV93aWRlOworCisJYm9vbCBkcF9lbmNvZGVyX2lzX21zdDsKKwlpbnQg cGJuOwogfTsKIAogc3RydWN0IGludGVsX3BpcGVfd20gewpAQCAtNDk4LDYgKzUwNiw3IEBAIHN0 cnVjdCBpbnRlbF9oZG1pIHsKIAkJCSAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRq dXN0ZWRfbW9kZSk7CiB9OwogCitzdHJ1Y3QgaW50ZWxfZHBfbXN0X2VuY29kZXI7CiAjZGVmaW5l IERQX01BWF9ET1dOU1RSRUFNX1BPUlRTCQkweDEwCiAKIC8qKgpAQCAtNTM4LDggKzU0NywxNyBA QCBzdHJ1Y3QgaW50ZWxfZHAgewogCXVuc2lnbmVkIGxvbmcgbGFzdF9iYWNrbGlnaHRfb2ZmOwog CWJvb2wgcHNyX3NldHVwX2RvbmU7CiAJYm9vbCB1c2VfdHBzMzsKKwlib29sIGNhbl9tc3Q7IC8q IHRoaXMgcG9ydCBzdXBwb3J0cyBtc3QgKi8KKwlib29sIGlzX21zdDsKKwlpbnQgYWN0aXZlX21z dF9saW5rczsKKwkvKiBjb25uZWN0b3IgZGlyZWN0bHkgYXR0YWNoZWQgLSB3b24ndCBiZSB1c2Ug Zm9yIG1vZGVzZXQgaW4gbXN0IHdvcmxkICovCiAJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqYXR0 YWNoZWRfY29ubmVjdG9yOwogCisJLyogbXN0IGNvbm5lY3RvciBsaXN0ICovCisJc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqbXN0X2Nvbm5lY3RvcnM7CisJc3RydWN0IGludGVsX2RwX21zdF9lbmNv ZGVyICptc3RfZW5jb2RlcnNbSTkxNV9NQVhfUElQRVNdOworCXN0cnVjdCBkcm1fZHBfbXN0X3Rv cG9sb2d5X21nciBtc3RfbWdyOworCiAJdWludDMyX3QgKCpnZXRfYXV4X2Nsb2NrX2RpdmlkZXIp KHN0cnVjdCBpbnRlbF9kcCAqZHAsIGludCBpbmRleCk7CiAJLyoKIAkgKiBUaGlzIGZ1bmN0aW9u IHJldHVybnMgdGhlIHZhbHVlIHdlIGhhdmUgdG8gcHJvZ3JhbSB0aGUgQVVYX0NUTApAQCAtNTY2 LDYgKzU4NCwxMyBAQCBzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0IHsKIAlib29sICgqaHBkX3B1 bHNlKShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICosIGJvb2wpOwogfTsKIAorc3RydWN0IGlu dGVsX2RwX21zdF9lbmNvZGVyIHsKKwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciBiYXNlOworCWVudW0g cGlwZSBwaXBlOworCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKnByaW1hcnk7CisJdm9pZCAq cG9ydDsgLyogc3RvcmUgdGhpcyBvcGFxdWUgYXMgaXRzIGlsbGVnYWwgdG8gZGVyZWZlcmVuY2Ug aXQgKi8KK307CisKIHN0YXRpYyBpbmxpbmUgaW50CiB2bHZfZHBvcnRfdG9fY2hhbm5lbChzdHJ1 Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkcG9ydCkKIHsKQEAgLTY1MCw2ICs2NzUsMTIgQEAgZW5j X3RvX2RpZ19wb3J0KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIAlyZXR1cm4gY29udGFp bmVyX29mKGVuY29kZXIsIHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQsIGJhc2UuYmFzZSk7CiB9 CiAKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGludGVsX2RwX21zdF9lbmNvZGVyICoKK2VuY190b19t c3Qoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQoreworCXJldHVybiBjb250YWluZXJfb2Yo ZW5jb2Rlciwgc3RydWN0IGludGVsX2RwX21zdF9lbmNvZGVyLCBiYXNlLmJhc2UpOworfQorCiBz dGF0aWMgaW5saW5lIHN0cnVjdCBpbnRlbF9kcCAqZW5jX3RvX2ludGVsX2RwKHN0cnVjdCBkcm1f ZW5jb2RlciAqZW5jb2RlcikKIHsKIAlyZXR1cm4gJmVuY190b19kaWdfcG9ydChlbmNvZGVyKS0+ ZHA7CkBAIC03MTUsNiArNzQ2LDkgQEAgdm9pZCBpbnRlbF9kZGlfZ2V0X2NvbmZpZyhzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkJCSAgc3RydWN0IGludGVsX2NydGNfY29uZmlnICpw aXBlX2NvbmZpZyk7CiAKIHZvaWQgaW50ZWxfZGRpX2luaXRfZHBfYnVmX3JlZyhzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2Rlcik7Cit2b2lkIGludGVsX2RkaV9jbG9ja19nZXQoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQkgc3RydWN0IGludGVsX2NydGNfY29uZmlnICpwaXBl X2NvbmZpZyk7Cit2b2lkIGludGVsX2RkaV9zZXRfdmNfcGF5bG9hZF9hbGxvYyhzdHJ1Y3QgZHJt X2NydGMgKmNydGMsIGJvb2wgc3RhdGUpOwogCiAvKiBpbnRlbF9kaXNwbGF5LmMgKi8KIGNvbnN0 IGNoYXIgKmludGVsX291dHB1dF9uYW1lKGludCBvdXRwdXQpOwpAQCAtODM0LDYgKzg2OCwxNSBA QCB2b2lkIGludGVsX2VkcF9wc3JfdXBkYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogdm9p ZCBpbnRlbF9kcF9zZXRfZHJyc19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgcmVm cmVzaF9yYXRlKTsKIGJvb2wgaW50ZWxfZHBfaHBkX3B1bHNlKHN0cnVjdCBpbnRlbF9kaWdpdGFs X3BvcnQgKmludGVsX2RpZ19wb3J0LCBib29sIGxvbmdfaHBkKTsKIAoraW50IGludGVsX2RwX2hh bmRsZV9ocGRfaXJxKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ3BvcnQsIGJvb2wgbG9u Z19ocGQpOwordm9pZCBpbnRlbF9kcF9hZGRfcHJvcGVydGllcyhzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwLCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKK3ZvaWQgaW50ZWxfZHBf bXN0X3N1c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cit2b2lkIGludGVsX2RwX21zdF9y ZXN1bWUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CitpbnQgaW50ZWxfZHBfbWF4X2xpbmtfYnco c3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7Cit2b2lkIGludGVsX2RwX2hvdF9wbHVnKHN0cnVj dCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKTsKKy8qIGludGVsX2RwX21zdC5jICovCitp bnQgaW50ZWxfZHBfbXN0X2VuY29kZXJfaW5pdChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpp bnRlbF9kaWdfcG9ydCwgaW50IGNvbm5faWQpOwordm9pZCBpbnRlbF9kcF9tc3RfZW5jb2Rlcl9j bGVhbnVwKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KTsKIC8qIGlu dGVsX2RzaS5jICovCiBib29sIGludGVsX2RzaV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYwppbmRleCBlMmQ0MTYxLi4xOTQ5MzUwIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMKQEAgLTM0OSw2ICszNDksMTEgQEAgc3RhdGlj IGJvb2wgaW50ZWxfZmJfaW5pdGlhbF9jb25maWcoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hl bHBlciwKIAkJfQogCiAJCWVuY29kZXIgPSBjb25uZWN0b3ItPmVuY29kZXI7CisJCWlmICghZW5j b2RlcikgeworCQkJc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzICpjb25uZWN0b3Jf ZnVuY3M7CisJCQljb25uZWN0b3JfZnVuY3MgPSBjb25uZWN0b3ItPmhlbHBlcl9wcml2YXRlOwor CQkJZW5jb2RlciA9IGNvbm5lY3Rvcl9mdW5jcy0+YmVzdF9lbmNvZGVyKGNvbm5lY3Rvcik7CisJ CX0KIAkJaWYgKCFlbmNvZGVyIHx8IFdBUk5fT04oIWVuY29kZXItPmNydGMpKSB7CiAJCQlEUk1f REVCVUdfS01TKCJjb25uZWN0b3IgJXMgaGFzIG5vIGVuY29kZXIgb3IgY3J0Yywgc2tpcHBpbmdc biIsCiAJCQkJICAgICAgY29ubmVjdG9yLT5uYW1lKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX29wcmVnaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9v cHJlZ2lvbi5jCmluZGV4IGI4MTJlOWQuLjI3ZDQ1NzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX29wcmVnaW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfb3ByZWdpb24uYwpAQCAtMzUyLDYgKzM1Miw3IEBAIGludCBpbnRlbF9vcHJlZ2lvbl9ub3Rp ZnlfZW5jb2RlcihzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKIAljYXNlIElO VEVMX09VVFBVVF9VTktOT1dOOgogCWNhc2UgSU5URUxfT1VUUFVUX0RJU1BMQVlQT1JUOgogCWNh c2UgSU5URUxfT1VUUFVUX0hETUk6CisJY2FzZSBJTlRFTF9PVVRQVVRfRFBfTVNUOgogCQl0eXBl ID0gRElTUExBWV9UWVBFX0VYVEVSTkFMX0ZMQVRfUEFORUw7CiAJCWJyZWFrOwogCWNhc2UgSU5U RUxfT1VUUFVUX0VEUDoKLS0gCjEuOS4zCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=