From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH v2 12/22] mini-os: add x86 native page table handling Date: Wed, 24 Aug 2016 12:11:34 +0200 Message-ID: <1472033504-23180-13-git-send-email-jgross@suse.com> References: <1472033504-23180-1-git-send-email-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1472033504-23180-1-git-send-email-jgross@suse.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org Cc: Juergen Gross , samuel.thibault@ens-lyon.org, wei.liu2@citrix.com List-Id: xen-devel@lists.xenproject.org Rm9yIHN1cHBvcnQgb2YgSFZNbGl0ZSBkb24ndCB1c2UgbW11X3VwZGF0ZSBoeXBlcmNhbGxzLCBi dXQgd3JpdGUgdGhlCnBhZ2UgdGFibGUgZW50cmllcyBkaXJlY3RseS4KClNpZ25lZC1vZmYtYnk6 IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4KUmV2aWV3ZWQtYnk6IFNhbXVlbCBUaGli YXVsdCA8c2FtdWVsLnRoaWJhdWx0QGVucy1seW9uLm9yZz4KLS0tCiBhcmNoL3g4Ni9tbS5jICAg ICAgICAgfCAxNDcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0KIGFyY2gveDg2L3RyYXBzLmMgICAgICB8ICAxMCArKysrCiBpbmNsdWRlL3g4Ni9hcmNo X21tLmggfCAgIDQgKysKIGluY2x1ZGUveDg2L29zLmggICAgICB8ICAgOSArKysrCiA0IGZpbGVz IGNoYW5nZWQsIDEzMiBpbnNlcnRpb25zKCspLCAzOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9hcmNoL3g4Ni9tbS5jIGIvYXJjaC94ODYvbW0uYwppbmRleCBjYmI1NjE3Li5mNTI0OGE0IDEw MDY0NAotLS0gYS9hcmNoL3g4Ni9tbS5jCisrKyBiL2FyY2gveDg2L21tLmMKQEAgLTEyMywxNiAr MTIzLDI1IEBAIHZvaWQgYXJjaF9tbV9wcmVpbml0KHZvaWQgKnApCiAgKiB0YWJsZSBhdCBvZmZz ZXQgaW4gcHJldmlvdXMgbGV2ZWwgTUZOIChwcmVmX2xfbWZuKS4gcHRfcGZuIGlzIGEgZ3Vlc3QK ICAqIFBGTi4KICAqLworc3RhdGljIHBnZW50cnlfdCBwdF9wcm90W1BBR0VUQUJMRV9MRVZFTFNd ID0geworICAgIEwxX1BST1QsCisgICAgTDJfUFJPVCwKKyAgICBMM19QUk9ULAorI2lmIGRlZmlu ZWQoX194ODZfNjRfXykKKyAgICBMNF9QUk9ULAorI2VuZGlmCit9OworCiBzdGF0aWMgdm9pZCBu ZXdfcHRfZnJhbWUodW5zaWduZWQgbG9uZyAqcHRfcGZuLCB1bnNpZ25lZCBsb25nIHByZXZfbF9t Zm4sIAogICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNp Z25lZCBsb25nIGxldmVsKQogeyAgIAotICAgIHBnZW50cnlfdCAqdGFiID0gcHRfYmFzZTsKKyAg ICBwZ2VudHJ5X3QgKnRhYjsKICAgICB1bnNpZ25lZCBsb25nIHB0X3BhZ2UgPSAodW5zaWduZWQg bG9uZylwZm5fdG9fdmlydCgqcHRfcGZuKTsgCi0gICAgcGdlbnRyeV90IHByb3RfZSwgcHJvdF90 OworI2lmZGVmIENPTkZJR19QQVJBVklSVAogICAgIG1tdV91cGRhdGVfdCBtbXVfdXBkYXRlc1sx XTsKICAgICBpbnQgcmM7CisjZW5kaWYKICAgICAKLSAgICBwcm90X2UgPSBwcm90X3QgPSAwOwog ICAgIERFQlVHKCJBbGxvY2F0aW5nIG5ldyBMJWQgcHQgZnJhbWUgZm9yIHBmbj0lbHgsICIKICAg ICAgICAgICAicHJldl9sX21mbj0lbHgsIG9mZnNldD0lbHgiLCAKICAgICAgICAgICBsZXZlbCwg KnB0X3BmbiwgcHJldl9sX21mbiwgb2Zmc2V0KTsKQEAgLTE0MCwzMCArMTQ5LDEyIEBAIHN0YXRp YyB2b2lkIG5ld19wdF9mcmFtZSh1bnNpZ25lZCBsb25nICpwdF9wZm4sIHVuc2lnbmVkIGxvbmcg cHJldl9sX21mbiwKICAgICAvKiBXZSBuZWVkIHRvIGNsZWFyIHRoZSBwYWdlLCBvdGhlcndpc2Ug d2UgbWlnaHQgZmFpbCB0byBtYXAgaXQKICAgICAgICBhcyBhIHBhZ2UgdGFibGUgcGFnZSAqLwog ICAgIG1lbXNldCgodm9pZCopIHB0X3BhZ2UsIDAsIFBBR0VfU0laRSk7ICAKLSAKLSAgICBzd2l0 Y2ggKCBsZXZlbCApCi0gICAgewotICAgIGNhc2UgTDFfRlJBTUU6Ci0gICAgICAgIHByb3RfZSA9 IEwxX1BST1Q7Ci0gICAgICAgIHByb3RfdCA9IEwyX1BST1Q7Ci0gICAgICAgIGJyZWFrOwotICAg IGNhc2UgTDJfRlJBTUU6Ci0gICAgICAgIHByb3RfZSA9IEwyX1BST1Q7Ci0gICAgICAgIHByb3Rf dCA9IEwzX1BST1Q7Ci0gICAgICAgIGJyZWFrOwotI2lmIGRlZmluZWQoX194ODZfNjRfXykKLSAg ICBjYXNlIEwzX0ZSQU1FOgotICAgICAgICBwcm90X2UgPSBMM19QUk9UOwotICAgICAgICBwcm90 X3QgPSBMNF9QUk9UOwotICAgICAgICBicmVhazsKLSNlbmRpZgotICAgIGRlZmF1bHQ6Ci0gICAg ICAgIHByaW50aygibmV3X3B0X2ZyYW1lKCkgY2FsbGVkIHdpdGggaW52YWxpZCBsZXZlbCBudW1i ZXIgJWx1XG4iLCBsZXZlbCk7Ci0gICAgICAgIGRvX2V4aXQoKTsKLSAgICAgICAgYnJlYWs7Ci0g ICAgfQogCisgICAgQVNTRVJUKGxldmVsID49IDEgJiYgbGV2ZWwgPD0gUEFHRVRBQkxFX0xFVkVM Uyk7CisKKyNpZmRlZiBDT05GSUdfUEFSQVZJUlQKICAgICAvKiBNYWtlIFBGTiBhIHBhZ2UgdGFi bGUgcGFnZSAqLworICAgIHRhYiA9IHB0X2Jhc2U7CiAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKQog ICAgIHRhYiA9IHB0ZV90b192aXJ0KHRhYltsNF90YWJsZV9vZmZzZXQocHRfcGFnZSldKTsKICNl bmRpZgpAQCAtMTcyLDcgKzE2Myw3IEBAIHN0YXRpYyB2b2lkIG5ld19wdF9mcmFtZSh1bnNpZ25l ZCBsb25nICpwdF9wZm4sIHVuc2lnbmVkIGxvbmcgcHJldl9sX21mbiwKICAgICBtbXVfdXBkYXRl c1swXS5wdHIgPSAodGFiW2wyX3RhYmxlX29mZnNldChwdF9wYWdlKV0gJiBQQUdFX01BU0spICsg CiAgICAgICAgIHNpemVvZihwZ2VudHJ5X3QpICogbDFfdGFibGVfb2Zmc2V0KHB0X3BhZ2UpOwog ICAgIG1tdV91cGRhdGVzWzBdLnZhbCA9IChwZ2VudHJ5X3QpcGZuX3RvX21mbigqcHRfcGZuKSA8 PCBQQUdFX1NISUZUIHwgCi0gICAgICAgIChwcm90X2UgJiB+X1BBR0VfUlcpOworICAgICAgICAo cHRfcHJvdFtsZXZlbCAtIDFdICYgfl9QQUdFX1JXKTsKICAgICAKICAgICBpZiAoIChyYyA9IEhZ UEVSVklTT1JfbW11X3VwZGF0ZShtbXVfdXBkYXRlcywgMSwgTlVMTCwgRE9NSURfU0VMRikpIDwg MCApCiAgICAgewpAQCAtMTg0LDEzICsxNzUsMTggQEAgc3RhdGljIHZvaWQgbmV3X3B0X2ZyYW1l KHVuc2lnbmVkIGxvbmcgKnB0X3BmbiwgdW5zaWduZWQgbG9uZyBwcmV2X2xfbWZuLAogICAgIC8q IEhvb2sgdGhlIG5ldyBwYWdlIHRhYmxlIHBhZ2UgaW50byB0aGUgaGllcmFyY2h5ICovCiAgICAg bW11X3VwZGF0ZXNbMF0ucHRyID0KICAgICAgICAgKChwZ2VudHJ5X3QpcHJldl9sX21mbiA8PCBQ QUdFX1NISUZUKSArIHNpemVvZihwZ2VudHJ5X3QpICogb2Zmc2V0OwotICAgIG1tdV91cGRhdGVz WzBdLnZhbCA9IChwZ2VudHJ5X3QpcGZuX3RvX21mbigqcHRfcGZuKSA8PCBQQUdFX1NISUZUIHwg cHJvdF90OworICAgIG1tdV91cGRhdGVzWzBdLnZhbCA9IChwZ2VudHJ5X3QpcGZuX3RvX21mbigq cHRfcGZuKSA8PCBQQUdFX1NISUZUIHwKKyAgICAgICAgcHRfcHJvdFtsZXZlbF07CiAKICAgICBp ZiAoIChyYyA9IEhZUEVSVklTT1JfbW11X3VwZGF0ZShtbXVfdXBkYXRlcywgMSwgTlVMTCwgRE9N SURfU0VMRikpIDwgMCApIAogICAgIHsKICAgICAgICAgcHJpbnRrKCJFUlJPUjogbW11X3VwZGF0 ZSBmYWlsZWQgd2l0aCByYz0lZFxuIiwgcmMpOwogICAgICAgICBkb19leGl0KCk7CiAgICAgfQor I2Vsc2UKKyAgICB0YWIgPSBtZm5fdG9fdmlydChwcmV2X2xfbWZuKTsKKyAgICB0YWJbb2Zmc2V0 XSA9ICgqcHRfcGZuIDw8IFBBR0VfU0hJRlQpIHwgcHRfcHJvdFtsZXZlbF07CisjZW5kaWYKIAog ICAgICpwdF9wZm4gKz0gMTsKIH0KQEAgLTIwMiwxMiArMTk4LDE0IEBAIHN0YXRpYyB2b2lkIGJ1 aWxkX3BhZ2V0YWJsZSh1bnNpZ25lZCBsb25nICpzdGFydF9wZm4sIHVuc2lnbmVkIGxvbmcgKm1h eF9wZm4pCiB7CiAgICAgdW5zaWduZWQgbG9uZyBzdGFydF9hZGRyZXNzLCBlbmRfYWRkcmVzczsK ICAgICB1bnNpZ25lZCBsb25nIHBmbl90b19tYXAsIHB0X3BmbiA9ICpzdGFydF9wZm47Ci0gICAg c3RhdGljIG1tdV91cGRhdGVfdCBtbXVfdXBkYXRlc1tMMV9QQUdFVEFCTEVfRU5UUklFUyArIDFd OwogICAgIHBnZW50cnlfdCAqdGFiID0gcHRfYmFzZSwgcGFnZTsKICAgICB1bnNpZ25lZCBsb25n IHB0X21mbiA9IHBmbl90b19tZm4odmlydF90b19wZm4ocHRfYmFzZSkpOwogICAgIHVuc2lnbmVk IGxvbmcgb2Zmc2V0OworI2lmZGVmIENPTkZJR19QQVJBVklSVAorICAgIHN0YXRpYyBtbXVfdXBk YXRlX3QgbW11X3VwZGF0ZXNbTDFfUEFHRVRBQkxFX0VOVFJJRVMgKyAxXTsKICAgICBpbnQgY291 bnQgPSAwOwogICAgIGludCByYzsKKyNlbmRpZgogCiAgICAgLyogQmUgY29uc2VydmF0aXZlOiBl dmVuIGlmIHdlIGtub3cgdGhlcmUgd2lsbCBiZSBtb3JlIHBhZ2VzIGFscmVhZHkKICAgICAgICBt YXBwZWQsIHN0YXJ0IHRoZSBsb29wIGF0IHRoZSB2ZXJ5IGJlZ2lubmluZy4gKi8KQEAgLTIyNSw2 ICsyMjMsMTAgQEAgc3RhdGljIHZvaWQgYnVpbGRfcGFnZXRhYmxlKHVuc2lnbmVkIGxvbmcgKnN0 YXJ0X3BmbiwgdW5zaWduZWQgbG9uZyAqbWF4X3BmbikKICAgICAgICAgICAgICAgICgodW5zaWdu ZWQgbG9uZylwZm5fdG9fdmlydCgqbWF4X3BmbikgLSAKICAgICAgICAgICAgICAgICAodW5zaWdu ZWQgbG9uZykmX3RleHQpPj4yMCk7CiAgICAgfQorI2Vsc2UKKyAgICAvKiBSb3VuZCB1cCB0byBu ZXh0IDJNQiBib3VuZGFyeSBhcyB3ZSBhcmUgdXNpbmcgMk1CIHBhZ2VzIG9uIEhWTWxpdGUuICov CisgICAgcGZuX3RvX21hcCA9IChwZm5fdG9fbWFwICsgTDFfUEFHRVRBQkxFX0VOVFJJRVMgLSAx KSAmCisgICAgICAgICAgICAgICAgIH4oTDFfUEFHRVRBQkxFX0VOVFJJRVMgLSAxKTsKICNlbmRp ZgogCiAgICAgc3RhcnRfYWRkcmVzcyA9ICh1bnNpZ25lZCBsb25nKXBmbl90b192aXJ0KHBmbl90 b19tYXApOwpAQCAtMjU3LDYgKzI1OSw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3BhZ2V0YWJsZSh1 bnNpZ25lZCBsb25nICpzdGFydF9wZm4sIHVuc2lnbmVkIGxvbmcgKm1heF9wZm4pCiAgICAgICAg IHB0X21mbiA9IHB0ZV90b19tZm4ocGFnZSk7CiAgICAgICAgIHRhYiA9IHRvX3ZpcnQobWZuX3Rv X3BmbihwdF9tZm4pIDw8IFBBR0VfU0hJRlQpOwogICAgICAgICBvZmZzZXQgPSBsMl90YWJsZV9v ZmZzZXQoc3RhcnRfYWRkcmVzcyk7ICAgICAgICAKKyNpZmRlZiBDT05GSUdfUEFSQVZJUlQKICAg ICAgICAgLyogTmVlZCBuZXcgTDEgcHQgZnJhbWUgKi8KICAgICAgICAgaWYgKCAhKHRhYltvZmZz ZXRdICYgX1BBR0VfUFJFU0VOVCkgKQogICAgICAgICAgICAgbmV3X3B0X2ZyYW1lKCZwdF9wZm4s IHB0X21mbiwgb2Zmc2V0LCBMMV9GUkFNRSk7CkBAIC0yODgsNiArMjkxLDEyIEBAIHN0YXRpYyB2 b2lkIGJ1aWxkX3BhZ2V0YWJsZSh1bnNpZ25lZCBsb25nICpzdGFydF9wZm4sIHVuc2lnbmVkIGxv bmcgKm1heF9wZm4pCiAgICAgICAgICAgICBjb3VudCA9IDA7CiAgICAgICAgIH0KICAgICAgICAg c3RhcnRfYWRkcmVzcyArPSBQQUdFX1NJWkU7CisjZWxzZQorICAgICAgICBpZiAoICEodGFiW29m ZnNldF0gJiBfUEFHRV9QUkVTRU5UKSApCisgICAgICAgICAgICB0YWJbb2Zmc2V0XSA9IChwZ2Vu dHJ5X3QpcGZuX3RvX21hcCA8PCBQQUdFX1NISUZUIHwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgTDJfUFJPVCB8IF9QQUdFX1BTRTsKKyAgICAgICAgc3RhcnRfYWRkcmVzcyArPSAxVUwgPDwg TDJfUEFHRVRBQkxFX1NISUZUOworI2VuZGlmCiAgICAgfQogCiAgICAgKnN0YXJ0X3BmbiA9IHB0 X3BmbjsKQEAgLTMwMiwxNiArMzExLDE5IEBAIHN0YXRpYyB2b2lkIHNldF9yZWFkb25seSh2b2lk ICp0ZXh0LCB2b2lkICpldGV4dCkKICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0X2FkZHJlc3MgPQog ICAgICAgICAoKHVuc2lnbmVkIGxvbmcpIHRleHQgKyBQQUdFX1NJWkUgLSAxKSAmIFBBR0VfTUFT SzsKICAgICB1bnNpZ25lZCBsb25nIGVuZF9hZGRyZXNzID0gKHVuc2lnbmVkIGxvbmcpIGV0ZXh0 OwotICAgIHN0YXRpYyBtbXVfdXBkYXRlX3QgbW11X3VwZGF0ZXNbTDFfUEFHRVRBQkxFX0VOVFJJ RVMgKyAxXTsKICAgICBwZ2VudHJ5X3QgKnRhYiA9IHB0X2Jhc2UsIHBhZ2U7CiAgICAgdW5zaWdu ZWQgbG9uZyBtZm4gPSBwZm5fdG9fbWZuKHZpcnRfdG9fcGZuKHB0X2Jhc2UpKTsKICAgICB1bnNp Z25lZCBsb25nIG9mZnNldDsKKyAgICB1bnNpZ25lZCBsb25nIHBhZ2Vfc2l6ZSA9IFBBR0VfU0la RTsKKyNpZmRlZiBDT05GSUdfUEFSQVZJUlQKKyAgICBzdGF0aWMgbW11X3VwZGF0ZV90IG1tdV91 cGRhdGVzW0wxX1BBR0VUQUJMRV9FTlRSSUVTICsgMV07CiAgICAgaW50IGNvdW50ID0gMDsKICAg ICBpbnQgcmM7CisjZW5kaWYKIAogICAgIHByaW50aygic2V0dGluZyAlcC0lcCByZWFkb25seVxu IiwgdGV4dCwgZXRleHQpOwogCi0gICAgd2hpbGUgKCBzdGFydF9hZGRyZXNzICsgUEFHRV9TSVpF IDw9IGVuZF9hZGRyZXNzICkKKyAgICB3aGlsZSAoIHN0YXJ0X2FkZHJlc3MgKyBwYWdlX3NpemUg PD0gZW5kX2FkZHJlc3MgKQogICAgIHsKICAgICAgICAgdGFiID0gcHRfYmFzZTsKICAgICAgICAg bWZuID0gcGZuX3RvX21mbih2aXJ0X3RvX3BmbihwdF9iYXNlKSk7CkBAIC0zMjcsMjYgKzMzOSwz NCBAQCBzdGF0aWMgdm9pZCBzZXRfcmVhZG9ubHkodm9pZCAqdGV4dCwgdm9pZCAqZXRleHQpCiAg ICAgICAgIG1mbiA9IHB0ZV90b19tZm4ocGFnZSk7CiAgICAgICAgIHRhYiA9IHRvX3ZpcnQobWZu X3RvX3BmbihtZm4pIDw8IFBBR0VfU0hJRlQpOwogICAgICAgICBvZmZzZXQgPSBsMl90YWJsZV9v ZmZzZXQoc3RhcnRfYWRkcmVzcyk7ICAgICAgICAKLSAgICAgICAgcGFnZSA9IHRhYltvZmZzZXRd OwotICAgICAgICBtZm4gPSBwdGVfdG9fbWZuKHBhZ2UpOwotICAgICAgICB0YWIgPSB0b192aXJ0 KG1mbl90b19wZm4obWZuKSA8PCBQQUdFX1NISUZUKTsKKyAgICAgICAgaWYgKCAhKHRhYltvZmZz ZXRdICYgX1BBR0VfUFNFKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHBhZ2UgPSB0YWJbb2Zm c2V0XTsKKyAgICAgICAgICAgIG1mbiA9IHB0ZV90b19tZm4ocGFnZSk7CisgICAgICAgICAgICB0 YWIgPSB0b192aXJ0KG1mbl90b19wZm4obWZuKSA8PCBQQUdFX1NISUZUKTsKIAotICAgICAgICBv ZmZzZXQgPSBsMV90YWJsZV9vZmZzZXQoc3RhcnRfYWRkcmVzcyk7CisgICAgICAgICAgICBvZmZz ZXQgPSBsMV90YWJsZV9vZmZzZXQoc3RhcnRfYWRkcmVzcyk7CisgICAgICAgIH0KIAogICAgICAg ICBpZiAoIHN0YXJ0X2FkZHJlc3MgIT0gKHVuc2lnbmVkIGxvbmcpJnNoYXJlZF9pbmZvICkKICAg ICAgICAgeworI2lmZGVmIENPTkZJR19QQVJBVklSVAogICAgICAgICAgICAgbW11X3VwZGF0ZXNb Y291bnRdLnB0ciA9IAogICAgICAgICAgICAgICAgICgocGdlbnRyeV90KW1mbiA8PCBQQUdFX1NI SUZUKSArIHNpemVvZihwZ2VudHJ5X3QpICogb2Zmc2V0OwogICAgICAgICAgICAgbW11X3VwZGF0 ZXNbY291bnRdLnZhbCA9IHRhYltvZmZzZXRdICYgfl9QQUdFX1JXOwogICAgICAgICAgICAgY291 bnQrKzsKKyNlbHNlCisgICAgICAgICAgICB0YWJbb2Zmc2V0XSAmPSB+X1BBR0VfUlc7CisjZW5k aWYKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwcmludGsoInNraXBwZWQg JWx4XG4iLCBzdGFydF9hZGRyZXNzKTsKIAotICAgICAgICBzdGFydF9hZGRyZXNzICs9IFBBR0Vf U0laRTsKKyAgICAgICAgc3RhcnRfYWRkcmVzcyArPSBwYWdlX3NpemU7CiAKKyNpZmRlZiBDT05G SUdfUEFSQVZJUlQKICAgICAgICAgaWYgKCBjb3VudCA9PSBMMV9QQUdFVEFCTEVfRU5UUklFUyB8 fCAKLSAgICAgICAgICAgICBzdGFydF9hZGRyZXNzICsgUEFHRV9TSVpFID4gZW5kX2FkZHJlc3Mg KQorICAgICAgICAgICAgIHN0YXJ0X2FkZHJlc3MgKyBwYWdlX3NpemUgPiBlbmRfYWRkcmVzcyAp CiAgICAgICAgIHsKICAgICAgICAgICAgIHJjID0gSFlQRVJWSVNPUl9tbXVfdXBkYXRlKG1tdV91 cGRhdGVzLCBjb3VudCwgTlVMTCwgRE9NSURfU0VMRik7CiAgICAgICAgICAgICBpZiAoIHJjIDwg MCApCkBAIC0zNTYsOCArMzc2LDEzIEBAIHN0YXRpYyB2b2lkIHNldF9yZWFkb25seSh2b2lkICp0 ZXh0LCB2b2lkICpldGV4dCkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNvdW50ID0gMDsK ICAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgaWYgKCBzdGFydF9hZGRyZXNzID09ICgxVUwgPDwg TDJfUEFHRVRBQkxFX1NISUZUKSApCisgICAgICAgICAgICBwYWdlX3NpemUgPSAxVUwgPDwgTDJf UEFHRVRBQkxFX1NISUZUOworI2VuZGlmCiAgICAgfQogCisjaWZkZWYgQ09ORklHX1BBUkFWSVJU CiAgICAgewogICAgICAgICBtbXVleHRfb3BfdCBvcCA9IHsKICAgICAgICAgICAgIC5jbWQgPSBN TVVFWFRfVExCX0ZMVVNIX0FMTCwKQEAgLTM2NSw2ICszOTAsOSBAQCBzdGF0aWMgdm9pZCBzZXRf cmVhZG9ubHkodm9pZCAqdGV4dCwgdm9pZCAqZXRleHQpCiAgICAgICAgIGludCBjb3VudDsKICAg ICAgICAgSFlQRVJWSVNPUl9tbXVleHRfb3AoJm9wLCAxLCAmY291bnQsIERPTUlEX1NFTEYpOwog ICAgIH0KKyNlbHNlCisgICAgd3JpdGVfY3IzKCh1bnNpZ25lZCBsb25nKXB0X2Jhc2UpOworI2Vu ZGlmCiB9CiAKIC8qCkBAIC0zOTQsNiArNDIyLDggQEAgc3RhdGljIHBnZW50cnlfdCAqZ2V0X3Bn dCh1bnNpZ25lZCBsb25nIHZhKQogICAgIG9mZnNldCA9IGwyX3RhYmxlX29mZnNldCh2YSk7CiAg ICAgaWYgKCAhKHRhYltvZmZzZXRdICYgX1BBR0VfUFJFU0VOVCkgKQogICAgICAgICByZXR1cm4g TlVMTDsKKyAgICBpZiAoIHRhYltvZmZzZXRdICYgX1BBR0VfUFNFICkKKyAgICAgICAgcmV0dXJu ICZ0YWJbb2Zmc2V0XTsKICAgICBtZm4gPSBwdGVfdG9fbWZuKHRhYltvZmZzZXRdKTsKICAgICB0 YWIgPSBtZm5fdG9fdmlydChtZm4pOwogICAgIG9mZnNldCA9IGwxX3RhYmxlX29mZnNldCh2YSk7 CkBAIC00NDgsNiArNDc4LDkgQEAgcGdlbnRyeV90ICpuZWVkX3BndCh1bnNpZ25lZCBsb25nIHZh KQogICAgICAgICBuZXdfcHRfZnJhbWUoJnB0X3BmbiwgcHRfbWZuLCBvZmZzZXQsIEwxX0ZSQU1F KTsKICAgICB9CiAgICAgQVNTRVJUKHRhYltvZmZzZXRdICYgX1BBR0VfUFJFU0VOVCk7CisgICAg aWYgKCB0YWJbb2Zmc2V0XSAmIF9QQUdFX1BTRSApCisgICAgICAgIHJldHVybiAmdGFiW29mZnNl dF07CisKICAgICBwdF9tZm4gPSBwdGVfdG9fbWZuKHRhYltvZmZzZXRdKTsKICAgICB0YWIgPSBt Zm5fdG9fdmlydChwdF9tZm4pOwogCkBAIC01MjQsOCArNTU3LDYgQEAgaW50IGRvX21hcF9mcmFt ZXModW5zaWduZWQgbG9uZyB2YSwKIHsKICAgICBwZ2VudHJ5X3QgKnBndCA9IE5VTEw7CiAgICAg dW5zaWduZWQgbG9uZyBkb25lID0gMDsKLSAgICB1bnNpZ25lZCBsb25nIGk7Ci0gICAgaW50IHJj OwogCiAgICAgaWYgKCAhbWZucyApIAogICAgIHsKQEAgLTUzOSw2ICs1NzAsOSBAQCBpbnQgZG9f bWFwX2ZyYW1lcyh1bnNpZ25lZCBsb25nIHZhLAogICAgICAgICBtZW1zZXQoZXJyLCAweDAwLCBu ICogc2l6ZW9mKGludCkpOwogICAgIHdoaWxlICggZG9uZSA8IG4gKQogICAgIHsKKyNpZmRlZiBD T05GSUdfUEFSQVZJUlQKKyAgICAgICAgdW5zaWduZWQgbG9uZyBpOworICAgICAgICBpbnQgcmM7 CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgdG9kbzsKIAogICAgICAgICBpZiAoIGVyciApCkBAIC01 NzgsNiArNjEyLDE3IEBAIGludCBkb19tYXBfZnJhbWVzKHVuc2lnbmVkIGxvbmcgdmEsCiAgICAg ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZG9uZSArPSB0b2RvOworI2Vsc2UKKyAgICAg ICAgaWYgKCAhcGd0IHx8ICEodmEgJiBMMV9NQVNLKSApCisgICAgICAgICAgICBwZ3QgPSBuZWVk X3BndCh2YSAmIH5MMV9NQVNLKTsKKyAgICAgICAgaWYgKCAhcGd0ICkKKyAgICAgICAgICAgIHJl dHVybiAtRU5PTUVNOworCisgICAgICAgIEFTU0VSVCghKCpwZ3QgJiBfUEFHRV9QU0UpKTsKKyAg ICAgICAgcGd0W2wxX3RhYmxlX29mZnNldCh2YSldID0gKHBnZW50cnlfdCkKKyAgICAgICAgICAg ICgoKG1mbnNbZG9uZSAqIHN0cmlkZV0gKyBkb25lICogaW5jcikgPDwgUEFHRV9TSElGVCkgfCBw cm90KTsKKyAgICAgICAgZG9uZSsrOworI2VuZGlmCiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBA IC02MDksMTYgKzY1NCwyMSBAQCB2b2lkICptYXBfZnJhbWVzX2V4KGNvbnN0IHVuc2lnbmVkIGxv bmcgKm1mbnMsIHVuc2lnbmVkIGxvbmcgbiwKICNkZWZpbmUgVU5NQVBfQkFUQ0ggKChTVEFDS19T SVpFIC8gMikgLyBzaXplb2YobXVsdGljYWxsX2VudHJ5X3QpKQogaW50IHVubWFwX2ZyYW1lcyh1 bnNpZ25lZCBsb25nIHZhLCB1bnNpZ25lZCBsb25nIG51bV9mcmFtZXMpCiB7CisjaWZkZWYgQ09O RklHX1BBUkFWSVJUCiAgICAgaW50IG4gPSBVTk1BUF9CQVRDSDsKICAgICBtdWx0aWNhbGxfZW50 cnlfdCBjYWxsW25dOwogICAgIGludCByZXQ7CiAgICAgaW50IGk7CisjZWxzZQorICAgIHBnZW50 cnlfdCAqcGd0OworI2VuZGlmCiAKICAgICBBU1NFUlQoISgodW5zaWduZWQgbG9uZyl2YSAmIH5Q QUdFX01BU0spKTsKIAogICAgIERFQlVHKCJ2YT0lcCwgbnVtPTB4JWx4XG4iLCB2YSwgbnVtX2Zy YW1lcyk7CiAKICAgICB3aGlsZSAoIG51bV9mcmFtZXMgKSB7CisjaWZkZWYgQ09ORklHX1BBUkFW SVJUCiAgICAgICAgIGlmICggbiA+IG51bV9mcmFtZXMgKQogICAgICAgICAgICAgbiA9IG51bV9m cmFtZXM7CiAKQEAgLTY1Myw2ICs3MDMsMTcgQEAgaW50IHVubWFwX2ZyYW1lcyh1bnNpZ25lZCBs b25nIHZhLCB1bnNpZ25lZCBsb25nIG51bV9mcmFtZXMpCiAgICAgICAgICAgICB9CiAgICAgICAg IH0KICAgICAgICAgbnVtX2ZyYW1lcyAtPSBuOworI2Vsc2UKKyAgICAgICAgcGd0ID0gZ2V0X3Bn dCh2YSk7CisgICAgICAgIGlmICggcGd0ICkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJU KCEoKnBndCAmIF9QQUdFX1BTRSkpOworICAgICAgICAgICAgKnBndCA9IDA7CisgICAgICAgICAg ICBpbnZscGcodmEpOworICAgICAgICB9CisgICAgICAgIHZhICs9IFBBR0VfU0laRTsKKyAgICAg ICAgbnVtX2ZyYW1lcy0tOworI2VuZGlmCiAgICAgfQogICAgIHJldHVybiAwOwogfQpAQCAtNjYy LDE0ICs3MjMsMjQgQEAgaW50IHVubWFwX2ZyYW1lcyh1bnNpZ25lZCBsb25nIHZhLCB1bnNpZ25l ZCBsb25nIG51bV9mcmFtZXMpCiAgKi8KIHN0YXRpYyB2b2lkIGNsZWFyX2Jvb3RzdHJhcCh2b2lk KQogeworI2lmZGVmIENPTkZJR19QQVJBVklSVAogICAgIHB0ZV90IG51bGxwdGUgPSB7IH07CiAg ICAgaW50IHJjOworI2Vsc2UKKyAgICBwZ2VudHJ5X3QgKnBndDsKKyNlbmRpZgogCiAgICAgLyog VXNlIGZpcnN0IHBhZ2UgYXMgdGhlIENvVyB6ZXJvIHBhZ2UgKi8KICAgICBtZW1zZXQoJl90ZXh0 LCAwLCBQQUdFX1NJWkUpOwogICAgIG1mbl96ZXJvID0gdmlydF90b19tZm4oKHVuc2lnbmVkIGxv bmcpICZfdGV4dCk7CisjaWZkZWYgQ09ORklHX1BBUkFWSVJUCiAgICAgaWYgKCAocmMgPSBIWVBF UlZJU09SX3VwZGF0ZV92YV9tYXBwaW5nKDAsIG51bGxwdGUsIFVWTUZfSU5WTFBHKSkgKQogICAg ICAgICBwcmludGsoIlVuYWJsZSB0byB1bm1hcCBOVUxMIHBhZ2UuIHJjPSVkXG4iLCByYyk7Cisj ZWxzZQorICAgIHBndCA9IGdldF9wZ3QoKHVuc2lnbmVkIGxvbmcpJl90ZXh0KTsKKyAgICAqcGd0 ID0gMDsKKyAgICBpbnZscGcoKHVuc2lnbmVkIGxvbmcpJl90ZXh0KTsKKyNlbmRpZgogfQogCiAj aWZkZWYgQ09ORklHX1BBUkFWSVJUCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni90cmFwcy5jIGIvYXJj aC94ODYvdHJhcHMuYwppbmRleCAyZDMyMjJkLi5hYTE3ZGEzIDEwMDY0NAotLS0gYS9hcmNoL3g4 Ni90cmFwcy5jCisrKyBiL2FyY2gveDg2L3RyYXBzLmMKQEAgLTEyMSw3ICsxMjEsOSBAQCB2b2lk IHBhZ2Vfd2Fsayh1bnNpZ25lZCBsb25nIHZpcnRfYWRkcmVzcykKIHN0YXRpYyBpbnQgaGFuZGxl X2Nvdyh1bnNpZ25lZCBsb25nIGFkZHIpIHsKICAgICAgICAgcGdlbnRyeV90ICp0YWIgPSBwdF9i YXNlLCBwYWdlOwogCXVuc2lnbmVkIGxvbmcgbmV3X3BhZ2U7CisjaWZkZWYgQ09ORklHX1BBUkFW SVJUCiAJaW50IHJjOworI2VuZGlmCiAKICNpZiBkZWZpbmVkKF9feDg2XzY0X18pCiAgICAgICAg IHBhZ2UgPSB0YWJbbDRfdGFibGVfb2Zmc2V0KGFkZHIpXTsKQEAgLTEzNyw2ICsxMzksOCBAQCBz dGF0aWMgaW50IGhhbmRsZV9jb3codW5zaWduZWQgbG9uZyBhZGRyKSB7CiAgICAgICAgIHBhZ2Ug PSB0YWJbbDJfdGFibGVfb2Zmc2V0KGFkZHIpXTsKIAlpZiAoIShwYWdlICYgX1BBR0VfUFJFU0VO VCkpCiAJICAgIHJldHVybiAwOworCWlmICggcGFnZSAmIF9QQUdFX1BTRSApCisJICAgIHJldHVy biAwOwogICAgICAgICB0YWIgPSBwdGVfdG9fdmlydChwYWdlKTsKICAgICAgICAgCiAgICAgICAg IHBhZ2UgPSB0YWJbbDFfdGFibGVfb2Zmc2V0KGFkZHIpXTsKQEAgLTE0OSwxMiArMTUzLDE4IEBA IHN0YXRpYyBpbnQgaGFuZGxlX2Nvdyh1bnNpZ25lZCBsb25nIGFkZHIpIHsKIAluZXdfcGFnZSA9 IGFsbG9jX3BhZ2VzKDApOwogCW1lbXNldCgodm9pZCopIG5ld19wYWdlLCAwLCBQQUdFX1NJWkUp OwogCisjaWZkZWYgQ09ORklHX1BBUkFWSVJUCiAJcmMgPSBIWVBFUlZJU09SX3VwZGF0ZV92YV9t YXBwaW5nKGFkZHIgJiBQQUdFX01BU0ssIF9fcHRlKHZpcnRfdG9fbWFjaChuZXdfcGFnZSkgfCBM MV9QUk9UKSwgVVZNRl9JTlZMUEcpOwogCWlmICghcmMpCiAJCXJldHVybiAxOwogCiAJcHJpbnRr KCJNYXAgemVybyBwYWdlIHRvICVseCBmYWlsZWQ6ICVkLlxuIiwgYWRkciwgcmMpOwogCXJldHVy biAwOworI2Vsc2UKKwl0YWJbbDFfdGFibGVfb2Zmc2V0KGFkZHIpXSA9IHZpcnRfdG9fbWFjaChu ZXdfcGFnZSkgfCBMMV9QUk9UOworCWludmxwZyhhZGRyKTsKKwlyZXR1cm4gMTsKKyNlbmRpZgog fQogCiBzdGF0aWMgdm9pZCBkb19zdGFja193YWxrKHVuc2lnbmVkIGxvbmcgZnJhbWVfYmFzZSkK ZGlmZiAtLWdpdCBhL2luY2x1ZGUveDg2L2FyY2hfbW0uaCBiL2luY2x1ZGUveDg2L2FyY2hfbW0u aAppbmRleCAyOGFiNDA2Li5lMGFlNTUyIDEwMDY0NAotLS0gYS9pbmNsdWRlL3g4Ni9hcmNoX21t LmgKKysrIGIvaW5jbHVkZS94ODYvYXJjaF9tbS5oCkBAIC03OCw2ICs3OCw4IEBACiAjZGVmaW5l IEwyX1BBR0VUQUJMRV9FTlRSSUVTICAgIDUxMgogI2RlZmluZSBMM19QQUdFVEFCTEVfRU5UUklF UyAgICA0CiAKKyNkZWZpbmUgUEFHRVRBQkxFX0xFVkVMUyAgICAgICAgMworCiAjZGVmaW5lIFBB RERSX0JJVFMgICAgICAgICAgICAgIDQ0CiAjZGVmaW5lIFBBRERSX01BU0sgICAgICAgICAgICAg ICgoMVVMTCA8PCBQQUREUl9CSVRTKS0xKQogCkBAIC0xMTAsNiArMTEyLDggQEAgdHlwZWRlZiB1 aW50NjRfdCBwZ2VudHJ5X3Q7CiAjZGVmaW5lIEwzX1BBR0VUQUJMRV9FTlRSSUVTICAgIDUxMgog I2RlZmluZSBMNF9QQUdFVEFCTEVfRU5UUklFUyAgICA1MTIKIAorI2RlZmluZSBQQUdFVEFCTEVf TEVWRUxTICAgICAgICA0CisKIC8qIFRoZXNlIGFyZSBwYWdlLXRhYmxlIGxpbWl0YXRpb25zLiBD dXJyZW50IENQVXMgc3VwcG9ydCBvbmx5IDQwLWJpdCBwaHlzLiAqLwogI2RlZmluZSBQQUREUl9C SVRTICAgICAgICAgICAgICA1MgogI2RlZmluZSBWQUREUl9CSVRTICAgICAgICAgICAgICA0OApk aWZmIC0tZ2l0IGEvaW5jbHVkZS94ODYvb3MuaCBiL2luY2x1ZGUveDg2L29zLmgKaW5kZXggOGNj ZmYyMS4uZTExOGI5MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS94ODYvb3MuaAorKysgYi9pbmNsdWRl L3g4Ni9vcy5oCkBAIC0yMDYsNiArMjA2LDE1IEBAIHN0YXRpYyBpbmxpbmUgaW50IGlycXNfZGlz YWJsZWQodm9pZCkKICAqLwogdHlwZWRlZiBzdHJ1Y3QgeyB2b2xhdGlsZSBpbnQgY291bnRlcjsg fSBhdG9taWNfdDsKIAorc3RhdGljIGlubGluZSB2b2lkIHdyaXRlX2NyMyh1bnNpZ25lZCBsb25n IGNyMykKK3sKKyAgICBhc20gdm9sYXRpbGUoICJtb3YgJTAsICUlY3IzIiA6IDogInIiIChjcjMp IDogIm1lbW9yeSIgKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGludmxwZyh1bnNpZ25lZCBs b25nIHZhKQoreworICAgIGFzbSB2b2xhdGlsZSAoICJpbnZscGcgJTAiOiA6ICJtIiAoKihjb25z dCBjaGFyICopKHZhKSkgOiAibWVtb3J5IiApOworfQogCiAvKioqKioqKioqKioqKioqKioqKioq KioqKiogaTM4NiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogI2lmZGVmIF9fSU5T SURFX01JTklPU19fCi0tIAoyLjYuNgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhl bi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=