From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH 1/7] x86/mm: Improvements to PV l1e mapping helpers Date: Tue, 12 Sep 2017 13:14:40 +0100 Message-ID: <1505218486-4416-2-git-send-email-andrew.cooper3@citrix.com> References: <1505218486-4416-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: <1505218486-4416-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 , Wei Liu , Jan Beulich List-Id: xen-devel@lists.xenproject.org RHJvcCBndWVzdF91bm1hcF9sMWUoKSBhbmQgdXNlIHVubWFwX2RvbWFpbl9wYWdlKCkgZGlyZWN0 bHkuICBUaGlzIHdpbGwKc2ltcGxpZnkgZnV0dXJlIGNsZWFudXAuICBSZW5hbWUgZ3Vlc3RfbWFw X2wxZSgpIHRvIG1hcF9ndWVzdF9sMWUoKSB0byBjbG9zZXIKbWF0Y2ggdGhlIG1hcHBpbmcgbm9t ZW5jbGF0dXJlLgoKU3dpdGNoIG1hcF9ndWVzdF9sMWUoKSB0byB1c2luZyBtZm5fdC4gIENvcnJl Y3QgdGhlIGNvbW1lbnQgdG8gaW5kaWNhdGUgdGhhdAppdCB0YWtlcyBhIGxpbmVhciBhZGRyZXNz IChub3QgYSB2aXJ0dWFsIGFkZHJlc3MpLCBhbmQgY29ycmVjdCB0aGUgcGFyYW1ldGVyCm5hbWUu CgpObyBmdW5jdGlvbmFsIGNoYW5nZS4KClNpZ25lZC1vZmYtYnk6IEFuZHJldyBDb29wZXIgPGFu ZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Ci0tLQpDQzogSmFuIEJldWxpY2ggPEpCZXVsaWNoQHN1 c2UuY29tPgpDQzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KLS0tCiB4ZW4vYXJjaC94 ODYvbW0uYyB8IDg1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0MSBpbnNlcnRpb25zKCspLCA0NCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0uYyBiL3hlbi9hcmNoL3g4Ni9tbS5j CmluZGV4IGU0ZmE2MGUuLmVmYjM5OTUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS5jCisr KyBiL3hlbi9hcmNoL3g4Ni9tbS5jCkBAIC01MzQsMjAgKzUzNCwyMyBAQCB2b2lkIHVwZGF0ZV9j cjMoc3RydWN0IHZjcHUgKnYpCiAgICAgbWFrZV9jcjModiwgY3IzX21mbik7CiB9CiAKLS8qIEdl dCBhIG1hcHBpbmcgb2YgYSBQViBndWVzdCdzIGwxZSBmb3IgdGhpcyB2aXJ0dWFsIGFkZHJlc3Mu ICovCi1zdGF0aWMgbDFfcGdlbnRyeV90ICpndWVzdF9tYXBfbDFlKHVuc2lnbmVkIGxvbmcgYWRk ciwgdW5zaWduZWQgbG9uZyAqZ2wxbWZuKQorLyoKKyAqIEdldCBhIG1hcHBpbmcgb2YgYSBQViBn dWVzdCdzIGwxZSBmb3IgdGhpcyBsaW5lYXIgYWRkcmVzcy4gIFRoZSByZXR1cm4KKyAqIHBvaW50 ZXIgc2hvdWxkIGJlIHVubWFwcGVkIHVzaW5nIHVubWFwX2RvbWFpbl9wYWdlKCkuCisgKi8KK3N0 YXRpYyBsMV9wZ2VudHJ5X3QgKm1hcF9ndWVzdF9sMWUodW5zaWduZWQgbG9uZyBsaW5lYXIsIG1m bl90ICpnbDFtZm4pCiB7CiAgICAgbDJfcGdlbnRyeV90IGwyZTsKIAogICAgIEFTU0VSVCghcGFn aW5nX21vZGVfdHJhbnNsYXRlKGN1cnJlbnQtPmRvbWFpbikpOwogICAgIEFTU0VSVCghcGFnaW5n X21vZGVfZXh0ZXJuYWwoY3VycmVudC0+ZG9tYWluKSk7CiAKLSAgICBpZiAoIHVubGlrZWx5KCFf X2FkZHJfb2soYWRkcikpICkKKyAgICBpZiAoIHVubGlrZWx5KCFfX2FkZHJfb2sobGluZWFyKSkg KQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIEZpbmQgdGhpcyBsMWUgYW5kIGl0cyBl bmNsb3NpbmcgbDFtZm4gaW4gdGhlIGxpbmVhciBtYXAuICovCiAgICAgaWYgKCBfX2NvcHlfZnJv bV91c2VyKCZsMmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZfX2xpbmVhcl9sMl90YWJs ZVtsMl9saW5lYXJfb2Zmc2V0KGFkZHIpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJl9f bGluZWFyX2wyX3RhYmxlW2wyX2xpbmVhcl9vZmZzZXQobGluZWFyKV0sCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNpemVvZihsMl9wZ2VudHJ5X3QpKSApCiAgICAgICAgIHJldHVybiBOVUxM OwogCkBAIC01NTUsMTYgKzU1OCw5IEBAIHN0YXRpYyBsMV9wZ2VudHJ5X3QgKmd1ZXN0X21hcF9s MWUodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nICpnbDFtZm4pCiAgICAgaWYgKCAo bDJlX2dldF9mbGFncyhsMmUpICYgKF9QQUdFX1BSRVNFTlQgfCBfUEFHRV9QU0UpKSAhPSBfUEFH RV9QUkVTRU5UICkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAqZ2wxbWZuID0gbDJlX2dl dF9wZm4obDJlKTsKLQotICAgIHJldHVybiAobDFfcGdlbnRyeV90ICopbWFwX2RvbWFpbl9wYWdl KF9tZm4oKmdsMW1mbikpICsKLSAgICAgICAgICAgbDFfdGFibGVfb2Zmc2V0KGFkZHIpOwotfQor ICAgICpnbDFtZm4gPSBsMmVfZ2V0X21mbihsMmUpOwogCi0vKiBQdWxsIGRvd24gdGhlIG1hcHBp bmcgd2UgZ290IGZyb20gZ3Vlc3RfbWFwX2wxZSgpLiAqLwotc3RhdGljIGlubGluZSB2b2lkIGd1 ZXN0X3VubWFwX2wxZSh2b2lkICpwKQotewotICAgIHVubWFwX2RvbWFpbl9wYWdlKHApOworICAg IHJldHVybiAobDFfcGdlbnRyeV90ICopbWFwX2RvbWFpbl9wYWdlKCpnbDFtZm4pICsgbDFfdGFi bGVfb2Zmc2V0KGxpbmVhcik7CiB9CiAKIC8qIFJlYWQgYSBQViBndWVzdCdzIGwxZSB0aGF0IG1h cHMgdGhpcyBsaW5lYXIgYWRkcmVzcy4gKi8KQEAgLTM5NzcsMzAgKzM5NzMsMzAgQEAgc3RhdGlj IGludCBjcmVhdGVfZ3JhbnRfdmFfbWFwcGluZygKIHsKICAgICBsMV9wZ2VudHJ5X3QgKnBsMWUs IG9sMWU7CiAgICAgc3RydWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKLSAgICB1bnNpZ25lZCBs b25nIGdsMW1mbjsKKyAgICBtZm5fdCBnbDFtZm47CiAgICAgc3RydWN0IHBhZ2VfaW5mbyAqbDFw ZzsKICAgICBpbnQgb2theTsKIAogICAgIG5sMWUgPSBhZGp1c3RfZ3Vlc3RfbDFlKG5sMWUsIGQp OwogCi0gICAgcGwxZSA9IGd1ZXN0X21hcF9sMWUodmEsICZnbDFtZm4pOworICAgIHBsMWUgPSBt YXBfZ3Vlc3RfbDFlKHZhLCAmZ2wxbWZuKTsKICAgICBpZiAoICFwbDFlICkKICAgICB7CiAgICAg ICAgIGdkcHJpbnRrKFhFTkxPR19XQVJOSU5HLCAiQ291bGQgbm90IGZpbmQgTDEgUFRFIGZvciBh ZGRyZXNzICVseFxuIiwgdmEpOwogICAgICAgICByZXR1cm4gR05UU1RfZ2VuZXJhbF9lcnJvcjsK ICAgICB9CiAKLSAgICBpZiAoICFnZXRfcGFnZV9mcm9tX21mbihfbWZuKGdsMW1mbiksIGN1cnJl bnQtPmRvbWFpbikgKQorICAgIGlmICggIWdldF9wYWdlX2Zyb21fbWZuKGdsMW1mbiwgY3VycmVu dC0+ZG9tYWluKSApCiAgICAgewotICAgICAgICBndWVzdF91bm1hcF9sMWUocGwxZSk7CisgICAg ICAgIHVubWFwX2RvbWFpbl9wYWdlKHBsMWUpOwogICAgICAgICByZXR1cm4gR05UU1RfZ2VuZXJh bF9lcnJvcjsKICAgICB9CiAKLSAgICBsMXBnID0gbWZuX3RvX3BhZ2UoX21mbihnbDFtZm4pKTsK KyAgICBsMXBnID0gbWZuX3RvX3BhZ2UoZ2wxbWZuKTsKICAgICBpZiAoICFwYWdlX2xvY2sobDFw ZykgKQogICAgIHsKICAgICAgICAgcHV0X3BhZ2UobDFwZyk7Ci0gICAgICAgIGd1ZXN0X3VubWFw X2wxZShwbDFlKTsKKyAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2UocGwxZSk7CiAgICAgICAgIHJl dHVybiBHTlRTVF9nZW5lcmFsX2Vycm9yOwogICAgIH0KIApAQCAtNDAwOCwxNiArNDAwNCwxNiBA QCBzdGF0aWMgaW50IGNyZWF0ZV9ncmFudF92YV9tYXBwaW5nKAogICAgIHsKICAgICAgICAgcGFn ZV91bmxvY2sobDFwZyk7CiAgICAgICAgIHB1dF9wYWdlKGwxcGcpOwotICAgICAgICBndWVzdF91 bm1hcF9sMWUocGwxZSk7CisgICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKHBsMWUpOwogICAgICAg ICByZXR1cm4gR05UU1RfZ2VuZXJhbF9lcnJvcjsKICAgICB9CiAKICAgICBvbDFlID0gKnBsMWU7 Ci0gICAgb2theSA9IFVQREFURV9FTlRSWShsMSwgcGwxZSwgb2wxZSwgbmwxZSwgZ2wxbWZuLCB2 LCAwKTsKKyAgICBva2F5ID0gVVBEQVRFX0VOVFJZKGwxLCBwbDFlLCBvbDFlLCBubDFlLCBtZm5f eChnbDFtZm4pLCB2LCAwKTsKIAogICAgIHBhZ2VfdW5sb2NrKGwxcGcpOwogICAgIHB1dF9wYWdl KGwxcGcpOwotICAgIGd1ZXN0X3VubWFwX2wxZShwbDFlKTsKKyAgICB1bm1hcF9kb21haW5fcGFn ZShwbDFlKTsKIAogICAgIGlmICggb2theSApCiAgICAgICAgIHB1dF9wYWdlX2Zyb21fbDFlKG9s MWUsIGQpOwpAQCAtNDAzMCwyNCArNDAyNiwyNCBAQCBzdGF0aWMgaW50IHJlcGxhY2VfZ3JhbnRf dmFfbWFwcGluZygKICAgICBsMV9wZ2VudHJ5X3QgbmwxZSwgc3RydWN0IHZjcHUgKnYpCiB7CiAg ICAgbDFfcGdlbnRyeV90ICpwbDFlLCBvbDFlOwotICAgIHVuc2lnbmVkIGxvbmcgZ2wxbWZuOwor ICAgIG1mbl90IGdsMW1mbjsKICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpsMXBnOwogICAgIGludCBy YyA9IDA7CiAKLSAgICBwbDFlID0gZ3Vlc3RfbWFwX2wxZShhZGRyLCAmZ2wxbWZuKTsKKyAgICBw bDFlID0gbWFwX2d1ZXN0X2wxZShhZGRyLCAmZ2wxbWZuKTsKICAgICBpZiAoICFwbDFlICkKICAg ICB7CiAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19XQVJOSU5HLCAiQ291bGQgbm90IGZpbmQgTDEg UFRFIGZvciBhZGRyZXNzICVseFxuIiwgYWRkcik7CiAgICAgICAgIHJldHVybiBHTlRTVF9nZW5l cmFsX2Vycm9yOwogICAgIH0KIAotICAgIGlmICggIWdldF9wYWdlX2Zyb21fbWZuKF9tZm4oZ2wx bWZuKSwgY3VycmVudC0+ZG9tYWluKSApCisgICAgaWYgKCAhZ2V0X3BhZ2VfZnJvbV9tZm4oZ2wx bWZuLCBjdXJyZW50LT5kb21haW4pICkKICAgICB7CiAgICAgICAgIHJjID0gR05UU1RfZ2VuZXJh bF9lcnJvcjsKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogCi0gICAgbDFwZyA9IG1mbl90b19w YWdlKF9tZm4oZ2wxbWZuKSk7CisgICAgbDFwZyA9IG1mbl90b19wYWdlKGdsMW1mbik7CiAgICAg aWYgKCAhcGFnZV9sb2NrKGwxcGcpICkKICAgICB7CiAgICAgICAgIHJjID0gR05UU1RfZ2VuZXJh bF9lcnJvcjsKQEAgLTQwODYsNyArNDA4Miw3IEBAIHN0YXRpYyBpbnQgcmVwbGFjZV9ncmFudF92 YV9tYXBwaW5nKAogICAgICAgICAgICAgICAgICBsMWVfZ2V0X2ZsYWdzKG9sMWUpLCBhZGRyLCBn cmFudF9wdGVfZmxhZ3MpOwogCiAgICAgLyogRGVsZXRlIHBhZ2V0YWJsZSBlbnRyeS4gKi8KLSAg ICBpZiAoIHVubGlrZWx5KCFVUERBVEVfRU5UUlkobDEsIHBsMWUsIG9sMWUsIG5sMWUsIGdsMW1m biwgdiwgMCkpICkKKyAgICBpZiAoIHVubGlrZWx5KCFVUERBVEVfRU5UUlkobDEsIHBsMWUsIG9s MWUsIG5sMWUsIG1mbl94KGdsMW1mbiksIHYsIDApKSApCiAgICAgewogICAgICAgICBnZHByaW50 ayhYRU5MT0dfV0FSTklORywgIkNhbm5vdCBkZWxldGUgUFRFIGVudHJ5IGZvciAlIlBSSXg2NCJc biIsCiAgICAgICAgICAgICAgICAgIGFkZHIpOwpAQCAtNDA5OCw3ICs0MDk0LDcgQEAgc3RhdGlj IGludCByZXBsYWNlX2dyYW50X3ZhX21hcHBpbmcoCiAgICAgcGFnZV91bmxvY2sobDFwZyk7CiAg ICAgcHV0X3BhZ2UobDFwZyk7CiAgb3V0OgotICAgIGd1ZXN0X3VubWFwX2wxZShwbDFlKTsKKyAg ICB1bm1hcF9kb21haW5fcGFnZShwbDFlKTsKICAgICByZXR1cm4gcmM7CiB9CiAKQEAgLTQxNDMs NyArNDEzOSw3IEBAIGludCByZXBsYWNlX2dyYW50X3B2X21hcHBpbmcodWludDY0X3QgYWRkciwg dW5zaWduZWQgbG9uZyBmcmFtZSwKIHsKICAgICBzdHJ1Y3QgdmNwdSAqY3VyciA9IGN1cnJlbnQ7 CiAgICAgbDFfcGdlbnRyeV90ICpwbDFlLCBvbDFlOwotICAgIHVuc2lnbmVkIGxvbmcgZ2wxbWZu OworICAgIG1mbl90IGdsMW1mbjsKICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpsMXBnOwogICAgIGlu dCByYzsKICAgICB1bnNpZ25lZCBpbnQgZ3JhbnRfcHRlX2ZsYWdzOwpAQCAtNDE3Nyw3ICs0MTcz LDcgQEAgaW50IHJlcGxhY2VfZ3JhbnRfcHZfbWFwcGluZyh1aW50NjRfdCBhZGRyLCB1bnNpZ25l ZCBsb25nIGZyYW1lLAogICAgIGlmICggIW5ld19hZGRyICkKICAgICAgICAgcmV0dXJuIGRlc3Ry b3lfZ3JhbnRfdmFfbWFwcGluZyhhZGRyLCBmcmFtZSwgZ3JhbnRfcHRlX2ZsYWdzLCBjdXJyKTsK IAotICAgIHBsMWUgPSBndWVzdF9tYXBfbDFlKG5ld19hZGRyLCAmZ2wxbWZuKTsKKyAgICBwbDFl ID0gbWFwX2d1ZXN0X2wxZShuZXdfYWRkciwgJmdsMW1mbik7CiAgICAgaWYgKCAhcGwxZSApCiAg ICAgewogICAgICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywKQEAgLTQxODUsMTcgKzQxODEs MTcgQEAgaW50IHJlcGxhY2VfZ3JhbnRfcHZfbWFwcGluZyh1aW50NjRfdCBhZGRyLCB1bnNpZ25l ZCBsb25nIGZyYW1lLAogICAgICAgICByZXR1cm4gR05UU1RfZ2VuZXJhbF9lcnJvcjsKICAgICB9 CiAKLSAgICBpZiAoICFnZXRfcGFnZV9mcm9tX21mbihfbWZuKGdsMW1mbiksIGN1cnJlbnQtPmRv bWFpbikgKQorICAgIGlmICggIWdldF9wYWdlX2Zyb21fbWZuKGdsMW1mbiwgY3VycmVudC0+ZG9t YWluKSApCiAgICAgewotICAgICAgICBndWVzdF91bm1hcF9sMWUocGwxZSk7CisgICAgICAgIHVu bWFwX2RvbWFpbl9wYWdlKHBsMWUpOwogICAgICAgICByZXR1cm4gR05UU1RfZ2VuZXJhbF9lcnJv cjsKICAgICB9CiAKLSAgICBsMXBnID0gbWZuX3RvX3BhZ2UoX21mbihnbDFtZm4pKTsKKyAgICBs MXBnID0gbWZuX3RvX3BhZ2UoZ2wxbWZuKTsKICAgICBpZiAoICFwYWdlX2xvY2sobDFwZykgKQog ICAgIHsKICAgICAgICAgcHV0X3BhZ2UobDFwZyk7Ci0gICAgICAgIGd1ZXN0X3VubWFwX2wxZShw bDFlKTsKKyAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2UocGwxZSk7CiAgICAgICAgIHJldHVybiBH TlRTVF9nZW5lcmFsX2Vycm9yOwogICAgIH0KIApAQCAtNDIwMywyNSArNDE5OSwyNSBAQCBpbnQg cmVwbGFjZV9ncmFudF9wdl9tYXBwaW5nKHVpbnQ2NF90IGFkZHIsIHVuc2lnbmVkIGxvbmcgZnJh bWUsCiAgICAgewogICAgICAgICBwYWdlX3VubG9jayhsMXBnKTsKICAgICAgICAgcHV0X3BhZ2Uo bDFwZyk7Ci0gICAgICAgIGd1ZXN0X3VubWFwX2wxZShwbDFlKTsKKyAgICAgICAgdW5tYXBfZG9t YWluX3BhZ2UocGwxZSk7CiAgICAgICAgIHJldHVybiBHTlRTVF9nZW5lcmFsX2Vycm9yOwogICAg IH0KIAogICAgIG9sMWUgPSAqcGwxZTsKIAogICAgIGlmICggdW5saWtlbHkoIVVQREFURV9FTlRS WShsMSwgcGwxZSwgb2wxZSwgbDFlX2VtcHR5KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGdsMW1mbiwgY3VyciwgMCkpICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbWZuX3goZ2wxbWZuKSwgY3VyciwgMCkpICkKICAgICB7CiAgICAgICAgIHBhZ2VfdW5sb2Nr KGwxcGcpOwogICAgICAgICBwdXRfcGFnZShsMXBnKTsKICAgICAgICAgZ2RwcmludGsoWEVOTE9H X1dBUk5JTkcsICJDYW5ub3QgZGVsZXRlIFBURSBlbnRyeSBhdCAlcFxuIiwgcGwxZSk7Ci0gICAg ICAgIGd1ZXN0X3VubWFwX2wxZShwbDFlKTsKKyAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2UocGwx ZSk7CiAgICAgICAgIHJldHVybiBHTlRTVF9nZW5lcmFsX2Vycm9yOwogICAgIH0KIAogICAgIHBh Z2VfdW5sb2NrKGwxcGcpOwogICAgIHB1dF9wYWdlKGwxcGcpOwotICAgIGd1ZXN0X3VubWFwX2wx ZShwbDFlKTsKKyAgICB1bm1hcF9kb21haW5fcGFnZShwbDFlKTsKIAogICAgIHJjID0gcmVwbGFj ZV9ncmFudF92YV9tYXBwaW5nKGFkZHIsIGZyYW1lLCBncmFudF9wdGVfZmxhZ3MsIG9sMWUsIGN1 cnIpOwogICAgIGlmICggcmMgKQpAQCAtNDM0NCw3ICs0MzQwLDggQEAgc3RhdGljIGludCBfX2Rv X3VwZGF0ZV92YV9tYXBwaW5nKAogICAgIHN0cnVjdCBkb21haW4gKmQgICA9IHYtPmRvbWFpbjsK ICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpnbDFwZzsKICAgICBsMV9wZ2VudHJ5X3QgICpwbDFlOwot ICAgIHVuc2lnbmVkIGxvbmcgIGJtYXBfcHRyLCBnbDFtZm47CisgICAgdW5zaWduZWQgbG9uZyAg Ym1hcF9wdHI7CisgICAgbWZuX3QgICAgICAgICAgZ2wxbWZuOwogICAgIGNwdW1hc2tfdCAgICAg Km1hc2sgPSBOVUxMOwogICAgIGludCAgICAgICAgICAgIHJjOwogCkBAIC00MzU1LDExICs0MzUy LDExIEBAIHN0YXRpYyBpbnQgX19kb191cGRhdGVfdmFfbWFwcGluZygKICAgICAgICAgcmV0dXJu IHJjOwogCiAgICAgcmMgPSAtRUlOVkFMOwotICAgIHBsMWUgPSBndWVzdF9tYXBfbDFlKHZhLCAm Z2wxbWZuKTsKLSAgICBpZiAoIHVubGlrZWx5KCFwbDFlIHx8ICFnZXRfcGFnZV9mcm9tX21mbihf bWZuKGdsMW1mbiksIGQpKSApCisgICAgcGwxZSA9IG1hcF9ndWVzdF9sMWUodmEsICZnbDFtZm4p OworICAgIGlmICggdW5saWtlbHkoIXBsMWUgfHwgIWdldF9wYWdlX2Zyb21fbWZuKGdsMW1mbiwg ZCkpICkKICAgICAgICAgZ290byBvdXQ7CiAKLSAgICBnbDFwZyA9IG1mbl90b19wYWdlKF9tZm4o Z2wxbWZuKSk7CisgICAgZ2wxcGcgPSBtZm5fdG9fcGFnZShnbDFtZm4pOwogICAgIGlmICggIXBh Z2VfbG9jayhnbDFwZykgKQogICAgIHsKICAgICAgICAgcHV0X3BhZ2UoZ2wxcGcpOwpAQCAtNDM3 MywxNCArNDM3MCwxNCBAQCBzdGF0aWMgaW50IF9fZG9fdXBkYXRlX3ZhX21hcHBpbmcoCiAgICAg ICAgIGdvdG8gb3V0OwogICAgIH0KIAotICAgIHJjID0gbW9kX2wxX2VudHJ5KHBsMWUsIHZhbCwg Z2wxbWZuLCAwLCB2LCBwZ19vd25lcik7CisgICAgcmMgPSBtb2RfbDFfZW50cnkocGwxZSwgdmFs LCBtZm5feChnbDFtZm4pLCAwLCB2LCBwZ19vd25lcik7CiAKICAgICBwYWdlX3VubG9jayhnbDFw Zyk7CiAgICAgcHV0X3BhZ2UoZ2wxcGcpOwogCiAgb3V0OgogICAgIGlmICggcGwxZSApCi0gICAg ICAgIGd1ZXN0X3VubWFwX2wxZShwbDFlKTsKKyAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2UocGwx ZSk7CiAKICAgICBzd2l0Y2ggKCBmbGFncyAmIFVWTUZfRkxVU0hUWVBFX01BU0sgKQogICAgIHsK LS0gCjIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczov L2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==