From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH 12/22] mini-os: add x86 native page table handling Date: Tue, 23 Aug 2016 17:15:58 +0200 Message-ID: <1471965368-6159-13-git-send-email-jgross@suse.com> References: <1471965368-6159-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: <1471965368-6159-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 IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4KLS0tCiBhcmNoL3g4Ni9tbS5jICAgICAg ICAgfCAxNDcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0KIGFyY2gveDg2L3RyYXBzLmMgICAgICB8ICAxMCArKysrCiBpbmNsdWRlL3g4Ni9hcmNoX21t LmggfCAgIDQgKysKIGluY2x1ZGUveDg2L29zLmggICAgICB8ICAgOSArKysrCiA0IGZpbGVzIGNo YW5nZWQsIDEzMiBpbnNlcnRpb25zKCspLCAzOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9h cmNoL3g4Ni9tbS5jIGIvYXJjaC94ODYvbW0uYwppbmRleCBjYmI1NjE3Li5mNTI0OGE0IDEwMDY0 NAotLS0gYS9hcmNoL3g4Ni9tbS5jCisrKyBiL2FyY2gveDg2L21tLmMKQEAgLTEyMywxNiArMTIz LDI1IEBAIHZvaWQgYXJjaF9tbV9wcmVpbml0KHZvaWQgKnApCiAgKiB0YWJsZSBhdCBvZmZzZXQg aW4gcHJldmlvdXMgbGV2ZWwgTUZOIChwcmVmX2xfbWZuKS4gcHRfcGZuIGlzIGEgZ3Vlc3QKICAq IFBGTi4KICAqLworc3RhdGljIHBnZW50cnlfdCBwdF9wcm90W1BBR0VUQUJMRV9MRVZFTFNdID0g eworICAgIEwxX1BST1QsCisgICAgTDJfUFJPVCwKKyAgICBMM19QUk9ULAorI2lmIGRlZmluZWQo X194ODZfNjRfXykKKyAgICBMNF9QUk9ULAorI2VuZGlmCit9OworCiBzdGF0aWMgdm9pZCBuZXdf cHRfZnJhbWUodW5zaWduZWQgbG9uZyAqcHRfcGZuLCB1bnNpZ25lZCBsb25nIHByZXZfbF9tZm4s IAogICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25l ZCBsb25nIGxldmVsKQogeyAgIAotICAgIHBnZW50cnlfdCAqdGFiID0gcHRfYmFzZTsKKyAgICBw Z2VudHJ5X3QgKnRhYjsKICAgICB1bnNpZ25lZCBsb25nIHB0X3BhZ2UgPSAodW5zaWduZWQgbG9u ZylwZm5fdG9fdmlydCgqcHRfcGZuKTsgCi0gICAgcGdlbnRyeV90IHByb3RfZSwgcHJvdF90Owor I2lmZGVmIENPTkZJR19QQVJBVklSVAogICAgIG1tdV91cGRhdGVfdCBtbXVfdXBkYXRlc1sxXTsK ICAgICBpbnQgcmM7CisjZW5kaWYKICAgICAKLSAgICBwcm90X2UgPSBwcm90X3QgPSAwOwogICAg IERFQlVHKCJBbGxvY2F0aW5nIG5ldyBMJWQgcHQgZnJhbWUgZm9yIHBmbj0lbHgsICIKICAgICAg ICAgICAicHJldl9sX21mbj0lbHgsIG9mZnNldD0lbHgiLCAKICAgICAgICAgICBsZXZlbCwgKnB0 X3BmbiwgcHJldl9sX21mbiwgb2Zmc2V0KTsKQEAgLTE0MCwzMCArMTQ5LDEyIEBAIHN0YXRpYyB2 b2lkIG5ld19wdF9mcmFtZSh1bnNpZ25lZCBsb25nICpwdF9wZm4sIHVuc2lnbmVkIGxvbmcgcHJl dl9sX21mbiwKICAgICAvKiBXZSBuZWVkIHRvIGNsZWFyIHRoZSBwYWdlLCBvdGhlcndpc2Ugd2Ug bWlnaHQgZmFpbCB0byBtYXAgaXQKICAgICAgICBhcyBhIHBhZ2UgdGFibGUgcGFnZSAqLwogICAg IG1lbXNldCgodm9pZCopIHB0X3BhZ2UsIDAsIFBBR0VfU0laRSk7ICAKLSAKLSAgICBzd2l0Y2gg KCBsZXZlbCApCi0gICAgewotICAgIGNhc2UgTDFfRlJBTUU6Ci0gICAgICAgIHByb3RfZSA9IEwx X1BST1Q7Ci0gICAgICAgIHByb3RfdCA9IEwyX1BST1Q7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh c2UgTDJfRlJBTUU6Ci0gICAgICAgIHByb3RfZSA9IEwyX1BST1Q7Ci0gICAgICAgIHByb3RfdCA9 IEwzX1BST1Q7Ci0gICAgICAgIGJyZWFrOwotI2lmIGRlZmluZWQoX194ODZfNjRfXykKLSAgICBj YXNlIEwzX0ZSQU1FOgotICAgICAgICBwcm90X2UgPSBMM19QUk9UOwotICAgICAgICBwcm90X3Qg PSBMNF9QUk9UOwotICAgICAgICBicmVhazsKLSNlbmRpZgotICAgIGRlZmF1bHQ6Ci0gICAgICAg IHByaW50aygibmV3X3B0X2ZyYW1lKCkgY2FsbGVkIHdpdGggaW52YWxpZCBsZXZlbCBudW1iZXIg JWx1XG4iLCBsZXZlbCk7Ci0gICAgICAgIGRvX2V4aXQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg fQogCisgICAgQVNTRVJUKGxldmVsID49IDEgJiYgbGV2ZWwgPD0gUEFHRVRBQkxFX0xFVkVMUyk7 CisKKyNpZmRlZiBDT05GSUdfUEFSQVZJUlQKICAgICAvKiBNYWtlIFBGTiBhIHBhZ2UgdGFibGUg cGFnZSAqLworICAgIHRhYiA9IHB0X2Jhc2U7CiAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKQogICAg IHRhYiA9IHB0ZV90b192aXJ0KHRhYltsNF90YWJsZV9vZmZzZXQocHRfcGFnZSldKTsKICNlbmRp ZgpAQCAtMTcyLDcgKzE2Myw3IEBAIHN0YXRpYyB2b2lkIG5ld19wdF9mcmFtZSh1bnNpZ25lZCBs b25nICpwdF9wZm4sIHVuc2lnbmVkIGxvbmcgcHJldl9sX21mbiwKICAgICBtbXVfdXBkYXRlc1sw XS5wdHIgPSAodGFiW2wyX3RhYmxlX29mZnNldChwdF9wYWdlKV0gJiBQQUdFX01BU0spICsgCiAg ICAgICAgIHNpemVvZihwZ2VudHJ5X3QpICogbDFfdGFibGVfb2Zmc2V0KHB0X3BhZ2UpOwogICAg IG1tdV91cGRhdGVzWzBdLnZhbCA9IChwZ2VudHJ5X3QpcGZuX3RvX21mbigqcHRfcGZuKSA8PCBQ QUdFX1NISUZUIHwgCi0gICAgICAgIChwcm90X2UgJiB+X1BBR0VfUlcpOworICAgICAgICAocHRf cHJvdFtsZXZlbCAtIDFdICYgfl9QQUdFX1JXKTsKICAgICAKICAgICBpZiAoIChyYyA9IEhZUEVS VklTT1JfbW11X3VwZGF0ZShtbXVfdXBkYXRlcywgMSwgTlVMTCwgRE9NSURfU0VMRikpIDwgMCAp CiAgICAgewpAQCAtMTg0LDEzICsxNzUsMTggQEAgc3RhdGljIHZvaWQgbmV3X3B0X2ZyYW1lKHVu c2lnbmVkIGxvbmcgKnB0X3BmbiwgdW5zaWduZWQgbG9uZyBwcmV2X2xfbWZuLAogICAgIC8qIEhv b2sgdGhlIG5ldyBwYWdlIHRhYmxlIHBhZ2UgaW50byB0aGUgaGllcmFyY2h5ICovCiAgICAgbW11 X3VwZGF0ZXNbMF0ucHRyID0KICAgICAgICAgKChwZ2VudHJ5X3QpcHJldl9sX21mbiA8PCBQQUdF X1NISUZUKSArIHNpemVvZihwZ2VudHJ5X3QpICogb2Zmc2V0OwotICAgIG1tdV91cGRhdGVzWzBd LnZhbCA9IChwZ2VudHJ5X3QpcGZuX3RvX21mbigqcHRfcGZuKSA8PCBQQUdFX1NISUZUIHwgcHJv dF90OworICAgIG1tdV91cGRhdGVzWzBdLnZhbCA9IChwZ2VudHJ5X3QpcGZuX3RvX21mbigqcHRf cGZuKSA8PCBQQUdFX1NISUZUIHwKKyAgICAgICAgcHRfcHJvdFtsZXZlbF07CiAKICAgICBpZiAo IChyYyA9IEhZUEVSVklTT1JfbW11X3VwZGF0ZShtbXVfdXBkYXRlcywgMSwgTlVMTCwgRE9NSURf U0VMRikpIDwgMCApIAogICAgIHsKICAgICAgICAgcHJpbnRrKCJFUlJPUjogbW11X3VwZGF0ZSBm YWlsZWQgd2l0aCByYz0lZFxuIiwgcmMpOwogICAgICAgICBkb19leGl0KCk7CiAgICAgfQorI2Vs c2UKKyAgICB0YWIgPSBtZm5fdG9fdmlydChwcmV2X2xfbWZuKTsKKyAgICB0YWJbb2Zmc2V0XSA9 ICgqcHRfcGZuIDw8IFBBR0VfU0hJRlQpIHwgcHRfcHJvdFtsZXZlbF07CisjZW5kaWYKIAogICAg ICpwdF9wZm4gKz0gMTsKIH0KQEAgLTIwMiwxMiArMTk4LDE0IEBAIHN0YXRpYyB2b2lkIGJ1aWxk X3BhZ2V0YWJsZSh1bnNpZ25lZCBsb25nICpzdGFydF9wZm4sIHVuc2lnbmVkIGxvbmcgKm1heF9w Zm4pCiB7CiAgICAgdW5zaWduZWQgbG9uZyBzdGFydF9hZGRyZXNzLCBlbmRfYWRkcmVzczsKICAg ICB1bnNpZ25lZCBsb25nIHBmbl90b19tYXAsIHB0X3BmbiA9ICpzdGFydF9wZm47Ci0gICAgc3Rh dGljIG1tdV91cGRhdGVfdCBtbXVfdXBkYXRlc1tMMV9QQUdFVEFCTEVfRU5UUklFUyArIDFdOwog ICAgIHBnZW50cnlfdCAqdGFiID0gcHRfYmFzZSwgcGFnZTsKICAgICB1bnNpZ25lZCBsb25nIHB0 X21mbiA9IHBmbl90b19tZm4odmlydF90b19wZm4ocHRfYmFzZSkpOwogICAgIHVuc2lnbmVkIGxv bmcgb2Zmc2V0OworI2lmZGVmIENPTkZJR19QQVJBVklSVAorICAgIHN0YXRpYyBtbXVfdXBkYXRl X3QgbW11X3VwZGF0ZXNbTDFfUEFHRVRBQkxFX0VOVFJJRVMgKyAxXTsKICAgICBpbnQgY291bnQg PSAwOwogICAgIGludCByYzsKKyNlbmRpZgogCiAgICAgLyogQmUgY29uc2VydmF0aXZlOiBldmVu IGlmIHdlIGtub3cgdGhlcmUgd2lsbCBiZSBtb3JlIHBhZ2VzIGFscmVhZHkKICAgICAgICBtYXBw ZWQsIHN0YXJ0IHRoZSBsb29wIGF0IHRoZSB2ZXJ5IGJlZ2lubmluZy4gKi8KQEAgLTIyNSw2ICsy MjMsMTAgQEAgc3RhdGljIHZvaWQgYnVpbGRfcGFnZXRhYmxlKHVuc2lnbmVkIGxvbmcgKnN0YXJ0 X3BmbiwgdW5zaWduZWQgbG9uZyAqbWF4X3BmbikKICAgICAgICAgICAgICAgICgodW5zaWduZWQg bG9uZylwZm5fdG9fdmlydCgqbWF4X3BmbikgLSAKICAgICAgICAgICAgICAgICAodW5zaWduZWQg bG9uZykmX3RleHQpPj4yMCk7CiAgICAgfQorI2Vsc2UKKyAgICAvKiBSb3VuZCB1cCB0byBuZXh0 IDJNQiBib3VuZGFyeSBhcyB3ZSBhcmUgdXNpbmcgMk1CIHBhZ2VzIG9uIEhWTWxpdGUuICovCisg ICAgcGZuX3RvX21hcCA9IChwZm5fdG9fbWFwICsgTDFfUEFHRVRBQkxFX0VOVFJJRVMgLSAxKSAm CisgICAgICAgICAgICAgICAgIH4oTDFfUEFHRVRBQkxFX0VOVFJJRVMgLSAxKTsKICNlbmRpZgog CiAgICAgc3RhcnRfYWRkcmVzcyA9ICh1bnNpZ25lZCBsb25nKXBmbl90b192aXJ0KHBmbl90b19t YXApOwpAQCAtMjU3LDYgKzI1OSw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3BhZ2V0YWJsZSh1bnNp Z25lZCBsb25nICpzdGFydF9wZm4sIHVuc2lnbmVkIGxvbmcgKm1heF9wZm4pCiAgICAgICAgIHB0 X21mbiA9IHB0ZV90b19tZm4ocGFnZSk7CiAgICAgICAgIHRhYiA9IHRvX3ZpcnQobWZuX3RvX3Bm bihwdF9tZm4pIDw8IFBBR0VfU0hJRlQpOwogICAgICAgICBvZmZzZXQgPSBsMl90YWJsZV9vZmZz ZXQoc3RhcnRfYWRkcmVzcyk7ICAgICAgICAKKyNpZmRlZiBDT05GSUdfUEFSQVZJUlQKICAgICAg ICAgLyogTmVlZCBuZXcgTDEgcHQgZnJhbWUgKi8KICAgICAgICAgaWYgKCAhKHRhYltvZmZzZXRd ICYgX1BBR0VfUFJFU0VOVCkgKQogICAgICAgICAgICAgbmV3X3B0X2ZyYW1lKCZwdF9wZm4sIHB0 X21mbiwgb2Zmc2V0LCBMMV9GUkFNRSk7CkBAIC0yODgsNiArMjkxLDEyIEBAIHN0YXRpYyB2b2lk IGJ1aWxkX3BhZ2V0YWJsZSh1bnNpZ25lZCBsb25nICpzdGFydF9wZm4sIHVuc2lnbmVkIGxvbmcg Km1heF9wZm4pCiAgICAgICAgICAgICBjb3VudCA9IDA7CiAgICAgICAgIH0KICAgICAgICAgc3Rh cnRfYWRkcmVzcyArPSBQQUdFX1NJWkU7CisjZWxzZQorICAgICAgICBpZiAoICEodGFiW29mZnNl dF0gJiBfUEFHRV9QUkVTRU5UKSApCisgICAgICAgICAgICB0YWJbb2Zmc2V0XSA9IChwZ2VudHJ5 X3QpcGZuX3RvX21hcCA8PCBQQUdFX1NISUZUIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg TDJfUFJPVCB8IF9QQUdFX1BTRTsKKyAgICAgICAgc3RhcnRfYWRkcmVzcyArPSAxVUwgPDwgTDJf UEFHRVRBQkxFX1NISUZUOworI2VuZGlmCiAgICAgfQogCiAgICAgKnN0YXJ0X3BmbiA9IHB0X3Bm bjsKQEAgLTMwMiwxNiArMzExLDE5IEBAIHN0YXRpYyB2b2lkIHNldF9yZWFkb25seSh2b2lkICp0 ZXh0LCB2b2lkICpldGV4dCkKICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0X2FkZHJlc3MgPQogICAg ICAgICAoKHVuc2lnbmVkIGxvbmcpIHRleHQgKyBQQUdFX1NJWkUgLSAxKSAmIFBBR0VfTUFTSzsK ICAgICB1bnNpZ25lZCBsb25nIGVuZF9hZGRyZXNzID0gKHVuc2lnbmVkIGxvbmcpIGV0ZXh0Owot ICAgIHN0YXRpYyBtbXVfdXBkYXRlX3QgbW11X3VwZGF0ZXNbTDFfUEFHRVRBQkxFX0VOVFJJRVMg KyAxXTsKICAgICBwZ2VudHJ5X3QgKnRhYiA9IHB0X2Jhc2UsIHBhZ2U7CiAgICAgdW5zaWduZWQg bG9uZyBtZm4gPSBwZm5fdG9fbWZuKHZpcnRfdG9fcGZuKHB0X2Jhc2UpKTsKICAgICB1bnNpZ25l ZCBsb25nIG9mZnNldDsKKyAgICB1bnNpZ25lZCBsb25nIHBhZ2Vfc2l6ZSA9IFBBR0VfU0laRTsK KyNpZmRlZiBDT05GSUdfUEFSQVZJUlQKKyAgICBzdGF0aWMgbW11X3VwZGF0ZV90IG1tdV91cGRh dGVzW0wxX1BBR0VUQUJMRV9FTlRSSUVTICsgMV07CiAgICAgaW50IGNvdW50ID0gMDsKICAgICBp bnQgcmM7CisjZW5kaWYKIAogICAgIHByaW50aygic2V0dGluZyAlcC0lcCByZWFkb25seVxuIiwg dGV4dCwgZXRleHQpOwogCi0gICAgd2hpbGUgKCBzdGFydF9hZGRyZXNzICsgUEFHRV9TSVpFIDw9 IGVuZF9hZGRyZXNzICkKKyAgICB3aGlsZSAoIHN0YXJ0X2FkZHJlc3MgKyBwYWdlX3NpemUgPD0g ZW5kX2FkZHJlc3MgKQogICAgIHsKICAgICAgICAgdGFiID0gcHRfYmFzZTsKICAgICAgICAgbWZu ID0gcGZuX3RvX21mbih2aXJ0X3RvX3BmbihwdF9iYXNlKSk7CkBAIC0zMjcsMjYgKzMzOSwzNCBA QCBzdGF0aWMgdm9pZCBzZXRfcmVhZG9ubHkodm9pZCAqdGV4dCwgdm9pZCAqZXRleHQpCiAgICAg ICAgIG1mbiA9IHB0ZV90b19tZm4ocGFnZSk7CiAgICAgICAgIHRhYiA9IHRvX3ZpcnQobWZuX3Rv X3BmbihtZm4pIDw8IFBBR0VfU0hJRlQpOwogICAgICAgICBvZmZzZXQgPSBsMl90YWJsZV9vZmZz ZXQoc3RhcnRfYWRkcmVzcyk7ICAgICAgICAKLSAgICAgICAgcGFnZSA9IHRhYltvZmZzZXRdOwot ICAgICAgICBtZm4gPSBwdGVfdG9fbWZuKHBhZ2UpOwotICAgICAgICB0YWIgPSB0b192aXJ0KG1m bl90b19wZm4obWZuKSA8PCBQQUdFX1NISUZUKTsKKyAgICAgICAgaWYgKCAhKHRhYltvZmZzZXRd ICYgX1BBR0VfUFNFKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHBhZ2UgPSB0YWJbb2Zmc2V0 XTsKKyAgICAgICAgICAgIG1mbiA9IHB0ZV90b19tZm4ocGFnZSk7CisgICAgICAgICAgICB0YWIg PSB0b192aXJ0KG1mbl90b19wZm4obWZuKSA8PCBQQUdFX1NISUZUKTsKIAotICAgICAgICBvZmZz ZXQgPSBsMV90YWJsZV9vZmZzZXQoc3RhcnRfYWRkcmVzcyk7CisgICAgICAgICAgICBvZmZzZXQg PSBsMV90YWJsZV9vZmZzZXQoc3RhcnRfYWRkcmVzcyk7CisgICAgICAgIH0KIAogICAgICAgICBp ZiAoIHN0YXJ0X2FkZHJlc3MgIT0gKHVuc2lnbmVkIGxvbmcpJnNoYXJlZF9pbmZvICkKICAgICAg ICAgeworI2lmZGVmIENPTkZJR19QQVJBVklSVAogICAgICAgICAgICAgbW11X3VwZGF0ZXNbY291 bnRdLnB0ciA9IAogICAgICAgICAgICAgICAgICgocGdlbnRyeV90KW1mbiA8PCBQQUdFX1NISUZU KSArIHNpemVvZihwZ2VudHJ5X3QpICogb2Zmc2V0OwogICAgICAgICAgICAgbW11X3VwZGF0ZXNb Y291bnRdLnZhbCA9IHRhYltvZmZzZXRdICYgfl9QQUdFX1JXOwogICAgICAgICAgICAgY291bnQr KzsKKyNlbHNlCisgICAgICAgICAgICB0YWJbb2Zmc2V0XSAmPSB+X1BBR0VfUlc7CisjZW5kaWYK ICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwcmludGsoInNraXBwZWQgJWx4 XG4iLCBzdGFydF9hZGRyZXNzKTsKIAotICAgICAgICBzdGFydF9hZGRyZXNzICs9IFBBR0VfU0la RTsKKyAgICAgICAgc3RhcnRfYWRkcmVzcyArPSBwYWdlX3NpemU7CiAKKyNpZmRlZiBDT05GSUdf UEFSQVZJUlQKICAgICAgICAgaWYgKCBjb3VudCA9PSBMMV9QQUdFVEFCTEVfRU5UUklFUyB8fCAK LSAgICAgICAgICAgICBzdGFydF9hZGRyZXNzICsgUEFHRV9TSVpFID4gZW5kX2FkZHJlc3MgKQor ICAgICAgICAgICAgIHN0YXJ0X2FkZHJlc3MgKyBwYWdlX3NpemUgPiBlbmRfYWRkcmVzcyApCiAg ICAgICAgIHsKICAgICAgICAgICAgIHJjID0gSFlQRVJWSVNPUl9tbXVfdXBkYXRlKG1tdV91cGRh dGVzLCBjb3VudCwgTlVMTCwgRE9NSURfU0VMRik7CiAgICAgICAgICAgICBpZiAoIHJjIDwgMCAp CkBAIC0zNTYsOCArMzc2LDEzIEBAIHN0YXRpYyB2b2lkIHNldF9yZWFkb25seSh2b2lkICp0ZXh0 LCB2b2lkICpldGV4dCkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNvdW50ID0gMDsKICAg ICAgICAgfQorI2Vsc2UKKyAgICAgICAgaWYgKCBzdGFydF9hZGRyZXNzID09ICgxVUwgPDwgTDJf UEFHRVRBQkxFX1NISUZUKSApCisgICAgICAgICAgICBwYWdlX3NpemUgPSAxVUwgPDwgTDJfUEFH RVRBQkxFX1NISUZUOworI2VuZGlmCiAgICAgfQogCisjaWZkZWYgQ09ORklHX1BBUkFWSVJUCiAg ICAgewogICAgICAgICBtbXVleHRfb3BfdCBvcCA9IHsKICAgICAgICAgICAgIC5jbWQgPSBNTVVF WFRfVExCX0ZMVVNIX0FMTCwKQEAgLTM2NSw2ICszOTAsOSBAQCBzdGF0aWMgdm9pZCBzZXRfcmVh ZG9ubHkodm9pZCAqdGV4dCwgdm9pZCAqZXRleHQpCiAgICAgICAgIGludCBjb3VudDsKICAgICAg ICAgSFlQRVJWSVNPUl9tbXVleHRfb3AoJm9wLCAxLCAmY291bnQsIERPTUlEX1NFTEYpOwogICAg IH0KKyNlbHNlCisgICAgd3JpdGVfY3IzKCh1bnNpZ25lZCBsb25nKXB0X2Jhc2UpOworI2VuZGlm CiB9CiAKIC8qCkBAIC0zOTQsNiArNDIyLDggQEAgc3RhdGljIHBnZW50cnlfdCAqZ2V0X3BndCh1 bnNpZ25lZCBsb25nIHZhKQogICAgIG9mZnNldCA9IGwyX3RhYmxlX29mZnNldCh2YSk7CiAgICAg aWYgKCAhKHRhYltvZmZzZXRdICYgX1BBR0VfUFJFU0VOVCkgKQogICAgICAgICByZXR1cm4gTlVM TDsKKyAgICBpZiAoIHRhYltvZmZzZXRdICYgX1BBR0VfUFNFICkKKyAgICAgICAgcmV0dXJuICZ0 YWJbb2Zmc2V0XTsKICAgICBtZm4gPSBwdGVfdG9fbWZuKHRhYltvZmZzZXRdKTsKICAgICB0YWIg PSBtZm5fdG9fdmlydChtZm4pOwogICAgIG9mZnNldCA9IGwxX3RhYmxlX29mZnNldCh2YSk7CkBA IC00NDgsNiArNDc4LDkgQEAgcGdlbnRyeV90ICpuZWVkX3BndCh1bnNpZ25lZCBsb25nIHZhKQog ICAgICAgICBuZXdfcHRfZnJhbWUoJnB0X3BmbiwgcHRfbWZuLCBvZmZzZXQsIEwxX0ZSQU1FKTsK ICAgICB9CiAgICAgQVNTRVJUKHRhYltvZmZzZXRdICYgX1BBR0VfUFJFU0VOVCk7CisgICAgaWYg KCB0YWJbb2Zmc2V0XSAmIF9QQUdFX1BTRSApCisgICAgICAgIHJldHVybiAmdGFiW29mZnNldF07 CisKICAgICBwdF9tZm4gPSBwdGVfdG9fbWZuKHRhYltvZmZzZXRdKTsKICAgICB0YWIgPSBtZm5f dG9fdmlydChwdF9tZm4pOwogCkBAIC01MjQsOCArNTU3LDYgQEAgaW50IGRvX21hcF9mcmFtZXMo dW5zaWduZWQgbG9uZyB2YSwKIHsKICAgICBwZ2VudHJ5X3QgKnBndCA9IE5VTEw7CiAgICAgdW5z aWduZWQgbG9uZyBkb25lID0gMDsKLSAgICB1bnNpZ25lZCBsb25nIGk7Ci0gICAgaW50IHJjOwog CiAgICAgaWYgKCAhbWZucyApIAogICAgIHsKQEAgLTUzOSw2ICs1NzAsOSBAQCBpbnQgZG9fbWFw X2ZyYW1lcyh1bnNpZ25lZCBsb25nIHZhLAogICAgICAgICBtZW1zZXQoZXJyLCAweDAwLCBuICog c2l6ZW9mKGludCkpOwogICAgIHdoaWxlICggZG9uZSA8IG4gKQogICAgIHsKKyNpZmRlZiBDT05G SUdfUEFSQVZJUlQKKyAgICAgICAgdW5zaWduZWQgbG9uZyBpOworICAgICAgICBpbnQgcmM7CiAg ICAgICAgIHVuc2lnbmVkIGxvbmcgdG9kbzsKIAogICAgICAgICBpZiAoIGVyciApCkBAIC01Nzgs NiArNjEyLDE3IEBAIGludCBkb19tYXBfZnJhbWVzKHVuc2lnbmVkIGxvbmcgdmEsCiAgICAgICAg ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZG9uZSArPSB0b2RvOworI2Vsc2UKKyAgICAgICAg aWYgKCAhcGd0IHx8ICEodmEgJiBMMV9NQVNLKSApCisgICAgICAgICAgICBwZ3QgPSBuZWVkX3Bn dCh2YSAmIH5MMV9NQVNLKTsKKyAgICAgICAgaWYgKCAhcGd0ICkKKyAgICAgICAgICAgIHJldHVy biAtRU5PTUVNOworCisgICAgICAgIEFTU0VSVCghKCpwZ3QgJiBfUEFHRV9QU0UpKTsKKyAgICAg ICAgcGd0W2wxX3RhYmxlX29mZnNldCh2YSldID0gKHBnZW50cnlfdCkKKyAgICAgICAgICAgICgo KG1mbnNbZG9uZSAqIHN0cmlkZV0gKyBkb25lICogaW5jcikgPDwgUEFHRV9TSElGVCkgfCBwcm90 KTsKKyAgICAgICAgZG9uZSsrOworI2VuZGlmCiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC02 MDksMTYgKzY1NCwyMSBAQCB2b2lkICptYXBfZnJhbWVzX2V4KGNvbnN0IHVuc2lnbmVkIGxvbmcg Km1mbnMsIHVuc2lnbmVkIGxvbmcgbiwKICNkZWZpbmUgVU5NQVBfQkFUQ0ggKChTVEFDS19TSVpF IC8gMikgLyBzaXplb2YobXVsdGljYWxsX2VudHJ5X3QpKQogaW50IHVubWFwX2ZyYW1lcyh1bnNp Z25lZCBsb25nIHZhLCB1bnNpZ25lZCBsb25nIG51bV9mcmFtZXMpCiB7CisjaWZkZWYgQ09ORklH X1BBUkFWSVJUCiAgICAgaW50IG4gPSBVTk1BUF9CQVRDSDsKICAgICBtdWx0aWNhbGxfZW50cnlf dCBjYWxsW25dOwogICAgIGludCByZXQ7CiAgICAgaW50IGk7CisjZWxzZQorICAgIHBnZW50cnlf dCAqcGd0OworI2VuZGlmCiAKICAgICBBU1NFUlQoISgodW5zaWduZWQgbG9uZyl2YSAmIH5QQUdF X01BU0spKTsKIAogICAgIERFQlVHKCJ2YT0lcCwgbnVtPTB4JWx4XG4iLCB2YSwgbnVtX2ZyYW1l cyk7CiAKICAgICB3aGlsZSAoIG51bV9mcmFtZXMgKSB7CisjaWZkZWYgQ09ORklHX1BBUkFWSVJU CiAgICAgICAgIGlmICggbiA+IG51bV9mcmFtZXMgKQogICAgICAgICAgICAgbiA9IG51bV9mcmFt ZXM7CiAKQEAgLTY1Myw2ICs3MDMsMTcgQEAgaW50IHVubWFwX2ZyYW1lcyh1bnNpZ25lZCBsb25n IHZhLCB1bnNpZ25lZCBsb25nIG51bV9mcmFtZXMpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0K ICAgICAgICAgbnVtX2ZyYW1lcyAtPSBuOworI2Vsc2UKKyAgICAgICAgcGd0ID0gZ2V0X3BndCh2 YSk7CisgICAgICAgIGlmICggcGd0ICkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKCEo KnBndCAmIF9QQUdFX1BTRSkpOworICAgICAgICAgICAgKnBndCA9IDA7CisgICAgICAgICAgICBp bnZscGcodmEpOworICAgICAgICB9CisgICAgICAgIHZhICs9IFBBR0VfU0laRTsKKyAgICAgICAg bnVtX2ZyYW1lcy0tOworI2VuZGlmCiAgICAgfQogICAgIHJldHVybiAwOwogfQpAQCAtNjYyLDE0 ICs3MjMsMjQgQEAgaW50IHVubWFwX2ZyYW1lcyh1bnNpZ25lZCBsb25nIHZhLCB1bnNpZ25lZCBs b25nIG51bV9mcmFtZXMpCiAgKi8KIHN0YXRpYyB2b2lkIGNsZWFyX2Jvb3RzdHJhcCh2b2lkKQog eworI2lmZGVmIENPTkZJR19QQVJBVklSVAogICAgIHB0ZV90IG51bGxwdGUgPSB7IH07CiAgICAg aW50IHJjOworI2Vsc2UKKyAgICBwZ2VudHJ5X3QgKnBndDsKKyNlbmRpZgogCiAgICAgLyogVXNl IGZpcnN0IHBhZ2UgYXMgdGhlIENvVyB6ZXJvIHBhZ2UgKi8KICAgICBtZW1zZXQoJl90ZXh0LCAw LCBQQUdFX1NJWkUpOwogICAgIG1mbl96ZXJvID0gdmlydF90b19tZm4oKHVuc2lnbmVkIGxvbmcp ICZfdGV4dCk7CisjaWZkZWYgQ09ORklHX1BBUkFWSVJUCiAgICAgaWYgKCAocmMgPSBIWVBFUlZJ U09SX3VwZGF0ZV92YV9tYXBwaW5nKDAsIG51bGxwdGUsIFVWTUZfSU5WTFBHKSkgKQogICAgICAg ICBwcmludGsoIlVuYWJsZSB0byB1bm1hcCBOVUxMIHBhZ2UuIHJjPSVkXG4iLCByYyk7CisjZWxz ZQorICAgIHBndCA9IGdldF9wZ3QoKHVuc2lnbmVkIGxvbmcpJl90ZXh0KTsKKyAgICAqcGd0ID0g MDsKKyAgICBpbnZscGcoKHVuc2lnbmVkIGxvbmcpJl90ZXh0KTsKKyNlbmRpZgogfQogCiAjaWZk ZWYgQ09ORklHX1BBUkFWSVJUCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni90cmFwcy5jIGIvYXJjaC94 ODYvdHJhcHMuYwppbmRleCAyZDMyMjJkLi5hYTE3ZGEzIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni90 cmFwcy5jCisrKyBiL2FyY2gveDg2L3RyYXBzLmMKQEAgLTEyMSw3ICsxMjEsOSBAQCB2b2lkIHBh Z2Vfd2Fsayh1bnNpZ25lZCBsb25nIHZpcnRfYWRkcmVzcykKIHN0YXRpYyBpbnQgaGFuZGxlX2Nv dyh1bnNpZ25lZCBsb25nIGFkZHIpIHsKICAgICAgICAgcGdlbnRyeV90ICp0YWIgPSBwdF9iYXNl LCBwYWdlOwogCXVuc2lnbmVkIGxvbmcgbmV3X3BhZ2U7CisjaWZkZWYgQ09ORklHX1BBUkFWSVJU CiAJaW50IHJjOworI2VuZGlmCiAKICNpZiBkZWZpbmVkKF9feDg2XzY0X18pCiAgICAgICAgIHBh Z2UgPSB0YWJbbDRfdGFibGVfb2Zmc2V0KGFkZHIpXTsKQEAgLTEzNyw2ICsxMzksOCBAQCBzdGF0 aWMgaW50IGhhbmRsZV9jb3codW5zaWduZWQgbG9uZyBhZGRyKSB7CiAgICAgICAgIHBhZ2UgPSB0 YWJbbDJfdGFibGVfb2Zmc2V0KGFkZHIpXTsKIAlpZiAoIShwYWdlICYgX1BBR0VfUFJFU0VOVCkp CiAJICAgIHJldHVybiAwOworCWlmICggcGFnZSAmIF9QQUdFX1BTRSApCisJICAgIHJldHVybiAw OwogICAgICAgICB0YWIgPSBwdGVfdG9fdmlydChwYWdlKTsKICAgICAgICAgCiAgICAgICAgIHBh Z2UgPSB0YWJbbDFfdGFibGVfb2Zmc2V0KGFkZHIpXTsKQEAgLTE0OSwxMiArMTUzLDE4IEBAIHN0 YXRpYyBpbnQgaGFuZGxlX2Nvdyh1bnNpZ25lZCBsb25nIGFkZHIpIHsKIAluZXdfcGFnZSA9IGFs bG9jX3BhZ2VzKDApOwogCW1lbXNldCgodm9pZCopIG5ld19wYWdlLCAwLCBQQUdFX1NJWkUpOwog CisjaWZkZWYgQ09ORklHX1BBUkFWSVJUCiAJcmMgPSBIWVBFUlZJU09SX3VwZGF0ZV92YV9tYXBw aW5nKGFkZHIgJiBQQUdFX01BU0ssIF9fcHRlKHZpcnRfdG9fbWFjaChuZXdfcGFnZSkgfCBMMV9Q Uk9UKSwgVVZNRl9JTlZMUEcpOwogCWlmICghcmMpCiAJCXJldHVybiAxOwogCiAJcHJpbnRrKCJN YXAgemVybyBwYWdlIHRvICVseCBmYWlsZWQ6ICVkLlxuIiwgYWRkciwgcmMpOwogCXJldHVybiAw OworI2Vsc2UKKwl0YWJbbDFfdGFibGVfb2Zmc2V0KGFkZHIpXSA9IHZpcnRfdG9fbWFjaChuZXdf cGFnZSkgfCBMMV9QUk9UOworCWludmxwZyhhZGRyKTsKKwlyZXR1cm4gMTsKKyNlbmRpZgogfQog CiBzdGF0aWMgdm9pZCBkb19zdGFja193YWxrKHVuc2lnbmVkIGxvbmcgZnJhbWVfYmFzZSkKZGlm ZiAtLWdpdCBhL2luY2x1ZGUveDg2L2FyY2hfbW0uaCBiL2luY2x1ZGUveDg2L2FyY2hfbW0uaApp bmRleCAyOGFiNDA2Li5lMGFlNTUyIDEwMDY0NAotLS0gYS9pbmNsdWRlL3g4Ni9hcmNoX21tLmgK KysrIGIvaW5jbHVkZS94ODYvYXJjaF9tbS5oCkBAIC03OCw2ICs3OCw4IEBACiAjZGVmaW5lIEwy X1BBR0VUQUJMRV9FTlRSSUVTICAgIDUxMgogI2RlZmluZSBMM19QQUdFVEFCTEVfRU5UUklFUyAg ICA0CiAKKyNkZWZpbmUgUEFHRVRBQkxFX0xFVkVMUyAgICAgICAgMworCiAjZGVmaW5lIFBBRERS X0JJVFMgICAgICAgICAgICAgIDQ0CiAjZGVmaW5lIFBBRERSX01BU0sgICAgICAgICAgICAgICgo MVVMTCA8PCBQQUREUl9CSVRTKS0xKQogCkBAIC0xMTAsNiArMTEyLDggQEAgdHlwZWRlZiB1aW50 NjRfdCBwZ2VudHJ5X3Q7CiAjZGVmaW5lIEwzX1BBR0VUQUJMRV9FTlRSSUVTICAgIDUxMgogI2Rl ZmluZSBMNF9QQUdFVEFCTEVfRU5UUklFUyAgICA1MTIKIAorI2RlZmluZSBQQUdFVEFCTEVfTEVW RUxTICAgICAgICA0CisKIC8qIFRoZXNlIGFyZSBwYWdlLXRhYmxlIGxpbWl0YXRpb25zLiBDdXJy ZW50IENQVXMgc3VwcG9ydCBvbmx5IDQwLWJpdCBwaHlzLiAqLwogI2RlZmluZSBQQUREUl9CSVRT ICAgICAgICAgICAgICA1MgogI2RlZmluZSBWQUREUl9CSVRTICAgICAgICAgICAgICA0OApkaWZm IC0tZ2l0IGEvaW5jbHVkZS94ODYvb3MuaCBiL2luY2x1ZGUveDg2L29zLmgKaW5kZXggMTA4MzMy OC4uMjBjYzI3ZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS94ODYvb3MuaAorKysgYi9pbmNsdWRlL3g4 Ni9vcy5oCkBAIC0yMDYsNiArMjA2LDE1IEBAIHN0YXRpYyBpbmxpbmUgaW50IGlycXNfZGlzYWJs ZWQodm9pZCkKICAqLwogdHlwZWRlZiBzdHJ1Y3QgeyB2b2xhdGlsZSBpbnQgY291bnRlcjsgfSBh dG9taWNfdDsKIAorc3RhdGljIGlubGluZSB2b2lkIHdyaXRlX2NyMyh1bnNpZ25lZCBsb25nIGNy MykKK3sKKyAgICBhc20gdm9sYXRpbGUoICJtb3YgJTAsICUlY3IzIiA6IDogInIiIChjcjMpIDog Im1lbW9yeSIgKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGludmxwZyh1bnNpZ25lZCBsb25n IHZhKQoreworICAgIGFzbSB2b2xhdGlsZSAoICJpbnZscGcgJTAiOiA6ICJtIiAoKihjb25zdCBj aGFyICopKHZhKSkgOiAibWVtb3J5IiApOworfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioq KiogaTM4NiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogI2lmZGVmIF9fSU5TSURF X01JTklPU19fCi0tIAoyLjYuNgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5v cmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=