From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH v5 14/23] x86/mm: move PV l4 table setup code Date: Thu, 14 Sep 2017 13:58:43 +0100 Message-ID: <20170914125852.22129-15-wei.liu2@citrix.com> References: <20170914125852.22129-1-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dsUCX-0008Ea-Ni for xen-devel@lists.xenproject.org; Thu, 14 Sep 2017 13:29:05 +0000 In-Reply-To: <20170914125852.22129-1-wei.liu2@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: George Dunlap , Andrew Cooper , Wei Liu , Jan Beulich List-Id: xen-devel@lists.xenproject.org TW92ZSB0aGUgY29kZSB0byBwdi9tbS5jLiBFeHBvcnQgcHZfYXJjaF9pbml0X21lbW9yeSB2aWEg Z2xvYmFsCnB2L21tLmggYW5kIGluaXRfZ3Vlc3RfbDRfdGFibGUgdmlhIGxvY2FsIHB2L21tLmgu CgpTaWduZWQtb2ZmLWJ5OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgotLS0KIHhlbi9h cmNoL3g4Ni9tbS5jICAgICAgICAgICAgfCA4MiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogeGVuL2FyY2gveDg2L3B2L2RvbTBfYnVpbGQuYyB8ICAyICsrCiB4 ZW4vYXJjaC94ODYvcHYvZG9tYWluLmMgICAgIHwgIDUgKysrCiB4ZW4vYXJjaC94ODYvcHYvbW0u YyAgICAgICAgIHwgODIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKIHhlbi9hcmNoL3g4Ni9wdi9tbS5oICAgICAgICAgfCAgMyArKwogeGVuL2luY2x1ZGUvYXNt LXg4Ni9tbS5oICAgICB8ICAyIC0tCiB4ZW4vaW5jbHVkZS9hc20teDg2L3B2L21tLmggIHwgIDQg KysrCiA3IGZpbGVzIGNoYW5nZWQsIDk3IGluc2VydGlvbnMoKyksIDgzIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS5jIGIveGVuL2FyY2gveDg2L21tLmMKaW5kZXgg OTNjYTA3NTY5OC4uM2E5MTljMTliOCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tLmMKKysr IGIveGVuL2FyY2gveDg2L21tLmMKQEAgLTEyNSw2ICsxMjUsNyBAQAogCiAjaW5jbHVkZSA8YXNt L2h2bS9ncmFudF90YWJsZS5oPgogI2luY2x1ZGUgPGFzbS9wdi9ncmFudF90YWJsZS5oPgorI2lu Y2x1ZGUgPGFzbS9wdi9tbS5oPgogCiAjaW5jbHVkZSAicHYvbW0uaCIKIApAQCAtMjQxLDUzICsy NDIsNiBAQCB2b2lkIF9faW5pdCBpbml0X2ZyYW1ldGFibGUodm9pZCkKICAgICBtZW1zZXQoZW5k X3BnLCAtMSwgKHVuc2lnbmVkIGxvbmcpdG9wX3BnIC0gKHVuc2lnbmVkIGxvbmcpZW5kX3BnKTsK IH0KIAotI2lmbmRlZiBOREVCVUcKLXN0YXRpYyB1bnNpZ25lZCBpbnQgX19yZWFkX21vc3RseSBy b290X3BndF9wdl94ZW5fc2xvdHMKLSAgICA9IFJPT1RfUEFHRVRBQkxFX1BWX1hFTl9TTE9UUzsK LXN0YXRpYyBsNF9wZ2VudHJ5X3QgX19yZWFkX21vc3RseSBzcGxpdF9sNGU7Ci0jZWxzZQotI2Rl ZmluZSByb290X3BndF9wdl94ZW5fc2xvdHMgUk9PVF9QQUdFVEFCTEVfUFZfWEVOX1NMT1RTCi0j ZW5kaWYKLQotc3RhdGljIHZvaWQgcHZfYXJjaF9pbml0X21lbW9yeSh2b2lkKQotewotI2lmbmRl ZiBOREVCVUcKLSAgICB1bnNpZ25lZCBpbnQgaTsKLQotICAgIGlmICggaGlnaG1lbV9zdGFydCAp Ci0gICAgewotICAgICAgICB1bnNpZ25lZCBsb25nIHNwbGl0X3ZhID0gKHVuc2lnbmVkIGxvbmcp X192YShoaWdobWVtX3N0YXJ0KTsKLQotICAgICAgICBpZiAoIHNwbGl0X3ZhIDwgSFlQRVJWSVNP Ul9WSVJUX0VORCAmJgotICAgICAgICAgICAgIHNwbGl0X3ZhIC0gMSA9PSAodW5zaWduZWQgbG9u ZylfX3ZhKGhpZ2htZW1fc3RhcnQgLSAxKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJvb3Rf cGd0X3B2X3hlbl9zbG90cyA9IGw0X3RhYmxlX29mZnNldChzcGxpdF92YSkgLQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUk9PVF9QQUdFVEFCTEVfRklSU1RfWEVOX1NMT1Q7 Ci0gICAgICAgICAgICBBU1NFUlQocm9vdF9wZ3RfcHZfeGVuX3Nsb3RzIDwgUk9PVF9QQUdFVEFC TEVfUFZfWEVOX1NMT1RTKTsKLSAgICAgICAgICAgIGlmICggbDRfdGFibGVfb2Zmc2V0KHNwbGl0 X3ZhKSA9PSBsNF90YWJsZV9vZmZzZXQoc3BsaXRfdmEgLSAxKSApCi0gICAgICAgICAgICB7Ci0g ICAgICAgICAgICAgICAgbDNfcGdlbnRyeV90ICpsM3RhYiA9IGFsbG9jX3hlbl9wYWdldGFibGUo KTsKLQotICAgICAgICAgICAgICAgIGlmICggbDN0YWIgKQotICAgICAgICAgICAgICAgIHsKLSAg ICAgICAgICAgICAgICAgICAgY29uc3QgbDNfcGdlbnRyeV90ICpsM2lkbGUgPQotICAgICAgICAg ICAgICAgICAgICAgICAgbDRlX3RvX2wzZShpZGxlX3BnX3RhYmxlW2w0X3RhYmxlX29mZnNldChz cGxpdF92YSldKTsKLQotICAgICAgICAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGwzX3Rh YmxlX29mZnNldChzcGxpdF92YSk7ICsraSApCi0gICAgICAgICAgICAgICAgICAgICAgICBsM3Rh YltpXSA9IGwzaWRsZVtpXTsKLSAgICAgICAgICAgICAgICAgICAgZm9yICggOyBpIDwgTDNfUEFH RVRBQkxFX0VOVFJJRVM7ICsraSApCi0gICAgICAgICAgICAgICAgICAgICAgICBsM3RhYltpXSA9 IGwzZV9lbXB0eSgpOwotICAgICAgICAgICAgICAgICAgICBzcGxpdF9sNGUgPSBsNGVfZnJvbV9w Zm4odmlydF90b19tZm4obDN0YWIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgX19QQUdFX0hZUEVSVklTT1JfUlcpOwotICAgICAgICAgICAgICAgIH0KLSAg ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICsrcm9vdF9wZ3RfcHZfeGVu X3Nsb3RzOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCi19Ci0KIHZv aWQgX19pbml0IGFyY2hfaW5pdF9tZW1vcnkodm9pZCkKIHsKICAgICB1bnNpZ25lZCBsb25nIGks IHBmbiwgcnN0YXJ0X3BmbiwgcmVuZF9wZm4sIGlvc3RhcnRfcGZuLCBpb2VuZF9wZm47CkBAIC0x NDI0LDQwICsxMzc4LDYgQEAgc3RhdGljIGludCBhbGxvY19sM190YWJsZShzdHJ1Y3QgcGFnZV9p bmZvICpwYWdlKQogICAgIHJldHVybiByYyA+IDAgPyAwIDogcmM7CiB9CiAKLS8qCi0gKiBUaGlz IGZ1bmN0aW9uIG11c3Qgd3JpdGUgYWxsIFJPT1RfUEFHRVRBQkxFX1BWX1hFTl9TTE9UUywgdG8g Y2xvYmJlciBhbnkKLSAqIHZhbHVlcyBhIGd1ZXN0IG1heSBoYXZlIGxlZnQgdGhlcmUgZnJvbSBh bGxvY19sNF90YWJsZSgpLgotICovCi12b2lkIGluaXRfZ3Vlc3RfbDRfdGFibGUobDRfcGdlbnRy eV90IGw0dGFiW10sIGNvbnN0IHN0cnVjdCBkb21haW4gKmQsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgYm9vbCB6YXBfcm9fbXB0KQotewotICAgIC8qIFhlbiBwcml2YXRlIG1hcHBpbmdzLiAq LwotICAgIG1lbWNweSgmbDR0YWJbUk9PVF9QQUdFVEFCTEVfRklSU1RfWEVOX1NMT1RdLAotICAg ICAgICAgICAmaWRsZV9wZ190YWJsZVtST09UX1BBR0VUQUJMRV9GSVJTVF9YRU5fU0xPVF0sCi0g ICAgICAgICAgIHJvb3RfcGd0X3B2X3hlbl9zbG90cyAqIHNpemVvZihsNF9wZ2VudHJ5X3QpKTsK LSNpZm5kZWYgTkRFQlVHCi0gICAgaWYgKCB1bmxpa2VseShyb290X3BndF9wdl94ZW5fc2xvdHMg PCBST09UX1BBR0VUQUJMRV9QVl9YRU5fU0xPVFMpICkKLSAgICB7Ci0gICAgICAgIGw0X3BnZW50 cnlfdCAqbmV4dCA9ICZsNHRhYltST09UX1BBR0VUQUJMRV9GSVJTVF9YRU5fU0xPVCArCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290X3BndF9wdl94ZW5fc2xvdHNdOwot Ci0gICAgICAgIGlmICggbDRlX2dldF9pbnRwdGUoc3BsaXRfbDRlKSApCi0gICAgICAgICAgICAq bmV4dCsrID0gc3BsaXRfbDRlOwotCi0gICAgICAgIG1lbXNldChuZXh0LCAwLAotICAgICAgICAg ICAgICAgX3AoJmw0dGFiW1JPT1RfUEFHRVRBQkxFX0xBU1RfWEVOX1NMT1QgKyAxXSkgLSBfcChu ZXh0KSk7Ci0gICAgfQotI2Vsc2UKLSAgICBCVUlMRF9CVUdfT04ocm9vdF9wZ3RfcHZfeGVuX3Ns b3RzICE9IFJPT1RfUEFHRVRBQkxFX1BWX1hFTl9TTE9UUyk7Ci0jZW5kaWYKLSAgICBsNHRhYlts NF90YWJsZV9vZmZzZXQoTElORUFSX1BUX1ZJUlRfU1RBUlQpXSA9Ci0gICAgICAgIGw0ZV9mcm9t X3Bmbihkb21haW5fcGFnZV9tYXBfdG9fbWZuKGw0dGFiKSwgX19QQUdFX0hZUEVSVklTT1JfUlcp OwotICAgIGw0dGFiW2w0X3RhYmxlX29mZnNldChQRVJET01BSU5fVklSVF9TVEFSVCldID0KLSAg ICAgICAgbDRlX2Zyb21fcGFnZShkLT5hcmNoLnBlcmRvbWFpbl9sM19wZywgX19QQUdFX0hZUEVS VklTT1JfUlcpOwotICAgIGlmICggemFwX3JvX21wdCB8fCBpc19wdl8zMmJpdF9kb21haW4oZCkg KQotICAgICAgICBsNHRhYltsNF90YWJsZV9vZmZzZXQoUk9fTVBUX1ZJUlRfU1RBUlQpXSA9IGw0 ZV9lbXB0eSgpOwotfQotCiBib29sIGZpbGxfcm9fbXB0KG1mbl90IG1mbikKIHsKICAgICBsNF9w Z2VudHJ5X3QgKmw0dGFiID0gbWFwX2RvbWFpbl9wYWdlKG1mbik7CmRpZmYgLS1naXQgYS94ZW4v YXJjaC94ODYvcHYvZG9tMF9idWlsZC5jIGIveGVuL2FyY2gveDg2L3B2L2RvbTBfYnVpbGQuYwpp bmRleCBlYzdmOTZkMDY2Li5kY2JlZTQzZThmIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvcHYv ZG9tMF9idWlsZC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9wdi9kb20wX2J1aWxkLmMKQEAgLTIwLDYg KzIwLDggQEAKICNpbmNsdWRlIDxhc20vcGFnZS5oPgogI2luY2x1ZGUgPGFzbS9zZXR1cC5oPgog CisjaW5jbHVkZSAibW0uaCIKKwogLyogQWxsb3cgcmluZy0zIGFjY2VzcyBpbiBsb25nIG1vZGUg YXMgZ3Vlc3QgY2Fubm90IHVzZSByaW5nIDEgLi4uICovCiAjZGVmaW5lIEJBU0VfUFJPVCAoX1BB R0VfUFJFU0VOVHxfUEFHRV9SV3xfUEFHRV9BQ0NFU1NFRHxfUEFHRV9VU0VSKQogI2RlZmluZSBM MV9QUk9UIChCQVNFX1BST1R8X1BBR0VfR1VFU1RfS0VSTkVMKQpkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L3B2L2RvbWFpbi5jIGIveGVuL2FyY2gveDg2L3B2L2RvbWFpbi5jCmluZGV4IGM4Yjlj YjY0NWIuLjkwZDU1NjliZTEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9wdi9kb21haW4uYwor KysgYi94ZW4vYXJjaC94ODYvcHYvZG9tYWluLmMKQEAgLTksOCArOSwxMyBAQAogI2luY2x1ZGUg PHhlbi9saWIuaD4KICNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KIAorI2luY2x1ZGUgPGFzbS9wMm0u aD4KKyNpbmNsdWRlIDxhc20vcGFnaW5nLmg+CisjaW5jbHVkZSA8YXNtL3NldHVwLmg+CiAjaW5j bHVkZSA8YXNtL3B2L2RvbWFpbi5oPgogCisjaW5jbHVkZSAibW0uaCIKKwogLyogT3ZlcnJpZGUg bWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0byBtYWtlIHRoZW0gd29yayB3aXRoIG1mbl90ICovCiAj dW5kZWYgbWZuX3RvX3BhZ2UKICNkZWZpbmUgbWZuX3RvX3BhZ2UobWZuKSBfX21mbl90b19wYWdl KG1mbl94KG1mbikpCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHYvbW0uYyBiL3hlbi9hcmNo L3g4Ni9wdi9tbS5jCmluZGV4IDY4OTBlODBlZmQuLmQwZmMxNGRmYTYgMTAwNjQ0Ci0tLSBhL3hl bi9hcmNoL3g4Ni9wdi9tbS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9wdi9tbS5jCkBAIC0yMyw2ICsy Myw3IEBACiAKICNpbmNsdWRlIDxhc20vY3VycmVudC5oPgogI2luY2x1ZGUgPGFzbS9wMm0uaD4K KyNpbmNsdWRlIDxhc20vc2V0dXAuaD4KIAogI2luY2x1ZGUgIm1tLmgiCiAKQEAgLTMyLDYgKzMz LDE0IEBACiAjdW5kZWYgcGFnZV90b19tZm4KICNkZWZpbmUgcGFnZV90b19tZm4ocGcpIF9tZm4o X19wYWdlX3RvX21mbihwZykpCiAKKyNpZm5kZWYgTkRFQlVHCitzdGF0aWMgdW5zaWduZWQgaW50 IF9fcmVhZF9tb3N0bHkgcm9vdF9wZ3RfcHZfeGVuX3Nsb3RzCisgICAgPSBST09UX1BBR0VUQUJM RV9QVl9YRU5fU0xPVFM7CitzdGF0aWMgbDRfcGdlbnRyeV90IF9fcmVhZF9tb3N0bHkgc3BsaXRf bDRlOworI2Vsc2UKKyNkZWZpbmUgcm9vdF9wZ3RfcHZfeGVuX3Nsb3RzIFJPT1RfUEFHRVRBQkxF X1BWX1hFTl9TTE9UUworI2VuZGlmCisKIC8qCiAgKiBHZXQgYSBtYXBwaW5nIG9mIGEgUFYgZ3Vl c3QncyBsMWUgZm9yIHRoaXMgbGluZWFyIGFkZHJlc3MuICBUaGUgcmV0dXJuCiAgKiBwb2ludGVy IHNob3VsZCBiZSB1bm1hcHBlZCB1c2luZyB1bm1hcF9kb21haW5fcGFnZSgpLgpAQCAtMTMzLDYg KzE0Miw3OSBAQCBib29sIHB2X21hcF9sZHRfc2hhZG93X3BhZ2UodW5zaWduZWQgaW50IG9mZnNl dCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorLyoKKyAqIFRoaXMgZnVuY3Rpb24gbXVzdCB3cml0 ZSBhbGwgUk9PVF9QQUdFVEFCTEVfUFZfWEVOX1NMT1RTLCB0byBjbG9iYmVyIGFueQorICogdmFs dWVzIGEgZ3Vlc3QgbWF5IGhhdmUgbGVmdCB0aGVyZSBmcm9tIGFsbG9jX2w0X3RhYmxlKCkuCisg Ki8KK3ZvaWQgaW5pdF9ndWVzdF9sNF90YWJsZShsNF9wZ2VudHJ5X3QgbDR0YWJbXSwgY29uc3Qg c3RydWN0IGRvbWFpbiAqZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHphcF9yb19t cHQpCit7CisgICAgLyogWGVuIHByaXZhdGUgbWFwcGluZ3MuICovCisgICAgbWVtY3B5KCZsNHRh YltST09UX1BBR0VUQUJMRV9GSVJTVF9YRU5fU0xPVF0sCisgICAgICAgICAgICZpZGxlX3BnX3Rh YmxlW1JPT1RfUEFHRVRBQkxFX0ZJUlNUX1hFTl9TTE9UXSwKKyAgICAgICAgICAgcm9vdF9wZ3Rf cHZfeGVuX3Nsb3RzICogc2l6ZW9mKGw0X3BnZW50cnlfdCkpOworI2lmbmRlZiBOREVCVUcKKyAg ICBpZiAoIHVubGlrZWx5KHJvb3RfcGd0X3B2X3hlbl9zbG90cyA8IFJPT1RfUEFHRVRBQkxFX1BW X1hFTl9TTE9UUykgKQorICAgIHsKKyAgICAgICAgbDRfcGdlbnRyeV90ICpuZXh0ID0gJmw0dGFi W1JPT1RfUEFHRVRBQkxFX0ZJUlNUX1hFTl9TTE9UICsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJvb3RfcGd0X3B2X3hlbl9zbG90c107CisKKyAgICAgICAgaWYgKCBsNGVf Z2V0X2ludHB0ZShzcGxpdF9sNGUpICkKKyAgICAgICAgICAgICpuZXh0KysgPSBzcGxpdF9sNGU7 CisKKyAgICAgICAgbWVtc2V0KG5leHQsIDAsCisgICAgICAgICAgICAgICBfcCgmbDR0YWJbUk9P VF9QQUdFVEFCTEVfTEFTVF9YRU5fU0xPVCArIDFdKSAtIF9wKG5leHQpKTsKKyAgICB9CisjZWxz ZQorICAgIEJVSUxEX0JVR19PTihyb290X3BndF9wdl94ZW5fc2xvdHMgIT0gUk9PVF9QQUdFVEFC TEVfUFZfWEVOX1NMT1RTKTsKKyNlbmRpZgorICAgIGw0dGFiW2w0X3RhYmxlX29mZnNldChMSU5F QVJfUFRfVklSVF9TVEFSVCldID0KKyAgICAgICAgbDRlX2Zyb21fcGZuKGRvbWFpbl9wYWdlX21h cF90b19tZm4obDR0YWIpLCBfX1BBR0VfSFlQRVJWSVNPUl9SVyk7CisgICAgbDR0YWJbbDRfdGFi bGVfb2Zmc2V0KFBFUkRPTUFJTl9WSVJUX1NUQVJUKV0gPQorICAgICAgICBsNGVfZnJvbV9wYWdl KGQtPmFyY2gucGVyZG9tYWluX2wzX3BnLCBfX1BBR0VfSFlQRVJWSVNPUl9SVyk7CisgICAgaWYg KCB6YXBfcm9fbXB0IHx8IGlzX3B2XzMyYml0X2RvbWFpbihkKSApCisgICAgICAgIGw0dGFiW2w0 X3RhYmxlX29mZnNldChST19NUFRfVklSVF9TVEFSVCldID0gbDRlX2VtcHR5KCk7Cit9CisKK3Zv aWQgcHZfYXJjaF9pbml0X21lbW9yeSh2b2lkKQoreworI2lmbmRlZiBOREVCVUcKKyAgICB1bnNp Z25lZCBpbnQgaTsKKworICAgIGlmICggaGlnaG1lbV9zdGFydCApCisgICAgeworICAgICAgICB1 bnNpZ25lZCBsb25nIHNwbGl0X3ZhID0gKHVuc2lnbmVkIGxvbmcpX192YShoaWdobWVtX3N0YXJ0 KTsKKworICAgICAgICBpZiAoIHNwbGl0X3ZhIDwgSFlQRVJWSVNPUl9WSVJUX0VORCAmJgorICAg ICAgICAgICAgIHNwbGl0X3ZhIC0gMSA9PSAodW5zaWduZWQgbG9uZylfX3ZhKGhpZ2htZW1fc3Rh cnQgLSAxKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJvb3RfcGd0X3B2X3hlbl9zbG90cyA9 IGw0X3RhYmxlX29mZnNldChzcGxpdF92YSkgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUk9PVF9QQUdFVEFCTEVfRklSU1RfWEVOX1NMT1Q7CisgICAgICAgICAgICBBU1NF UlQocm9vdF9wZ3RfcHZfeGVuX3Nsb3RzIDwgUk9PVF9QQUdFVEFCTEVfUFZfWEVOX1NMT1RTKTsK KyAgICAgICAgICAgIGlmICggbDRfdGFibGVfb2Zmc2V0KHNwbGl0X3ZhKSA9PSBsNF90YWJsZV9v ZmZzZXQoc3BsaXRfdmEgLSAxKSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbDNf cGdlbnRyeV90ICpsM3RhYiA9IGFsbG9jX3hlbl9wYWdldGFibGUoKTsKKworICAgICAgICAgICAg ICAgIGlmICggbDN0YWIgKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg Y29uc3QgbDNfcGdlbnRyeV90ICpsM2lkbGUgPQorICAgICAgICAgICAgICAgICAgICAgICAgbDRl X3RvX2wzZShpZGxlX3BnX3RhYmxlW2w0X3RhYmxlX29mZnNldChzcGxpdF92YSldKTsKKworICAg ICAgICAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGwzX3RhYmxlX29mZnNldChzcGxpdF92 YSk7ICsraSApCisgICAgICAgICAgICAgICAgICAgICAgICBsM3RhYltpXSA9IGwzaWRsZVtpXTsK KyAgICAgICAgICAgICAgICAgICAgZm9yICggOyBpIDwgTDNfUEFHRVRBQkxFX0VOVFJJRVM7ICsr aSApCisgICAgICAgICAgICAgICAgICAgICAgICBsM3RhYltpXSA9IGwzZV9lbXB0eSgpOworICAg ICAgICAgICAgICAgICAgICBzcGxpdF9sNGUgPSBsNGVfZnJvbV9wZm4odmlydF90b19tZm4obDN0 YWIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19QQUdF X0hZUEVSVklTT1JfUlcpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNl CisgICAgICAgICAgICAgICAgICAgICsrcm9vdF9wZ3RfcHZfeGVuX3Nsb3RzOworICAgICAgICAg ICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlmCit9CisKIC8qCiAgKiBMb2NhbCB2YXJpYWJs ZXM6CiAgKiBtb2RlOiBDCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHYvbW0uaCBiL3hlbi9h cmNoL3g4Ni9wdi9tbS5oCmluZGV4IGFjZWYwNjFhY2YuLmE2NDE5NjQ5NDkgMTAwNjQ0Ci0tLSBh L3hlbi9hcmNoL3g4Ni9wdi9tbS5oCisrKyBiL3hlbi9hcmNoL3g4Ni9wdi9tbS5oCkBAIC0zLDYg KzMsOSBAQAogCiBsMV9wZ2VudHJ5X3QgKm1hcF9ndWVzdF9sMWUodW5zaWduZWQgbG9uZyBsaW5l YXIsIG1mbl90ICpnbDFtZm4pOwogCit2b2lkIGluaXRfZ3Vlc3RfbDRfdGFibGUobDRfcGdlbnRy eV90IGw0dGFiW10sIGNvbnN0IHN0cnVjdCBkb21haW4gKmQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgYm9vbCB6YXBfcm9fbXB0KTsKKwogLyogUmVhZCBhIFBWIGd1ZXN0J3MgbDFlIHRoYXQg bWFwcyB0aGlzIGxpbmVhciBhZGRyZXNzLiAqLwogc3RhdGljIGlubGluZSBsMV9wZ2VudHJ5X3Qg Z3Vlc3RfZ2V0X2VmZl9sMWUodW5zaWduZWQgbG9uZyBsaW5lYXIpCiB7CmRpZmYgLS1naXQgYS94 ZW4vaW5jbHVkZS9hc20teDg2L21tLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L21tLmgKaW5kZXgg OGE1NmJlZDQ1NC4uZTUwODdlMTFlNSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9t bS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaApAQCAtMzI5LDggKzMyOSw2IEBAIHN0 YXRpYyBpbmxpbmUgdm9pZCAqX19wYWdlX3RvX3ZpcnQoY29uc3Qgc3RydWN0IHBhZ2VfaW5mbyAq cGcpCiBpbnQgZnJlZV9wYWdlX3R5cGUoc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSwgdW5zaWduZWQg bG9uZyB0eXBlLAogICAgICAgICAgICAgICAgICAgIGludCBwcmVlbXB0aWJsZSk7CiAKLXZvaWQg aW5pdF9ndWVzdF9sNF90YWJsZShsNF9wZ2VudHJ5X3RbXSwgY29uc3Qgc3RydWN0IGRvbWFpbiAq LAotICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xfdCB6YXBfcm9fbXB0KTsKIGJvb2wgZmls bF9yb19tcHQobWZuX3QgbWZuKTsKIHZvaWQgemFwX3JvX21wdChtZm5fdCBtZm4pOwogCmRpZmYg LS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3B2L21tLmggYi94ZW4vaW5jbHVkZS9hc20teDg2 L3B2L21tLmgKaW5kZXggNDcyMjNlMzhlYi4uNDk0NGE3MGM3YSAxMDA2NDQKLS0tIGEveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9wdi9tbS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHYvbW0uaApA QCAtMzAsNiArMzAsOCBAQCB2b2lkIHB2X2Rlc3Ryb3lfZ2R0KHN0cnVjdCB2Y3B1ICpkKTsKIAog Ym9vbCBwdl9tYXBfbGR0X3NoYWRvd19wYWdlKHVuc2lnbmVkIGludCBvZmYpOwogCit2b2lkIHB2 X2FyY2hfaW5pdF9tZW1vcnkodm9pZCk7CisKICNlbHNlCiAKICNpbmNsdWRlIDx4ZW4vZXJybm8u aD4KQEAgLTQ3LDYgKzQ5LDggQEAgc3RhdGljIGlubGluZSB2b2lkIHB2X2Rlc3Ryb3lfZ2R0KHN0 cnVjdCB2Y3B1ICpkKSB7fQogCiBzdGF0aWMgaW5saW5lIGJvb2wgcHZfbWFwX2xkdF9zaGFkb3df cGFnZSh1bnNpZ25lZCBpbnQgb2ZmKSB7IHJldHVybiBmYWxzZTsgfQogCitzdGF0aWMgaW5saW5l IHZvaWQgcHZfYXJjaF9pbml0X21lbW9yeSh2b2lkKSB7fQorCiAjZW5kaWYKIAogI2VuZGlmIC8q IF9fWDg2X1BWX01NX0hfXyAqLwotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxA bGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==