From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH v4 20/31] x86/mm: move l4 table setup code Date: Thu, 17 Aug 2017 15:44:45 +0100 Message-ID: <20170817144456.18989-21-wei.liu2@citrix.com> References: <20170817144456.18989-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.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1diM53-0002h2-6e for xen-devel@lists.xenproject.org; Thu, 17 Aug 2017 14:47:29 +0000 In-Reply-To: <20170817144456.18989-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 TW92ZSB0d28gZnVuY3Rpb25zIHRvIHB2L21tLmMuIEFkZCBwcmVmaXggdG8gaW5pdF9ndWVzdF9s NF90YWJsZS4KRXhwb3J0IHRoZW0gdmlhIHB2L21tLmguIEZpeCB1cCBjYWxsIHNpdGVzLgoKU2ln bmVkLW9mZi1ieTogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KLS0tCiB4ZW4vYXJjaC94 ODYvbW0uYyAgICAgICAgICAgIHwgNjkgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9wdi9kb20wX2J1aWxkLmMgfCAgMyArLQogeGVuL2Fy Y2gveDg2L3B2L2RvbWFpbi5jICAgICB8ICAzICstCiB4ZW4vYXJjaC94ODYvcHYvbW0uYyAgICAg ICAgIHwgNjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVu L2luY2x1ZGUvYXNtLXg4Ni9tbS5oICAgICB8ICAyIC0tCiB4ZW4vaW5jbHVkZS9hc20teDg2L3B2 L21tLmggIHwgIDggKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgODEgaW5zZXJ0aW9ucygrKSwgNzIg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tLmMgYi94ZW4vYXJjaC94 ODYvbW0uYwppbmRleCBmYmY0MDJkMTZmLi5lYzUyM2E0ZjUxIDEwMDY0NAotLS0gYS94ZW4vYXJj aC94ODYvbW0uYworKysgYi94ZW4vYXJjaC94ODYvbW0uYwpAQCAtMjI4LDUzICsyMjgsNiBAQCB2 b2lkIF9faW5pdCBpbml0X2ZyYW1ldGFibGUodm9pZCkKICAgICBtZW1zZXQoZW5kX3BnLCAtMSwg KHVuc2lnbmVkIGxvbmcpdG9wX3BnIC0gKHVuc2lnbmVkIGxvbmcpZW5kX3BnKTsKIH0KIAotI2lm bmRlZiBOREVCVUcKLXN0YXRpYyB1bnNpZ25lZCBpbnQgX19yZWFkX21vc3RseSByb290X3BndF9w dl94ZW5fc2xvdHMKLSAgICA9IFJPT1RfUEFHRVRBQkxFX1BWX1hFTl9TTE9UUzsKLXN0YXRpYyBs NF9wZ2VudHJ5X3QgX19yZWFkX21vc3RseSBzcGxpdF9sNGU7Ci0jZWxzZQotI2RlZmluZSByb290 X3BndF9wdl94ZW5fc2xvdHMgUk9PVF9QQUdFVEFCTEVfUFZfWEVOX1NMT1RTCi0jZW5kaWYKLQot c3RhdGljIHZvaWQgcHZfYXJjaF9pbml0X21lbW9yeSh2b2lkKQotewotI2lmbmRlZiBOREVCVUcK LSAgICB1bnNpZ25lZCBpbnQgaTsKLQotICAgIGlmICggaGlnaG1lbV9zdGFydCApCi0gICAgewot ICAgICAgICB1bnNpZ25lZCBsb25nIHNwbGl0X3ZhID0gKHVuc2lnbmVkIGxvbmcpX192YShoaWdo bWVtX3N0YXJ0KTsKLQotICAgICAgICBpZiAoIHNwbGl0X3ZhIDwgSFlQRVJWSVNPUl9WSVJUX0VO RCAmJgotICAgICAgICAgICAgIHNwbGl0X3ZhIC0gMSA9PSAodW5zaWduZWQgbG9uZylfX3ZhKGhp Z2htZW1fc3RhcnQgLSAxKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJvb3RfcGd0X3B2X3hl bl9zbG90cyA9IGw0X3RhYmxlX29mZnNldChzcGxpdF92YSkgLQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUk9PVF9QQUdFVEFCTEVfRklSU1RfWEVOX1NMT1Q7Ci0gICAgICAg ICAgICBBU1NFUlQocm9vdF9wZ3RfcHZfeGVuX3Nsb3RzIDwgUk9PVF9QQUdFVEFCTEVfUFZfWEVO X1NMT1RTKTsKLSAgICAgICAgICAgIGlmICggbDRfdGFibGVfb2Zmc2V0KHNwbGl0X3ZhKSA9PSBs NF90YWJsZV9vZmZzZXQoc3BsaXRfdmEgLSAxKSApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg ICAgICAgbDNfcGdlbnRyeV90ICpsM3RhYiA9IGFsbG9jX3hlbl9wYWdldGFibGUoKTsKLQotICAg ICAgICAgICAgICAgIGlmICggbDN0YWIgKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg ICAgICAgICAgY29uc3QgbDNfcGdlbnRyeV90ICpsM2lkbGUgPQotICAgICAgICAgICAgICAgICAg ICAgICAgbDRlX3RvX2wzZShpZGxlX3BnX3RhYmxlW2w0X3RhYmxlX29mZnNldChzcGxpdF92YSld KTsKLQotICAgICAgICAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGwzX3RhYmxlX29mZnNl dChzcGxpdF92YSk7ICsraSApCi0gICAgICAgICAgICAgICAgICAgICAgICBsM3RhYltpXSA9IGwz aWRsZVtpXTsKLSAgICAgICAgICAgICAgICAgICAgZm9yICggOyBpIDwgTDNfUEFHRVRBQkxFX0VO VFJJRVM7ICsraSApCi0gICAgICAgICAgICAgICAgICAgICAgICBsM3RhYltpXSA9IGwzZV9lbXB0 eSgpOwotICAgICAgICAgICAgICAgICAgICBzcGxpdF9sNGUgPSBsNGVfZnJvbV9wZm4odmlydF90 b19tZm4obDN0YWIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgX19QQUdFX0hZUEVSVklTT1JfUlcpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICsrcm9vdF9wZ3RfcHZfeGVuX3Nsb3RzOwot ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCi19Ci0KIHZvaWQgX19pbml0 IGFyY2hfaW5pdF9tZW1vcnkodm9pZCkKIHsKICAgICB1bnNpZ25lZCBsb25nIGksIHBmbiwgcnN0 YXJ0X3BmbiwgcmVuZF9wZm4sIGlvc3RhcnRfcGZuLCBpb2VuZF9wZm47CkBAIC0xNDMzLDI2ICsx Mzg2LDYgQEAgc3RhdGljIGludCBhbGxvY19sM190YWJsZShzdHJ1Y3QgcGFnZV9pbmZvICpwYWdl KQogICAgIHJldHVybiByYyA+IDAgPyAwIDogcmM7CiB9CiAKLXZvaWQgaW5pdF9ndWVzdF9sNF90 YWJsZShsNF9wZ2VudHJ5X3QgbDR0YWJbXSwgY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICBib29sIHphcF9yb19tcHQpCi17Ci0gICAgLyogWGVuIHByaXZh dGUgbWFwcGluZ3MuICovCi0gICAgbWVtY3B5KCZsNHRhYltST09UX1BBR0VUQUJMRV9GSVJTVF9Y RU5fU0xPVF0sCi0gICAgICAgICAgICZpZGxlX3BnX3RhYmxlW1JPT1RfUEFHRVRBQkxFX0ZJUlNU X1hFTl9TTE9UXSwKLSAgICAgICAgICAgcm9vdF9wZ3RfcHZfeGVuX3Nsb3RzICogc2l6ZW9mKGw0 X3BnZW50cnlfdCkpOwotI2lmbmRlZiBOREVCVUcKLSAgICBpZiAoIGw0ZV9nZXRfaW50cHRlKHNw bGl0X2w0ZSkgKQotICAgICAgICBsNHRhYltST09UX1BBR0VUQUJMRV9GSVJTVF9YRU5fU0xPVCAr IHJvb3RfcGd0X3B2X3hlbl9zbG90c10gPQotICAgICAgICAgICAgc3BsaXRfbDRlOwotI2VuZGlm Ci0gICAgbDR0YWJbbDRfdGFibGVfb2Zmc2V0KExJTkVBUl9QVF9WSVJUX1NUQVJUKV0gPQotICAg ICAgICBsNGVfZnJvbV9wZm4oZG9tYWluX3BhZ2VfbWFwX3RvX21mbihsNHRhYiksIF9fUEFHRV9I WVBFUlZJU09SX1JXKTsKLSAgICBsNHRhYltsNF90YWJsZV9vZmZzZXQoUEVSRE9NQUlOX1ZJUlRf U1RBUlQpXSA9Ci0gICAgICAgIGw0ZV9mcm9tX3BhZ2UoZC0+YXJjaC5wZXJkb21haW5fbDNfcGcs IF9fUEFHRV9IWVBFUlZJU09SX1JXKTsKLSAgICBpZiAoIHphcF9yb19tcHQgfHwgaXNfcHZfMzJi aXRfZG9tYWluKGQpICkKLSAgICAgICAgbDR0YWJbbDRfdGFibGVfb2Zmc2V0KFJPX01QVF9WSVJU X1NUQVJUKV0gPSBsNGVfZW1wdHkoKTsKLX0KLQogYm9vbCBmaWxsX3JvX21wdCh1bnNpZ25lZCBs b25nIG1mbikKIHsKICAgICBsNF9wZ2VudHJ5X3QgKmw0dGFiID0gbWFwX2RvbWFpbl9wYWdlKF9t Zm4obWZuKSk7CkBAIC0xNTI3LDcgKzE0NjAsNyBAQCBzdGF0aWMgaW50IGFsbG9jX2w0X3RhYmxl KHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UpCiAKICAgICBpZiAoIHJjID49IDAgKQogICAgIHsKLSAg ICAgICAgaW5pdF9ndWVzdF9sNF90YWJsZShwbDRlLCBkLCAhVk1fQVNTSVNUKGQsIG0ycF9zdHJp Y3QpKTsKKyAgICAgICAgcHZfaW5pdF9ndWVzdF9sNF90YWJsZShwbDRlLCBkLCAhVk1fQVNTSVNU KGQsIG0ycF9zdHJpY3QpKTsKICAgICAgICAgYXRvbWljX2luYygmZC0+YXJjaC5wdl9kb21haW4u bnJfbDRfcGFnZXMpOwogICAgICAgICByYyA9IDA7CiAgICAgfQpkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L3B2L2RvbTBfYnVpbGQuYyBiL3hlbi9hcmNoL3g4Ni9wdi9kb20wX2J1aWxkLmMKaW5k ZXggZTY3ZmZkZDdiOC4uN2UxZjhmMmVhMSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3B2L2Rv bTBfYnVpbGQuYworKysgYi94ZW4vYXJjaC94ODYvcHYvZG9tMF9idWlsZC5jCkBAIC0xOCw2ICsx OCw3IEBACiAjaW5jbHVkZSA8YXNtL2J6aW1hZ2UuaD4KICNpbmNsdWRlIDxhc20vZG9tMF9idWls ZC5oPgogI2luY2x1ZGUgPGFzbS9wYWdlLmg+CisjaW5jbHVkZSA8YXNtL3B2L21tLmg+CiAjaW5j bHVkZSA8YXNtL3NldHVwLmg+CiAKIC8qIEFsbG93IHJpbmctMyBhY2Nlc3MgaW4gbG9uZyBtb2Rl IGFzIGd1ZXN0IGNhbm5vdCB1c2UgcmluZyAxIC4uLiAqLwpAQCAtNTg4LDcgKzU4OSw3IEBAIGlu dCBfX2luaXQgZG9tMF9jb25zdHJ1Y3RfcHYoc3RydWN0IGRvbWFpbiAqZCwKICAgICAgICAgbDNz dGFydCA9IF9fdmEobXB0X2FsbG9jKTsgbXB0X2FsbG9jICs9IFBBR0VfU0laRTsKICAgICB9CiAg ICAgY2xlYXJfcGFnZShsNHRhYik7Ci0gICAgaW5pdF9ndWVzdF9sNF90YWJsZShsNHRhYiwgZCwg MCk7CisgICAgcHZfaW5pdF9ndWVzdF9sNF90YWJsZShsNHRhYiwgZCwgMCk7CiAgICAgdi0+YXJj aC5ndWVzdF90YWJsZSA9IHBhZ2V0YWJsZV9mcm9tX3BhZGRyKF9fcGEobDRzdGFydCkpOwogICAg IGlmICggaXNfcHZfMzJiaXRfZG9tYWluKGQpICkKICAgICAgICAgdi0+YXJjaC5ndWVzdF90YWJs ZV91c2VyID0gdi0+YXJjaC5ndWVzdF90YWJsZTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9w di9kb21haW4uYyBiL3hlbi9hcmNoL3g4Ni9wdi9kb21haW4uYwppbmRleCA2Y2I2MWYyZTE0Li40 MTVkMDYzNGEzIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvcHYvZG9tYWluLmMKKysrIGIveGVu L2FyY2gveDg2L3B2L2RvbWFpbi5jCkBAIC0xMCw2ICsxMCw3IEBACiAjaW5jbHVkZSA8eGVuL3Nj aGVkLmg+CiAKICNpbmNsdWRlIDxhc20vcHYvZG9tYWluLmg+CisjaW5jbHVkZSA8YXNtL3B2L21t Lmg+CiAKIHN0YXRpYyB2b2lkIG5vcmV0dXJuIGNvbnRpbnVlX25vbmlkbGVfZG9tYWluKHN0cnVj dCB2Y3B1ICp2KQogewpAQCAtMjksNyArMzAsNyBAQCBzdGF0aWMgaW50IHNldHVwX2NvbXBhdF9s NChzdHJ1Y3QgdmNwdSAqdikKIAogICAgIGw0dGFiID0gX19tYXBfZG9tYWluX3BhZ2UocGcpOwog ICAgIGNsZWFyX3BhZ2UobDR0YWIpOwotICAgIGluaXRfZ3Vlc3RfbDRfdGFibGUobDR0YWIsIHYt PmRvbWFpbiwgMSk7CisgICAgcHZfaW5pdF9ndWVzdF9sNF90YWJsZShsNHRhYiwgdi0+ZG9tYWlu LCAxKTsKICAgICB1bm1hcF9kb21haW5fcGFnZShsNHRhYik7CiAKICAgICAvKiBUaGlzIHBhZ2Ug bmVlZHMgdG8gbG9vayBsaWtlIGEgcGFnZXRhYmxlIHNvIHRoYXQgaXQgY2FuIGJlIHNoYWRvd2Vk ICovCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHYvbW0uYyBiL3hlbi9hcmNoL3g4Ni9wdi9t bS5jCmluZGV4IDMyZTczZDU5ZGYuLjBmNDMwM2NlZjIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4 Ni9wdi9tbS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9wdi9tbS5jCkBAIC0yMyw2ICsyMyw3IEBACiAj aW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPgogCiAjaW5jbHVkZSA8YXNtL3B2L21tLmg+Cisj aW5jbHVkZSA8YXNtL3NldHVwLmg+CiAKIC8qCiAgKiBQVEUgdXBkYXRlcyBjYW4gYmUgZG9uZSB3 aXRoIG9yZGluYXJ5IHdyaXRlcyBleGNlcHQ6CkBAIC0zMiw2ICszMywxNCBAQAogI2RlZmluZSBQ VEVfVVBEQVRFX1dJVEhfQ01QWENIRwogI2VuZGlmCiAKKyNpZm5kZWYgTkRFQlVHCitzdGF0aWMg dW5zaWduZWQgaW50IF9fcmVhZF9tb3N0bHkgcm9vdF9wZ3RfcHZfeGVuX3Nsb3RzCisgICAgPSBS T09UX1BBR0VUQUJMRV9QVl9YRU5fU0xPVFM7CitzdGF0aWMgbDRfcGdlbnRyeV90IF9fcmVhZF9t b3N0bHkgc3BsaXRfbDRlOworI2Vsc2UKKyNkZWZpbmUgcm9vdF9wZ3RfcHZfeGVuX3Nsb3RzIFJP T1RfUEFHRVRBQkxFX1BWX1hFTl9TTE9UUworI2VuZGlmCisKIC8qIFJlYWQgYSBQViBndWVzdCdz IGwxZSB0aGF0IG1hcHMgdGhpcyB2aXJ0dWFsIGFkZHJlc3MuICovCiB2b2lkIHB2X2dldF9ndWVz dF9lZmZfbDFlKHVuc2lnbmVkIGxvbmcgYWRkciwgbDFfcGdlbnRyeV90ICplZmZfbDFlKQogewpA QCAtOTYsNiArMTA1LDY1IEBAIHZvaWQgcHZfdW5tYXBfZ3Vlc3RfbDFlKHZvaWQgKnApCiAgICAg dW5tYXBfZG9tYWluX3BhZ2UocCk7CiB9CiAKK3ZvaWQgcHZfaW5pdF9ndWVzdF9sNF90YWJsZShs NF9wZ2VudHJ5X3QgbDR0YWJbXSwgY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBib29sIHphcF9yb19tcHQpCit7CisgICAgLyogWGVuIHByaXZhdGUg bWFwcGluZ3MuICovCisgICAgbWVtY3B5KCZsNHRhYltST09UX1BBR0VUQUJMRV9GSVJTVF9YRU5f U0xPVF0sCisgICAgICAgICAgICZpZGxlX3BnX3RhYmxlW1JPT1RfUEFHRVRBQkxFX0ZJUlNUX1hF Tl9TTE9UXSwKKyAgICAgICAgICAgcm9vdF9wZ3RfcHZfeGVuX3Nsb3RzICogc2l6ZW9mKGw0X3Bn ZW50cnlfdCkpOworI2lmbmRlZiBOREVCVUcKKyAgICBpZiAoIGw0ZV9nZXRfaW50cHRlKHNwbGl0 X2w0ZSkgKQorICAgICAgICBsNHRhYltST09UX1BBR0VUQUJMRV9GSVJTVF9YRU5fU0xPVCArIHJv b3RfcGd0X3B2X3hlbl9zbG90c10gPQorICAgICAgICAgICAgc3BsaXRfbDRlOworI2VuZGlmCisg ICAgbDR0YWJbbDRfdGFibGVfb2Zmc2V0KExJTkVBUl9QVF9WSVJUX1NUQVJUKV0gPQorICAgICAg ICBsNGVfZnJvbV9wZm4oZG9tYWluX3BhZ2VfbWFwX3RvX21mbihsNHRhYiksIF9fUEFHRV9IWVBF UlZJU09SX1JXKTsKKyAgICBsNHRhYltsNF90YWJsZV9vZmZzZXQoUEVSRE9NQUlOX1ZJUlRfU1RB UlQpXSA9CisgICAgICAgIGw0ZV9mcm9tX3BhZ2UoZC0+YXJjaC5wZXJkb21haW5fbDNfcGcsIF9f UEFHRV9IWVBFUlZJU09SX1JXKTsKKyAgICBpZiAoIHphcF9yb19tcHQgfHwgaXNfcHZfMzJiaXRf ZG9tYWluKGQpICkKKyAgICAgICAgbDR0YWJbbDRfdGFibGVfb2Zmc2V0KFJPX01QVF9WSVJUX1NU QVJUKV0gPSBsNGVfZW1wdHkoKTsKK30KKwordm9pZCBwdl9hcmNoX2luaXRfbWVtb3J5KHZvaWQp Cit7CisjaWZuZGVmIE5ERUJVRworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgaWYgKCBoaWdo bWVtX3N0YXJ0ICkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgc3BsaXRfdmEgPSAodW5z aWduZWQgbG9uZylfX3ZhKGhpZ2htZW1fc3RhcnQpOworCisgICAgICAgIGlmICggc3BsaXRfdmEg PCBIWVBFUlZJU09SX1ZJUlRfRU5EICYmCisgICAgICAgICAgICAgc3BsaXRfdmEgLSAxID09ICh1 bnNpZ25lZCBsb25nKV9fdmEoaGlnaG1lbV9zdGFydCAtIDEpICkKKyAgICAgICAgeworICAgICAg ICAgICAgcm9vdF9wZ3RfcHZfeGVuX3Nsb3RzID0gbDRfdGFibGVfb2Zmc2V0KHNwbGl0X3ZhKSAt CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBST09UX1BBR0VUQUJMRV9GSVJT VF9YRU5fU0xPVDsKKyAgICAgICAgICAgIEFTU0VSVChyb290X3BndF9wdl94ZW5fc2xvdHMgPCBS T09UX1BBR0VUQUJMRV9QVl9YRU5fU0xPVFMpOworICAgICAgICAgICAgaWYgKCBsNF90YWJsZV9v ZmZzZXQoc3BsaXRfdmEpID09IGw0X3RhYmxlX29mZnNldChzcGxpdF92YSAtIDEpICkKKyAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICBsM19wZ2VudHJ5X3QgKmwzdGFiID0gYWxsb2NfeGVu X3BhZ2V0YWJsZSgpOworCisgICAgICAgICAgICAgICAgaWYgKCBsM3RhYiApCisgICAgICAgICAg ICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb25zdCBsM19wZ2VudHJ5X3QgKmwzaWRsZSA9 CisgICAgICAgICAgICAgICAgICAgICAgICBsNGVfdG9fbDNlKGlkbGVfcGdfdGFibGVbbDRfdGFi bGVfb2Zmc2V0KHNwbGl0X3ZhKV0pOworCisgICAgICAgICAgICAgICAgICAgIGZvciAoIGkgPSAw OyBpIDwgbDNfdGFibGVfb2Zmc2V0KHNwbGl0X3ZhKTsgKytpICkKKyAgICAgICAgICAgICAgICAg ICAgICAgIGwzdGFiW2ldID0gbDNpZGxlW2ldOworICAgICAgICAgICAgICAgICAgICBmb3IgKCA7 IGkgPCBMM19QQUdFVEFCTEVfRU5UUklFUzsgKytpICkKKyAgICAgICAgICAgICAgICAgICAgICAg IGwzdGFiW2ldID0gbDNlX2VtcHR5KCk7CisgICAgICAgICAgICAgICAgICAgIHNwbGl0X2w0ZSA9 IGw0ZV9mcm9tX3Bmbih2aXJ0X3RvX21mbihsM3RhYiksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBfX1BBR0VfSFlQRVJWSVNPUl9SVyk7CisgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgKytyb290 X3BndF9wdl94ZW5fc2xvdHM7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisjZW5k aWYKK30KKwogLyoKICAqIEhvdyB0byB3cml0ZSBhbiBlbnRyeSB0byB0aGUgZ3Vlc3QgcGFnZXRh Ymxlcy4KICAqIFJldHVybnMgZmFsc2UgZm9yIGZhaWx1cmUgKHBvaW50ZXIgbm90IHZhbGlkKSwg dHJ1ZSBmb3Igc3VjY2Vzcy4KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaCBi L3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaAppbmRleCBjMTFmYTY4MGJkLi5hNjM1MmU2ZmM5IDEw MDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L21tLmgKKysrIGIveGVuL2luY2x1ZGUvYXNt LXg4Ni9tbS5oCkBAIC0zMDUsOCArMzA1LDYgQEAgc3RhdGljIGlubGluZSB2b2lkICpfX3BhZ2Vf dG9fdmlydChjb25zdCBzdHJ1Y3QgcGFnZV9pbmZvICpwZykKIGludCBmcmVlX3BhZ2VfdHlwZShz dHJ1Y3QgcGFnZV9pbmZvICpwYWdlLCB1bnNpZ25lZCBsb25nIHR5cGUsCiAgICAgICAgICAgICAg ICAgICAgaW50IHByZWVtcHRpYmxlKTsKIAotdm9pZCBpbml0X2d1ZXN0X2w0X3RhYmxlKGw0X3Bn ZW50cnlfdFtdLCBjb25zdCBzdHJ1Y3QgZG9tYWluICosCi0gICAgICAgICAgICAgICAgICAgICAg ICAgYm9vbF90IHphcF9yb19tcHQpOwogYm9vbF90IGZpbGxfcm9fbXB0KHVuc2lnbmVkIGxvbmcg bWZuKTsKIHZvaWQgemFwX3JvX21wdCh1bnNpZ25lZCBsb25nIG1mbik7CiAKZGlmZiAtLWdpdCBh L3hlbi9pbmNsdWRlL2FzbS14ODYvcHYvbW0uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHYvbW0u aAppbmRleCAwMDYxNTZkMGUxLi40ZWNiZjUwYjE4IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9h c20teDg2L3B2L21tLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wdi9tbS5oCkBAIC04OSw2 ICs4OSwxMCBAQCBib29sIHB2X3VwZGF0ZV9pbnRwdGUoaW50cHRlX3QgKnAsIGludHB0ZV90IG9s ZCwgaW50cHRlX3QgbmV3LAogbDFfcGdlbnRyeV90ICpwdl9tYXBfZ3Vlc3RfbDFlKHVuc2lnbmVk IGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyAqZ2wxbWZuKTsKIHZvaWQgcHZfdW5tYXBfZ3Vlc3Rf bDFlKHZvaWQgKnApOwogCit2b2lkIHB2X2luaXRfZ3Vlc3RfbDRfdGFibGUobDRfcGdlbnRyeV90 W10sIGNvbnN0IHN0cnVjdCBkb21haW4gKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBi b29sIHphcF9yb19tcHQpOwordm9pZCBwdl9hcmNoX2luaXRfbWVtb3J5KHZvaWQpOworCiAjZWxz ZQogCiBzdGF0aWMgaW5saW5lIHZvaWQgcHZfZ2V0X2d1ZXN0X2VmZl9sMWUodW5zaWduZWQgbG9u ZyBhZGRyLApAQCAtMTEwLDYgKzExNCwxMCBAQCBzdGF0aWMgaW5saW5lIGwxX3BnZW50cnlfdCAq cHZfbWFwX2d1ZXN0X2wxZSh1bnNpZ25lZCBsb25nIGFkZHIsCiAKIHN0YXRpYyBpbmxpbmUgdm9p ZCBwdl91bm1hcF9ndWVzdF9sMWUodm9pZCAqcCkge30KIAorc3RhdGljIGlubGluZSB2b2lkIHB2 X2luaXRfZ3Vlc3RfbDRfdGFibGUobDRfcGdlbnRyeV90W10sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZG9tYWluICosCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHphcF9yb19tcHQpIHt9CitzdGF0 aWMgaW5saW5lIHZvaWQgcHZfYXJjaF9pbml0X21lbW9yeSh2b2lkKSB7fQogI2VuZGlmCiAKICNl bmRpZiAvKiBfX1g4Nl9QVl9NTV9IX18gKi8KLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVu LWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=