From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH v3 20/21] x86/mm: move l4 table setup code Date: Thu, 20 Jul 2017 17:04:25 +0100 Message-ID: <20170720160426.2343-21-wei.liu2@citrix.com> References: <20170720160426.2343-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 1dYE7k-0002lv-V0 for xen-devel@lists.xenproject.org; Thu, 20 Jul 2017 16:16:25 +0000 In-Reply-To: <20170720160426.2343-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 ODYvbW0uYwppbmRleCBjN2M5ODlkOGY4Li41Njg3ZTI5ODI0IDEwMDY0NAotLS0gYS94ZW4vYXJj aC94ODYvbW0uYworKysgYi94ZW4vYXJjaC94ODYvbW0uYwpAQCAtMjUxLDUzICsyNTEsNiBAQCB2 b2lkIF9faW5pdCBpbml0X2ZyYW1ldGFibGUodm9pZCkKICAgICAgICAgaW5pdF9zcGFnZXRhYmxl KCk7CiB9CiAKLSNpZm5kZWYgTkRFQlVHCi1zdGF0aWMgdW5zaWduZWQgaW50IF9fcmVhZF9tb3N0 bHkgcm9vdF9wZ3RfcHZfeGVuX3Nsb3RzCi0gICAgPSBST09UX1BBR0VUQUJMRV9QVl9YRU5fU0xP VFM7Ci1zdGF0aWMgbDRfcGdlbnRyeV90IF9fcmVhZF9tb3N0bHkgc3BsaXRfbDRlOwotI2Vsc2UK LSNkZWZpbmUgcm9vdF9wZ3RfcHZfeGVuX3Nsb3RzIFJPT1RfUEFHRVRBQkxFX1BWX1hFTl9TTE9U UwotI2VuZGlmCi0KLXN0YXRpYyB2b2lkIHB2X2FyY2hfaW5pdF9tZW1vcnkodm9pZCkKLXsKLSNp Zm5kZWYgTkRFQlVHCi0gICAgdW5zaWduZWQgaW50IGk7Ci0KLSAgICBpZiAoIGhpZ2htZW1fc3Rh cnQgKQotICAgIHsKLSAgICAgICAgdW5zaWduZWQgbG9uZyBzcGxpdF92YSA9ICh1bnNpZ25lZCBs b25nKV9fdmEoaGlnaG1lbV9zdGFydCk7Ci0KLSAgICAgICAgaWYgKCBzcGxpdF92YSA8IEhZUEVS VklTT1JfVklSVF9FTkQgJiYKLSAgICAgICAgICAgICBzcGxpdF92YSAtIDEgPT0gKHVuc2lnbmVk IGxvbmcpX192YShoaWdobWVtX3N0YXJ0IC0gMSkgKQotICAgICAgICB7Ci0gICAgICAgICAgICBy b290X3BndF9wdl94ZW5fc2xvdHMgPSBsNF90YWJsZV9vZmZzZXQoc3BsaXRfdmEpIC0KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJPT1RfUEFHRVRBQkxFX0ZJUlNUX1hFTl9T TE9UOwotICAgICAgICAgICAgQVNTRVJUKHJvb3RfcGd0X3B2X3hlbl9zbG90cyA8IFJPT1RfUEFH RVRBQkxFX1BWX1hFTl9TTE9UUyk7Ci0gICAgICAgICAgICBpZiAoIGw0X3RhYmxlX29mZnNldChz cGxpdF92YSkgPT0gbDRfdGFibGVfb2Zmc2V0KHNwbGl0X3ZhIC0gMSkgKQotICAgICAgICAgICAg ewotICAgICAgICAgICAgICAgIGwzX3BnZW50cnlfdCAqbDN0YWIgPSBhbGxvY194ZW5fcGFnZXRh YmxlKCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIGwzdGFiICkKLSAgICAgICAgICAgICAgICB7 Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGwzX3BnZW50cnlfdCAqbDNpZGxlID0KLSAgICAg ICAgICAgICAgICAgICAgICAgIGw0ZV90b19sM2UoaWRsZV9wZ190YWJsZVtsNF90YWJsZV9vZmZz ZXQoc3BsaXRfdmEpXSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBs M190YWJsZV9vZmZzZXQoc3BsaXRfdmEpOyArK2kgKQotICAgICAgICAgICAgICAgICAgICAgICAg bDN0YWJbaV0gPSBsM2lkbGVbaV07Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoIDsgaSA8IEwz X1BBR0VUQUJMRV9FTlRSSUVTOyArK2kgKQotICAgICAgICAgICAgICAgICAgICAgICAgbDN0YWJb aV0gPSBsM2VfZW1wdHkoKTsKLSAgICAgICAgICAgICAgICAgICAgc3BsaXRfbDRlID0gbDRlX2Zy b21fcGZuKHZpcnRfdG9fbWZuKGwzdGFiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF9fUEFHRV9IWVBFUlZJU09SX1JXKTsKLSAgICAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICArK3Jvb3RfcGd0X3B2 X3hlbl9zbG90czsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotfQot CiB2b2lkIF9faW5pdCBhcmNoX2luaXRfbWVtb3J5KHZvaWQpCiB7CiAgICAgdW5zaWduZWQgbG9u ZyBpLCBwZm4sIHJzdGFydF9wZm4sIHJlbmRfcGZuLCBpb3N0YXJ0X3BmbiwgaW9lbmRfcGZuOwpA QCAtMTQ2OCwyNiArMTQyMSw2IEBAIHN0YXRpYyBpbnQgYWxsb2NfbDNfdGFibGUoc3RydWN0IHBh Z2VfaW5mbyAqcGFnZSkKICAgICByZXR1cm4gcmMgPiAwID8gMCA6IHJjOwogfQogCi12b2lkIGlu aXRfZ3Vlc3RfbDRfdGFibGUobDRfcGdlbnRyeV90IGw0dGFiW10sIGNvbnN0IHN0cnVjdCBkb21h aW4gKmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB6YXBfcm9fbXB0KQotewotICAg IC8qIFhlbiBwcml2YXRlIG1hcHBpbmdzLiAqLwotICAgIG1lbWNweSgmbDR0YWJbUk9PVF9QQUdF VEFCTEVfRklSU1RfWEVOX1NMT1RdLAotICAgICAgICAgICAmaWRsZV9wZ190YWJsZVtST09UX1BB R0VUQUJMRV9GSVJTVF9YRU5fU0xPVF0sCi0gICAgICAgICAgIHJvb3RfcGd0X3B2X3hlbl9zbG90 cyAqIHNpemVvZihsNF9wZ2VudHJ5X3QpKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgaWYgKCBsNGVf Z2V0X2ludHB0ZShzcGxpdF9sNGUpICkKLSAgICAgICAgbDR0YWJbUk9PVF9QQUdFVEFCTEVfRklS U1RfWEVOX1NMT1QgKyByb290X3BndF9wdl94ZW5fc2xvdHNdID0KLSAgICAgICAgICAgIHNwbGl0 X2w0ZTsKLSNlbmRpZgotICAgIGw0dGFiW2w0X3RhYmxlX29mZnNldChMSU5FQVJfUFRfVklSVF9T VEFSVCldID0KLSAgICAgICAgbDRlX2Zyb21fcGZuKGRvbWFpbl9wYWdlX21hcF90b19tZm4obDR0 YWIpLCBfX1BBR0VfSFlQRVJWSVNPUl9SVyk7Ci0gICAgbDR0YWJbbDRfdGFibGVfb2Zmc2V0KFBF UkRPTUFJTl9WSVJUX1NUQVJUKV0gPQotICAgICAgICBsNGVfZnJvbV9wYWdlKGQtPmFyY2gucGVy ZG9tYWluX2wzX3BnLCBfX1BBR0VfSFlQRVJWSVNPUl9SVyk7Ci0gICAgaWYgKCB6YXBfcm9fbXB0 IHx8IGlzX3B2XzMyYml0X2RvbWFpbihkKSApCi0gICAgICAgIGw0dGFiW2w0X3RhYmxlX29mZnNl dChST19NUFRfVklSVF9TVEFSVCldID0gbDRlX2VtcHR5KCk7Ci19Ci0KIGJvb2wgZmlsbF9yb19t cHQodW5zaWduZWQgbG9uZyBtZm4pCiB7CiAgICAgbDRfcGdlbnRyeV90ICpsNHRhYiA9IG1hcF9k b21haW5fcGFnZShfbWZuKG1mbikpOwpAQCAtMTU2Miw3ICsxNDk1LDcgQEAgc3RhdGljIGludCBh bGxvY19sNF90YWJsZShzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlKQogCiAgICAgaWYgKCByYyA+PSAw ICkKICAgICB7Ci0gICAgICAgIGluaXRfZ3Vlc3RfbDRfdGFibGUocGw0ZSwgZCwgIVZNX0FTU0lT VChkLCBtMnBfc3RyaWN0KSk7CisgICAgICAgIHB2X2luaXRfZ3Vlc3RfbDRfdGFibGUocGw0ZSwg ZCwgIVZNX0FTU0lTVChkLCBtMnBfc3RyaWN0KSk7CiAgICAgICAgIGF0b21pY19pbmMoJmQtPmFy Y2gucHZfZG9tYWluLm5yX2w0X3BhZ2VzKTsKICAgICAgICAgcmMgPSAwOwogICAgIH0KZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni9wdi9kb20wX2J1aWxkLmMgYi94ZW4vYXJjaC94ODYvcHYvZG9t MF9idWlsZC5jCmluZGV4IDE4YzE5YTI1NmYuLmVmNzg5NDEwZmUgMTAwNjQ0Ci0tLSBhL3hlbi9h cmNoL3g4Ni9wdi9kb20wX2J1aWxkLmMKKysrIGIveGVuL2FyY2gveDg2L3B2L2RvbTBfYnVpbGQu YwpAQCAtMTgsNiArMTgsNyBAQAogI2luY2x1ZGUgPGFzbS9iemltYWdlLmg+CiAjaW5jbHVkZSA8 YXNtL2RvbTBfYnVpbGQuaD4KICNpbmNsdWRlIDxhc20vcGFnZS5oPgorI2luY2x1ZGUgPGFzbS9w di9tbS5oPgogI2luY2x1ZGUgPGFzbS9zZXR1cC5oPgogCiAvKiBBbGxvdyByaW5nLTMgYWNjZXNz IGluIGxvbmcgbW9kZSBhcyBndWVzdCBjYW5ub3QgdXNlIHJpbmcgMSAuLi4gKi8KQEAgLTU5MCw3 ICs1OTEsNyBAQCBpbnQgX19pbml0IGRvbTBfY29uc3RydWN0X3B2KHN0cnVjdCBkb21haW4gKmQs CiAgICAgICAgIGwzc3RhcnQgPSBfX3ZhKG1wdF9hbGxvYyk7IG1wdF9hbGxvYyArPSBQQUdFX1NJ WkU7CiAgICAgfQogICAgIGNsZWFyX3BhZ2UobDR0YWIpOwotICAgIGluaXRfZ3Vlc3RfbDRfdGFi bGUobDR0YWIsIGQsIDApOworICAgIHB2X2luaXRfZ3Vlc3RfbDRfdGFibGUobDR0YWIsIGQsIDAp OwogICAgIHYtPmFyY2guZ3Vlc3RfdGFibGUgPSBwYWdldGFibGVfZnJvbV9wYWRkcihfX3BhKGw0 c3RhcnQpKTsKICAgICBpZiAoIGlzX3B2XzMyYml0X2RvbWFpbihkKSApCiAgICAgICAgIHYtPmFy Y2guZ3Vlc3RfdGFibGVfdXNlciA9IHYtPmFyY2guZ3Vlc3RfdGFibGU7CmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvcHYvZG9tYWluLmMgYi94ZW4vYXJjaC94ODYvcHYvZG9tYWluLmMKaW5kZXgg NmNiNjFmMmUxNC4uNDE1ZDA2MzRhMyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3B2L2RvbWFp bi5jCisrKyBiL3hlbi9hcmNoL3g4Ni9wdi9kb21haW4uYwpAQCAtMTAsNiArMTAsNyBAQAogI2lu Y2x1ZGUgPHhlbi9zY2hlZC5oPgogCiAjaW5jbHVkZSA8YXNtL3B2L2RvbWFpbi5oPgorI2luY2x1 ZGUgPGFzbS9wdi9tbS5oPgogCiBzdGF0aWMgdm9pZCBub3JldHVybiBjb250aW51ZV9ub25pZGxl X2RvbWFpbihzdHJ1Y3QgdmNwdSAqdikKIHsKQEAgLTI5LDcgKzMwLDcgQEAgc3RhdGljIGludCBz ZXR1cF9jb21wYXRfbDQoc3RydWN0IHZjcHUgKnYpCiAKICAgICBsNHRhYiA9IF9fbWFwX2RvbWFp bl9wYWdlKHBnKTsKICAgICBjbGVhcl9wYWdlKGw0dGFiKTsKLSAgICBpbml0X2d1ZXN0X2w0X3Rh YmxlKGw0dGFiLCB2LT5kb21haW4sIDEpOworICAgIHB2X2luaXRfZ3Vlc3RfbDRfdGFibGUobDR0 YWIsIHYtPmRvbWFpbiwgMSk7CiAgICAgdW5tYXBfZG9tYWluX3BhZ2UobDR0YWIpOwogCiAgICAg LyogVGhpcyBwYWdlIG5lZWRzIHRvIGxvb2sgbGlrZSBhIHBhZ2V0YWJsZSBzbyB0aGF0IGl0IGNh biBiZSBzaGFkb3dlZCAqLwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3B2L21tLmMgYi94ZW4v YXJjaC94ODYvcHYvbW0uYwppbmRleCAzMmU3M2Q1OWRmLi4wZjQzMDNjZWYyIDEwMDY0NAotLS0g YS94ZW4vYXJjaC94ODYvcHYvbW0uYworKysgYi94ZW4vYXJjaC94ODYvcHYvbW0uYwpAQCAtMjMs NiArMjMsNyBAQAogI2luY2x1ZGUgPHhlbi9ndWVzdF9hY2Nlc3MuaD4KIAogI2luY2x1ZGUgPGFz bS9wdi9tbS5oPgorI2luY2x1ZGUgPGFzbS9zZXR1cC5oPgogCiAvKgogICogUFRFIHVwZGF0ZXMg Y2FuIGJlIGRvbmUgd2l0aCBvcmRpbmFyeSB3cml0ZXMgZXhjZXB0OgpAQCAtMzIsNiArMzMsMTQg QEAKICNkZWZpbmUgUFRFX1VQREFURV9XSVRIX0NNUFhDSEcKICNlbmRpZgogCisjaWZuZGVmIE5E RUJVRworc3RhdGljIHVuc2lnbmVkIGludCBfX3JlYWRfbW9zdGx5IHJvb3RfcGd0X3B2X3hlbl9z bG90cworICAgID0gUk9PVF9QQUdFVEFCTEVfUFZfWEVOX1NMT1RTOworc3RhdGljIGw0X3BnZW50 cnlfdCBfX3JlYWRfbW9zdGx5IHNwbGl0X2w0ZTsKKyNlbHNlCisjZGVmaW5lIHJvb3RfcGd0X3B2 X3hlbl9zbG90cyBST09UX1BBR0VUQUJMRV9QVl9YRU5fU0xPVFMKKyNlbmRpZgorCiAvKiBSZWFk IGEgUFYgZ3Vlc3QncyBsMWUgdGhhdCBtYXBzIHRoaXMgdmlydHVhbCBhZGRyZXNzLiAqLwogdm9p ZCBwdl9nZXRfZ3Vlc3RfZWZmX2wxZSh1bnNpZ25lZCBsb25nIGFkZHIsIGwxX3BnZW50cnlfdCAq ZWZmX2wxZSkKIHsKQEAgLTk2LDYgKzEwNSw2NSBAQCB2b2lkIHB2X3VubWFwX2d1ZXN0X2wxZSh2 b2lkICpwKQogICAgIHVubWFwX2RvbWFpbl9wYWdlKHApOwogfQogCit2b2lkIHB2X2luaXRfZ3Vl c3RfbDRfdGFibGUobDRfcGdlbnRyeV90IGw0dGFiW10sIGNvbnN0IHN0cnVjdCBkb21haW4gKmQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB6YXBfcm9fbXB0KQoreworICAgIC8q IFhlbiBwcml2YXRlIG1hcHBpbmdzLiAqLworICAgIG1lbWNweSgmbDR0YWJbUk9PVF9QQUdFVEFC TEVfRklSU1RfWEVOX1NMT1RdLAorICAgICAgICAgICAmaWRsZV9wZ190YWJsZVtST09UX1BBR0VU QUJMRV9GSVJTVF9YRU5fU0xPVF0sCisgICAgICAgICAgIHJvb3RfcGd0X3B2X3hlbl9zbG90cyAq IHNpemVvZihsNF9wZ2VudHJ5X3QpKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgaWYgKCBsNGVfZ2V0 X2ludHB0ZShzcGxpdF9sNGUpICkKKyAgICAgICAgbDR0YWJbUk9PVF9QQUdFVEFCTEVfRklSU1Rf WEVOX1NMT1QgKyByb290X3BndF9wdl94ZW5fc2xvdHNdID0KKyAgICAgICAgICAgIHNwbGl0X2w0 ZTsKKyNlbmRpZgorICAgIGw0dGFiW2w0X3RhYmxlX29mZnNldChMSU5FQVJfUFRfVklSVF9TVEFS VCldID0KKyAgICAgICAgbDRlX2Zyb21fcGZuKGRvbWFpbl9wYWdlX21hcF90b19tZm4obDR0YWIp LCBfX1BBR0VfSFlQRVJWSVNPUl9SVyk7CisgICAgbDR0YWJbbDRfdGFibGVfb2Zmc2V0KFBFUkRP TUFJTl9WSVJUX1NUQVJUKV0gPQorICAgICAgICBsNGVfZnJvbV9wYWdlKGQtPmFyY2gucGVyZG9t YWluX2wzX3BnLCBfX1BBR0VfSFlQRVJWSVNPUl9SVyk7CisgICAgaWYgKCB6YXBfcm9fbXB0IHx8 IGlzX3B2XzMyYml0X2RvbWFpbihkKSApCisgICAgICAgIGw0dGFiW2w0X3RhYmxlX29mZnNldChS T19NUFRfVklSVF9TVEFSVCldID0gbDRlX2VtcHR5KCk7Cit9CisKK3ZvaWQgcHZfYXJjaF9pbml0 X21lbW9yeSh2b2lkKQoreworI2lmbmRlZiBOREVCVUcKKyAgICB1bnNpZ25lZCBpbnQgaTsKKwor ICAgIGlmICggaGlnaG1lbV9zdGFydCApCisgICAgeworICAgICAgICB1bnNpZ25lZCBsb25nIHNw bGl0X3ZhID0gKHVuc2lnbmVkIGxvbmcpX192YShoaWdobWVtX3N0YXJ0KTsKKworICAgICAgICBp ZiAoIHNwbGl0X3ZhIDwgSFlQRVJWSVNPUl9WSVJUX0VORCAmJgorICAgICAgICAgICAgIHNwbGl0 X3ZhIC0gMSA9PSAodW5zaWduZWQgbG9uZylfX3ZhKGhpZ2htZW1fc3RhcnQgLSAxKSApCisgICAg ICAgIHsKKyAgICAgICAgICAgIHJvb3RfcGd0X3B2X3hlbl9zbG90cyA9IGw0X3RhYmxlX29mZnNl dChzcGxpdF92YSkgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUk9PVF9Q QUdFVEFCTEVfRklSU1RfWEVOX1NMT1Q7CisgICAgICAgICAgICBBU1NFUlQocm9vdF9wZ3RfcHZf eGVuX3Nsb3RzIDwgUk9PVF9QQUdFVEFCTEVfUFZfWEVOX1NMT1RTKTsKKyAgICAgICAgICAgIGlm ICggbDRfdGFibGVfb2Zmc2V0KHNwbGl0X3ZhKSA9PSBsNF90YWJsZV9vZmZzZXQoc3BsaXRfdmEg LSAxKSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbDNfcGdlbnRyeV90ICpsM3Rh YiA9IGFsbG9jX3hlbl9wYWdldGFibGUoKTsKKworICAgICAgICAgICAgICAgIGlmICggbDN0YWIg KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgbDNfcGdlbnRy eV90ICpsM2lkbGUgPQorICAgICAgICAgICAgICAgICAgICAgICAgbDRlX3RvX2wzZShpZGxlX3Bn X3RhYmxlW2w0X3RhYmxlX29mZnNldChzcGxpdF92YSldKTsKKworICAgICAgICAgICAgICAgICAg ICBmb3IgKCBpID0gMDsgaSA8IGwzX3RhYmxlX29mZnNldChzcGxpdF92YSk7ICsraSApCisgICAg ICAgICAgICAgICAgICAgICAgICBsM3RhYltpXSA9IGwzaWRsZVtpXTsKKyAgICAgICAgICAgICAg ICAgICAgZm9yICggOyBpIDwgTDNfUEFHRVRBQkxFX0VOVFJJRVM7ICsraSApCisgICAgICAgICAg ICAgICAgICAgICAgICBsM3RhYltpXSA9IGwzZV9lbXB0eSgpOworICAgICAgICAgICAgICAgICAg ICBzcGxpdF9sNGUgPSBsNGVfZnJvbV9wZm4odmlydF90b19tZm4obDN0YWIpLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19QQUdFX0hZUEVSVklTT1JfUlcp OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg ICAgICAgICsrcm9vdF9wZ3RfcHZfeGVuX3Nsb3RzOworICAgICAgICAgICAgfQorICAgICAgICB9 CisgICAgfQorI2VuZGlmCit9CisKIC8qCiAgKiBIb3cgdG8gd3JpdGUgYW4gZW50cnkgdG8gdGhl IGd1ZXN0IHBhZ2V0YWJsZXMuCiAgKiBSZXR1cm5zIGZhbHNlIGZvciBmYWlsdXJlIChwb2ludGVy IG5vdCB2YWxpZCksIHRydWUgZm9yIHN1Y2Nlc3MuCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9h c20teDg2L21tLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L21tLmgKaW5kZXggMDcyODdkOTdjYS4u MTljODBkYTk5NSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9tbS5oCisrKyBiL3hl bi9pbmNsdWRlL2FzbS14ODYvbW0uaApAQCAtMzIyLDggKzMyMiw2IEBAIHN0YXRpYyBpbmxpbmUg dm9pZCAqX19wYWdlX3RvX3ZpcnQoY29uc3Qgc3RydWN0IHBhZ2VfaW5mbyAqcGcpCiBpbnQgZnJl ZV9wYWdlX3R5cGUoc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSwgdW5zaWduZWQgbG9uZyB0eXBlLAog ICAgICAgICAgICAgICAgICAgIGludCBwcmVlbXB0aWJsZSk7CiAKLXZvaWQgaW5pdF9ndWVzdF9s NF90YWJsZShsNF9wZ2VudHJ5X3RbXSwgY29uc3Qgc3RydWN0IGRvbWFpbiAqLAotICAgICAgICAg ICAgICAgICAgICAgICAgIGJvb2xfdCB6YXBfcm9fbXB0KTsKIGJvb2xfdCBmaWxsX3JvX21wdCh1 bnNpZ25lZCBsb25nIG1mbik7CiB2b2lkIHphcF9yb19tcHQodW5zaWduZWQgbG9uZyBtZm4pOwog CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3B2L21tLmggYi94ZW4vaW5jbHVkZS9h c20teDg2L3B2L21tLmgKaW5kZXggYTcxY2U5MzRmYS4uOGZkNTQyZTYzMCAxMDA2NDQKLS0tIGEv eGVuL2luY2x1ZGUvYXNtLXg4Ni9wdi9tbS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHYv bW0uaApAQCAtOTAsNiArOTAsMTAgQEAgYm9vbCBwdl91cGRhdGVfaW50cHRlKGludHB0ZV90ICpw LCBpbnRwdGVfdCBvbGQsIGludHB0ZV90IG5ldywKIGwxX3BnZW50cnlfdCAqcHZfbWFwX2d1ZXN0 X2wxZSh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgKmdsMW1mbik7CiB2b2lkIHB2 X3VubWFwX2d1ZXN0X2wxZSh2b2lkICpwKTsKIAordm9pZCBwdl9pbml0X2d1ZXN0X2w0X3RhYmxl KGw0X3BnZW50cnlfdFtdLCBjb25zdCBzdHJ1Y3QgZG9tYWluICosCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYm9vbCB6YXBfcm9fbXB0KTsKK3ZvaWQgcHZfYXJjaF9pbml0X21lbW9yeSh2 b2lkKTsKKwogI2Vsc2UKIAogc3RhdGljIGlubGluZSB2b2lkIHB2X2dldF9ndWVzdF9lZmZfbDFl KHVuc2lnbmVkIGxvbmcgYWRkciwKQEAgLTExMSw2ICsxMTUsMTAgQEAgc3RhdGljIGlubGluZSBs MV9wZ2VudHJ5X3QgKnB2X21hcF9ndWVzdF9sMWUodW5zaWduZWQgbG9uZyBhZGRyLAogCiBzdGF0 aWMgaW5saW5lIHZvaWQgcHZfdW5tYXBfZ3Vlc3RfbDFlKHZvaWQgKnApIHt9CiAKK3N0YXRpYyBp bmxpbmUgdm9pZCBwdl9pbml0X2d1ZXN0X2w0X3RhYmxlKGw0X3BnZW50cnlfdFtdLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGRvbWFpbiAq LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB6YXBfcm9f bXB0KSB7fQorc3RhdGljIGlubGluZSB2b2lkIHB2X2FyY2hfaW5pdF9tZW1vcnkodm9pZCkge30K ICNlbmRpZgogCiAjZW5kaWYgLyogX19YODZfUFZfTU1fSF9fICovCi0tIAoyLjExLjAKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFp bGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94 ZW4tZGV2ZWwK