From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH RFC for-next] x86/mm: introduce and use virt_to_xen_l4e Date: Tue, 31 Oct 2017 18:51:31 +0000 Message-ID: <20171031185131.26625-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 1e9bgV-0003Yb-MC for xen-devel@lists.xenproject.org; Tue, 31 Oct 2017 18:54:47 +0000 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 QXZvaWQgb3Blbi1jb2RpbmcgaW4gYSBsb3Qgb2YgcGxhY2VzLgoKTm8gZnVuY3Rpb25hbCBjaGFu Z2UuCgpTaWduZWQtb2ZmLWJ5OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgotLS0KSXMg dGhpcyBwYXRjaCB1c2VmdWwgb3IgaXMgb3Blbi1jb2RpbmcgcHJlZmVycmVkPwotLS0KIHhlbi9h cmNoL3g4Ni9tbS5jICAgICAgICAgIHwgMTQgKysrKysrKy0tLS0tLS0KIHhlbi9hcmNoL3g4Ni94 ODZfNjQvbW0uYyAgIHwgMzYgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCiB4 ZW4vaW5jbHVkZS9hc20teDg2L3BhZ2UuaCB8ICA1ICsrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDI5 IGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4 Ni9tbS5jIGIveGVuL2FyY2gveDg2L21tLmMKaW5kZXggYTIwZmRjYWVhNC4uY2Q3MGFiYTYwYyAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tLmMKKysrIGIveGVuL2FyY2gveDg2L21tLmMKQEAg LTM2Myw3ICszNjMsNyBAQCB2b2lkIF9faW5pdCBhcmNoX2luaXRfbWVtb3J5KHZvaWQpCiAgICAg ICAgICAgICAgICAgaWYgKCBsM3RhYiApCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgICAgICBjb25zdCBsM19wZ2VudHJ5X3QgKmwzaWRsZSA9Ci0gICAgICAgICAgICAgICAgICAg ICAgICBsNGVfdG9fbDNlKGlkbGVfcGdfdGFibGVbbDRfdGFibGVfb2Zmc2V0KHNwbGl0X3ZhKV0p OworICAgICAgICAgICAgICAgICAgICAgICAgbDRlX3RvX2wzZSgqdmlydF90b194ZW5fbDRlKHNw bGl0X3ZhKSk7CiAKICAgICAgICAgICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBsM190YWJs ZV9vZmZzZXQoc3BsaXRfdmEpOyArK2kgKQogICAgICAgICAgICAgICAgICAgICAgICAgbDN0YWJb aV0gPSBsM2lkbGVbaV07CkBAIC0xNTc1LDEyICsxNTc1LDEyIEBAIHZvaWQgaW5pdF94ZW5fbDRf c2xvdHMobDRfcGdlbnRyeV90ICpsNHQsIG1mbl90IGw0bWZuLAogCiAgICAgLyogU2xvdCAyNTY6 IFJPIE0yUCAoaWYgYXBwbGljYWJsZSkuICovCiAgICAgbDR0W2w0X3RhYmxlX29mZnNldChST19N UFRfVklSVF9TVEFSVCldID0KLSAgICAgICAgcm9fbXB0ID8gaWRsZV9wZ190YWJsZVtsNF90YWJs ZV9vZmZzZXQoUk9fTVBUX1ZJUlRfU1RBUlQpXQorICAgICAgICByb19tcHQgPyAqdmlydF90b194 ZW5fbDRlKFJPX01QVF9WSVJUX1NUQVJUKQogICAgICAgICAgICAgICAgOiBsNGVfZW1wdHkoKTsK IAogICAgIC8qIFNsb3QgMjU3OiBQQ0kgTU1DRkcuICovCiAgICAgbDR0W2w0X3RhYmxlX29mZnNl dChQQ0lfTUNGR19WSVJUX1NUQVJUKV0gPQotICAgICAgICBpZGxlX3BnX3RhYmxlW2w0X3RhYmxl X29mZnNldChQQ0lfTUNGR19WSVJUX1NUQVJUKV07CisgICAgICAgICp2aXJ0X3RvX3hlbl9sNGUo UENJX01DRkdfVklSVF9TVEFSVCk7CiAKICAgICAvKiBTbG90IDI1ODogU2VsZiBsaW5lYXIgbWFw cGluZ3MuICovCiAgICAgQVNTRVJUKCFtZm5fZXEobDRtZm4sIElOVkFMSURfTUZOKSk7CkBAIC0x NjA5LDcgKzE2MDksNyBAQCB2b2lkIGluaXRfeGVuX2w0X3Nsb3RzKGw0X3BnZW50cnlfdCAqbDR0 LCBtZm5fdCBsNG1mbiwKICAgICAgICAgbDRfcGdlbnRyeV90ICpuZXh0OwogCiAgICAgICAgIG1l bWNweSgmbDR0W2w0X3RhYmxlX29mZnNldChYRU5fVklSVF9TVEFSVCldLAotICAgICAgICAgICAg ICAgJmlkbGVfcGdfdGFibGVbbDRfdGFibGVfb2Zmc2V0KFhFTl9WSVJUX1NUQVJUKV0sCisgICAg ICAgICAgICAgICB2aXJ0X3RvX3hlbl9sNGUoWEVOX1ZJUlRfU1RBUlQpLAogICAgICAgICAgICAg ICAgKFJPT1RfUEFHRVRBQkxFX0ZJUlNUX1hFTl9TTE9UICsgcm9vdF9wZ3RfcHZfeGVuX3Nsb3Rz IC0KICAgICAgICAgICAgICAgICBsNF90YWJsZV9vZmZzZXQoWEVOX1ZJUlRfU1RBUlQpKSAqIHNp emVvZigqbDR0KSk7CiAKQEAgLTE2MjksNyArMTYyOSw3IEBAIHZvaWQgaW5pdF94ZW5fbDRfc2xv dHMobDRfcGdlbnRyeV90ICpsNHQsIG1mbl90IGw0bWZuLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOiBST09UX1BBR0VUQUJMRV9YRU5fU0xPVFMpOwogCiAgICAgICAgIG1lbWNweSgm bDR0W2w0X3RhYmxlX29mZnNldChYRU5fVklSVF9TVEFSVCldLAotICAgICAgICAgICAgICAgJmlk bGVfcGdfdGFibGVbbDRfdGFibGVfb2Zmc2V0KFhFTl9WSVJUX1NUQVJUKV0sCisgICAgICAgICAg ICAgICB2aXJ0X3RvX3hlbl9sNGUoWEVOX1ZJUlRfU1RBUlQpLAogICAgICAgICAgICAgICAgKFJP T1RfUEFHRVRBQkxFX0ZJUlNUX1hFTl9TTE9UICsgc2xvdHMgLQogICAgICAgICAgICAgICAgIGw0 X3RhYmxlX29mZnNldChYRU5fVklSVF9TVEFSVCkpICogc2l6ZW9mKCpsNHQpKTsKICAgICB9CkBA IC0xNjQzLDcgKzE2NDMsNyBAQCBib29sIGZpbGxfcm9fbXB0KG1mbl90IG1mbikKICAgICBpZiAo ICFsNGVfZ2V0X2ludHB0ZShsNHRhYltsNF90YWJsZV9vZmZzZXQoUk9fTVBUX1ZJUlRfU1RBUlQp XSkgKQogICAgIHsKICAgICAgICAgbDR0YWJbbDRfdGFibGVfb2Zmc2V0KFJPX01QVF9WSVJUX1NU QVJUKV0gPQotICAgICAgICAgICAgaWRsZV9wZ190YWJsZVtsNF90YWJsZV9vZmZzZXQoUk9fTVBU X1ZJUlRfU1RBUlQpXTsKKyAgICAgICAgICAgICp2aXJ0X3RvX3hlbl9sNGUoUk9fTVBUX1ZJUlRf U1RBUlQpOwogICAgICAgICByZXQgPSB0cnVlOwogICAgIH0KICAgICB1bm1hcF9kb21haW5fcGFn ZShsNHRhYik7CkBAIC00NDc2LDcgKzQ0NzYsNyBAQCBzdGF0aWMgbDNfcGdlbnRyeV90ICp2aXJ0 X3RvX3hlbl9sM2UodW5zaWduZWQgbG9uZyB2KQogewogICAgIGw0X3BnZW50cnlfdCAqcGw0ZTsK IAotICAgIHBsNGUgPSAmaWRsZV9wZ190YWJsZVtsNF90YWJsZV9vZmZzZXQodildOworICAgIHBs NGUgPSB2aXJ0X3RvX3hlbl9sNGUodik7CiAgICAgaWYgKCAhKGw0ZV9nZXRfZmxhZ3MoKnBsNGUp ICYgX1BBR0VfUFJFU0VOVCkgKQogICAgIHsKICAgICAgICAgYm9vbCBsb2NraW5nID0gc3lzdGVt X3N0YXRlID4gU1lTX1NUQVRFX2Jvb3Q7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveDg2XzY0 L21tLmMgYi94ZW4vYXJjaC94ODYveDg2XzY0L21tLmMKaW5kZXggMzRjZDg0NTdjZi4uODdlZGZl MGE3ZSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl82NC9tbS5jCisrKyBiL3hlbi9hcmNo L3g4Ni94ODZfNjQvbW0uYwpAQCAtMTMzLDcgKzEzMyw3IEBAIHN0YXRpYyBpbnQgbTJwX21hcHBl ZCh1bnNpZ25lZCBsb25nIHNwZm4pCiAgICAgbDJfcGdlbnRyeV90ICpsMl9yb19tcHQ7CiAKICAg ICB2YSA9IFJPX01QVF9WSVJUX1NUQVJUICsgc3BmbiAqIHNpemVvZigqbWFjaGluZV90b19waHlz X21hcHBpbmcpOwotICAgIGwzX3JvX21wdCA9IGw0ZV90b19sM2UoaWRsZV9wZ190YWJsZVtsNF90 YWJsZV9vZmZzZXQodmEpXSk7CisgICAgbDNfcm9fbXB0ID0gbDRlX3RvX2wzZSgqdmlydF90b194 ZW5fbDRlKHZhKSk7CiAKICAgICBzd2l0Y2ggKCBsM2VfZ2V0X2ZsYWdzKGwzX3JvX21wdFtsM190 YWJsZV9vZmZzZXQodmEpXSkgJgogICAgICAgICAgICAgIChfUEFHRV9QUkVTRU5UIHxfUEFHRV9Q U0UpKQpAQCAtMTY2LDcgKzE2Niw3IEBAIHN0YXRpYyBpbnQgc2hhcmVfaG90YWRkX20ycF90YWJs ZShzdHJ1Y3QgbWVtX2hvdGFkZF9pbmZvICppbmZvKQogICAgICAgICAgIHYgKz0gbiA8PCBQQUdF X1NISUZUICkKICAgICB7CiAgICAgICAgIG4gPSBMMl9QQUdFVEFCTEVfRU5UUklFUyAqIEwxX1BB R0VUQUJMRV9FTlRSSUVTOwotICAgICAgICBsM2UgPSBsNGVfdG9fbDNlKGlkbGVfcGdfdGFibGVb bDRfdGFibGVfb2Zmc2V0KHYpXSlbCisgICAgICAgIGwzZSA9IGw0ZV90b19sM2UoKnZpcnRfdG9f eGVuX2w0ZSh2KSlbCiAgICAgICAgICAgICBsM190YWJsZV9vZmZzZXQodildOwogICAgICAgICBp ZiAoICEobDNlX2dldF9mbGFncyhsM2UpICYgX1BBR0VfUFJFU0VOVCkgKQogICAgICAgICAgICAg Y29udGludWU7CkBAIC0xOTMsNyArMTkzLDcgQEAgc3RhdGljIGludCBzaGFyZV9ob3RhZGRfbTJw X3RhYmxlKHN0cnVjdCBtZW1faG90YWRkX2luZm8gKmluZm8pCiAgICAgICAgICAgdiAhPSBSRFdS X0NPTVBBVF9NUFRfVklSVF9FTkQ7CiAgICAgICAgICAgdiArPSAxIDw8IEwyX1BBR0VUQUJMRV9T SElGVCApCiAgICAgewotICAgICAgICBsM2UgPSBsNGVfdG9fbDNlKGlkbGVfcGdfdGFibGVbbDRf dGFibGVfb2Zmc2V0KHYpXSlbCisgICAgICAgIGwzZSA9IGw0ZV90b19sM2UoKnZpcnRfdG9feGVu X2w0ZSh2KSlbCiAgICAgICAgICAgICBsM190YWJsZV9vZmZzZXQodildOwogICAgICAgICBpZiAo ICEobDNlX2dldF9mbGFncyhsM2UpICYgX1BBR0VfUFJFU0VOVCkgKQogICAgICAgICAgICAgY29u dGludWU7CkBAIC0yMjYsNyArMjI2LDcgQEAgc3RhdGljIHZvaWQgZGVzdHJveV9jb21wYXRfbTJw X21hcHBpbmcoc3RydWN0IG1lbV9ob3RhZGRfaW5mbyAqaW5mbykKICAgICBpZiAoIGVtYXAgPiAo KFJEV1JfQ09NUEFUX01QVF9WSVJUX0VORCAtIFJEV1JfQ09NUEFUX01QVF9WSVJUX1NUQVJUKSA+ PiAyKSApCiAgICAgICAgIGVtYXAgPSAoUkRXUl9DT01QQVRfTVBUX1ZJUlRfRU5EIC0gUkRXUl9D T01QQVRfTVBUX1ZJUlRfU1RBUlQpID4+IDI7CiAKLSAgICBsM19yb19tcHQgPSBsNGVfdG9fbDNl KGlkbGVfcGdfdGFibGVbbDRfdGFibGVfb2Zmc2V0KEhJUk9fQ09NUEFUX01QVF9WSVJUX1NUQVJU KV0pOworICAgIGwzX3JvX21wdCA9IGw0ZV90b19sM2UoKnZpcnRfdG9feGVuX2w0ZShISVJPX0NP TVBBVF9NUFRfVklSVF9TVEFSVCkpOwogCiAgICAgQVNTRVJUKGwzZV9nZXRfZmxhZ3MobDNfcm9f bXB0W2wzX3RhYmxlX29mZnNldChISVJPX0NPTVBBVF9NUFRfVklSVF9TVEFSVCldKSAmIF9QQUdF X1BSRVNFTlQpOwogCkBAIC0yNjEsNyArMjYxLDcgQEAgc3RhdGljIHZvaWQgZGVzdHJveV9tMnBf bWFwcGluZyhzdHJ1Y3QgbWVtX2hvdGFkZF9pbmZvICppbmZvKQogICAgIHVuc2lnbmVkIGxvbmcg aSwgdmEsIHJ3dmE7CiAgICAgdW5zaWduZWQgbG9uZyBzbWFwID0gaW5mby0+c3BmbiwgZW1hcCA9 IGluZm8tPmVwZm47CiAKLSAgICBsM19yb19tcHQgPSBsNGVfdG9fbDNlKGlkbGVfcGdfdGFibGVb bDRfdGFibGVfb2Zmc2V0KFJPX01QVF9WSVJUX1NUQVJUKV0pOworICAgIGwzX3JvX21wdCA9IGw0 ZV90b19sM2UoKnZpcnRfdG9feGVuX2w0ZShST19NUFRfVklSVF9TVEFSVCkpOwogCiAgICAgLyoK ICAgICAgKiBObyBuZWVkIHRvIGNsZWFuIG0ycCBzdHJ1Y3R1cmUgZXhpc3RpbmcgYmVmb3JlIHRo ZSBob3RwbHVnCkBAIC0zNDAsNyArMzQwLDcgQEAgc3RhdGljIGludCBzZXR1cF9jb21wYXRfbTJw X3RhYmxlKHN0cnVjdCBtZW1faG90YWRkX2luZm8gKmluZm8pCiAKICAgICB2YSA9IEhJUk9fQ09N UEFUX01QVF9WSVJUX1NUQVJUICsKICAgICAgICAgIHNtYXAgKiBzaXplb2YoKmNvbXBhdF9tYWNo aW5lX3RvX3BoeXNfbWFwcGluZyk7Ci0gICAgbDNfcm9fbXB0ID0gbDRlX3RvX2wzZShpZGxlX3Bn X3RhYmxlW2w0X3RhYmxlX29mZnNldCh2YSldKTsKKyAgICBsM19yb19tcHQgPSBsNGVfdG9fbDNl KCp2aXJ0X3RvX3hlbl9sNGUodmEpKTsKIAogICAgIEFTU0VSVChsM2VfZ2V0X2ZsYWdzKGwzX3Jv X21wdFtsM190YWJsZV9vZmZzZXQodmEpXSkgJiBfUEFHRV9QUkVTRU5UKTsKIApAQCAtMzk3LDkg KzM5Nyw5IEBAIHN0YXRpYyBpbnQgc2V0dXBfbTJwX3RhYmxlKHN0cnVjdCBtZW1faG90YWRkX2lu Zm8gKmluZm8pCiAgICAgbDNfcGdlbnRyeV90ICpsM19yb19tcHQgPSBOVUxMOwogICAgIGludCBy ZXQgPSAwOwogCi0gICAgQVNTRVJUKGw0ZV9nZXRfZmxhZ3MoaWRsZV9wZ190YWJsZVtsNF90YWJs ZV9vZmZzZXQoUk9fTVBUX1ZJUlRfU1RBUlQpXSkKKyAgICBBU1NFUlQobDRlX2dldF9mbGFncygq dmlydF90b194ZW5fbDRlKFJPX01QVF9WSVJUX1NUQVJUKSkKICAgICAgICAgICAgICYgX1BBR0Vf UFJFU0VOVCk7Ci0gICAgbDNfcm9fbXB0ID0gbDRlX3RvX2wzZShpZGxlX3BnX3RhYmxlW2w0X3Rh YmxlX29mZnNldChST19NUFRfVklSVF9TVEFSVCldKTsKKyAgICBsM19yb19tcHQgPSBsNGVfdG9f bDNlKCp2aXJ0X3RvX3hlbl9sNGUoUk9fTVBUX1ZJUlRfU1RBUlQpKTsKIAogICAgIHNtYXAgPSAo aW5mby0+c3BmbiAmICh+KCgxVUwgPDwgKEwyX1BBR0VUQUJMRV9TSElGVCAtIDMpKSAtMSkpKTsK ICAgICBlbWFwID0gKChpbmZvLT5lcGZuICsgKCgxVUwgPDwgKEwyX1BBR0VUQUJMRV9TSElGVCAt IDMpKSAtIDEgKSkgJgpAQCAtNTA0LDE1ICs1MDQsMTQgQEAgdm9pZCBfX2luaXQgcGFnaW5nX2lu aXQodm9pZCkKICAgICAgICAgICB2YSA8IERJUkVDVE1BUF9WSVJUX0VORCAmJiAodm9pZCAqKXZh IDwgX192YShtZW1faG90cGx1Zyk7CiAgICAgICAgICAgdmEgKz0gKDFVTCA8PCBMNF9QQUdFVEFC TEVfU0hJRlQpICkKICAgICB7Ci0gICAgICAgIGlmICggIShsNGVfZ2V0X2ZsYWdzKGlkbGVfcGdf dGFibGVbbDRfdGFibGVfb2Zmc2V0KHZhKV0pICYKLSAgICAgICAgICAgICAgX1BBR0VfUFJFU0VO VCkgKQorICAgICAgICBpZiAoICEobDRlX2dldF9mbGFncygqdmlydF90b194ZW5fbDRlKHZhKSkg JiBfUEFHRV9QUkVTRU5UKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIGwzX3BnZW50cnlfdCAq cGwzdCA9IGFsbG9jX3hlbl9wYWdldGFibGUoKTsKIAogICAgICAgICAgICAgaWYgKCAhcGwzdCAp CiAgICAgICAgICAgICAgICAgZ290byBub21lbTsKICAgICAgICAgICAgIGNsZWFyX3BhZ2UocGwz dCk7Ci0gICAgICAgICAgICBsNGVfd3JpdGUoJmlkbGVfcGdfdGFibGVbbDRfdGFibGVfb2Zmc2V0 KHZhKV0sCisgICAgICAgICAgICBsNGVfd3JpdGUodmlydF90b194ZW5fbDRlKHZhKSwKICAgICAg ICAgICAgICAgICAgICAgICBsNGVfZnJvbV9wYWRkcihfX3BhKHBsM3QpLCBfX1BBR0VfSFlQRVJW SVNPUl9SVykpOwogICAgICAgICB9CiAgICAgfQpAQCAtNTIxLDcgKzUyMCw3IEBAIHZvaWQgX19p bml0IHBhZ2luZ19pbml0KHZvaWQpCiAgICAgaWYgKCAobDNfcm9fbXB0ID0gYWxsb2NfeGVuX3Bh Z2V0YWJsZSgpKSA9PSBOVUxMICkKICAgICAgICAgZ290byBub21lbTsKICAgICBjbGVhcl9wYWdl KGwzX3JvX21wdCk7Ci0gICAgbDRlX3dyaXRlKCZpZGxlX3BnX3RhYmxlW2w0X3RhYmxlX29mZnNl dChST19NUFRfVklSVF9TVEFSVCldLAorICAgIGw0ZV93cml0ZSh2aXJ0X3RvX3hlbl9sNGUoUk9f TVBUX1ZJUlRfU1RBUlQpLAogICAgICAgICAgICAgICBsNGVfZnJvbV9wYWRkcihfX3BhKGwzX3Jv X21wdCksIF9fUEFHRV9IWVBFUlZJU09SX1JPIHwgX1BBR0VfVVNFUikpOwogCiAgICAgLyoKQEAg LTYyNCw4ICs2MjMsNyBAQCB2b2lkIF9faW5pdCBwYWdpbmdfaW5pdCh2b2lkKQogICAgIC8qIENy ZWF0ZSB1c2VyLWFjY2Vzc2libGUgTDIgZGlyZWN0b3J5IHRvIG1hcCB0aGUgTVBUIGZvciBjb21w YXQgZ3Vlc3RzLiAqLwogICAgIEJVSUxEX0JVR19PTihsNF90YWJsZV9vZmZzZXQoUkRXUl9NUFRf VklSVF9TVEFSVCkgIT0KICAgICAgICAgICAgICAgICAgbDRfdGFibGVfb2Zmc2V0KEhJUk9fQ09N UEFUX01QVF9WSVJUX1NUQVJUKSk7Ci0gICAgbDNfcm9fbXB0ID0gbDRlX3RvX2wzZShpZGxlX3Bn X3RhYmxlW2w0X3RhYmxlX29mZnNldCgKLSAgICAgICAgSElST19DT01QQVRfTVBUX1ZJUlRfU1RB UlQpXSk7CisgICAgbDNfcm9fbXB0ID0gbDRlX3RvX2wzZSgqdmlydF90b194ZW5fbDRlKEhJUk9f Q09NUEFUX01QVF9WSVJUX1NUQVJUKSk7CiAgICAgaWYgKCAobDJfcm9fbXB0ID0gYWxsb2NfeGVu X3BhZ2V0YWJsZSgpKSA9PSBOVUxMICkKICAgICAgICAgZ290byBub21lbTsKICAgICBjb21wYXRf aWRsZV9wZ190YWJsZV9sMiA9IGwyX3JvX21wdDsKQEAgLTY3NSw3ICs2NzMsNyBAQCB2b2lkIF9f aW5pdCBwYWdpbmdfaW5pdCh2b2lkKQogICAgIG1hY2hpbmVfdG9fcGh5c19tYXBwaW5nX3ZhbGlk ID0gMTsKIAogICAgIC8qIFNldCB1cCBsaW5lYXIgcGFnZSB0YWJsZSBtYXBwaW5nLiAqLwotICAg IGw0ZV93cml0ZSgmaWRsZV9wZ190YWJsZVtsNF90YWJsZV9vZmZzZXQoTElORUFSX1BUX1ZJUlRf U1RBUlQpXSwKKyAgICBsNGVfd3JpdGUodmlydF90b194ZW5fbDRlKExJTkVBUl9QVF9WSVJUX1NU QVJUKSwKICAgICAgICAgICAgICAgbDRlX2Zyb21fcGFkZHIoX19wYShpZGxlX3BnX3RhYmxlKSwg X19QQUdFX0hZUEVSVklTT1JfUlcpKTsKICAgICByZXR1cm47CiAKQEAgLTcyOSw3ICs3MjcsNyBA QCBzdGF0aWMgdm9pZCBjbGVhbnVwX2ZyYW1lX3RhYmxlKHN0cnVjdCBtZW1faG90YWRkX2luZm8g KmluZm8pCiAKICAgICB3aGlsZSAoc3ZhIDwgZXZhKQogICAgIHsKLSAgICAgICAgbDNlID0gbDRl X3RvX2wzZShpZGxlX3BnX3RhYmxlW2w0X3RhYmxlX29mZnNldChzdmEpXSlbCisgICAgICAgIGwz ZSA9IGw0ZV90b19sM2UoKnZpcnRfdG9feGVuX2w0ZShzdmEpKVsKICAgICAgICAgICBsM190YWJs ZV9vZmZzZXQoc3ZhKV07CiAgICAgICAgIGlmICggIShsM2VfZ2V0X2ZsYWdzKGwzZSkgJiBfUEFH RV9QUkVTRU5UKSB8fAogICAgICAgICAgICAgIChsM2VfZ2V0X2ZsYWdzKGwzZSkgJiBfUEFHRV9Q U0UpICkKQEAgLTg0Myw3ICs4NDEsNyBAQCB2b2lkIF9faW5pdCBzdWJhcmNoX2luaXRfbWVtb3J5 KHZvaWQpCiAgICAgICAgICAgdiArPSBuIDw8IFBBR0VfU0hJRlQgKQogICAgIHsKICAgICAgICAg biA9IEwyX1BBR0VUQUJMRV9FTlRSSUVTICogTDFfUEFHRVRBQkxFX0VOVFJJRVM7Ci0gICAgICAg IGwzZSA9IGw0ZV90b19sM2UoaWRsZV9wZ190YWJsZVtsNF90YWJsZV9vZmZzZXQodildKVsKKyAg ICAgICAgbDNlID0gbDRlX3RvX2wzZSgqdmlydF90b194ZW5fbDRlKHYpKVsKICAgICAgICAgICAg IGwzX3RhYmxlX29mZnNldCh2KV07CiAgICAgICAgIGlmICggIShsM2VfZ2V0X2ZsYWdzKGwzZSkg JiBfUEFHRV9QUkVTRU5UKSApCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTg3MSw3ICs4Njks NyBAQCB2b2lkIF9faW5pdCBzdWJhcmNoX2luaXRfbWVtb3J5KHZvaWQpCiAgICAgICAgICAgdiAh PSBSRFdSX0NPTVBBVF9NUFRfVklSVF9FTkQ7CiAgICAgICAgICAgdiArPSAxIDw8IEwyX1BBR0VU QUJMRV9TSElGVCApCiAgICAgewotICAgICAgICBsM2UgPSBsNGVfdG9fbDNlKGlkbGVfcGdfdGFi bGVbbDRfdGFibGVfb2Zmc2V0KHYpXSlbCisgICAgICAgIGwzZSA9IGw0ZV90b19sM2UoKnZpcnRf dG9feGVuX2w0ZSh2KSlbCiAgICAgICAgICAgICBsM190YWJsZV9vZmZzZXQodildOwogICAgICAg ICBpZiAoICEobDNlX2dldF9mbGFncyhsM2UpICYgX1BBR0VfUFJFU0VOVCkgKQogICAgICAgICAg ICAgY29udGludWU7CkBAIC05MjcsNyArOTI1LDcgQEAgbG9uZyBzdWJhcmNoX21lbW9yeV9vcCh1 bnNpZ25lZCBsb25nIGNtZCwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCiAgICAg ICAgICAgICAgICh2IDwgKHVuc2lnbmVkIGxvbmcpKG1hY2hpbmVfdG9fcGh5c19tYXBwaW5nICsg bWF4X3BhZ2UpKTsKICAgICAgICAgICAgICAgaSsrLCB2ICs9IDFVTCA8PCBMMl9QQUdFVEFCTEVf U0hJRlQgKQogICAgICAgICB7Ci0gICAgICAgICAgICBsM2UgPSBsNGVfdG9fbDNlKGlkbGVfcGdf dGFibGVbbDRfdGFibGVfb2Zmc2V0KHYpXSlbCisgICAgICAgICAgICBsM2UgPSBsNGVfdG9fbDNl KCp2aXJ0X3RvX3hlbl9sNGUodikpWwogICAgICAgICAgICAgICAgIGwzX3RhYmxlX29mZnNldCh2 KV07CiAgICAgICAgICAgICBpZiAoICEobDNlX2dldF9mbGFncyhsM2UpICYgX1BBR0VfUFJFU0VO VCkgKQogICAgICAgICAgICAgICAgIG1mbiA9IGxhc3RfbWZuOwpkaWZmIC0tZ2l0IGEveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9wYWdlLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L3BhZ2UuaAppbmRleCA0 NWNhNzQyNjc4Li4wYTY2M2IyOThkIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3Bh Z2UuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L3BhZ2UuaApAQCAtMjk5LDYgKzI5OSwxMSBA QCBleHRlcm4gbDJfcGdlbnRyeV90IGwyX2lkZW50bWFwWzQqTDJfUEFHRVRBQkxFX0VOVFJJRVNd OwogZXh0ZXJuIGwxX3BnZW50cnlfdCBsMV9maXhtYXBbTDFfUEFHRVRBQkxFX0VOVFJJRVNdOwog dm9pZCBwYWdpbmdfaW5pdCh2b2lkKTsKIHZvaWQgZWZpX3VwZGF0ZV9sNF9wZ3RhYmxlKHVuc2ln bmVkIGludCBsNGlkeCwgbDRfcGdlbnRyeV90KTsKKworc3RhdGljIGlubGluZSBsNF9wZ2VudHJ5 X3QgKnZpcnRfdG9feGVuX2w0ZSh1bnNpZ25lZCBsb25nIHZhKQoreworICAgIHJldHVybiAmaWRs ZV9wZ190YWJsZVtsNF90YWJsZV9vZmZzZXQodmEpXTsKK30KICNlbmRpZiAvKiAhZGVmaW5lZChf X0FTU0VNQkxZX18pICovCiAKICNkZWZpbmUgX1BBR0VfTk9ORSAgICAgX0FDKDB4MDAwLFUpCi0t IAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8v bGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK