From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Airlie Subject: [PATCH 09/10] i915: add DP 1.2 MST support (v0.3) Date: Mon, 12 May 2014 16:46:46 +1000 Message-ID: <1399877207-15868-10-git-send-email-airlied@gmail.com> References: <1399877207-15868-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: <1399877207-15868-1-git-send-email-airlied@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KClRoaXMgYWRkcyBEUCAxLjIg TVNUIHN1cHBvcnQgb24gSGFzd2VsbCBzeXN0ZW1zLgoKTm90ZXM6CmEpIHRoaXMgcmV3b3JrcyBp cnEgaGFuZGxpbmcgZm9yIERQIE1TVCBwb3J0cywgc28gdGhhdCB3ZSBjYW4KYXZvaWQgdGhlIG1v ZGUgY29uZmlnIGxvY2tpbmcgaW4gdGhlIGN1cnJlbnQgaHBkIGhhbmRsZXJzLCBhcwp3ZSBuZWVk IHRvIHByb2Nlc3MgdXAvZG93biBtc2dzIGF0IGEgYmV0dGVyIHRpbWUuCgpiKSBpdCBpbnRyb2R1 Y2VzIGEgbmV3IE1TVCBvdXRwdXQgdHlwZS4KCmMpIGl0IHJlYWxseSBhbm5veXMgdGhlIHN0YXRl IGNoZWNrZXIsIGFzIHRoZSBjb25uZWN0b3IgdGhhdCBpcwpjb25uZWN0ZWQgYXQgdGhlIHN0YXJ0 LCBnb2VzIGludG8gZGlzY29ubmVjdGVkLCBhbmQgaXRzIGVuY29kZXIKaXQgYWN0aXZlLCBhbmQg dGhpbmdzIGJsb3cgdXAsIG5lZWQgdG8gbG9vayBpbnRvIGhvdyB0byBzb2x2ZSB0aGF0LgoKZCkg dGhlIGludGVsIHVzZXJzcGFjZSBkcml2ZXIgbmVlZHMgY2hhbmdlcyB0byB1c2UgdGhpcywgLW1v ZGVzZXR0aW5nCnNob3VsZCB3b3JrIG9rYXkuCgplKSBpdCBtaWdodCBjb250YWluIGEgcmFjZSBj b25kaXRpb24gYmlnIGVub3VnaCB0byBlYXQgeW91LgoKZikgaXRzIGhhcmRjb2RlZCB0byA0IGxh bmVzIDUuNEdoei4gLSBUT0RPLgoKQ2hhbmdlcyBzaW5jZSB2MC4xOgp1c2UgUE9SVF9QQ0hfSE9U UExVRyB0byBkZXRlY3Qgc2hvcnQgdnMgbG9uZyBwdWxzZXMKYWRkIGEgd29ya3F1ZXVlIHRvIGRl YWwgd2l0aCBkaWdpdGFsIGV2ZW50cyBhcyB0aGV5IGNhbiBnZXQgYmxvY2tlZCBvbiB0aGUKbWFp biB3b3JrcXVldWUgYmV5b25nIG1vZGVfY29uZmlnIG11dGV4CmZpeCBhIGJ1bmNoIG9mIG1vZGVz ZXQgY2hlY2tlciB3YXJuaW5ncwphY2tzIGlycXMgaW4gdGhlIGRyaXZlcgpjbGVhbnVwIHRoZSBN U1QgZW5jb2RlcnMKCkNoYW5nZXMgc2luY2UgdjAuMwpjaGVjayBpcnEgc3RhdHVzIGFnYWluIGlu IHdvcmsgaGFuZGxlcgptb3ZlIGFyb3VuZCBicmluZyB1cCBhbmQgdGVhciBkb3duIHRvIGZpeCBE UE1TIG9uL29mZgp1c2UgcGF0aCBwcm9wZXJ0aWVzLgoKVE9ETzoKZnVydGhlciBzdGF0ZSBjaGVj a2VyIGZpeGVzCgpTaWduZWQtb2ZmLWJ5OiBEYXZlIEFpcmxpZSA8YWlybGllZEByZWRoYXQuY29t PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgfCAgIDEgKwogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYyAgICAgICB8ICAxMCArCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oICAgICAgIHwgIDE0ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfaXJxLmMgICAgICAgfCAxMDYgKysrKysrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGRpLmMgICAgICB8IDExMSArKysrKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMgIHwgIDU5ICsrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAgICAg fCAyMTMgKysrKysrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5j ICAgfCA1MzAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICB8ICA0MiArKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX29wcmVnaW9uLmMgfCAgIDEgKwogMTAgZmlsZXMgY2hhbmdlZCwgMTA0MSBpbnNlcnRp b25zKCspLCA0NiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcF9tc3QuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXggYjE0NDViNy4u NmNmMmI5NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKQEAgLTUyLDYgKzUyLDcgQEAgaTkxNS15ICs9 IGR2b19jaDcwMTcubyBcCiAJICBpbnRlbF9jcnQubyBcCiAJICBpbnRlbF9kZGkubyBcCiAJICBp bnRlbF9kcC5vIFwKKwkgIGludGVsX2RwX21zdC5vIFwKIAkgIGludGVsX2RzaV9jbWQubyBcCiAJ ICBpbnRlbF9kc2kubyBcCiAJICBpbnRlbF9kc2lfcGxsLm8gXApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1h LmMKaW5kZXggNThmMmM0Ni4uMzA0MDg2OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kbWEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCkBAIC0x Njc3LDYgKzE2NzcsMTMgQEAgaW50IGk5MTVfZHJpdmVyX2xvYWQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdW5zaWduZWQgbG9uZyBmbGFncykKIAkJZ290byBvdXRfbXRycmZyZWU7CiAJfQogCisJ ZGV2X3ByaXYtPmRwX3dxID0gYWxsb2Nfb3JkZXJlZF93b3JrcXVldWUoImk5MTUtZHAiLCAwKTsK KwlpZiAoZGV2X3ByaXYtPmRwX3dxID09IE5VTEwpIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8g Y3JlYXRlIG91ciBkcCB3b3JrcXVldWUuXG4iKTsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBv dXRfZnJlZXdxOworCX0KKwogCWludGVsX2lycV9pbml0KGRldik7CiAJaW50ZWxfdW5jb3JlX3Nh bml0aXplKGRldik7CiAKQEAgLTE3NTIsNiArMTc1OSw4IEBAIG91dF9nZW1fdW5sb2FkOgogCWlu dGVsX3RlYXJkb3duX2dtYnVzKGRldik7CiAJaW50ZWxfdGVhcmRvd25fbWNoYmFyKGRldik7CiAJ cG1fcW9zX3JlbW92ZV9yZXF1ZXN0KCZkZXZfcHJpdi0+cG1fcW9zKTsKKwlkZXN0cm95X3dvcmtx dWV1ZShkZXZfcHJpdi0+ZHBfd3EpOworb3V0X2ZyZWV3cToKIAlkZXN0cm95X3dvcmtxdWV1ZShk ZXZfcHJpdi0+d3EpOwogb3V0X210cnJmcmVlOgogCWFyY2hfcGh5c193Y19kZWwoZGV2X3ByaXYt Pmd0dC5tdHJyKTsKQEAgLTE4NTYsNiArMTg2NSw3IEBAIGludCBpOTE1X2RyaXZlcl91bmxvYWQo c3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlpbnRlbF90ZWFyZG93bl9nbWJ1cyhkZXYpOwogCWlu dGVsX3RlYXJkb3duX21jaGJhcihkZXYpOwogCisJZGVzdHJveV93b3JrcXVldWUoZGV2X3ByaXYt PmRwX3dxKTsKIAlkZXN0cm95X3dvcmtxdWV1ZShkZXZfcHJpdi0+d3EpOwogCXBtX3Fvc19yZW1v dmVfcmVxdWVzdCgmZGV2X3ByaXYtPnBtX3Fvcyk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmlu ZGV4IDdkNmFjYjQuLmIzYjU4NjRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTE0Njgs NiArMTQ2OCwxOCBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAKIAlzdHJ1Y3QgaTkxNV9y dW50aW1lX3BtIHBtOwogCisJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaHBkX2lycV9wb3J0 W0k5MTVfTUFYX1BPUlRTXTsKKwl1MzIgaHBkX3BvcnQ7CisJc3RydWN0IHdvcmtfc3RydWN0IGRp Z19wb3J0X3dvcms7CisJLyoKKwkgKiBpZiB3ZSBnZXQgYSBIUEQgaXJxIGZyb20gRFAgYW5kIGEg SFBEIGlycSBmcm9tIG5vbi1EUAorCSAqIHRoZSBub24tRFAgSFBEIGNvdWxkIGJsb2NrIHRoZSB3 b3JrcXVldWUgb24gYSBtb2RlIGNvbmZpZworCSAqIG11dGV4IGdldHRpbmcsIHRoYXQgdXNlcnNw YWNlIG1heSBoYXZlIHRha2VuLiBIb3dldmVyCisJICogdXNlcnNwYWNlIGlzIHdhaXRpbmcgb24g dGhlIERQIHdvcmtxdWV1ZSB0byBydW4gd2hpY2ggaXMKKwkgKiBibG9ja2VkIGJlaGluZCB0aGUg bm9uLURQIG9uZS4KKwkgKi8KKwlzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqZHBfd3E7CisKIAkv KiBPbGQgZHJpMSBzdXBwb3J0IGluZnJhc3RydWN0dXJlLCBiZXdhcmUgdGhlIGRyYWdvbnMgeWEg Zm9vbHMgZW50ZXJpbmcKIAkgKiBoZXJlISAqLwogCXN0cnVjdCBpOTE1X2RyaTFfc3RhdGUgZHJp MTsKQEAgLTE5OTksNiArMjAxMSw4IEBAIGk5MTVfZGlzYWJsZV9waXBlc3RhdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGlwZSBwaXBlLAogCiB2b2lkIHZhbGxleXZp ZXdfZW5hYmxlX2Rpc3BsYXlfaXJxcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Owogdm9pZCB2YWxsZXl2aWV3X2Rpc2FibGVfZGlzcGxheV9pcnFzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7Citib29sIGludGVsX2hwZF9pcnFfZXZlbnQoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKKwkJCSBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKIAogLyog aTkxNV9nZW0uYyAqLwogaW50IGk5MTVfZ2VtX2luaXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdm9pZCAqZGF0YSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf aXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCmluZGV4IDU4NTJkZWUuLjBi MTZkNDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwpAQCAtOTYzLDggKzk2Myw4IEBAIHN0YXRp YyBpbnQgaTkxNV9nZXRfdmJsYW5rX3RpbWVzdGFtcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBp bnQgcGlwZSwKIAkJCQkJCSAgICAgJnRvX2ludGVsX2NydGMoY3J0YyktPmNvbmZpZy5hZGp1c3Rl ZF9tb2RlKTsKIH0KIAotc3RhdGljIGJvb2wgaW50ZWxfaHBkX2lycV9ldmVudChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAotCQkJCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCitib29s IGludGVsX2hwZF9pcnFfZXZlbnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCSBzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogewogCWVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMg b2xkX3N0YXR1czsKIApAQCAtOTg0LDYgKzk4NCw3MSBAQCBzdGF0aWMgYm9vbCBpbnRlbF9ocGRf aXJxX2V2ZW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJcmV0dXJuIHRydWU7CiB9CiAKK3N0 YXRpYyBpbnQgcG9ydF90b19ob3RwbHVnX3NoaWZ0KGVudW0gcG9ydCBwb3J0KQoreworCXN3aXRj aCAocG9ydCkgeworCWNhc2UgUE9SVF9BOgorCWNhc2UgUE9SVF9FOgorCWRlZmF1bHQ6CisJCXJl dHVybiAtMTsKKwljYXNlIFBPUlRfQjoKKwkJcmV0dXJuIDA7CisJY2FzZSBQT1JUX0M6CisJCXJl dHVybiA4OworCWNhc2UgUE9SVF9EOgorCQlyZXR1cm4gMTY7CisJfQorfQorc3RhdGljIHZvaWQg aTkxNV9kaWdwb3J0X3dvcmtfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KKwkJY29udGFpbmVyX29mKHdvcmssIHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlLCBkaWdfcG9ydF93b3JrKTsKKwl1bnNpZ25lZCBsb25nIGly cWZsYWdzOworCXUzMiBwb3J0X2JpdHM7CisJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGln cG9ydDsKKwlpbnQgaSwgcmV0OworCXUzMiBvbGRfYml0cyA9IDA7CisJdTMyIGhvdHBsdWdfcmVn LCBocHNoaWZ0OworCWJvb2wgbG9uZ19ocGQgPSBmYWxzZTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgm ZGV2X3ByaXYtPmlycV9sb2NrLCBpcnFmbGFncyk7CisJcG9ydF9iaXRzID0gZGV2X3ByaXYtPmhw ZF9wb3J0OworCWRldl9wcml2LT5ocGRfcG9ydCA9IDA7CisKKwlob3RwbHVnX3JlZyA9IEk5MTVf UkVBRChQQ0hfUE9SVF9IT1RQTFVHKTsKKwlJOTE1X1dSSVRFKFBDSF9QT1JUX0hPVFBMVUcsIGhv dHBsdWdfcmVnKTsKKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT5pcnFfbG9j aywgaXJxZmxhZ3MpOworCisJZm9yIChpID0gMDsgaSA8IEk5MTVfTUFYX1BPUlRTOyBpKyspIHsK KwkJaWYgKHBvcnRfYml0cyAmICgxIDw8IGkpKSB7CisJCQlkaWdwb3J0ID0gZGV2X3ByaXYtPmhw ZF9pcnFfcG9ydFtpXTsKKworCQkJaHBzaGlmdCA9IHBvcnRfdG9faG90cGx1Z19zaGlmdChpKTsK KworCQkJLyogaWYgd2UgaGF2ZSBubyBIUEQgYml0cyBmb3IgdGhpcyAqLworCQkJaWYgKCEoKGhv dHBsdWdfcmVnID4+IGhwc2hpZnQpICYgUE9SVEJfSE9UUExVR19TVEFUVVNfTUFTSykpIHsKKwkJ CQlEUk1fREVCVUdfS01TKCJnb3Qgbm90IHJlZ3MgZm9yIHBvcnQgJWQgJTA4eFxuIiwgaSwgaG90 cGx1Z19yZWcpOworCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQlsb25nX2hwZCA9IChob3RwbHVn X3JlZyA+PiBocHNoaWZ0KSAmIFBPUlRCX0hPVFBMVUdfTE9OR19ERVRFQ1Q7CisKKwkJCXJldCA9 IGludGVsX2RwX2hhbmRsZV9ocGRfaXJxKGRpZ3BvcnQsIGxvbmdfaHBkKTsKKwkJCWlmIChyZXQg PT0gMSkgeworCQkJCS8qIGlmIHdlIGdldCAxIGZhbGxiYWNrIHRvIG9sZCBzY2hvb2wgaHBkICov CisJCQkJb2xkX2JpdHMgfD0gKDEgPDwgZGlncG9ydC0+YmFzZS5ocGRfcGluKTsKKwkJCX0KKwkJ fQorCX0KKworCWlmIChvbGRfYml0cykgeworCQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYt PmlycV9sb2NrLCBpcnFmbGFncyk7CisJCWRldl9wcml2LT5ocGRfZXZlbnRfYml0cyA9IG9sZF9i aXRzOworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGlycWZs YWdzKTsKKwkJc2NoZWR1bGVfd29yaygmZGV2X3ByaXYtPmhvdHBsdWdfd29yayk7CisJfQorfQor CiAvKgogICogSGFuZGxlIGhvdHBsdWcgZXZlbnRzIG91dHNpZGUgdGhlIGludGVycnVwdCBoYW5k bGVyIHByb3Blci4KICAqLwpAQCAtMTM4MSwxNCArMTQ0NiwyOSBAQCBzdGF0aWMgaXJxcmV0dXJu X3QgZ2VuOF9ndF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogI2RlZmluZSBI UERfU1RPUk1fREVURUNUX1BFUklPRCAxMDAwCiAjZGVmaW5lIEhQRF9TVE9STV9USFJFU0hPTEQg NQogCitzdGF0aWMgaW5saW5lIGVudW0gcG9ydCBnZXRfcG9ydF9mcm9tX3BpbihlbnVtIGhwZF9w aW4gcGluKQoreworCXN3aXRjaCAocGluKSB7CisJY2FzZSBIUERfUE9SVF9COgorCQlyZXR1cm4g UE9SVF9COworCWNhc2UgSFBEX1BPUlRfQzoKKwkJcmV0dXJuIFBPUlRfQzsKKwljYXNlIEhQRF9Q T1JUX0Q6CisJCXJldHVybiBQT1JUX0Q7CisJZGVmYXVsdDoKKwkJcmV0dXJuIFBPUlRfQTsgLyog bm8gaHBkICovCisJfQorfQorCiBzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfaHBkX2lycV9oYW5k bGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJCSB1MzIgaG90cGx1Z190cmlnZ2VyLAog CQkJCQkgY29uc3QgdTMyICpocGQpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlpbnQgaTsKKwllbnVtIHBvcnQgcG9ydDsKIAlib29s IHN0b3JtX2RldGVjdGVkID0gZmFsc2U7Ci0KKwlib29sIHF1ZXVlX2RpZyA9IGZhbHNlLCBxdWV1 ZV9ocCA9IGZhbHNlOwogCWlmICghaG90cGx1Z190cmlnZ2VyKQogCQlyZXR1cm47CiAKQEAgLTEz OTcsNiArMTQ3NywxOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfaHBkX2lycV9oYW5kbGVy KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAKIAlzcGluX2xvY2soJmRldl9wcml2LT5pcnFfbG9j ayk7CiAJZm9yIChpID0gMTsgaSA8IEhQRF9OVU1fUElOUzsgaSsrKSB7CisJCWlmICghKGhwZFtp XSAmIGhvdHBsdWdfdHJpZ2dlcikpCisJCQljb250aW51ZTsKKworCQlwb3J0ID0gZ2V0X3BvcnRf ZnJvbV9waW4oaSk7CisJCWlmIChwb3J0ICYmIGRldl9wcml2LT5ocGRfaXJxX3BvcnRbcG9ydF0p IHsKKwkJCURSTV9ERUJVR19EUklWRVIoImRpZ2l0YWwgaHBkIHBvcnQgJWRcbiIsIHBvcnQpOwor CQkJZGV2X3ByaXYtPmhwZF9wb3J0IHw9ICgxIDw8IHBvcnQpOworCQkJaG90cGx1Z190cmlnZ2Vy ICY9IH5ocGRbaV07CisJCQlxdWV1ZV9kaWcgPSB0cnVlOworCQl9CisJfQorCisJZm9yIChpID0g MTsgaSA8IEhQRF9OVU1fUElOUzsgaSsrKSB7CiAKIAkJaWYgKGhwZFtpXSAmIGhvdHBsdWdfdHJp Z2dlciAmJgogCQkgICAgZGV2X3ByaXYtPmhwZF9zdGF0c1tpXS5ocGRfbWFyayA9PSBIUERfRElT QUJMRUQpIHsKQEAgLTE0MTgsNiArMTUxMSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9o cGRfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCWNvbnRpbnVlOwogCiAJ CWRldl9wcml2LT5ocGRfZXZlbnRfYml0cyB8PSAoMSA8PCBpKTsKKwkJcXVldWVfaHAgPSB0cnVl OwogCQlpZiAoIXRpbWVfaW5fcmFuZ2UoamlmZmllcywgZGV2X3ByaXYtPmhwZF9zdGF0c1tpXS5o cGRfbGFzdF9qaWZmaWVzLAogCQkJCSAgIGRldl9wcml2LT5ocGRfc3RhdHNbaV0uaHBkX2xhc3Rf amlmZmllcwogCQkJCSAgICsgbXNlY3NfdG9famlmZmllcyhIUERfU1RPUk1fREVURUNUX1BFUklP RCkpKSB7CkBAIC0xNDQ2LDcgKzE1NDAsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIGludGVsX2hw ZF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCSAqIHF1ZXVlIGZvciBvdGhl cndpc2UgdGhlIGZsdXNoX3dvcmsgaW4gdGhlIHBhZ2VmbGlwIGNvZGUgd2lsbAogCSAqIGRlYWRs b2NrLgogCSAqLwotCXNjaGVkdWxlX3dvcmsoJmRldl9wcml2LT5ob3RwbHVnX3dvcmspOworCWlm IChxdWV1ZV9kaWcpCisJCXF1ZXVlX3dvcmsoZGV2X3ByaXYtPmRwX3dxLCAmZGV2X3ByaXYtPmRp Z19wb3J0X3dvcmspOworCWlmIChxdWV1ZV9ocCkKKwkJc2NoZWR1bGVfd29yaygmZGV2X3ByaXYt PmhvdHBsdWdfd29yayk7CiB9CiAKIHN0YXRpYyB2b2lkIGdtYnVzX2lycV9oYW5kbGVyKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCkBAIC00MDE0LDYgKzQxMTEsNyBAQCB2b2lkIGludGVsX2lycV9p bml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAorCUlOSVRfV09SSygmZGV2X3ByaXYtPmRp Z19wb3J0X3dvcmssIGk5MTVfZGlncG9ydF93b3JrX2Z1bmMpOwogCUlOSVRfV09SSygmZGV2X3By aXYtPmhvdHBsdWdfd29yaywgaTkxNV9ob3RwbHVnX3dvcmtfZnVuYyk7CiAJSU5JVF9XT1JLKCZk ZXZfcHJpdi0+Z3B1X2Vycm9yLndvcmssIGk5MTVfZXJyb3Jfd29ya19mdW5jKTsKIAlJTklUX1dP UksoJmRldl9wcml2LT5ycHMud29yaywgZ2VuNl9wbV9ycHNfd29yayk7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RkaS5jCmluZGV4IGE1YjhiNzYuLmE4NzI4ZDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RkaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rk aS5jCkBAIC0xMTYsNyArMTE2LDEwIEBAIGVudW0gcG9ydCBpbnRlbF9kZGlfZ2V0X2VuY29kZXJf cG9ydChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikKIAlzdHJ1Y3QgZHJtX2Vu Y29kZXIgKmVuY29kZXIgPSAmaW50ZWxfZW5jb2Rlci0+YmFzZTsKIAlpbnQgdHlwZSA9IGludGVs X2VuY29kZXItPnR5cGU7CiAKLQlpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfRElTUExBWVBPUlQg fHwgdHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQIHx8CisJaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVU X0RQX01TVCkgeworCQlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9 IGVuY190b19tc3QoZW5jb2RlciktPnByaW1hcnk7CisJCXJldHVybiBpbnRlbF9kaWdfcG9ydC0+ cG9ydDsKKwl9IGVsc2UgaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0RJU1BMQVlQT1JUIHx8IHR5 cGUgPT0gSU5URUxfT1VUUFVUX0VEUCB8fAogCSAgICB0eXBlID09IElOVEVMX09VVFBVVF9IRE1J IHx8IHR5cGUgPT0gSU5URUxfT1VUUFVUX1VOS05PV04pIHsKIAkJc3RydWN0IGludGVsX2RpZ2l0 YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPQogCQkJZW5jX3RvX2RpZ19wb3J0KGVuY29kZXIpOwpA QCAtMjExLDYgKzIxNCwxOSBAQCB2b2lkIGludGVsX3ByZXBhcmVfZGRpKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCiAJCWludGVsX3ByZXBhcmVfZGRpX2J1ZmZlcnMoZGV2LCBwb3J0KTsKIH0KIAor dm9pZCBpbnRlbF9kZGlfZm9yY2VfYWN0KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBi b29sIHN0YXRlKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuY29k ZXItPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKKwllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RkaV9n ZXRfZW5jb2Rlcl9wb3J0KGVuY29kZXIpOworCXUzMiB2YWw7CisJdmFsID0gSTkxNV9SRUFEKERQ X1RQX0NUTChwb3J0KSk7CisJaWYgKHN0YXRlID09IHRydWUpCisJCXZhbCB8PSBEUF9UUF9DVExf Rk9SQ0VfQUNUOworCWVsc2UKKwkJdmFsICY9IH5EUF9UUF9DVExfRk9SQ0VfQUNUOworCUk5MTVf V1JJVEUoRFBfVFBfQ1RMKHBvcnQpLCB2YWwpOworfQorCiBzdGF0aWMgY29uc3QgbG9uZyBoc3df ZGRpX2J1Zl9jdGxfdmFsdWVzW10gPSB7CiAJRERJX0JVRl9FTVBfNDAwTVZfMERCX0hTVywKIAlE RElfQlVGX0VNUF80MDBNVl8zXzVEQl9IU1csCkBAIC02NzMsOCArNjg5LDggQEAgc3RhdGljIGlu dCBpbnRlbF9kZGlfY2FsY193cnBsbF9saW5rKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKIAlyZXR1cm4gKHJlZmNsayAqIG4gKiAxMDApIC8gKHAgKiByKTsKIH0KIAotc3RhdGlj IHZvaWQgaW50ZWxfZGRpX2Nsb2NrX2dldChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK LQkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19jb25maWcgKnBpcGVfY29uZmlnKQordm9pZCBpbnRlbF9k ZGlfY2xvY2tfZ2V0KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJIHN0cnVjdCBp bnRlbF9jcnRjX2NvbmZpZyAqcGlwZV9jb25maWcpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZW5jb2Rlci0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwogCWVudW0gcG9y dCBwb3J0ID0gaW50ZWxfZGRpX2dldF9lbmNvZGVyX3BvcnQoZW5jb2Rlcik7CkBAIC03OTUsNiAr ODExLDIwIEBAIGludGVsX2RkaV9jYWxjdWxhdGVfd3JwbGwoaW50IGNsb2NrIC8qIGluIEh6ICov LAogCSpyMl9vdXQgPSBiZXN0LnIyOwogfQogCitzdGF0aWMgaW50IGxpbmtfYndfdG9fcGxsX3Nl bChpbnQgbGlua19idykKK3sKKwlzd2l0Y2ggKGxpbmtfYncpIHsKKwljYXNlIERQX0xJTktfQldf MV82MjoKKwkJcmV0dXJuIFBPUlRfQ0xLX1NFTF9MQ1BMTF84MTA7CisJY2FzZSBEUF9MSU5LX0JX XzJfNzoKKwkJcmV0dXJuIFBPUlRfQ0xLX1NFTF9MQ1BMTF8xMzUwOworCWNhc2UgRFBfTElOS19C V181XzQ6CisJCXJldHVybiBQT1JUX0NMS19TRUxfTENQTExfMjcwMDsKKwlkZWZhdWx0OgorCQly ZXR1cm4gLTE7CisJfQorfQorCiAvKgogICogVHJpZXMgdG8gZmluZCBhIFBMTCBmb3IgdGhlIENS VEMuIElmIGl0IGZpbmRzLCBpdCBpbmNyZWFzZXMgdGhlIHJlZmNvdW50IGFuZAogICogc3RvcmVz IGl0IGluIGludGVsX2NydGMtPmRkaV9wbGxfc2VsLCBzbyBvdGhlciBtb2RlIHNldHMgd29uJ3Qg YmUgYWJsZSB0bwpAQCAtODE0LDIwICs4NDQsMTkgQEAgYm9vbCBpbnRlbF9kZGlfcGxsX3NlbGVj dChzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKIAogCWludGVsX2RkaV9wdXRfY3J0Y19w bGwoY3J0Yyk7CiAKLQlpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfRElTUExBWVBPUlQgfHwgdHlw ZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7CisJaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0RQX01T VCkgeworCQlzdHJ1Y3QgaW50ZWxfZHBfbXN0X2VuY29kZXIgKmludGVsX21zdCA9IGVuY190b19t c3QoZW5jb2Rlcik7CisJCWludGVsX2NydGMtPmRkaV9wbGxfc2VsID0gbGlua19id190b19wbGxf c2VsKGludGVsX21zdC0+cHJpbWFyeS0+ZHAubGlua19idyk7CisJCWlmIChpbnRlbF9jcnRjLT5k ZGlfcGxsX3NlbCA9PSAtMSkgeworCQkJRFJNX0VSUk9SKCJMaW5rIGJhbmR3aWR0aCAlZCB1bnN1 cHBvcnRlZFxuIiwKKwkJCQkgIGludGVsX21zdC0+cHJpbWFyeS0+ZHAubGlua19idyk7CisJCQly ZXR1cm4gZmFsc2U7CisJCX0KKwl9IGVsc2UgaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0RJU1BM QVlQT1JUIHx8IHR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgewogCQlzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOwogCi0JCXN3aXRjaCAoaW50ZWxf ZHAtPmxpbmtfYncpIHsKLQkJY2FzZSBEUF9MSU5LX0JXXzFfNjI6Ci0JCQlpbnRlbF9jcnRjLT5k ZGlfcGxsX3NlbCA9IFBPUlRfQ0xLX1NFTF9MQ1BMTF84MTA7Ci0JCQlicmVhazsKLQkJY2FzZSBE UF9MSU5LX0JXXzJfNzoKLQkJCWludGVsX2NydGMtPmRkaV9wbGxfc2VsID0gUE9SVF9DTEtfU0VM X0xDUExMXzEzNTA7Ci0JCQlicmVhazsKLQkJY2FzZSBEUF9MSU5LX0JXXzVfNDoKLQkJCWludGVs X2NydGMtPmRkaV9wbGxfc2VsID0gUE9SVF9DTEtfU0VMX0xDUExMXzI3MDA7Ci0JCQlicmVhazsK LQkJZGVmYXVsdDoKKwkJaW50ZWxfY3J0Yy0+ZGRpX3BsbF9zZWwgPSBsaW5rX2J3X3RvX3BsbF9z ZWwoaW50ZWxfZHAtPmxpbmtfYncpOworCQlpZiAoaW50ZWxfY3J0Yy0+ZGRpX3BsbF9zZWwgPT0g LTEpIHsKIAkJCURSTV9FUlJPUigiTGluayBiYW5kd2lkdGggJWQgdW5zdXBwb3J0ZWRcbiIsCiAJ CQkJICBpbnRlbF9kcC0+bGlua19idyk7CiAJCQlyZXR1cm4gZmFsc2U7CkBAIC05ODEsOCArMTAx MCw3IEBAIHZvaWQgaW50ZWxfZGRpX3NldF9waXBlX3NldHRpbmdzKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YykKIAlpbnQgdHlwZSA9IGludGVsX2VuY29kZXItPnR5cGU7CiAJdWludDMyX3QgdGVtcDsK IAotCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9ESVNQTEFZUE9SVCB8fCB0eXBlID09IElOVEVM X09VVFBVVF9FRFApIHsKLQorCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9ESVNQTEFZUE9SVCB8 fCB0eXBlID09IElOVEVMX09VVFBVVF9FRFAgfHwgdHlwZSA9PSBJTlRFTF9PVVRQVVRfRFBfTVNU KSB7CiAJCXRlbXAgPSBUUkFOU19NU0FfU1lOQ19DTEs7CiAJCXN3aXRjaCAoaW50ZWxfY3J0Yy0+ Y29uZmlnLnBpcGVfYnBwKSB7CiAJCWNhc2UgMTg6CkBAIC0xMDA0LDYgKzEwMzIsMjEgQEAgdm9p ZCBpbnRlbF9kZGlfc2V0X3BpcGVfc2V0dGluZ3Moc3RydWN0IGRybV9jcnRjICpjcnRjKQogCX0K IH0KIAordm9pZCBpbnRlbF9kZGlfc2V0X3ZjX3BheWxvYWRfYWxsb2Moc3RydWN0IGRybV9jcnRj ICpjcnRjLCBib29sIHN0YXRlKQoreworCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0g dG9faW50ZWxfY3J0YyhjcnRjKTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2 OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 CisJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gaW50ZWxfY3J0Yy0+Y29uZmlnLmNw dV90cmFuc2NvZGVyOworCXVpbnQzMl90IHRlbXA7CisJdGVtcCA9IEk5MTVfUkVBRChUUkFOU19E RElfRlVOQ19DVEwoY3B1X3RyYW5zY29kZXIpKTsKKwlpZiAoc3RhdGUgPT0gdHJ1ZSkKKwkJdGVt cCB8PSBUUkFOU19ERElfRFBfVkNfUEFZTE9BRF9BTExPQzsKKwllbHNlCisJCXRlbXAgJj0gflRS QU5TX0RESV9EUF9WQ19QQVlMT0FEX0FMTE9DOworCUk5MTVfV1JJVEUoVFJBTlNfRERJX0ZVTkNf Q1RMKGNwdV90cmFuc2NvZGVyKSwgdGVtcCk7Cit9CisKIHZvaWQgaW50ZWxfZGRpX2VuYWJsZV90 cmFuc2NvZGVyX2Z1bmMoc3RydWN0IGRybV9jcnRjICpjcnRjKQogewogCXN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKQEAgLTEwODMsNyArMTEyNiwx OSBAQCB2b2lkIGludGVsX2RkaV9lbmFibGVfdHJhbnNjb2Rlcl9mdW5jKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YykKIAkJICAgdHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7CiAJCXN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoZW5jb2Rlcik7CiAKLQkJdGVtcCB8PSBU UkFOU19ERElfTU9ERV9TRUxFQ1RfRFBfU1NUOworCQlpZiAoaW50ZWxfZHAtPmlzX21zdCkgewor CQkJdGVtcCB8PSBUUkFOU19ERElfTU9ERV9TRUxFQ1RfRFBfTVNUOworCQl9IGVsc2UKKwkJCXRl bXAgfD0gVFJBTlNfRERJX01PREVfU0VMRUNUX0RQX1NTVDsKKworCQl0ZW1wIHw9IERESV9QT1JU X1dJRFRIKGludGVsX2RwLT5sYW5lX2NvdW50KTsKKwl9IGVsc2UgaWYgKHR5cGUgPT0gSU5URUxf T1VUUFVUX0RQX01TVCkgeworCQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gJmVuY190b19t c3QoZW5jb2RlciktPnByaW1hcnktPmRwOworCisJCWlmIChpbnRlbF9kcC0+aXNfbXN0KSB7CisJ CQl0ZW1wIHw9IFRSQU5TX0RESV9NT0RFX1NFTEVDVF9EUF9NU1Q7CisJCX0gZWxzZQorCQkJdGVt cCB8PSBUUkFOU19ERElfTU9ERV9TRUxFQ1RfRFBfU1NUOwogCiAJCXRlbXAgfD0gRERJX1BPUlRf V0lEVEgoaW50ZWxfZHAtPmxhbmVfY291bnQpOwogCX0gZWxzZSB7CkBAIC0xMTAwLDcgKzExNTUs NyBAQCB2b2lkIGludGVsX2RkaV9kaXNhYmxlX3RyYW5zY29kZXJfZnVuYyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJdWludDMyX3QgcmVnID0gVFJBTlNfRERJX0ZVTkNfQ1RM KGNwdV90cmFuc2NvZGVyKTsKIAl1aW50MzJfdCB2YWwgPSBJOTE1X1JFQUQocmVnKTsKIAotCXZh bCAmPSB+KFRSQU5TX0RESV9GVU5DX0VOQUJMRSB8IFRSQU5TX0RESV9QT1JUX01BU0spOworCXZh bCAmPSB+KFRSQU5TX0RESV9GVU5DX0VOQUJMRSB8IFRSQU5TX0RESV9QT1JUX01BU0sgfCBUUkFO U19ERElfRFBfVkNfUEFZTE9BRF9BTExPQyk7CiAJdmFsIHw9IFRSQU5TX0RESV9QT1JUX05PTkU7 CiAJSTkxNV9XUklURShyZWcsIHZhbCk7CiB9CkBAIC0xMTYwLDYgKzEyMTUsMTEgQEAgYm9vbCBp bnRlbF9kZGlfZ2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCXUz MiB0bXA7CiAJaW50IGk7CiAKKwlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRElT UExBWVBPUlQpIHsKKwkJaWYgKGVuY190b19pbnRlbF9kcCgmZW5jb2Rlci0+YmFzZSktPmlzX21z dCkKKwkJCXJldHVybiBmYWxzZTsKKwl9CisKIAlwb3dlcl9kb21haW4gPSBpbnRlbF9kaXNwbGF5 X3BvcnRfcG93ZXJfZG9tYWluKGVuY29kZXIpOwogCWlmICghaW50ZWxfZGlzcGxheV9wb3dlcl9l bmFibGVkKGRldl9wcml2LCBwb3dlcl9kb21haW4pKQogCQlyZXR1cm4gZmFsc2U7CkBAIC0xNDk4 LDEwICsxNTU4LDE1IEBAIHZvaWQgaW50ZWxfZGRpX3ByZXBhcmVfbGlua19yZXRyYWluKHN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIAkJCWludGVsX3dhaXRfZGRpX2J1Zl9pZGxlKGRldl9w cml2LCBwb3J0KTsKIAl9CiAKLQl2YWwgPSBEUF9UUF9DVExfRU5BQkxFIHwgRFBfVFBfQ1RMX01P REVfU1NUIHwKKwl2YWwgPSBEUF9UUF9DVExfRU5BQkxFIHwKIAkgICAgICBEUF9UUF9DVExfTElO S19UUkFJTl9QQVQxIHwgRFBfVFBfQ1RMX1NDUkFNQkxFX0RJU0FCTEU7Ci0JaWYgKGRybV9kcF9l bmhhbmNlZF9mcmFtZV9jYXAoaW50ZWxfZHAtPmRwY2QpKQotCQl2YWwgfD0gRFBfVFBfQ1RMX0VO SEFOQ0VEX0ZSQU1FX0VOQUJMRTsKKwlpZiAoaW50ZWxfZHAtPmlzX21zdCkKKwkJdmFsIHw9IERQ X1RQX0NUTF9NT0RFX01TVDsKKwllbHNlIHsKKwkJdmFsIHw9IERQX1RQX0NUTF9NT0RFX1NTVDsK KwkJaWYgKGRybV9kcF9lbmhhbmNlZF9mcmFtZV9jYXAoaW50ZWxfZHAtPmRwY2QpKQorCQkJdmFs IHw9IERQX1RQX0NUTF9FTkhBTkNFRF9GUkFNRV9FTkFCTEU7CisJfQogCUk5MTVfV1JJVEUoRFBf VFBfQ1RMKHBvcnQpLCB2YWwpOwogCVBPU1RJTkdfUkVBRChEUF9UUF9DVEwocG9ydCkpOwogCkBA IC0xNzMyLDYgKzE3OTcsOCBAQCB2b2lkIGludGVsX2RkaV9pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIGVudW0gcG9ydCBwb3J0KQogCWludGVsX2VuY29kZXItPmNsb25lYWJsZSA9IDA7CiAJ aW50ZWxfZW5jb2Rlci0+aG90X3BsdWcgPSBpbnRlbF9kZGlfaG90X3BsdWc7CiAKKwlkZXZfcHJp di0+aHBkX2lycV9wb3J0W3BvcnRdID0gaW50ZWxfZGlnX3BvcnQ7CisKIAlpZiAoaW5pdF9kcCkK IAkJZHBfY29ubmVjdG9yID0gaW50ZWxfZGRpX2luaXRfZHBfY29ubmVjdG9yKGludGVsX2RpZ19w b3J0KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IDc1YjJhYWYuLmRm Y2M3OGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTU2LDYgKzU2LDE0 IEBAIHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAogCQkJCSAgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1vZGVfY21kLAogCQkJCSAgc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7CiAKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqaW50ZWxfZmluZF9lbmNvZGVyKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rv ciwgaW50IHBpcGUpCit7CisJaWYgKCFjb25uZWN0b3ItPm1zdF9wb3J0KQorCQlyZXR1cm4gY29u bmVjdG9yLT5lbmNvZGVyOworCWVsc2UKKwkJcmV0dXJuICZjb25uZWN0b3ItPm1zdF9wb3J0LT5t c3RfZW5jb2RlcnNbcGlwZV0tPmJhc2U7Cit9CisKIHR5cGVkZWYgc3RydWN0IHsKIAlpbnQJbWlu LCBtYXg7CiB9IGludGVsX3JhbmdlX3Q7CkBAIC0zODIxLDYgKzM4MjksOSBAQCBzdGF0aWMgdm9p ZCBoYXN3ZWxsX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlpZiAoaW50ZWxf Y3J0Yy0+Y29uZmlnLmhhc19wY2hfZW5jb2RlcikKIAkJbHB0X3BjaF9lbmFibGUoY3J0Yyk7CiAK KwlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLmRwX2VuY29kZXJfaXNfbXN0KQorCQlpbnRlbF9kZGlf c2V0X3ZjX3BheWxvYWRfYWxsb2MoY3J0YywgdHJ1ZSk7CisKIAlmb3JfZWFjaF9lbmNvZGVyX29u X2NydGMoZGV2LCBjcnRjLCBlbmNvZGVyKSB7CiAJCWVuY29kZXItPmVuYWJsZShlbmNvZGVyKTsK IAkJaW50ZWxfb3ByZWdpb25fbm90aWZ5X2VuY29kZXIoZW5jb2RlciwgdHJ1ZSk7CkBAIC0zODY5 LDYgKzM4ODAsOSBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9jcnRjX2Rpc2FibGUoc3RydWN0IGRy bV9jcnRjICpjcnRjKQogCiAJaW50ZWxfZGlzYWJsZV9waXBlKGRldl9wcml2LCBwaXBlKTsKIAor CWlmIChpbnRlbF9jcnRjLT5jb25maWcuZHBfZW5jb2Rlcl9pc19tc3QpCisJCWludGVsX2RkaV9z ZXRfdmNfcGF5bG9hZF9hbGxvYyhjcnRjLCBmYWxzZSk7CisKIAlpcm9ubGFrZV9wZml0X2Rpc2Fi bGUoaW50ZWxfY3J0Yyk7CiAKIAlmb3JfZWFjaF9lbmNvZGVyX29uX2NydGMoZGV2LCBjcnRjLCBl bmNvZGVyKQpAQCAtNDAzOCw2ICs0MDUyLDIzIEBAIHN0YXRpYyB2b2lkIGk5eHhfcGZpdF9lbmFi bGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCiAJZm9yICgoZG9tYWluKSA9IDA7IChkb21haW4p IDwgUE9XRVJfRE9NQUlOX05VTTsgKGRvbWFpbikrKykJXAogCQlpZiAoKDEgPDwgKGRvbWFpbikp ICYgKG1hc2spKQogCitlbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIHBvcnRfdG9fcG93 ZXJfZG9tYWluKGVudW0gcG9ydCBwb3J0KQoreworCXN3aXRjaCAocG9ydCkgeworCWNhc2UgUE9S VF9BOgorCQlyZXR1cm4gUE9XRVJfRE9NQUlOX1BPUlRfRERJX0FfNF9MQU5FUzsKKwljYXNlIFBP UlRfQjoKKwkJcmV0dXJuIFBPV0VSX0RPTUFJTl9QT1JUX0RESV9CXzRfTEFORVM7CisJY2FzZSBQ T1JUX0M6CisJCXJldHVybiBQT1dFUl9ET01BSU5fUE9SVF9ERElfQ180X0xBTkVTOworCWNhc2Ug UE9SVF9EOgorCQlyZXR1cm4gUE9XRVJfRE9NQUlOX1BPUlRfRERJX0RfNF9MQU5FUzsKKwlkZWZh dWx0OgorCQlXQVJOX09OX09OQ0UoMSk7CisJCXJldHVybiBQT1dFUl9ET01BSU5fUE9SVF9PVEhF UjsKKwl9Cit9CisKIGVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4KIGludGVsX2Rpc3Bs YXlfcG9ydF9wb3dlcl9kb21haW4oc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIp CiB7CkBAIC00MDUyLDE5ICs0MDgzLDEwIEBAIGludGVsX2Rpc3BsYXlfcG9ydF9wb3dlcl9kb21h aW4oc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIpCiAJY2FzZSBJTlRFTF9PVVRQ VVRfSERNSToKIAljYXNlIElOVEVMX09VVFBVVF9FRFA6CiAJCWludGVsX2RpZ19wb3J0ID0gZW5j X3RvX2RpZ19wb3J0KCZpbnRlbF9lbmNvZGVyLT5iYXNlKTsKLQkJc3dpdGNoIChpbnRlbF9kaWdf cG9ydC0+cG9ydCkgewotCQljYXNlIFBPUlRfQToKLQkJCXJldHVybiBQT1dFUl9ET01BSU5fUE9S VF9ERElfQV80X0xBTkVTOwotCQljYXNlIFBPUlRfQjoKLQkJCXJldHVybiBQT1dFUl9ET01BSU5f UE9SVF9ERElfQl80X0xBTkVTOwotCQljYXNlIFBPUlRfQzoKLQkJCXJldHVybiBQT1dFUl9ET01B SU5fUE9SVF9ERElfQ180X0xBTkVTOwotCQljYXNlIFBPUlRfRDoKLQkJCXJldHVybiBQT1dFUl9E T01BSU5fUE9SVF9ERElfRF80X0xBTkVTOwotCQlkZWZhdWx0OgotCQkJV0FSTl9PTl9PTkNFKDEp OwotCQkJcmV0dXJuIFBPV0VSX0RPTUFJTl9QT1JUX09USEVSOwotCQl9CisJCXJldHVybiBwb3J0 X3RvX3Bvd2VyX2RvbWFpbihpbnRlbF9kaWdfcG9ydC0+cG9ydCk7CisJY2FzZSBJTlRFTF9PVVRQ VVRfRFBfTVNUOgorCQlpbnRlbF9kaWdfcG9ydCA9IGVuY190b19tc3QoJmludGVsX2VuY29kZXIt PmJhc2UpLT5wcmltYXJ5OworCQlyZXR1cm4gcG9ydF90b19wb3dlcl9kb21haW4oaW50ZWxfZGln X3BvcnQtPnBvcnQpOwogCWNhc2UgSU5URUxfT1VUUFVUX0FOQUxPRzoKIAkJcmV0dXJuIFBPV0VS X0RPTUFJTl9QT1JUX0NSVDsKIAljYXNlIElOVEVMX09VVFBVVF9EU0k6CkBAIC0xMDIwMyw3ICsx MDIyNSw3IEBAIGludGVsX21vZGVzZXRfc3RhZ2Vfb3V0cHV0X3N0YXRlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCiAJCSAqIGZvciB0aGVtLiAqLwogCQlmb3IgKHJvID0gMDsgcm8gPCBzZXQtPm51 bV9jb25uZWN0b3JzOyBybysrKSB7CiAJCQlpZiAoc2V0LT5jb25uZWN0b3JzW3JvXSA9PSAmY29u bmVjdG9yLT5iYXNlKSB7Ci0JCQkJY29ubmVjdG9yLT5uZXdfZW5jb2RlciA9IGNvbm5lY3Rvci0+ ZW5jb2RlcjsKKwkJCQljb25uZWN0b3ItPm5ld19lbmNvZGVyID0gaW50ZWxfZmluZF9lbmNvZGVy KGNvbm5lY3RvciwgdG9faW50ZWxfY3J0YyhzZXQtPmNydGMpLT5waXBlKTsKIAkJCQlicmVhazsK IAkJCX0KIAkJfQpAQCAtMTAyNDksNyArMTAyNzEsNyBAQCBpbnRlbF9tb2Rlc2V0X3N0YWdlX291 dHB1dF9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCQkgbmV3X2NydGMpKSB7CiAJ CQlyZXR1cm4gLUVJTlZBTDsKIAkJfQotCQljb25uZWN0b3ItPmVuY29kZXItPm5ld19jcnRjID0g dG9faW50ZWxfY3J0YyhuZXdfY3J0Yyk7CisJCWNvbm5lY3Rvci0+bmV3X2VuY29kZXItPm5ld19j cnRjID0gdG9faW50ZWxfY3J0YyhuZXdfY3J0Yyk7CiAKIAkJRFJNX0RFQlVHX0tNUygiW0NPTk5F Q1RPUjolZDolc10gdG8gW0NSVEM6JWRdXG4iLAogCQkJY29ubmVjdG9yLT5iYXNlLmJhc2UuaWQs CkBAIC0xMDI4Myw3ICsxMDMwNSwxMiBAQCBpbnRlbF9tb2Rlc2V0X3N0YWdlX291dHB1dF9zdGF0 ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQl9CiAJfQogCS8qIE5vdyB3ZSd2ZSBhbHNvIHVw ZGF0ZWQgZW5jb2Rlci0+bmV3X2NydGMgZm9yIGFsbCBlbmNvZGVycy4gKi8KLQorCWxpc3RfZm9y X2VhY2hfZW50cnkoY29ubmVjdG9yLCAmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0b3JfbGlzdCwK KwkJCSAgICBiYXNlLmhlYWQpIHsKKwkJaWYgKGNvbm5lY3Rvci0+bmV3X2VuY29kZXIpCisJCQlp ZiAoY29ubmVjdG9yLT5uZXdfZW5jb2RlciAhPSBjb25uZWN0b3ItPmVuY29kZXIpCisJCQkJY29u bmVjdG9yLT5lbmNvZGVyID0gY29ubmVjdG9yLT5uZXdfZW5jb2RlcjsKKwl9CiAJbGlzdF9mb3Jf ZWFjaF9lbnRyeShjcnRjLCAmZGV2LT5tb2RlX2NvbmZpZy5jcnRjX2xpc3QsCiAJCQkgICAgYmFz ZS5oZWFkKSB7CiAJCWNydGMtPm5ld19lbmFibGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHAuYwppbmRleCA0NGRmNDkzLi5lMWJkMDE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKQEAg LTcwMSw4ICs3MDEsOSBAQCBpbnRlbF9kcF9jb25uZWN0b3JfdW5yZWdpc3RlcihzdHJ1Y3QgaW50 ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IpCiB7CiAJc3RydWN0IGludGVsX2RwICppbnRl bF9kcCA9IGludGVsX2F0dGFjaGVkX2RwKCZpbnRlbF9jb25uZWN0b3ItPmJhc2UpOwogCi0Jc3lz ZnNfcmVtb3ZlX2xpbmsoJmludGVsX2Nvbm5lY3Rvci0+YmFzZS5rZGV2LT5rb2JqLAotCQkJICBp bnRlbF9kcC0+YXV4LmRkYy5kZXYua29iai5uYW1lKTsKKwlpZiAoIWludGVsX2Nvbm5lY3Rvci0+ bXN0X3BvcnQpCisJCXN5c2ZzX3JlbW92ZV9saW5rKCZpbnRlbF9jb25uZWN0b3ItPmJhc2Uua2Rl di0+a29iaiwKKwkJCQkgIGludGVsX2RwLT5hdXguZGRjLmRldi5rb2JqLm5hbWUpOwogCWludGVs X2Nvbm5lY3Rvcl91bnJlZ2lzdGVyKGludGVsX2Nvbm5lY3Rvcik7CiB9CiAKQEAgLTI4OTIsNiAr Mjg5MywzMyBAQCBpbnRlbF9kcF9wcm9iZV9vdWkoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK IAllZHBfcGFuZWxfdmRkX29mZihpbnRlbF9kcCwgZmFsc2UpOwogfQogCitzdGF0aWMgYm9vbAor aW50ZWxfZHBfcHJvYmVfbXN0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCit7CisJdTggYnVm WzFdOworCisJaWYgKCFpbnRlbF9kcC0+Y2FuX21zdCkKKwkJcmV0dXJuIGZhbHNlOworCisJaWYg KGludGVsX2RwLT5kcGNkW0RQX0RQQ0RfUkVWXSA8IDB4MTIpCisJCXJldHVybiBmYWxzZTsKKwor CV9lZHBfcGFuZWxfdmRkX29uKGludGVsX2RwKTsKKwlpZiAoaW50ZWxfZHBfZHBjZF9yZWFkX3dh a2UoJmludGVsX2RwLT5hdXgsIERQX01TVE1fQ0FQLCBidWYsIDEpKSB7CisJCWlmIChidWZbMF0g JiBEUF9NU1RfQ0FQKSB7CisJCQlEUk1fREVCVUdfS01TKCJTaW5rIGlzIE1TVCBjYXBhYmxlXG4i KTsKKwkJCWludGVsX2RwLT5pc19tc3QgPSB0cnVlOworCQl9IGVsc2UgeworCQkJRFJNX0RFQlVH X0tNUygiU2luayBpcyBub3QgTVNUIGNhcGFibGVcbiIpOworCQkJaW50ZWxfZHAtPmlzX21zdCA9 IGZhbHNlOworCQl9CisJfQorCWVkcF9wYW5lbF92ZGRfb2ZmKGludGVsX2RwLCBmYWxzZSk7CisK Kwlkcm1fZHBfbXN0X3RvcG9sb2d5X21ncl9zZXRfbXN0KCZpbnRlbF9kcC0+bXN0X21nciwgaW50 ZWxfZHAtPmlzX21zdCk7CisJcmV0dXJuIGludGVsX2RwLT5pc19tc3Q7Cit9CisKIGludCBpbnRl bF9kcF9zaW5rX2NyYyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1OCAqY3JjKQogewogCXN0 cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQo aW50ZWxfZHApOwpAQCAtMjkyOSw2ICsyOTU3LDIwIEBAIGludGVsX2RwX2dldF9zaW5rX2lycShz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1OCAqc2lua19pcnFfdmVjdG9yKQogCQkJCSAgICAg ICBzaW5rX2lycV92ZWN0b3IsIDEpID09IDE7CiB9CiAKK3N0YXRpYyBib29sCitpbnRlbF9kcF9n ZXRfc2lua19pcnFfZXNpKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHU4ICpzaW5rX2lycV92 ZWN0b3IpCit7CisJaW50IHJldDsKKworCXJldCA9IGludGVsX2RwX2RwY2RfcmVhZF93YWtlKCZp bnRlbF9kcC0+YXV4LAorCQkJCQkgICAgIERQX1NJTktfQ09VTlRfRVNJLAorCQkJCQkgICAgIHNp bmtfaXJxX3ZlY3RvciwgNCk7CisJaWYgKHJldCAhPSA0KQorCQlyZXR1cm4gZmFsc2U7CisKKwly ZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIHZvaWQKIGludGVsX2RwX2hhbmRsZV90ZXN0X3JlcXVl c3Qoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIHsKQEAgLTI5NDQsNiArMjk4Niw2NSBAQCBp bnRlbF9kcF9oYW5kbGVfdGVzdF9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAg KiAgMy4gVXNlIExpbmsgVHJhaW5pbmcgZnJvbSAyLjUuMy4zIGFuZCAzLjUuMS4zCiAgKiAgNC4g Q2hlY2sgbGluayBzdGF0dXMgb24gcmVjZWlwdCBvZiBob3QtcGx1ZyBpbnRlcnJ1cHQKICAqLwor c3RhdGljIGludAoraW50ZWxfZHBfY2hlY2tfbXN0X3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwKQoreworCWludCBzZW5kX2V2ZW50ID0gMDsKKwlib29sIGJyZXQ7CisJaWYgKGludGVs X2RwLT5pc19tc3QpIHsKKwkJdTggZXNpWzRdID0geyAwIH07CisJCWludCByZXQgPSAwOworCQlp bnQgcmV0cnk7CisKKwkJbXV0ZXhfbG9jaygmaW50ZWxfZHAtPm1zdF9tZ3IuYXV4X2xvY2spOwor CQlicmV0ID0gaW50ZWxfZHBfZ2V0X3NpbmtfaXJxX2VzaShpbnRlbF9kcCwgZXNpKTsKKwkJbXV0 ZXhfdW5sb2NrKCZpbnRlbF9kcC0+bXN0X21nci5hdXhfbG9jayk7CisJZ29fYWdhaW46CisJCWlm IChicmV0ID09IHRydWUpIHsKKwkJCURSTV9ERUJVR19LTVMoImdvdCBlc2kgJTAyeCAlMDJ4ICUw MnhcbiIsIGVzaVswXSwgZXNpWzFdLCBlc2lbMl0pOworCQkJaWYgKGVzaVsxXSAmIChEUF9VUF9S RVFfTVNHX1JEWSB8IERQX0RPV05fUkVQX01TR19SRFkpKSAgeworCQkJCXJldCA9IGRybV9kcF9t c3RfaHBkX2lycSgmaW50ZWxfZHAtPm1zdF9tZ3IsIGVzaVsxXSk7CisJCQkJaWYgKHJldCA9PSAx KQorCQkJCQlzZW5kX2V2ZW50ID0gMTsKKwkJCX0gZWxzZQorCQkJCXJldCA9IDA7CisJCQlzZW5k X2V2ZW50IHw9IHJldDsKKwkJCW11dGV4X2xvY2soJmludGVsX2RwLT5tc3RfbWdyLmF1eF9sb2Nr KTsKKwkJCWZvciAocmV0cnkgPSAwOyByZXRyeSA8IDM7IHJldHJ5KyspIHsKKwkJCQlpbnQgd3Jl dDsKKwkJCQl3cmV0ID0gZHJtX2RwX2RwY2Rfd3JpdGUoJmludGVsX2RwLT5hdXgsCisJCQkJCQkJ RFBfU0lOS19DT1VOVF9FU0krMSwKKwkJCQkJCQkmZXNpWzFdLCAzKTsKKwkJCQlpZiAod3JldCA9 PSAzKSB7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJCW11dGV4X3VubG9jaygmaW50ZWxf ZHAtPm1zdF9tZ3IuYXV4X2xvY2spOworCisJCQltdXRleF9sb2NrKCZpbnRlbF9kcC0+bXN0X21n ci5hdXhfbG9jayk7CisJCQlicmV0ID0gaW50ZWxfZHBfZ2V0X3NpbmtfaXJxX2VzaShpbnRlbF9k cCwgZXNpKTsKKwkJCW11dGV4X3VubG9jaygmaW50ZWxfZHAtPm1zdF9tZ3IuYXV4X2xvY2spOwor CQkJaWYgKGJyZXQgPT0gdHJ1ZSkgeworCQkJCURSTV9ERUJVR19LTVMoImdvdCBlc2kyICUwMngg JTAyeCAlMDJ4XG4iLCBlc2lbMF0sIGVzaVsxXSwgZXNpWzJdKTsKKwkJCQlpZiAoZXNpWzFdICYg KERQX1VQX1JFUV9NU0dfUkRZIHwgRFBfRE9XTl9SRVBfTVNHX1JEWSkpICB7CisJCQkJCWdvdG8g Z29fYWdhaW47CisJCQkJfQorCQkJfQorCisJCQlpZiAocmV0ID09IDAgJiYgc2VuZF9ldmVudCkK KwkJCQlyZXR1cm4gMTsKKwkJCXJldHVybiByZXQ7CisJCX0gZWxzZSB7CisJCQlzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2Rw KTsKKwkJCURSTV9ERUJVR19LTVMoImZhaWxlZCB0byBnZXQgRVNJIC0gZGV2aWNlIG1heSBoYXZl IGZhaWxlZFxuIik7CisJCQlpbnRlbF9kcC0+aXNfbXN0ID0gZmFsc2U7CisJCQlkcm1fZHBfbXN0 X3RvcG9sb2d5X21ncl9zZXRfbXN0KCZpbnRlbF9kcC0+bXN0X21nciwgaW50ZWxfZHAtPmlzX21z dCk7CisJCQkvKiBzZW5kIGEgaG90cGx1ZyBldmVudCAqLworCQkJZHJtX3N5c2ZzX2hvdHBsdWdf ZXZlbnQoaW50ZWxfZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXYpOworCQl9CisJfQorCXJldHVybiAt RUlOVkFMOworfQogCiB2b2lkCiBpbnRlbF9kcF9jaGVja19saW5rX3N0YXR1cyhzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwKQpAQCAtMzE2Myw2ICszMjY0LDcgQEAgaW50ZWxfZHBfZGV0ZWN0KHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGJvb2wgZm9yY2UpCiAJZW51bSBkcm1fY29u bmVjdG9yX3N0YXR1cyBzdGF0dXM7CiAJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBw b3dlcl9kb21haW47CiAJc3RydWN0IGVkaWQgKmVkaWQgPSBOVUxMOworCWJvb2wgcmV0OwogCiAJ aW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwogCkBAIC0zMTcyLDYgKzMyNzQsMTIgQEAg aW50ZWxfZHBfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGJvb2wgZm9y Y2UpCiAJRFJNX0RFQlVHX0tNUygiW0NPTk5FQ1RPUjolZDolc11cbiIsCiAJCSAgICAgIGNvbm5l Y3Rvci0+YmFzZS5pZCwgZHJtX2dldF9jb25uZWN0b3JfbmFtZShjb25uZWN0b3IpKTsKIAorCWlm IChpbnRlbF9kcC0+aXNfbXN0KSB7CisJCS8qIE1TVCBkZXZpY2VzIGFyZSBkaXNjb25uZWN0ZWQg ZnJvbSBhIG1vbml0b3IgUE9WICovCisJCXN0YXR1cyA9IGNvbm5lY3Rvcl9zdGF0dXNfZGlzY29u bmVjdGVkOworCQlnb3RvIG91dDsKKwl9CisKIAlpbnRlbF9kcC0+aGFzX2F1ZGlvID0gZmFsc2U7 CiAKIAlpZiAoSEFTX1BDSF9TUExJVChkZXYpKQpAQCAtMzE4NCw2ICszMjkyLDE2IEBAIGludGVs X2RwX2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBib29sIGZvcmNlKQog CiAJaW50ZWxfZHBfcHJvYmVfb3VpKGludGVsX2RwKTsKIAorCXJldCA9IGludGVsX2RwX3Byb2Jl X21zdChpbnRlbF9kcCk7CisJaWYgKHJldCkgeworCQkvKiBpZiB3ZSBhcmUgaW4gTVNUIG1vZGUg dGhlbiB0aGlzIGNvbm5lY3RvcgorCQkgICB3b24ndCBhcHBlYXIgY29ubmVjdGVkIG9yIGhhdmUg YW55dGhpbmcgd2l0aCBFRElEIG9uIGl0ICovCisJCWlmIChpbnRlbF9lbmNvZGVyLT50eXBlICE9 IElOVEVMX09VVFBVVF9FRFApCisJCQlpbnRlbF9lbmNvZGVyLT50eXBlID0gSU5URUxfT1VUUFVU X0RJU1BMQVlQT1JUOworCQlzdGF0dXMgPSBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsK KwkJZ290byBvdXQ7CisJfQorCiAJaWYgKGludGVsX2RwLT5mb3JjZV9hdWRpbyAhPSBIRE1JX0FV RElPX0FVVE8pIHsKIAkJaW50ZWxfZHAtPmhhc19hdWRpbyA9IChpbnRlbF9kcC0+Zm9yY2VfYXVk aW8gPT0gSERNSV9BVURJT19PTik7CiAJfSBlbHNlIHsKQEAgLTMzNzksNiArMzQ5Nyw3IEBAIHZv aWQgaW50ZWxfZHBfZW5jb2Rlcl9kZXN0cm95KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikK IAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfZHBfdG9fZGV2KGludGVsX2RwKTsKIAog CWRybV9kcF9hdXhfdW5yZWdpc3Rlcl9pMmNfYnVzKCZpbnRlbF9kcC0+YXV4KTsKKwlpbnRlbF9k cF9tc3RfZW5jb2Rlcl9jbGVhbnVwKGludGVsX2RpZ19wb3J0KTsKIAlkcm1fZW5jb2Rlcl9jbGVh bnVwKGVuY29kZXIpOwogCWlmIChpc19lZHAoaW50ZWxfZHApKSB7CiAJCWNhbmNlbF9kZWxheWVk X3dvcmtfc3luYygmaW50ZWxfZHAtPnBhbmVsX3ZkZF93b3JrKTsKQEAgLTM0NjMsNyArMzU4Miw3 IEBAIGJvb2wgaW50ZWxfZHBfaXNfZWRwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcG9y dCBwb3J0KQogCXJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIHZvaWQKK3ZvaWQKIGludGVsX2Rw X2FkZF9wcm9wZXJ0aWVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IpCiB7CiAJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29u bmVjdG9yID0gdG9faW50ZWxfY29ubmVjdG9yKGNvbm5lY3Rvcik7CkBAIC0zOTU5LDYgKzQwNzgs MTMgQEAgaW50ZWxfZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq aW50ZWxfZGlnX3BvcnQsCiAKIAlpbnRlbF9kcC0+cHNyX3NldHVwX2RvbmUgPSBmYWxzZTsKIAor CS8qIGluaXQgTVNUIG9uIHBvcnRzIHRoYXQgY2FuIHN1cHBvcnQgaXQgKi8KKwlpZiAoSVNfSEFT V0VMTChkZXYpIHx8IElTX0JST0FEV0VMTChkZXYpKSB7CisJCWlmIChwb3J0ID09IFBPUlRfQiB8 fCBwb3J0ID09IFBPUlRfQyB8fCBwb3J0ID09IFBPUlRfRCkgeworCQkJaW50ZWxfZHBfbXN0X2Vu Y29kZXJfaW5pdChpbnRlbF9kaWdfcG9ydCwgaW50ZWxfY29ubmVjdG9yLT5iYXNlLmJhc2UuaWQp OworCQl9CisJfQorCiAJaWYgKCFpbnRlbF9lZHBfaW5pdF9jb25uZWN0b3IoaW50ZWxfZHAsIGlu dGVsX2Nvbm5lY3RvciwgJnBvd2VyX3NlcSkpIHsKIAkJZHJtX2RwX2F1eF91bnJlZ2lzdGVyX2ky Y19idXMoJmludGVsX2RwLT5hdXgpOwogCQlpZiAoaXNfZWRwKGludGVsX2RwKSkgewpAQCAtMzk4 OSw2ICs0MTE1LDcgQEAgaW50ZWxfZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0 YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCiB2b2lkCiBpbnRlbF9kcF9pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIGludCBvdXRwdXRfcmVnLCBlbnVtIHBvcnQgcG9ydCkKIHsKKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBp bnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0OwogCXN0cnVjdCBpbnRlbF9lbmNvZGVy ICppbnRlbF9lbmNvZGVyOwogCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKQEAgLTQwMjks NiArNDE1NiwxMCBAQCBpbnRlbF9kcF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBv dXRwdXRfcmVnLCBlbnVtIHBvcnQgcG9ydCkKIAlpbnRlbF9kaWdfcG9ydC0+cG9ydCA9IHBvcnQ7 CiAJaW50ZWxfZGlnX3BvcnQtPmRwLm91dHB1dF9yZWcgPSBvdXRwdXRfcmVnOwogCisJLyogZm9y IG5vdyBvbmx5IHVzZSBuZXcgSVJRIGhhbmRsaW5nIGZvciBNU1QgY2FwYWJsZSBwb3J0cyAqLwor CWlmIChpbnRlbF9kaWdfcG9ydC0+ZHAuY2FuX21zdCkKKwkJZGV2X3ByaXYtPmhwZF9pcnFfcG9y dFtwb3J0XSA9IGludGVsX2RpZ19wb3J0OworCiAJaW50ZWxfZW5jb2Rlci0+dHlwZSA9IElOVEVM X09VVFBVVF9ESVNQTEFZUE9SVDsKIAlpbnRlbF9lbmNvZGVyLT5jcnRjX21hc2sgPSAoMSA8PCAw KSB8ICgxIDw8IDEpIHwgKDEgPDwgMik7CiAJaW50ZWxfZW5jb2Rlci0+Y2xvbmVhYmxlID0gMDsK QEAgLTQwNDAsMyArNDE3MSw3OSBAQCBpbnRlbF9kcF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIGludCBvdXRwdXRfcmVnLCBlbnVtIHBvcnQgcG9ydCkKIAkJa2ZyZWUoaW50ZWxfY29ubmVj dG9yKTsKIAl9CiB9CisKKy8qCisgKiBIYW5kbGUgRFAgSVJRIGNsb3NlIHRvIHNwZWMgcmVjb21t ZW5kYXRpb25zCisgKiBVc2UgaHcgdG8gZGV0ZWN0IGxvbmcgdnMgc2hvcnQgcHVsc2VzCisgKgor ICogSWYgd2UgZ2V0IGEgbG9uZyBwdWxzZSAtIHdlIG5lZWQgdG8gcmVhZCBEUENEIGZpcnN0Cisg KiBJZiB3ZSBnZXQgYSBzaG9ydCBwdWxzZSAtIHdlIG5lZWQgdG8gY2hlY2sgbGluayBpcnEvc3Rh dHVzCisgKiByZXR1cm5pbmcgMSBjYXVzZXMgdGhlIG9sZCBkZXRlY3QgdG8gaGFwcGVuIGZvciBI RE1JCisgKi8KK2ludCBpbnRlbF9kcF9oYW5kbGVfaHBkX2lycShzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKKwkJCSAgICBib29sIGhwZF9sb25nKQoreworCXN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHAgPSAmaW50ZWxfZGlnX3BvcnQtPmRwOworCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5iYXNlLmRldjsKKwlzdHJ1Y3QgZHJt X21vZGVfY29uZmlnICptb2RlX2NvbmZpZyA9ICZkZXYtPm1vZGVfY29uZmlnOworCXN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3I7CisJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxf Y29ubmVjdG9yOworCWJvb2wgY2hhbmdlZCA9IGZhbHNlOworCWludCByZXQ7CisKKwlpZiAoIWlu dGVsX2RwLT5vdXRwdXRfcmVnKQorCQlyZXR1cm4gMTsKKworCURSTV9ERUJVR19LTVMoImdvdCBo cGQgaXJxIG9uIHBvcnQgJWQgLSAlc1xuIiwgaW50ZWxfZGlnX3BvcnQtPnBvcnQsCisJCSAgICAg IGhwZF9sb25nID8gImxvbmciIDogInNob3J0Iik7CisJLyogd2UgaGF2ZSB0byByZS1yZWFkIERQ Q0Qgb25seSBvbiBhIGxvbmcgaXJxICovCisJaWYgKGhwZF9sb25nKSB7CisJCWlmICghaW50ZWxf ZHBfZ2V0X2RwY2QoaW50ZWxfZHApKQorCQkJZ290byBtc3RfZmFpbDsKKworCQlpbnRlbF9kcF9w cm9iZV9vdWkoaW50ZWxfZHApOworCisJCWlmICghaW50ZWxfZHBfcHJvYmVfbXN0KGludGVsX2Rw KSkKKwkJCWdvdG8gbXN0X2ZhaWw7CisJfQorCisJaWYgKGludGVsX2RwLT5pc19tc3QpIHsKKwkJ cmV0ID0gaW50ZWxfZHBfY2hlY2tfbXN0X3N0YXR1cyhpbnRlbF9kcCk7CisJCWlmIChyZXQgPT0g LUVJTlZBTCkKKwkJCXJldHVybiAxOworCX0gZWxzZSB7CisJCWludGVsX2RwX2NoZWNrX2xpbmtf c3RhdHVzKGludGVsX2RwKTsKKwkJcmV0dXJuIDE7CisJfQorCisJaWYgKHJldCA9PSAxKSB7CisJ CW11dGV4X2xvY2soJm1vZGVfY29uZmlnLT5tdXRleCk7CisKKwkJLyogc2VuZCB0aGUgc29tZXRo aW5nIGNoYW5nZWQgZXZlbnQgZm9yIHRoZSBjb3JyZWN0IHBvcnQgKi8KKwkJbGlzdF9mb3JfZWFj aF9lbnRyeShjb25uZWN0b3IsICZtb2RlX2NvbmZpZy0+Y29ubmVjdG9yX2xpc3QsIGhlYWQpIHsK KwkJCWludGVsX2Nvbm5lY3RvciA9IHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uZWN0b3IpOworCQkJ aWYgKCFpbnRlbF9jb25uZWN0b3ItPm1zdF9wb3J0KQorCQkJCWNvbnRpbnVlOworCisJCQlpZiAo aW50ZWxfY29ubmVjdG9yLT5tc3RfcG9ydCAhPSBpbnRlbF9kcCkKKwkJCQljb250aW51ZTsKKwor CQkJaWYgKGludGVsX2hwZF9pcnFfZXZlbnQoZGV2LCBjb25uZWN0b3IpKQorCQkJCWNoYW5nZWQg PSB0cnVlOworCQl9CisJCW11dGV4X3VubG9jaygmbW9kZV9jb25maWctPm11dGV4KTsKKwkJaWYg KGNoYW5nZWQpCisJCQlkcm1fa21zX2hlbHBlcl9ob3RwbHVnX2V2ZW50KGRldik7CisJfQorCXJl dHVybiAwOworCittc3RfZmFpbDoKKwkvKiBpZiB3ZSB3ZXJlIGluIE1TVCBtb2RlLCBhbmQgZGV2 aWNlIGlzIG5vdCB0aGVyZSBnZXQgb3V0IG9mIE1TVCBtb2RlICovCisJaWYgKGludGVsX2RwLT5p c19tc3QpIHsKKwkJRFJNX0RFQlVHX0tNUygiZmFpbGVkIHRvIGdldCBFU0kgLSBkZXZpY2UgbWF5 IGhhdmUgZmFpbGVkXG4iKTsKKwkJaW50ZWxfZHAtPmlzX21zdCA9IGZhbHNlOworCQlkcm1fZHBf bXN0X3RvcG9sb2d5X21ncl9zZXRfbXN0KCZpbnRlbF9kcC0+bXN0X21nciwgaW50ZWxfZHAtPmlz X21zdCk7CisJCWRybV9zeXNmc19ob3RwbHVnX2V2ZW50KGRldik7CisJfQorCXJldHVybiAxOwor fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9tc3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5hNjU2YzIyCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHBfbXN0LmMKQEAgLTAsMCArMSw1MzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkg MjAwOCBJbnRlbCBDb3Jwb3JhdGlvbgorICogICAgICAgICAgICAgMjAxNCBSZWQgSGF0IEluYy4K KyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g YW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwg aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp bWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRo ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2Fy ZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp b25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np b24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5j bHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNv ZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VU IFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcg QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAq IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJ TiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUg TElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hF VEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5H CisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU SEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisK KyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisjaW5jbHVkZSAi aW50ZWxfZHJ2LmgiCisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgorI2luY2x1ZGUg PGRybS9kcm1fZWRpZC5oPgorCitib29sCitpbnRlbF9kcF9tc3RfY29tcHV0ZV9jb25maWcoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQkgICAgc3RydWN0IGludGVsX2NydGNfY29u ZmlnICpwaXBlX2NvbmZpZykKK3sKKwlzdHJ1Y3QgaW50ZWxfZHBfbXN0X2VuY29kZXIgKmludGVs X21zdCA9IGVuY190b19tc3QoJmVuY29kZXItPmJhc2UpOworCXN0cnVjdCBpbnRlbF9kaWdpdGFs X3BvcnQgKmludGVsX2RpZ19wb3J0ID0gaW50ZWxfbXN0LT5wcmltYXJ5OworCXN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAgPSAmaW50ZWxfZGlnX3BvcnQtPmRwOworCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKKwlpbnQgYnBwOworCWludCBsYW5lX2NvdW50LCBz bG90czsKKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2Nv bmZpZy0+YWRqdXN0ZWRfbW9kZTsKKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpmb3VuZCA9IE5V TEwsICppbnRlbF9jb25uZWN0b3I7CisJaW50IG1zdF9wYm47CisKKwlwaXBlX2NvbmZpZy0+ZHBf ZW5jb2Rlcl9pc19tc3QgPSB0cnVlOworCXBpcGVfY29uZmlnLT5oYXNfcGNoX2VuY29kZXIgPSBm YWxzZTsKKwlwaXBlX2NvbmZpZy0+aGFzX2RwX2VuY29kZXIgPSB0cnVlOworCWJwcCA9IDI0Owor CWxhbmVfY291bnQgPSA0OworCWludGVsX2RwLT5saW5rX2J3ID0gRFBfTElOS19CV181XzQ7CisJ aW50ZWxfZHAtPmxhbmVfY291bnQgPSBsYW5lX2NvdW50OworCisJcGlwZV9jb25maWctPnBpcGVf YnBwID0gMjQ7CisJcGlwZV9jb25maWctPnBvcnRfY2xvY2sgPSBkcm1fZHBfYndfY29kZV90b19s aW5rX3JhdGUoaW50ZWxfZHAtPmxpbmtfYncpOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeShpbnRl bF9jb25uZWN0b3IsICZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rvcl9saXN0LCBiYXNlLmhlYWQp IHsKKwkJaWYgKGludGVsX2Nvbm5lY3Rvci0+bmV3X2VuY29kZXIgPT0gZW5jb2RlcikgeworCQkJ Zm91bmQgPSBpbnRlbF9jb25uZWN0b3I7CisJCQlicmVhazsKKwkJfQorCX0KKworCWlmICghZm91 bmQpIHsKKwkJRFJNX0VSUk9SKCJjYW4ndCBmaW5kIGNvbm5lY3RvclxuIik7CisJCXJldHVybiBm YWxzZTsKKwl9CisKKwltc3RfcGJuID0gZHJtX2RwX2NhbGNfcGJuX21vZGUoYWRqdXN0ZWRfbW9k ZS0+Y2xvY2ssIGJwcCk7CisKKwlwaXBlX2NvbmZpZy0+cGJuID0gbXN0X3BibjsKKwlzbG90cyA9 IGRybV9kcF9maW5kX3ZjcGlfc2xvdHMoJmludGVsX2RwLT5tc3RfbWdyLCBtc3RfcGJuKTsKKwor CWludGVsX2xpbmtfY29tcHV0ZV9tX24oYnBwLCBsYW5lX2NvdW50LAorCQkJICAgICAgIGFkanVz dGVkX21vZGUtPmNydGNfY2xvY2ssCisJCQkgICAgICAgcGlwZV9jb25maWctPnBvcnRfY2xvY2ss CisJCQkgICAgICAgJnBpcGVfY29uZmlnLT5kcF9tX24pOworCisJcGlwZV9jb25maWctPmRwX21f bi50dSA9IHNsb3RzOworCXJldHVybiB0cnVlOworCit9CisKK3N0YXRpYyB2b2lkIGludGVsX2Rw X21zdF9tb2RlX3NldChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKK3sKKwlzdHJ1Y3Qg aW50ZWxfZHBfbXN0X2VuY29kZXIgKmludGVsX21zdCA9IGVuY190b19tc3QoJmVuY29kZXItPmJh c2UpOworCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gaW50ZWxf bXN0LT5wcmltYXJ5OworCisJaW50ZWxfZGRpX21vZGVfc2V0X2RwKCZpbnRlbF9kaWdfcG9ydC0+ YmFzZSk7Cit9CisKK3N0YXRpYyB2b2lkIGludGVsX21zdF9kaXNhYmxlX2RwKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyKQoreworCXN0cnVjdCBpbnRlbF9kcF9tc3RfZW5jb2RlciAqaW50 ZWxfbXN0ID0gZW5jX3RvX21zdCgmZW5jb2Rlci0+YmFzZSk7CisJc3RydWN0IGludGVsX2Nvbm5l Y3RvciAqZm91bmQgPSBOVUxMLCAqaW50ZWxfY29ubmVjdG9yOworCXN0cnVjdCBpbnRlbF9kaWdp dGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gaW50ZWxfbXN0LT5wcmltYXJ5OworCXN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAgPSAmaW50ZWxfZGlnX3BvcnQtPmRwOworCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKKwlpbnQgcmV0OworCisJRFJNX0RFQlVHX0tN UygiJWRcbiIsIGludGVsX2RwLT5hY3RpdmVfbXN0X2xpbmtzKTsKKwlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KGludGVsX2Nvbm5lY3RvciwgJmRldi0+bW9kZV9jb25maWcuY29ubmVjdG9yX2xpc3QsIGJh c2UuaGVhZCkgeworCQlpZiAoaW50ZWxfY29ubmVjdG9yLT5lbmNvZGVyID09IGVuY29kZXIpIHsK KwkJCWZvdW5kID0gaW50ZWxfY29ubmVjdG9yOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlpZiAo IWZvdW5kKQorCQlyZXR1cm47CisKKwlkcm1fZHBfbXN0X3Jlc2V0X3ZjcGlfc2xvdHMoJmludGVs X2RwLT5tc3RfbWdyLCBmb3VuZC0+cG9ydCk7CisKKwlyZXQgPSBkcm1fZHBfdXBkYXRlX3BheWxv YWRfcGFydDEoJmludGVsX2RwLT5tc3RfbWdyKTsKKwlpZiAocmV0KSB7CisJCURSTV9FUlJPUigi ZmFpbGVkIHRvIHVwZGF0ZSBwYXlsb2FkICVkXG4iLCByZXQpOworCX0KK30KKworc3RhdGljIHZv aWQgaW50ZWxfbXN0X3Bvc3RfZGlzYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl cikKK3sKKwlzdHJ1Y3QgaW50ZWxfZHBfbXN0X2VuY29kZXIgKmludGVsX21zdCA9IGVuY190b19t c3QoJmVuY29kZXItPmJhc2UpOworCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2Rp Z19wb3J0ID0gaW50ZWxfbXN0LT5wcmltYXJ5OworCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAg PSAmaW50ZWxfZGlnX3BvcnQtPmRwOworCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmZvdW5kID0g TlVMTCwgKmludGVsX2Nvbm5lY3RvcjsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rl ci0+YmFzZS5kZXY7CisJaW50IHJldDsKKwlEUk1fREVCVUdfS01TKCIlZFxuIiwgaW50ZWxfZHAt PmFjdGl2ZV9tc3RfbGlua3MpOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeShpbnRlbF9jb25uZWN0 b3IsICZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rvcl9saXN0LCBiYXNlLmhlYWQpIHsKKwkJaWYg KGludGVsX2Nvbm5lY3Rvci0+ZW5jb2RlciA9PSBlbmNvZGVyKSB7CisJCQlmb3VuZCA9IGludGVs X2Nvbm5lY3RvcjsKKwkJCWJyZWFrOworCQl9CisJfQorCisJaWYgKCFmb3VuZCkKKwkJcmV0dXJu OworCisJcmV0ID0gZHJtX2RwX2NoZWNrX2FjdF9zdGF0dXMoJmludGVsX2RwLT5tc3RfbWdyKTsK KwlpZiAocmV0KQorCQlEUk1fRVJST1IoImZhaWxlZCB0byBjaGVjayBBQ1Qgc3RhdHVzXG4iKTsK KwlyZXQgPSBkcm1fZHBfdXBkYXRlX3BheWxvYWRfcGFydDIoJmludGVsX2RwLT5tc3RfbWdyKTsK KwlpZiAocmV0KQorCQlEUk1fRVJST1IoImZhaWxlZCB0byB1cGRhdGUgcGF5bG9hZHMuXG4iKTsK KworCWRybV9kcF9tc3RfZGVhbGxvY2F0ZV92Y3BpKCZpbnRlbF9kcC0+bXN0X21nciwgZm91bmQt PnBvcnQpOworCisJaW50ZWxfZHAtPmFjdGl2ZV9tc3RfbGlua3MtLTsKKwlpZiAoaW50ZWxfZHAt PmFjdGl2ZV9tc3RfbGlua3MgPT0gMCkgeworCQlpbnRlbF9kaWdfcG9ydC0+YmFzZS5wb3N0X2Rp c2FibGUoJmludGVsX2RpZ19wb3J0LT5iYXNlKTsKKwkJaW50ZWxfZHBfc2lua19kcG1zKGludGVs X2RwLCBEUk1fTU9ERV9EUE1TX09GRik7CisJfQorfQorCitzdGF0aWMgdm9pZCBpbnRlbF9tc3Rf cHJlX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKK3sKKwlzdHJ1Y3Qg aW50ZWxfZHBfbXN0X2VuY29kZXIgKmludGVsX21zdCA9IGVuY190b19tc3QoJmVuY29kZXItPmJh c2UpOworCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gaW50ZWxf bXN0LT5wcmltYXJ5OworCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSAmaW50ZWxfZGlnX3Bv cnQtPmRwOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCWVu dW0gcG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPnBvcnQ7CisJaW50IHJldDsKKwl1aW50MzJf dCB0ZW1wOworCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmZvdW5kID0gTlVMTCwgKmludGVsX2Nv bm5lY3RvcjsKKwlpbnQgc2xvdHM7CisJc3RydWN0IGRybV9jcnRjICpjcnRjID0gZW5jb2Rlci0+ YmFzZS5jcnRjOworCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0 YyhjcnRjKTsKKworCWxpc3RfZm9yX2VhY2hfZW50cnkoaW50ZWxfY29ubmVjdG9yLCAmZGV2LT5t b2RlX2NvbmZpZy5jb25uZWN0b3JfbGlzdCwgYmFzZS5oZWFkKSB7CisJCWlmIChpbnRlbF9jb25u ZWN0b3ItPm5ld19lbmNvZGVyID09IGVuY29kZXIpIHsKKwkJCWZvdW5kID0gaW50ZWxfY29ubmVj dG9yOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlpZiAoIWZvdW5kKSB7CisJCURSTV9FUlJPUigi Y2FuJ3QgZmluZCBjb25uZWN0b3JcbiIpOworCQlyZXR1cm47CisJfQorCisJRFJNX0RFQlVHX0tN UygiJWRcbiIsIGludGVsX2RwLT5hY3RpdmVfbXN0X2xpbmtzKTsKKwlpZiAoaW50ZWxfZHAtPmFj dGl2ZV9tc3RfbGlua3MgPT0gMCkgeworCQllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RkaV9nZXRf ZW5jb2Rlcl9wb3J0KGVuY29kZXIpOworCisJCUk5MTVfV1JJVEUoUE9SVF9DTEtfU0VMKHBvcnQp LCBpbnRlbF9jcnRjLT5kZGlfcGxsX3NlbCk7CisKKwkJaW50ZWxfZHBfc2lua19kcG1zKGludGVs X2RwLCBEUk1fTU9ERV9EUE1TX09OKTsKKworCisJCWludGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4o aW50ZWxfZHApOworCQlpbnRlbF9kcF9jb21wbGV0ZV9saW5rX3RyYWluKGludGVsX2RwKTsKKwkJ aW50ZWxfZHBfc3RvcF9saW5rX3RyYWluKGludGVsX2RwKTsKKwl9CisKKwlyZXQgPSBkcm1fZHBf bXN0X2FsbG9jYXRlX3ZjcGkoJmludGVsX2RwLT5tc3RfbWdyLAorCQkJCSAgICAgICBmb3VuZC0+ cG9ydCwgaW50ZWxfY3J0Yy0+Y29uZmlnLnBibiwgJnNsb3RzKTsKKwlpZiAocmV0ID09IGZhbHNl KSB7CisJCURSTV9FUlJPUigiZmFpbGVkIHRvIGFsbG9jYXRlIHZjcGlcbiIpOworCQlyZXR1cm47 CisJfQorCisKKwlpbnRlbF9kcC0+YWN0aXZlX21zdF9saW5rcysrOworCXRlbXAgPSBJOTE1X1JF QUQoRFBfVFBfU1RBVFVTKHBvcnQpKTsKKwlJOTE1X1dSSVRFKERQX1RQX1NUQVRVUyhwb3J0KSwg dGVtcCk7CisKKwlyZXQgPSBkcm1fZHBfdXBkYXRlX3BheWxvYWRfcGFydDEoJmludGVsX2RwLT5t c3RfbWdyKTsKK30KKworc3RhdGljIHZvaWQgaW50ZWxfbXN0X2VuYWJsZV9kcChzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlcikKK3sKKwlzdHJ1Y3QgaW50ZWxfZHBfbXN0X2VuY29kZXIgKmlu dGVsX21zdCA9IGVuY190b19tc3QoJmVuY29kZXItPmJhc2UpOworCXN0cnVjdCBpbnRlbF9kaWdp dGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gaW50ZWxfbXN0LT5wcmltYXJ5OworCXN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAgPSAmaW50ZWxfZGlnX3BvcnQtPmRwOworCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5iYXNlLmRldjsKKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCWVudW0gcG9ydCBwb3J0 ID0gaW50ZWxfZGlnX3BvcnQtPnBvcnQ7CisJaW50IHJldDsKKworCURSTV9ERUJVR19LTVMoIiVk XG4iLCBpbnRlbF9kcC0+YWN0aXZlX21zdF9saW5rcyk7CisKKwlpZiAod2FpdF9mb3IoKEk5MTVf UkVBRChEUF9UUF9TVEFUVVMocG9ydCkpICYgRFBfVFBfU1RBVFVTX0FDVF9TRU5UKSwKKwkJICAg ICAxKSkKKwkJRFJNX0VSUk9SKCJUaW1lZCBvdXQgd2FpdGluZyBmb3IgQUNUIHNlbnRcbiIpOwor CisJcmV0ID0gZHJtX2RwX2NoZWNrX2FjdF9zdGF0dXMoJmludGVsX2RwLT5tc3RfbWdyKTsKKwor CXJldCA9IGRybV9kcF91cGRhdGVfcGF5bG9hZF9wYXJ0MigmaW50ZWxfZHAtPm1zdF9tZ3IpOwor fQorCitzdGF0aWMgYm9vbCBpbnRlbF9kcF9tc3RfZW5jX2dldF9od19zdGF0ZShzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCQkgICAgICBlbnVtIHBpcGUgKnBpcGUpCit7CisJc3Ry dWN0IGludGVsX2RwX21zdF9lbmNvZGVyICppbnRlbF9tc3QgPSBlbmNfdG9fbXN0KCZlbmNvZGVy LT5iYXNlKTsKKwkqcGlwZSA9IGludGVsX21zdC0+cGlwZTsKKwlyZXR1cm4gZW5jb2Rlci0+Y29u bmVjdG9yc19hY3RpdmU7Cit9CisKK3N0YXRpYyB2b2lkIGludGVsX2RwX21zdF9lbmNfZ2V0X2Nv bmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCQkJc3RydWN0IGludGVsX2Ny dGNfY29uZmlnICpwaXBlX2NvbmZpZykKK3sKKwlzdHJ1Y3QgaW50ZWxfZHBfbXN0X2VuY29kZXIg KmludGVsX21zdCA9IGVuY190b19tc3QoJmVuY29kZXItPmJhc2UpOworCXN0cnVjdCBpbnRlbF9k aWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gaW50ZWxfbXN0LT5wcmltYXJ5OworCXN0cnVj dCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5iYXNlLmNydGMpOwor CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCWVudW0gdHJhbnNj b2RlciBjcHVfdHJhbnNjb2RlciA9IGNydGMtPmNvbmZpZy5jcHVfdHJhbnNjb2RlcjsKKwl1MzIg dGVtcCwgZmxhZ3MgPSAwOworCisJcGlwZV9jb25maWctPmhhc19kcF9lbmNvZGVyID0gdHJ1ZTsK KworCXRlbXAgPSBJOTE1X1JFQUQoVFJBTlNfRERJX0ZVTkNfQ1RMKGNwdV90cmFuc2NvZGVyKSk7 CisJaWYgKHRlbXAgJiBUUkFOU19ERElfUEhTWU5DKQorCQlmbGFncyB8PSBEUk1fTU9ERV9GTEFH X1BIU1lOQzsKKwllbHNlCisJCWZsYWdzIHw9IERSTV9NT0RFX0ZMQUdfTkhTWU5DOworCWlmICh0 ZW1wICYgVFJBTlNfRERJX1BWU1lOQykKKwkJZmxhZ3MgfD0gRFJNX01PREVfRkxBR19QVlNZTkM7 CisJZWxzZQorCQlmbGFncyB8PSBEUk1fTU9ERV9GTEFHX05WU1lOQzsKKworCXN3aXRjaCAodGVt cCAmIFRSQU5TX0RESV9CUENfTUFTSykgeworCWNhc2UgVFJBTlNfRERJX0JQQ182OgorCQlwaXBl X2NvbmZpZy0+cGlwZV9icHAgPSAxODsKKwkJYnJlYWs7CisJY2FzZSBUUkFOU19ERElfQlBDXzg6 CisJCXBpcGVfY29uZmlnLT5waXBlX2JwcCA9IDI0OworCQlicmVhazsKKwljYXNlIFRSQU5TX0RE SV9CUENfMTA6CisJCXBpcGVfY29uZmlnLT5waXBlX2JwcCA9IDMwOworCQlicmVhazsKKwljYXNl IFRSQU5TX0RESV9CUENfMTI6CisJCXBpcGVfY29uZmlnLT5waXBlX2JwcCA9IDM2OworCQlicmVh azsKKwlkZWZhdWx0OgorCQlicmVhazsKKwl9CisJcGlwZV9jb25maWctPmFkanVzdGVkX21vZGUu ZmxhZ3MgfD0gZmxhZ3M7CisJaW50ZWxfZHBfZ2V0X21fbihjcnRjLCBwaXBlX2NvbmZpZyk7CisK KwlpbnRlbF9kZGlfY2xvY2tfZ2V0KCZpbnRlbF9kaWdfcG9ydC0+YmFzZSwgcGlwZV9jb25maWcp OworfQorCitzdGF0aWMgaW50IGludGVsX2RwX21zdF9nZXRfZGRjX21vZGVzKHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxf Y29ubmVjdG9yID0gdG9faW50ZWxfY29ubmVjdG9yKGNvbm5lY3Rvcik7CisJc3RydWN0IGludGVs X2RwICppbnRlbF9kcCA9IGludGVsX2Nvbm5lY3Rvci0+bXN0X3BvcnQ7CisJc3RydWN0IGVkaWQg KmVkaWQ7CisJaW50IHJldDsKKworCWVkaWQgPSBkcm1fZHBfbXN0X2dldF9lZGlkKGNvbm5lY3Rv ciwgJmludGVsX2RwLT5tc3RfbWdyLCBpbnRlbF9jb25uZWN0b3ItPnBvcnQpOworCWlmICghZWRp ZCkKKwkJcmV0dXJuIDA7CisKKwlyZXQgPSBpbnRlbF9jb25uZWN0b3JfdXBkYXRlX21vZGVzKGNv bm5lY3RvciwgZWRpZCk7CisJa2ZyZWUoZWRpZCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0 aWMgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cworaW50ZWxfbXN0X3BvcnRfZHBfZGV0ZWN0KHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqaW50ZWxfY29ubmVjdG9yID0gdG9faW50ZWxfY29ubmVjdG9yKGNvbm5lY3Rvcik7CisJc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCA9IGludGVsX2Nvbm5lY3Rvci0+bXN0X3BvcnQ7CisKKwly ZXR1cm4gZHJtX2RwX21zdF9kZXRlY3RfcG9ydCgmaW50ZWxfZHAtPm1zdF9tZ3IsIGludGVsX2Nv bm5lY3Rvci0+cG9ydCk7Cit9CisKK3N0YXRpYyBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzCitp bnRlbF9kcF9tc3RfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGJvb2wg Zm9yY2UpCit7CisJZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0dXM7CisJc3RhdHVzID0g aW50ZWxfbXN0X3BvcnRfZHBfZGV0ZWN0KGNvbm5lY3Rvcik7CisJcmV0dXJuIHN0YXR1czsKK30K Kworc3RhdGljIGludAoraW50ZWxfZHBfbXN0X3NldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubmVjdG9yLAorCQkJICBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKKwkJ CSAgdWludDY0X3QgdmFsKQoreworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAoraW50ZWxf ZHBfbXN0X2Nvbm5lY3Rvcl9kZXN0cm95KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Ip Cit7CisJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yID0gdG9faW50ZWxf Y29ubmVjdG9yKGNvbm5lY3Rvcik7CisKKwlpZiAoIUlTX0VSUl9PUl9OVUxMKGludGVsX2Nvbm5l Y3Rvci0+ZWRpZCkpCisJCWtmcmVlKGludGVsX2Nvbm5lY3Rvci0+ZWRpZCk7CisKKwlkcm1fY29u bmVjdG9yX2NsZWFudXAoY29ubmVjdG9yKTsKKwlrZnJlZShjb25uZWN0b3IpOworfQorCitzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfZnVuY3MgaW50ZWxfZHBfbXN0X2Nvbm5lY3Rv cl9mdW5jcyA9IHsKKwkuZHBtcyA9IGludGVsX2Nvbm5lY3Rvcl9kcG1zLAorCS5kZXRlY3QgPSBp bnRlbF9kcF9tc3RfZGV0ZWN0LAorCS5maWxsX21vZGVzID0gZHJtX2hlbHBlcl9wcm9iZV9zaW5n bGVfY29ubmVjdG9yX21vZGVzLAorCS5zZXRfcHJvcGVydHkgPSBpbnRlbF9kcF9tc3Rfc2V0X3By b3BlcnR5LAorCS5kZXN0cm95ID0gaW50ZWxfZHBfbXN0X2Nvbm5lY3Rvcl9kZXN0cm95LAorfTsK Kworc3RhdGljIGludCBpbnRlbF9kcF9tc3RfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IpCit7CisJcmV0dXJuIGludGVsX2RwX21zdF9nZXRfZGRjX21vZGVzKGNvbm5l Y3Rvcik7Cit9CisKK3N0YXRpYyBlbnVtIGRybV9tb2RlX3N0YXR1cworaW50ZWxfZHBfbXN0X21v ZGVfdmFsaWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJCXN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICptb2RlKQoreworCS8qIFRPRE8gLSB2YWxpZGF0ZSBtb2RlIGFnYWluc3Qg YXZhaWxhYmxlIFBCTiBmb3IgbGluayAqLworCWlmIChtb2RlLT5jbG9jayA8IDEwMDAwKQorCQly ZXR1cm4gTU9ERV9DTE9DS19MT1c7CisKKwlpZiAobW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFH X0RCTENMSykKKwkJcmV0dXJuIE1PREVfSF9JTExFR0FMOworCisJcmV0dXJuIE1PREVfT0s7Cit9 CisKK3N0cnVjdCBkcm1fZW5jb2RlciAqaW50ZWxfbXN0X2Jlc3RfZW5jb2RlcihzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yKQoreworCVdBUk5fT04oMSk7CisJcmV0dXJuIE5VTEw7Cit9 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgaW50ZWxf ZHBfbXN0X2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgPSB7CisJLmdldF9tb2RlcyA9IGludGVsX2Rw X21zdF9nZXRfbW9kZXMsCisJLm1vZGVfdmFsaWQgPSBpbnRlbF9kcF9tc3RfbW9kZV92YWxpZCwK KwkuYmVzdF9lbmNvZGVyID0gaW50ZWxfbXN0X2Jlc3RfZW5jb2RlciwKK307CisKK3ZvaWQgaW50 ZWxfZHBfbXN0X2VuY29kZXJfZGVzdHJveShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCit7 CisJc3RydWN0IGludGVsX2RwX21zdF9lbmNvZGVyICppbnRlbF9tc3QgPSBlbmNfdG9fbXN0KGVu Y29kZXIpOworCisJZHJtX2VuY29kZXJfY2xlYW51cChlbmNvZGVyKTsKKwlrZnJlZShpbnRlbF9t c3QpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2Z1bmNzIGludGVsX2Rw X21zdF9lbmNfZnVuY3MgPSB7CisJLmRlc3Ryb3kgPSBpbnRlbF9kcF9tc3RfZW5jb2Rlcl9kZXN0 cm95LAorfTsKKworc3RhdGljIGJvb2wgaW50ZWxfZHBfbXN0X2dldF9od19zdGF0ZShzdHJ1Y3Qg aW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJaWYgKGNvbm5lY3Rvci0+ZW5jb2RlcikK KwkJcmV0dXJuIHRydWU7CisJcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgc3RydWN0IGRybV9j b25uZWN0b3IgKmludGVsX2RwX2FkZF9tc3RfY29ubmVjdG9yKHN0cnVjdCBkcm1fZHBfbXN0X3Rv cG9sb2d5X21nciAqbWdyLCBzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0LCBjaGFyICpwYXRo cHJvcCkKK3sKKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gY29udGFpbmVyX29mKG1nciwg c3RydWN0IGludGVsX2RwLCBtc3RfbWdyKTsKKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpp bnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKKwlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXY7CisJc3RydWN0IGludGVs X2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yOworCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3I7CisJaW50IGk7CisKKwlpbnRlbF9jb25uZWN0b3IgPSBremFsbG9jKHNpemVvZigqaW50 ZWxfY29ubmVjdG9yKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFpbnRlbF9jb25uZWN0b3IpCisJCXJl dHVybiBOVUxMOworCisJY29ubmVjdG9yID0gJmludGVsX2Nvbm5lY3Rvci0+YmFzZTsKKwlkcm1f Y29ubmVjdG9yX2luaXQoZGV2LCBjb25uZWN0b3IsICZpbnRlbF9kcF9tc3RfY29ubmVjdG9yX2Z1 bmNzLCBEUk1fTU9ERV9DT05ORUNUT1JfRGlzcGxheVBvcnQpOworCWRybV9jb25uZWN0b3JfaGVs cGVyX2FkZChjb25uZWN0b3IsICZpbnRlbF9kcF9tc3RfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyk7 CisKKwlpbnRlbF9jb25uZWN0b3ItPnVucmVnaXN0ZXIgPSBpbnRlbF9jb25uZWN0b3JfdW5yZWdp c3RlcjsKKwlpbnRlbF9jb25uZWN0b3ItPmdldF9od19zdGF0ZSA9IGludGVsX2RwX21zdF9nZXRf aHdfc3RhdGU7CisJaW50ZWxfY29ubmVjdG9yLT5tc3RfcG9ydCA9IGludGVsX2RwOworCWludGVs X2Nvbm5lY3Rvci0+cG9ydCA9IHBvcnQ7CisKKwlmb3IgKGkgPSBQSVBFX0E7IGkgPD0gUElQRV9D OyBpKyspIHsKKwkJZHJtX21vZGVfY29ubmVjdG9yX2F0dGFjaF9lbmNvZGVyKCZpbnRlbF9jb25u ZWN0b3ItPmJhc2UsCisJCQkJCQkgICZpbnRlbF9kcC0+bXN0X2VuY29kZXJzW2ldLT5iYXNlLmJh c2UpOworCX0KKwlpbnRlbF9kcF9hZGRfcHJvcGVydGllcyhpbnRlbF9kcCwgY29ubmVjdG9yKTsK KworCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZjb25uZWN0b3ItPmJhc2UsIGRldi0+bW9k ZV9jb25maWcucGF0aF9wcm9wZXJ0eSwgMCk7CisJZHJtX21vZGVfY29ubmVjdG9yX3NldF9wYXRo X3Byb3BlcnR5KGNvbm5lY3RvciwgcGF0aHByb3ApOworCWRybV9yZWluaXRfcHJpbWFyeV9tb2Rl X2dyb3VwKGRldik7CisJZHJtX3N5c2ZzX2Nvbm5lY3Rvcl9hZGQoJmludGVsX2Nvbm5lY3Rvci0+ YmFzZSk7CisJcmV0dXJuIGNvbm5lY3RvcjsKK30KKworc3RhdGljIHZvaWQgaW50ZWxfZHBfZGVz dHJveV9tc3RfY29ubmVjdG9yKHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyLAor CQkJCQkgICBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQoreworCXN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvciA9IHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uZWN0 b3IpOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmRldjsKKwkvKiBuZWVk IHRvIG51a2UgdGhlIGNvbm5lY3RvciAqLworCW11dGV4X2xvY2soJmRldi0+bW9kZV9jb25maWcu bXV0ZXgpOworCWludGVsX2Nvbm5lY3Rvci0+dW5yZWdpc3RlcihpbnRlbF9jb25uZWN0b3IpOwor CWRybV9jb25uZWN0b3JfY2xlYW51cChjb25uZWN0b3IpOworCW11dGV4X3VubG9jaygmZGV2LT5t b2RlX2NvbmZpZy5tdXRleCk7CisJZHJtX3JlaW5pdF9wcmltYXJ5X21vZGVfZ3JvdXAoZGV2KTsK KworCURSTV9ERUJVR19LTVMoIlxuIik7Cit9CisKK3N0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5 X2NicyBtc3RfY2JzID0geworCS5hZGRfY29ubmVjdG9yID0gaW50ZWxfZHBfYWRkX21zdF9jb25u ZWN0b3IsCisJLmRlc3Ryb3lfY29ubmVjdG9yID0gaW50ZWxfZHBfZGVzdHJveV9tc3RfY29ubmVj dG9yLAorfTsKKworc3RhdGljIHN0cnVjdCBpbnRlbF9kcF9tc3RfZW5jb2RlciAqCitpbnRlbF9k cF9jcmVhdGVfZmFrZV9tc3RfZW5jb2RlcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRl bF9kaWdfcG9ydCwgZW51bSBwaXBlIHBpcGUpCit7CisJc3RydWN0IGludGVsX2RwX21zdF9lbmNv ZGVyICppbnRlbF9tc3Q7CisJc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXI7CisJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuZGV2Owor CisJaW50ZWxfbXN0ID0ga3phbGxvYyhzaXplb2YoKmludGVsX21zdCksIEdGUF9LRVJORUwpOwor CisJaWYgKCFpbnRlbF9tc3QpCisJCXJldHVybiBOVUxMOworCisJaW50ZWxfbXN0LT5waXBlID0g cGlwZTsKKwlpbnRlbF9lbmNvZGVyID0gJmludGVsX21zdC0+YmFzZTsKKwlpbnRlbF9tc3QtPnBy aW1hcnkgPSBpbnRlbF9kaWdfcG9ydDsKKworCWRybV9lbmNvZGVyX2luaXQoZGV2LCAmaW50ZWxf ZW5jb2Rlci0+YmFzZSwgJmludGVsX2RwX21zdF9lbmNfZnVuY3MsCisJCQkgRFJNX01PREVfRU5D T0RFUl9EUE1TVCk7CisKKwlpbnRlbF9lbmNvZGVyLT50eXBlID0gSU5URUxfT1VUUFVUX0RQX01T VDsKKwlpbnRlbF9lbmNvZGVyLT5jcnRjX21hc2sgPSAweDc7CisJaW50ZWxfZW5jb2Rlci0+Y2xv bmVhYmxlID0gMDsKKworCWludGVsX2VuY29kZXItPmNvbXB1dGVfY29uZmlnID0gaW50ZWxfZHBf bXN0X2NvbXB1dGVfY29uZmlnOworCWludGVsX2VuY29kZXItPm1vZGVfc2V0ID0gaW50ZWxfZHBf bXN0X21vZGVfc2V0OworCWludGVsX2VuY29kZXItPmRpc2FibGUgPSBpbnRlbF9tc3RfZGlzYWJs ZV9kcDsKKwlpbnRlbF9lbmNvZGVyLT5wb3N0X2Rpc2FibGUgPSBpbnRlbF9tc3RfcG9zdF9kaXNh YmxlX2RwOworCWludGVsX2VuY29kZXItPnByZV9lbmFibGUgPSBpbnRlbF9tc3RfcHJlX2VuYWJs ZV9kcDsKKwlpbnRlbF9lbmNvZGVyLT5lbmFibGUgPSBpbnRlbF9tc3RfZW5hYmxlX2RwOworCWlu dGVsX2VuY29kZXItPmdldF9od19zdGF0ZSA9IGludGVsX2RwX21zdF9lbmNfZ2V0X2h3X3N0YXRl OworCWludGVsX2VuY29kZXItPmdldF9jb25maWcgPSBpbnRlbF9kcF9tc3RfZW5jX2dldF9jb25m aWc7CisKKwlyZXR1cm4gaW50ZWxfbXN0OworCit9CisKK3N0YXRpYyBib29sCitpbnRlbF9kcF9j cmVhdGVfZmFrZV9tc3RfZW5jb2RlcnMoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxf ZGlnX3BvcnQpCit7CisJaW50IGk7CisJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9ICZpbnRl bF9kaWdfcG9ydC0+ZHA7CisKKwlmb3IgKGkgPSBQSVBFX0E7IGkgPD0gUElQRV9DOyBpKyspCisJ CWludGVsX2RwLT5tc3RfZW5jb2RlcnNbaV0gPSBpbnRlbF9kcF9jcmVhdGVfZmFrZV9tc3RfZW5j b2RlcihpbnRlbF9kaWdfcG9ydCwgaSk7CisJcmV0dXJuIHRydWU7Cit9CisKK2ludAoraW50ZWxf ZHBfbXN0X2VuY29kZXJfaW5pdChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdf cG9ydCwgaW50IGNvbm5fYmFzZV9pZCkKK3sKKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0g JmludGVsX2RpZ19wb3J0LT5kcDsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfZGln X3BvcnQtPmJhc2UuYmFzZS5kZXY7CisJaW50IHJldDsKKworCWludGVsX2RwLT5jYW5fbXN0ID0g dHJ1ZTsKKwlpbnRlbF9kcC0+bXN0X21nci5jYnMgPSAmbXN0X2NiczsKKworCS8qIGNyZWF0ZSBl bmNvZGVycyAqLworCWludGVsX2RwX2NyZWF0ZV9mYWtlX21zdF9lbmNvZGVycyhpbnRlbF9kaWdf cG9ydCk7CisJcmV0ID0gZHJtX2RwX21zdF90b3BvbG9neV9tZ3JfaW5pdCgmaW50ZWxfZHAtPm1z dF9tZ3IsIGRldi0+ZGV2LCAmaW50ZWxfZHAtPmF1eCwgMTYsIDMsIGNvbm5fYmFzZV9pZCk7CisJ aWYgKHJldCkgeworCQlpbnRlbF9kcC0+Y2FuX21zdCA9IGZhbHNlOworCQlyZXR1cm4gcmV0Owor CX0KKwlyZXR1cm4gMDsKK30KKwordm9pZAoraW50ZWxfZHBfbXN0X2VuY29kZXJfY2xlYW51cChz dHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCkKK3sKKwlzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwID0gJmludGVsX2RpZ19wb3J0LT5kcDsKKworCWlmICghaW50ZWxfZHAt PmNhbl9tc3QpCisJCXJldHVybjsKKworCWRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyX2Rlc3Ryb3ko JmludGVsX2RwLT5tc3RfbWdyKTsKKwkvKiBlbmNvZGVycyB3aWxsIGdldCBraWxsZWQgYnkgbm9y bWFsIGNsZWFudXAgKi8KK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggOGU0MWNkYy4u ZWRhNTEzMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTMyLDcgKzMyLDcgQEAKICNp bmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+ CiAjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4KLSNpbmNsdWRlIDxkcm0vZHJtX2RwX2hl bHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZHBfbXN0X2hlbHBlci5oPgogCiAvKioKICAqIF93 YWl0X2ZvciAtIG1hZ2ljIChyZWdpc3Rlcikgd2FpdCBtYWNybwpAQCAtMTAwLDYgKzEwMCw3IEBA CiAjZGVmaW5lIElOVEVMX09VVFBVVF9FRFAgOAogI2RlZmluZSBJTlRFTF9PVVRQVVRfRFNJIDkK ICNkZWZpbmUgSU5URUxfT1VUUFVUX1VOS05PV04gMTAKKyNkZWZpbmUgSU5URUxfT1VUUFVUX0RQ X01TVCAxMQogCiAjZGVmaW5lIElOVEVMX0RWT19DSElQX05PTkUgMAogI2RlZmluZSBJTlRFTF9E Vk9fQ0hJUF9MVkRTIDEKQEAgLTIwNyw2ICsyMDgsMTAgQEAgc3RydWN0IGludGVsX2Nvbm5lY3Rv ciB7CiAJLyogc2luY2UgUE9MTCBhbmQgSFBEIGNvbm5lY3RvcnMgbWF5IHVzZSB0aGUgc2FtZSBI UEQgbGluZSBrZWVwIHRoZSBuYXRpdmUKIAkgICBzdGF0ZSBvZiBjb25uZWN0b3ItPnBvbGxlZCBp biBjYXNlIGhvdHBsdWcgc3Rvcm0gZGV0ZWN0aW9uIGNoYW5nZXMgaXQgKi8KIAl1OCBwb2xsZWQ7 CisKKwl2b2lkICpwb3J0OyAvKiBzdG9yZSB0aGlzIG9wYXF1ZSBhcyBpdHMgaWxsZWdhbCB0byBk ZXJlZmVyZW5jZSBpdCAqLworCisJc3RydWN0IGludGVsX2RwICptc3RfcG9ydDsKIH07CiAKIHR5 cGVkZWYgc3RydWN0IGRwbGwgewpAQCAtMzQwLDYgKzM0NSw5IEBAIHN0cnVjdCBpbnRlbF9jcnRj X2NvbmZpZyB7CiAJYm9vbCBpcHNfZW5hYmxlZDsKIAogCWJvb2wgZG91YmxlX3dpZGU7CisKKwli b29sIGRwX2VuY29kZXJfaXNfbXN0OworCWludCBwYm47CiB9OwogCiBzdHJ1Y3QgaW50ZWxfcGlw ZV93bSB7CkBAIC00ODcsNiArNDk1LDcgQEAgc3RydWN0IGludGVsX2hkbWkgewogCQkJICAgICAg IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKTsKIH07CiAKK3N0cnVjdCBp bnRlbF9kcF9tc3RfZW5jb2RlcjsKICNkZWZpbmUgRFBfTUFYX0RPV05TVFJFQU1fUE9SVFMJCTB4 MTAKIAogLyoqCkBAIC01MjcsOCArNTM2LDE3IEBAIHN0cnVjdCBpbnRlbF9kcCB7CiAJdW5zaWdu ZWQgbG9uZyBsYXN0X2JhY2tsaWdodF9vZmY7CiAJYm9vbCBwc3Jfc2V0dXBfZG9uZTsKIAlib29s IHVzZV90cHMzOworCWJvb2wgY2FuX21zdDsgLyogdGhpcyBwb3J0IHN1cHBvcnRzIG1zdCAqLwor CWJvb2wgaXNfbXN0OworCWludCBhY3RpdmVfbXN0X2xpbmtzOworCS8qIGNvbm5lY3RvciBkaXJl Y3RseSBhdHRhY2hlZCAtIHdvbid0IGJlIHVzZSBmb3IgbW9kZXNldCBpbiBtc3Qgd29ybGQgKi8K IAlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICphdHRhY2hlZF9jb25uZWN0b3I7CiAKKwkvKiBtc3Qg Y29ubmVjdG9yIGxpc3QgKi8KKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICptc3RfY29ubmVjdG9y czsKKwlzdHJ1Y3QgaW50ZWxfZHBfbXN0X2VuY29kZXIgKm1zdF9lbmNvZGVyc1tJOTE1X01BWF9Q SVBFU107CisJc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyIG1zdF9tZ3I7CisKIAl1aW50 MzJfdCAoKmdldF9hdXhfY2xvY2tfZGl2aWRlcikoc3RydWN0IGludGVsX2RwICpkcCwgaW50IGlu ZGV4KTsKIAkvKgogCSAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdmFsdWUgd2UgaGF2ZSB0 byBwcm9ncmFtIHRoZSBBVVhfQ1RMCkBAIC01NTQsNiArNTcyLDEyIEBAIHN0cnVjdCBpbnRlbF9k aWdpdGFsX3BvcnQgewogCXN0cnVjdCBpbnRlbF9oZG1pIGhkbWk7CiB9OwogCitzdHJ1Y3QgaW50 ZWxfZHBfbXN0X2VuY29kZXIgeworCXN0cnVjdCBpbnRlbF9lbmNvZGVyIGJhc2U7CisJZW51bSBw aXBlIHBpcGU7CisJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqcHJpbWFyeTsKK307CisKIHN0 YXRpYyBpbmxpbmUgaW50CiB2bHZfZHBvcnRfdG9fY2hhbm5lbChzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0ICpkcG9ydCkKIHsKQEAgLTYyMSw2ICs2NDUsMTIgQEAgZW5jX3RvX2RpZ19wb3J0KHN0 cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIAlyZXR1cm4gY29udGFpbmVyX29mKGVuY29kZXIs IHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQsIGJhc2UuYmFzZSk7CiB9CiAKK3N0YXRpYyBpbmxp bmUgc3RydWN0IGludGVsX2RwX21zdF9lbmNvZGVyICoKK2VuY190b19tc3Qoc3RydWN0IGRybV9l bmNvZGVyICplbmNvZGVyKQoreworCXJldHVybiBjb250YWluZXJfb2YoZW5jb2Rlciwgc3RydWN0 IGludGVsX2RwX21zdF9lbmNvZGVyLCBiYXNlLmJhc2UpOworfQorCiBzdGF0aWMgaW5saW5lIHN0 cnVjdCBpbnRlbF9kcCAqZW5jX3RvX2ludGVsX2RwKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rl cikKIHsKIAlyZXR1cm4gJmVuY190b19kaWdfcG9ydChlbmNvZGVyKS0+ZHA7CkBAIC02ODQsNiAr NzE0LDEwIEBAIHZvaWQgaW50ZWxfZGRpX2dldF9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsCiAJCQkgIHN0cnVjdCBpbnRlbF9jcnRjX2NvbmZpZyAqcGlwZV9jb25maWcpOwog CiB2b2lkIGludGVsX2RkaV9tb2RlX3NldF9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl cik7Cit2b2lkIGludGVsX2RkaV9jbG9ja19nZXQoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCisJCQkgc3RydWN0IGludGVsX2NydGNfY29uZmlnICpwaXBlX2NvbmZpZyk7Cit2b2lkIGlu dGVsX2RkaV9mb3JjZV9hY3Qoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGJvb2wgc3Rh dGUpOwordm9pZCBpbnRlbF9kZGlfc2V0X3ZjX3BheWxvYWRfYWxsb2Moc3RydWN0IGRybV9jcnRj ICpjcnRjLCBib29sIHN0YXRlKTsKIAogLyogaW50ZWxfZGlzcGxheS5jICovCiBjb25zdCBjaGFy ICppbnRlbF9vdXRwdXRfbmFtZShpbnQgb3V0cHV0KTsKQEAgLTgwMCw2ICs4MzQsMTIgQEAgdm9p ZCBpbnRlbF9lZHBfcHNyX2Rpc2FibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7CiB2b2lk IGludGVsX2VkcF9wc3JfdXBkYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogdm9pZCBpbnRl bF9kcF9zZXRfZHJyc19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgcmVmcmVzaF9y YXRlKTsKIAoraW50IGludGVsX2RwX2hhbmRsZV9ocGRfaXJxKHN0cnVjdCBpbnRlbF9kaWdpdGFs X3BvcnQgKmRpZ3BvcnQsIGJvb2wgbG9uZ19ocGQpOwordm9pZCBpbnRlbF9kcF9hZGRfcHJvcGVy dGllcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yKTsKKworLyogaW50ZWxfZHBfbXN0LmMgKi8KK2ludCBpbnRlbF9kcF9tc3RfZW5jb2Rl cl9pbml0KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LCBpbnQgY29u bl9pZCk7Cit2b2lkIGludGVsX2RwX21zdF9lbmNvZGVyX2NsZWFudXAoc3RydWN0IGludGVsX2Rp Z2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQpOwogLyogaW50ZWxfZHNpLmMgKi8KIGJvb2wgaW50 ZWxfZHNpX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiAKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX29wcmVnaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9vcHJlZ2lvbi5jCmluZGV4IGFjZGUyOTQuLmJjZTY2YjIgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX29wcmVnaW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfb3ByZWdpb24uYwpAQCAtMzUyLDYgKzM1Miw3IEBAIGludCBpbnRlbF9vcHJlZ2lv bl9ub3RpZnlfZW5jb2RlcihzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKIAlj YXNlIElOVEVMX09VVFBVVF9VTktOT1dOOgogCWNhc2UgSU5URUxfT1VUUFVUX0RJU1BMQVlQT1JU OgogCWNhc2UgSU5URUxfT1VUUFVUX0hETUk6CisJY2FzZSBJTlRFTF9PVVRQVVRfRFBfTVNUOgog CQl0eXBlID0gRElTUExBWV9UWVBFX0VYVEVSTkFMX0ZMQVRfUEFORUw7CiAJCWJyZWFrOwogCWNh c2UgSU5URUxfT1VUUFVUX0VEUDoKLS0gCjEuOS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2RyaS1kZXZlbAo=