From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v3 24/24] x86/emul: Use system-segment relative memory accesses Date: Wed, 30 Nov 2016 13:50:41 +0000 Message-ID: <1480513841-7565-25-git-send-email-andrew.cooper3@citrix.com> References: <1480513841-7565-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1480513841-7565-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , Jan Beulich List-Id: xen-devel@lists.xenproject.org V2l0aCBodm1fdmlydHVhbF90b19saW5lYXJfYWRkcigpIGNhcGFibGUgb2YgZG9pbmcgcHJvcGVy IHN5c3RlbS1zZWdtZW50CnJlbGF0aXZlIG1lbW9yeSBhY2Nlc3NlcywgYXZvaWQgb3Blbi1jb2Rp bmcgdGhlIGFkZHJlc3MgYW5kIGxpbWl0IGNhbGN1bGF0aW9ucwpsb2NhbGx5LgoKV2hlbiBhIHRh YmxlIHNwYW5zIHRoZSA0R0IgYm91bmRhcnkgKDMyYml0KSBvciBub24tY2Fub25pY2FsIGJvdW5k YXJ5ICg2NGJpdCksCnNlZ21lbnRhdGlvbiBlcnJvcnMgYXJlIG5vdyByYWlzZWQuICBQcmV2aW91 c2x5LCB0aGUgdXNlIG9mIHg4Nl9zZWdfbm9uZQpyZXN1bHRlZCBpbiBzZWdtZW50YXRpb24gYmVp bmcgc2tpcHBlZCwgYW5kIHRoZSBsaW5lYXIgYWRkcmVzcyBiZWluZyB0cnVuY2F0ZWQKdGhyb3Vn aCB0aGUgcGFnZXdhbGssIGFuZCBwb3NzaWJseSBjb21pbmcgb3V0IHZhbGlkIG9uIHRoZSBmYXIg c2lkZS4KClNpZ25lZC1vZmYtYnk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJp eC5jb20+ClNpZ25lZC1vZmYtYnk6IEphbiBCZXVsaWNoIDxKQmV1bGljaEBzdXNlLmNvbT4KUmV2 aWV3ZWQtYnk6IEdlb3JnZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAY2l0cml4LmNvbT4KLS0tCnYy OgogKiBTaG9ydGVuIGV4Y2VwdGlvbiBoYW5kbGluZwogKiBSZXBsYWNlIC0+Y21weGNoZygpIGFz c2VydGlvbiB3aXRoIHByb3BlciBleGNlcHRpb24gaGFuZGxpbmcKLS0tCiB4ZW4vYXJjaC94ODYv aHZtL2h2bS5jICAgICAgICAgICAgICAgICB8ICAgOCArKysKIHhlbi9hcmNoL3g4Ni94ODZfZW11 bGF0ZS94ODZfZW11bGF0ZS5jIHwgMTIzICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LQogMiBmaWxlcyBjaGFuZ2VkLCA4NSBpbnNlcnRpb25zKCspLCA0NiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jIGIveGVuL2FyY2gveDg2L2h2bS9odm0u YwppbmRleCA0MjZlZGVlLi41OTkzNjNiIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL2h2 bS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKQEAgLTI0NzAsNiArMjQ3MCwxNCBAQCBi b29sX3QgaHZtX3ZpcnR1YWxfdG9fbGluZWFyX2FkZHIoCiAgICAgdW5zaWduZWQgbG9uZyBhZGRy ID0gb2Zmc2V0LCBsYXN0X2J5dGU7CiAgICAgYm9vbF90IG9rYXkgPSAwOwogCisgICAgLyoKKyAg ICAgKiBUaGVzZSBjaGVja3MgYXJlIGZvciBhIG1lbW9yeSBhY2Nlc3MgdGhyb3VnaCBhbiBhY3Rp dmUgc2VnbWVudC4KKyAgICAgKgorICAgICAqIEl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlIGFjY2Vz cyByaWdodHMgb2YgcmVnIGFyZSBzdWl0YWJsZSBmb3Igc2VnIChhbmQKKyAgICAgKiB0aGF0IHRo aXMgaXMgZW5mb3JjZWQgYXQgdGhlIHBvaW50IHRoYXQgc2VnIGlzIGxvYWRlZCkuCisgICAgICov CisgICAgQVNTRVJUKHNlZyA8IHg4Nl9zZWdfbm9uZSk7CisKICAgICBpZiAoICEoY3VycmVudC0+ YXJjaC5odm1fdmNwdS5ndWVzdF9jclswXSAmIFg4Nl9DUjBfUEUpICkKICAgICB7CiAgICAgICAg IC8qCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYyBi L3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCmluZGV4IDBmYjJjMDkuLmMx OGFkYmUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5j CisrKyBiL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCkBAIC0xMTgxLDIw ICsxMTgxLDM2IEBAIHN0YXRpYyBpbnQgaW9wb3J0X2FjY2Vzc19jaGVjaygKICAgICAgICAgcmV0 dXJuIHJjOwogCiAgICAgLyogRW5zdXJlIHRoZSBUU1MgaGFzIGFuIGlvLWJpdG1hcC1vZmZzZXQg ZmllbGQuICovCi0gICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKHRyLmF0dHIuZmllbGRzLnR5cGUg IT0gMHhiIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHRyLmxpbWl0IDwgMHg2NywgRVhD X0dQLCAwKTsKKyAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYodHIuYXR0ci5maWVsZHMudHlwZSAh PSAweGIsIEVYQ19HUCwgMCk7CiAKLSAgICBpZiAoIChyYyA9IHJlYWRfdWxvbmcoeDg2X3NlZ19u b25lLCB0ci5iYXNlICsgMHg2NiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmlvYm1wLCAy LCBjdHh0LCBvcHMpKSApCisgICAgc3dpdGNoICggcmMgPSByZWFkX3Vsb25nKHg4Nl9zZWdfdHIs IDB4NjYsICZpb2JtcCwgMiwgY3R4dCwgb3BzKSApCisgICAgeworICAgIGNhc2UgWDg2RU1VTF9P S0FZOgorICAgICAgICBicmVhazsKKworICAgIGNhc2UgWDg2RU1VTF9FWENFUFRJT046CisgICAg ICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZighY3R4dC0+ZXZlbnRfcGVuZGluZywgRVhDX0dQLCAw KTsKKyAgICAgICAgLyogZmFsbHRocm91Z2ggKi8KKworICAgIGRlZmF1bHQ6CiAgICAgICAgIHJl dHVybiByYzsKKyAgICB9CiAKLSAgICAvKiBFbnN1cmUgVFNTIGluY2x1ZGVzIHR3byBieXRlcyBp bmNsdWRpbmcgYnl0ZSBjb250YWluaW5nIGZpcnN0IHBvcnQuICovCi0gICAgaW9ibXAgKz0gZmly c3RfcG9ydCAvIDg7Ci0gICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKHRyLmxpbWl0IDw9IGlvYm1w LCBFWENfR1AsIDApOworICAgIC8qIFJlYWQgdHdvIGJ5dGVzIGluY2x1ZGluZyBieXRlIGNvbnRh aW5pbmcgZmlyc3QgcG9ydC4gKi8KKyAgICBzd2l0Y2ggKCByYyA9IHJlYWRfdWxvbmcoeDg2X3Nl Z190ciwgaW9ibXAgKyBmaXJzdF9wb3J0IC8gOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJmlvYm1wLCAyLCBjdHh0LCBvcHMpICkKKyAgICB7CisgICAgY2FzZSBYODZFTVVMX09LQVk6 CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBYODZFTVVMX0VYQ0VQVElPTjoKKyAgICAgICAg Z2VuZXJhdGVfZXhjZXB0aW9uX2lmKCFjdHh0LT5ldmVudF9wZW5kaW5nLCBFWENfR1AsIDApOwor ICAgICAgICAvKiBmYWxsdGhyb3VnaCAqLwogCi0gICAgaWYgKCAocmMgPSByZWFkX3Vsb25nKHg4 Nl9zZWdfbm9uZSwgdHIuYmFzZSArIGlvYm1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAm aW9ibXAsIDIsIGN0eHQsIG9wcykpICkKKyAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gcmM7 CisgICAgfQorCiAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKGlvYm1wICYgKCgoMSA8PCBieXRl cykgLSAxKSA8PCAoZmlyc3RfcG9ydCAmIDcpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg RVhDX0dQLCAwKTsKIApAQCAtMTMxNyw5ICsxMzMzLDEyIEBAIHJlYWxtb2RlX2xvYWRfc2VnKAog ICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0LAogICAgIGNvbnN0IHN0cnVjdCB4ODZf ZW11bGF0ZV9vcHMgKm9wcykKIHsKLSAgICBpbnQgcmMgPSBvcHMtPnJlYWRfc2VnbWVudChzZWcs IHNyZWcsIGN0eHQpOworICAgIGludCByYzsKKworICAgIGlmICggIW9wcy0+cmVhZF9zZWdtZW50 ICkKKyAgICAgICAgcmV0dXJuIFg4NkVNVUxfVU5IQU5ETEVBQkxFOwogCi0gICAgaWYgKCAhcmMg KQorICAgIGlmICggKHJjID0gb3BzLT5yZWFkX3NlZ21lbnQoc2VnLCBzcmVnLCBjdHh0KSkgPT0g WDg2RU1VTF9PS0FZICkKICAgICB7CiAgICAgICAgIHNyZWctPnNlbCAgPSBzZWw7CiAgICAgICAg IHNyZWctPmJhc2UgPSAodWludDMyX3Qpc2VsIDw8IDQ7CkBAIC0xMzM2LDcgKzEzNTUsNyBAQCBw cm90bW9kZV9sb2FkX3NlZygKICAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCwKICAg ICBjb25zdCBzdHJ1Y3QgeDg2X2VtdWxhdGVfb3BzICpvcHMpCiB7Ci0gICAgc3RydWN0IHNlZ21l bnRfcmVnaXN0ZXIgZGVzY3RhYjsKKyAgICBlbnVtIHg4Nl9zZWdtZW50IHNlbF9zZWcgPSAoc2Vs ICYgNCkgPyB4ODZfc2VnX2xkdHIgOiB4ODZfc2VnX2dkdHI7CiAgICAgc3RydWN0IHsgdWludDMy X3QgYSwgYjsgfSBkZXNjOwogICAgIHVpbnQ4X3QgZHBsLCBycGw7CiAgICAgaW50IGNwbCA9IGdl dF9jcGwoY3R4dCwgb3BzKTsKQEAgLTEzNjksMjEgKzEzODgsMTkgQEAgcHJvdG1vZGVfbG9hZF9z ZWcoCiAgICAgaWYgKCAhaXNfeDg2X3VzZXJfc2VnbWVudChzZWcpICYmIChzZWwgJiA0KSApCiAg ICAgICAgIGdvdG8gcmFpc2VfZXhuOwogCi0gICAgaWYgKCAocmMgPSBvcHMtPnJlYWRfc2VnbWVu dCgoc2VsICYgNCkgPyB4ODZfc2VnX2xkdHIgOiB4ODZfc2VnX2dkdHIsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmZGVzY3RhYiwgY3R4dCkpICkKLSAgICAgICAgcmV0dXJuIHJj OwotCi0gICAgLyogU2VnbWVudCBub3QgdmFsaWQgZm9yIHVzZSAoY29va2VkIG1lYW5pbmcgb2Yg LnApPyAqLwotICAgIGlmICggIWRlc2N0YWIuYXR0ci5maWVsZHMucCApCi0gICAgICAgIGdvdG8g cmFpc2VfZXhuOworICAgIHN3aXRjaCAoIHJjID0gb3BzLT5yZWFkKHNlbF9zZWcsIHNlbCAmIDB4 ZmZmOCwgJmRlc2MsIHNpemVvZihkZXNjKSwgY3R4dCkgKQorICAgIHsKKyAgICBjYXNlIFg4NkVN VUxfT0tBWToKKyAgICAgICAgYnJlYWs7CiAKLSAgICAvKiBDaGVjayBhZ2FpbnN0IGRlc2NyaXB0 b3IgdGFibGUgbGltaXQuICovCi0gICAgaWYgKCAoKHNlbCAmIDB4ZmZmOCkgKyA3KSA+IGRlc2N0 YWIubGltaXQgKQotICAgICAgICBnb3RvIHJhaXNlX2V4bjsKKyAgICBjYXNlIFg4NkVNVUxfRVhD RVBUSU9OOgorICAgICAgICBpZiAoICFjdHh0LT5ldmVudF9wZW5kaW5nICkKKyAgICAgICAgICAg IGdvdG8gcmFpc2VfZXhuOworICAgICAgICAvKiBmYWxsdGhyb3VnaCAqLwogCi0gICAgaWYgKCAo cmMgPSBvcHMtPnJlYWQoeDg2X3NlZ19ub25lLCBkZXNjdGFiLmJhc2UgKyAoc2VsICYgMHhmZmY4 KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAmZGVzYywgc2l6ZW9mKGRlc2MpLCBjdHh0KSkg KQorICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiByYzsKKyAgICB9CiAKICAgICBpZiAoICFp c194ODZfdXNlcl9zZWdtZW50KHNlZykgKQogICAgIHsKQEAgLTE0NzEsOSArMTQ4OCwyMCBAQCBw cm90bW9kZV9sb2FkX3NlZygKICAgICB7CiAgICAgICAgIHVpbnQzMl90IG5ld19kZXNjX2IgPSBk ZXNjLmIgfCBhX2ZsYWc7CiAKLSAgICAgICAgaWYgKCAocmMgPSBvcHMtPmNtcHhjaGcoeDg2X3Nl Z19ub25lLCBkZXNjdGFiLmJhc2UgKyAoc2VsICYgMHhmZmY4KSArIDQsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZkZXNjLmIsICZuZXdfZGVzY19iLCA0LCBjdHh0KSkgIT0gMCAp CisgICAgICAgIHN3aXRjaCAoIChyYyA9IG9wcy0+Y21weGNoZyhzZWxfc2VnLCAoc2VsICYgMHhm ZmY4KSArIDQsICZkZXNjLmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm bmV3X2Rlc2NfYiwgc2l6ZW9mKGRlc2MuYiksIGN0eHQpKSApCisgICAgICAgIHsKKyAgICAgICAg Y2FzZSBYODZFTVVMX09LQVk6CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFg4 NkVNVUxfRVhDRVBUSU9OOgorICAgICAgICAgICAgaWYgKCAhY3R4dC0+ZXZlbnRfcGVuZGluZyAp CisgICAgICAgICAgICAgICAgZ290byByYWlzZV9leG47CisgICAgICAgICAgICAvKiBmYWxsdGhy b3VnaCAqLworCisgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gcmM7CisgICAg ICAgIH0KIAogICAgICAgICAvKiBGb3JjZSB0aGUgQWNjZXNzZWQgZmxhZyBpbiBvdXIgbG9jYWwg Y29weS4gKi8KICAgICAgICAgZGVzYy5iID0gbmV3X2Rlc2NfYjsKQEAgLTE1MDcsOCArMTUzNSw3 IEBAIGxvYWRfc2VnKAogICAgIHN0cnVjdCBzZWdtZW50X3JlZ2lzdGVyIHJlZzsKICAgICBpbnQg cmM7CiAKLSAgICBpZiAoIChvcHMtPnJlYWRfc2VnbWVudCA9PSBOVUxMKSB8fAotICAgICAgICAg KG9wcy0+d3JpdGVfc2VnbWVudCA9PSBOVUxMKSApCisgICAgaWYgKCAhb3BzLT53cml0ZV9zZWdt ZW50ICkKICAgICAgICAgcmV0dXJuIFg4NkVNVUxfVU5IQU5ETEVBQkxFOwogCiAgICAgaWYgKCAh c3JlZyApCkBAIC0xNjM2LDggKzE2NjMsNyBAQCBzdGF0aWMgaW50IGluamVjdF9zd2ludChlbnVt IHg4Nl9zd2ludF90eXBlIHR5cGUsCiAgICAgICAgIGlmICggIWluX3JlYWxtb2RlKGN0eHQsIG9w cykgKQogICAgICAgICB7CiAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaWR0ZV9zaXplLCBpZHRl X29mZnNldDsKLSAgICAgICAgICAgIHN0cnVjdCBzZWdtZW50X3JlZ2lzdGVyIGlkdHI7Ci0gICAg ICAgICAgICB1aW50MzJfdCBpZHRlX2N0bDsKKyAgICAgICAgICAgIHN0cnVjdCB7IHVpbnQzMl90 IGEsIGIsIGMsIGQ7IH0gaWR0ZTsKICAgICAgICAgICAgIGludCBsbSA9IGluX2xvbmdtb2RlKGN0 eHQsIG9wcyk7CiAKICAgICAgICAgICAgIGlmICggbG0gPCAwICkKQEAgLTE2NjAsMjQgKzE2ODYs MzAgQEAgc3RhdGljIGludCBpbmplY3Rfc3dpbnQoZW51bSB4ODZfc3dpbnRfdHlwZSB0eXBlLAog ICAgICAgICAgICAgICAgICAoKGN0eHQtPnJlZ3MtPmVmbGFncyAmIEVGTEdfSU9QTCkgIT0gRUZM R19JT1BMKSApCiAgICAgICAgICAgICAgICAgZ290byByYWlzZV9leG47CiAKLSAgICAgICAgICAg IGZhaWxfaWYob3BzLT5yZWFkX3NlZ21lbnQgPT0gTlVMTCk7CiAgICAgICAgICAgICBmYWlsX2lm KG9wcy0+cmVhZCA9PSBOVUxMKTsKLSAgICAgICAgICAgIGlmICggKHJjID0gb3BzLT5yZWFkX3Nl Z21lbnQoeDg2X3NlZ19pZHRyLCAmaWR0ciwgY3R4dCkpICkKLSAgICAgICAgICAgICAgICBnb3Rv IGRvbmU7Ci0KLSAgICAgICAgICAgIGlmICggKGlkdGVfb2Zmc2V0ICsgaWR0ZV9zaXplIC0gMSkg PiBpZHRyLmxpbWl0ICkKLSAgICAgICAgICAgICAgICBnb3RvIHJhaXNlX2V4bjsKIAogICAgICAg ICAgICAgLyoKLSAgICAgICAgICAgICAqIFNob3VsZCBzdHJpY3RseSBzcGVha2luZyByZWFkIGFs bCA4LzE2IGJ5dGVzIG9mIGFuIGVudHJ5LAotICAgICAgICAgICAgICogYnV0IHdlIGN1cnJlbnRs eSBvbmx5IGNhcmUgYWJvdXQgdGhlIGRwbCBhbmQgcHJlc2VudCBiaXRzLgorICAgICAgICAgICAg ICogUmVhZCBhbGwgOC8xNiBieXRlcyBzbyB0aGUgaWR0ciBsaW1pdCBjaGVjayBpcyBhcHBsaWVk IHByb3Blcmx5CisgICAgICAgICAgICAgKiB0byB0aGlzIGVudHJ5LCBldmVuIHRob3VnaCB3ZSBv bmx5IGVuZCB1cCBsb29raW5nIGF0IHRoZSAybmQKKyAgICAgICAgICAgICAqIHdvcmQuCiAgICAg ICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmICggKHJjID0gb3BzLT5yZWFkKHg4Nl9zZWdfbm9u ZSwgaWR0ci5iYXNlICsgaWR0ZV9vZmZzZXQgKyA0LAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJmlkdGVfY3RsLCBzaXplb2YoaWR0ZV9jdGwpLCBjdHh0KSkgKQotICAgICAgICAg ICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgICAgIHN3aXRjaCAoIHJjID0gb3BzLT5yZWFkKHg4 Nl9zZWdfaWR0ciwgaWR0ZV9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmaWR0ZSwgaWR0ZV9zaXplLCBjdHh0KSApCisgICAgICAgICAgICB7CisgICAgICAgICAg ICBjYXNlIFg4NkVNVUxfT0tBWToKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg ICAgY2FzZSBYODZFTVVMX0VYQ0VQVElPTjoKKyAgICAgICAgICAgICAgICBpZiAoICFjdHh0LT5l dmVudF9wZW5kaW5nICkKKyAgICAgICAgICAgICAgICAgICAgZ290byByYWlzZV9leG47CisgICAg ICAgICAgICAgICAgLyogZmFsbHRocm91Z2ggKi8KKworICAgICAgICAgICAgZGVmYXVsdDoKKyAg ICAgICAgICAgICAgICByZXR1cm4gcmM7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8q IElzIHRoaXMgZW50cnkgcHJlc2VudD8gKi8KLSAgICAgICAgICAgIGlmICggIShpZHRlX2N0bCAm ICgxdSA8PCAxNSkpICkKKyAgICAgICAgICAgIGlmICggIShpZHRlLmIgJiAoMXUgPDwgMTUpKSAp CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgZmF1bHRfdHlwZSA9IEVYQ19OUDsKICAg ICAgICAgICAgICAgICBnb3RvIHJhaXNlX2V4bjsKQEAgLTE2ODYsMTIgKzE3MTgsMTEgQEAgc3Rh dGljIGludCBpbmplY3Rfc3dpbnQoZW51bSB4ODZfc3dpbnRfdHlwZSB0eXBlLAogICAgICAgICAg ICAgLyogaWNlYnAgY291bnRzIGFzIGEgaGFyZHdhcmUgZXZlbnQsIGFuZCBieXBhc3NlcyB0aGUg ZHBsIGNoZWNrLiAqLwogICAgICAgICAgICAgaWYgKCB0eXBlICE9IHg4Nl9zd2ludF9pY2VicCAp CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RydWN0IHNlZ21lbnRfcmVnaXN0ZXIg c3M7CisgICAgICAgICAgICAgICAgaW50IGNwbCA9IGdldF9jcGwoY3R4dCwgb3BzKTsKIAotICAg ICAgICAgICAgICAgIGlmICggKHJjID0gb3BzLT5yZWFkX3NlZ21lbnQoeDg2X3NlZ19zcywgJnNz LCBjdHh0KSkgKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgICAgICAg ICAgZmFpbF9pZihjcGwgPCAwKTsKIAotICAgICAgICAgICAgICAgIGlmICggc3MuYXR0ci5maWVs ZHMuZHBsID4gKChpZHRlX2N0bCA+PiAxMykgJiAzKSApCisgICAgICAgICAgICAgICAgaWYgKCBj cGwgPiAoKGlkdGUuYiA+PiAxMykgJiAzKSApCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmFp c2VfZXhuOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0tIAoyLjEuNAoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxp c3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZl bAo=