From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haozhong Zhang Subject: [RFC XEN PATCH 03/16] xen/x86: add a hypercall XENPF_pmem_add to report host pmem regions Date: Mon, 10 Oct 2016 08:32:22 +0800 Message-ID: <20161010003235.4213-4-haozhong.zhang@intel.com> References: <20161010003235.4213-1-haozhong.zhang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20161010003235.4213-1-haozhong.zhang@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Haozhong Zhang , Xiao Guangrong , Andrew Cooper , Jan Beulich , Daniel De Graaf List-Id: xen-devel@lists.xenproject.org WGVuIGh5cGVydmlzb3IgZG9lcyBub3QgaW5jbHVkZSBhIHBtZW0gZHJpdmVyLiBJbnN0ZWFkLCBp dCByZWxpZXMgb24gdGhlCnBtZW0gZHJpdmVyIGluIERvbTAgdG8gcmVwb3J0IHRoZSBQRk4gcmFu Z2VzIG9mIHRoZSBlbnRpcmUgcG1lbSByZWdpb24sCml0cyByZXNlcnZlZCBhcmVhIGFuZCBkYXRh IGFyZWEgdmlhIFhFTlBGX3BtZW1fYWRkLiBUaGUgcmVzZXJ2ZWQgYXJlYSBpcwp1c2VkIGJ5IFhl biBoeXBlcnZpc29yIHRvIHBsYWNlIHRoZSBmcmFtZSB0YWJsZSBhbmQgTTJQIHRhYmxlLCBhbmQg aXMKZGlzYWxsb3dlZCB0byBiZSBhY2Nlc3NlZCBmcm9tIERvbTAgb25jZSBpdCdzIHJlcG9ydGVk LgoKU2lnbmVkLW9mZi1ieTogSGFvemhvbmcgWmhhbmcgPGhhb3pob25nLnpoYW5nQGludGVsLmNv bT4KLS0tCkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBBbmRyZXcgQ29v cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgpDYzogRGFuaWVsIERlIEdyYWFmIDxkZ2Rl Z3JhQHR5Y2hvLm5zYS5nb3Y+Ci0tLQogeGVuL2FyY2gveDg2L01ha2VmaWxlICAgICAgICAgICAg IHwgICAxICsKIHhlbi9hcmNoL3g4Ni9wbGF0Zm9ybV9oeXBlcmNhbGwuYyB8ICAgNyArKwogeGVu L2FyY2gveDg2L3BtZW0uYyAgICAgICAgICAgICAgIHwgMTYxICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiB4ZW4vYXJjaC94ODYveDg2XzY0L21tLmMgICAgICAgICAgfCAg NTQgKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9tbS5oICAgICAgICAgIHwgICA0 ICsKIHhlbi9pbmNsdWRlL3B1YmxpYy9wbGF0Zm9ybS5oICAgICB8ICAxNCArKysrCiB4ZW4vaW5j bHVkZS94ZW4vcG1lbS5oICAgICAgICAgICAgfCAgMzEgKysrKysrKysKIHhlbi94c20vZmxhc2sv aG9va3MuYyAgICAgICAgICAgICB8ICAgMSArCiA4IGZpbGVzIGNoYW5nZWQsIDI3MyBpbnNlcnRp b25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gveDg2L3BtZW0uYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3hlbi9wbWVtLmgKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvTWFrZWZpbGUgYi94ZW4vYXJjaC94ODYvTWFrZWZpbGUKaW5kZXggOTMxOTE3ZC4uOWNmMmRh MSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L01ha2VmaWxlCisrKyBiL3hlbi9hcmNoL3g4Ni9N YWtlZmlsZQpAQCAtNjcsNiArNjcsNyBAQCBvYmotJChDT05GSUdfVEJPT1QpICs9IHRib290Lm8K IG9iai15ICs9IGhwZXQubwogb2JqLXkgKz0gdm1fZXZlbnQubwogb2JqLXkgKz0geHN0YXRlLm8K K29iai15ICs9IHBtZW0ubwogCiB4ODZfZW11bGF0ZS5vOiB4ODZfZW11bGF0ZS94ODZfZW11bGF0 ZS5jIHg4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmgKIApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L3BsYXRmb3JtX2h5cGVyY2FsbC5jIGIveGVuL2FyY2gveDg2L3BsYXRmb3JtX2h5cGVyY2FsbC5j CmluZGV4IDA4NzllMTkuLmM0N2VlYTQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9wbGF0Zm9y bV9oeXBlcmNhbGwuYworKysgYi94ZW4vYXJjaC94ODYvcGxhdGZvcm1faHlwZXJjYWxsLmMKQEAg LTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlIDx4ZW4vcG1zdGF0Lmg+CiAjaW5jbHVkZSA8eGVuL2ly cS5oPgogI2luY2x1ZGUgPHhlbi9zeW1ib2xzLmg+CisjaW5jbHVkZSA8eGVuL3BtZW0uaD4KICNp bmNsdWRlIDxhc20vY3VycmVudC5oPgogI2luY2x1ZGUgPHB1YmxpYy9wbGF0Zm9ybS5oPgogI2lu Y2x1ZGUgPGFjcGkvY3B1ZnJlcS9wcm9jZXNzb3JfcGVyZi5oPgpAQCAtODIyLDYgKzgyMywxMiBA QCByZXRfdCBkb19wbGF0Zm9ybV9vcChYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9wbGF0Zm9y bV9vcF90KSB1X3hlbnBmX29wKQogICAgIH0KICAgICBicmVhazsKIAorICAgIGNhc2UgWEVOUEZf cG1lbV9hZGQ6CisgICAgICAgIHJldCA9IHBtZW1fYWRkKG9wLT51LnBtZW1fYWRkLnNwZm4sIG9w LT51LnBtZW1fYWRkLmVwZm4sCisgICAgICAgICAgICAgICAgICAgICAgIG9wLT51LnBtZW1fYWRk LnJzdl9zcGZuLCBvcC0+dS5wbWVtX2FkZC5yc3ZfZXBmbiwKKyAgICAgICAgICAgICAgICAgICAg ICAgb3AtPnUucG1lbV9hZGQuZGF0YV9zcGZuLCBvcC0+dS5wbWVtX2FkZC5kYXRhX2VwZm4pOwor ICAgICAgICBicmVhazsKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldCA9IC1FTk9TWVM7CiAg ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3BtZW0uYyBiL3hlbi9hcmNo L3g4Ni9wbWVtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzAzNThlZAot LS0gL2Rldi9udWxsCisrKyBiL3hlbi9hcmNoL3g4Ni9wbWVtLmMKQEAgLTAsMCArMSwxNjEgQEAK Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKKyAqIGFyY2gveDg2L3BtZW0uYworICoKKyAqIENvcHly aWdodCAoYykgMjAxNiwgSW50ZWwgQ29ycG9yYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAq IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgorICoKKyAqIEF1dGhvcjogSGFvemhvbmcgWmhhbmcgPGhhb3pob25nLnpoYW5n QGludGVsLmNvbT4KKyAqLworCisjaW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPgorI2luY2x1 ZGUgPHhlbi9saXN0Lmg+CisjaW5jbHVkZSA8eGVuL3NwaW5sb2NrLmg+CisjaW5jbHVkZSA8eGVu L3BtZW0uaD4KKyNpbmNsdWRlIDx4ZW4vaW9jYXAuaD4KKyNpbmNsdWRlIDxhc20teDg2L21tLmg+ CisKKy8qCisgKiBBbGwgcG1lbSByZWdpb25zIHJlcG9ydGVkIGZyb20gRG9tMCBhcmUgbGlua2Vk IGluIHBtZW1fbGlzdCwgd2hpY2gKKyAqIGlzIHByb2VjdGVkIGJ5IHBtZW1fbGlzdF9sb2NrLiBJ dHMgZW50cmllcyBhcmUgb2YgdHlwZSBzdHJ1Y3QgcG1lbQorICogYW5kIHNvcnRlZCBpbmNyZW1l bnRhbGx5IGJ5IGZpZWxkIHNwYS4KKyAqLworc3RhdGljIERFRklORV9TUElOTE9DSyhwbWVtX2xp c3RfbG9jayk7CitzdGF0aWMgTElTVF9IRUFEKHBtZW1fbGlzdCk7CisKK3N0cnVjdCBwbWVtIHsK KyAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7ICAgLyogbGluayB0byBwbWVtX2xpc3QgKi8KKyAg ICB1bnNpZ25lZCBsb25nIHNwZm47ICAgICAgLyogc3RhcnQgUEZOIG9mIHRoZSB3aG9sZSBwbWVt IHJlZ2lvbiAqLworICAgIHVuc2lnbmVkIGxvbmcgZXBmbjsgICAgICAvKiBlbmQgUEZOIG9mIHRo ZSB3aG9sZSBwbWVtIHJlZ2lvbiAqLworICAgIHVuc2lnbmVkIGxvbmcgcnN2X3NwZm47ICAvKiBz dGFydCBQRk4gb2YgdGhlIHJlc2VydmVkIGFyZWEgKi8KKyAgICB1bnNpZ25lZCBsb25nIHJzdl9l cGZuOyAgLyogZW5kIFBGTiBvZiB0aGUgcmVzZXJ2ZWQgYXJlYSAqLworICAgIHVuc2lnbmVkIGxv bmcgZGF0YV9zcGZuOyAvKiBzdGFydCBQRk4gb2YgdGhlIGRhdGEgYXJlYSAqLworICAgIHVuc2ln bmVkIGxvbmcgZGF0YV9lcGZuOyAvKiBlbmQgUEZOIG9mIHRoZSBkYXRhIGFyZWEgKi8KK307CisK K3N0YXRpYyBpbnQgaXNfaW5jbHVkZWQodW5zaWduZWQgbG9uZyBzMSwgdW5zaWduZWQgbG9uZyBl MSwKKyAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzMiwgdW5zaWduZWQgbG9u ZyBlMikKK3sKKyAgICByZXR1cm4gczEgPD0gczIgJiYgczIgPCBlMiAmJiBlMiA8PSBlMTsKK30K Kworc3RhdGljIGludCBpc19vdmVybGFwZWQodW5zaWduZWQgbG9uZyBzMSwgdW5zaWduZWQgbG9u ZyBlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgczIsIHVuc2lnbmVk IGxvbmcgZTIpCit7CisgICAgcmV0dXJuIChzMSA8PSBzMiAmJiBzMiA8IGUxKSB8fCAoczIgPCBz MSAmJiBzMSA8IGUyKTsKK30KKworc3RhdGljIGludCBjaGVja19yZXNlcnZlZF9zaXplKHVuc2ln bmVkIGxvbmcgcnN2X21mbnMsIHVuc2lnbmVkIGxvbmcgdG90YWxfbWZucykKK3sKKyAgICByZXR1 cm4gcnN2X21mbnMgPj0KKyAgICAgICAgKChzaXplb2Yoc3RydWN0IHBhZ2VfaW5mbykgKiB0b3Rh bF9tZm5zKSA+PiBQQUdFX1NISUZUKSArCisgICAgICAgICgoc2l6ZW9mKCptYWNoaW5lX3RvX3Bo eXNfbWFwcGluZykgKiB0b3RhbF9tZm5zKSA+PiBQQUdFX1NISUZUKTsKK30KKworc3RhdGljIGlu dCBwbWVtX2FkZF9jaGVjayh1bnNpZ25lZCBsb25nIHNwZm4sIHVuc2lnbmVkIGxvbmcgZXBmbiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyByc3Zfc3BmbiwgdW5zaWdu ZWQgbG9uZyByc3ZfZXBmbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u ZyBkYXRhX3NwZm4sIHVuc2lnbmVkIGxvbmcgZGF0YV9lcGZuKQoreworICAgIGlmICggc3BmbiA+ PSBlcGZuIHx8IHJzdl9zcGZuID49IHJzdl9lcGZuIHx8IGRhdGFfc3BmbiA+PSBkYXRhX2VwZm4g KQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICggIWlzX2luY2x1ZGVkKHNwZm4sIGVwZm4s IHJzdl9zcGZuLCByc3ZfZXBmbikgfHwKKyAgICAgICAgICFpc19pbmNsdWRlZChzcGZuLCBlcGZu LCBkYXRhX3NwZm4sIGRhdGFfZXBmbikgKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICgg aXNfb3ZlcmxhcGVkKHJzdl9zcGZuLCByc3ZfZXBmbiwgZGF0YV9zcGZuLCBkYXRhX2VwZm4pICkK KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoICFjaGVja19yZXNlcnZlZF9zaXplKHJzdl9l cGZuIC0gcnN2X3NwZm4sIGVwZm4gLSBzcGZuKSApCisgICAgICAgIHJldHVybiAwOworCisgICAg cmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQgcG1lbV9saXN0X2FkZCh1bnNpZ25lZCBsb25nIHNw Zm4sIHVuc2lnbmVkIGxvbmcgZXBmbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBsb25nIHJzdl9zcGZuLCB1bnNpZ25lZCBsb25nIHJzdl9lcGZuLAorICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YV9zcGZuLCB1bnNpZ25lZCBsb25nIGRhdGFfZXBm bikKK3sKKyAgICBzdHJ1Y3QgbGlzdF9oZWFkICpjdXI7CisgICAgc3RydWN0IHBtZW0gKm5ld19w bWVtOworICAgIGludCByZXQgPSAwOworCisgICAgc3Bpbl9sb2NrKCZwbWVtX2xpc3RfbG9jayk7 CisKKyAgICBsaXN0X2Zvcl9lYWNoX3ByZXYoY3VyLCAmcG1lbV9saXN0KQorICAgIHsKKyAgICAg ICAgc3RydWN0IHBtZW0gKmN1cl9wbWVtID0gbGlzdF9lbnRyeShjdXIsIHN0cnVjdCBwbWVtLCBs aW5rKTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBjdXJfc3BmbiA9IGN1cl9wbWVtLT5zcGZuOwor ICAgICAgICB1bnNpZ25lZCBsb25nIGN1cl9lcGZuID0gY3VyX3BtZW0tPmVwZm47CisKKyAgICAg ICAgaWYgKCAoY3VyX3NwZm4gPD0gc3BmbiAmJiBzcGZuIDwgY3VyX2VwZm4pIHx8CisgICAgICAg ICAgICAgKHNwZm4gPD0gY3VyX3NwZm4gJiYgY3VyX3NwZm4gPCBlcGZuKSApCisgICAgICAgIHsK KyAgICAgICAgICAgIHJldCA9IC1FSU5WQUw7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAg ICAgfQorCisgICAgICAgIGlmICggY3VyX3NwZm4gPCBzcGZuICkKKyAgICAgICAgICAgIGJyZWFr OworICAgIH0KKworICAgIG5ld19wbWVtID0geG1hbGxvYyhzdHJ1Y3QgcG1lbSk7CisgICAgaWYg KCAhbmV3X3BtZW0gKQorICAgIHsKKyAgICAgICAgcmV0ID0gLUVOT01FTTsKKyAgICAgICAgZ290 byBvdXQ7CisgICAgfQorICAgIG5ld19wbWVtLT5zcGZuICAgICAgPSBzcGZuOworICAgIG5ld19w bWVtLT5lcGZuICAgICAgPSBlcGZuOworICAgIG5ld19wbWVtLT5yc3Zfc3BmbiAgPSByc3Zfc3Bm bjsKKyAgICBuZXdfcG1lbS0+cnN2X2VwZm4gID0gcnN2X2VwZm47CisgICAgbmV3X3BtZW0tPmRh dGFfc3BmbiA9IGRhdGFfc3BmbjsKKyAgICBuZXdfcG1lbS0+ZGF0YV9lcGZuID0gZGF0YV9lcGZu OworICAgIGxpc3RfYWRkKCZuZXdfcG1lbS0+bGluaywgY3VyKTsKKworIG91dDoKKyAgICBzcGlu X3VubG9jaygmcG1lbV9saXN0X2xvY2spOworICAgIHJldHVybiByZXQ7Cit9CisKK2ludCBwbWVt X2FkZCh1bnNpZ25lZCBsb25nIHNwZm4sIHVuc2lnbmVkIGxvbmcgZXBmbiwKKyAgICAgICAgICAg ICB1bnNpZ25lZCBsb25nIHJzdl9zcGZuLCB1bnNpZ25lZCBsb25nIHJzdl9lcGZuLAorICAgICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YV9zcGZuLCB1bnNpZ25lZCBsb25nIGRhdGFfZXBmbikK K3sKKyAgICBpbnQgcmV0OworCisgICAgaWYgKCAhcG1lbV9hZGRfY2hlY2soc3BmbiwgZXBmbiwg cnN2X3NwZm4sIHJzdl9lcGZuLCBkYXRhX3NwZm4sIGRhdGFfZXBmbikgKQorICAgICAgICByZXR1 cm4gLUVJTlZBTDsKKworICAgIHJldCA9IHBtZW1fc2V0dXAoc3BmbiwgZXBmbiwgcnN2X3NwZm4s IHJzdl9lcGZuLCBkYXRhX3NwZm4sIGRhdGFfZXBmbik7CisgICAgaWYgKCByZXQgKQorICAgICAg ICBnb3RvIG91dDsKKworICAgIHJldCA9IGlvbWVtX2RlbnlfYWNjZXNzKGN1cnJlbnQtPmRvbWFp biwgcnN2X3NwZm4sIHJzdl9lcGZuKTsKKyAgICBpZiAoIHJldCApCisgICAgICAgIGdvdG8gb3V0 OworCisgICAgcmV0ID0gcG1lbV9saXN0X2FkZChzcGZuLCBlcGZuLCByc3Zfc3BmbiwgcnN2X2Vw Zm4sIGRhdGFfc3BmbiwgZGF0YV9lcGZuKTsKKyAgICBpZiAoIHJldCApCisgICAgICAgIGdvdG8g b3V0OworCisgICAgcHJpbnRrKFhFTkxPR19JTkZPCisgICAgICAgICAgICJwbWVtOiBwZm5zICAg ICAweCVseCAtIDB4JWx4XG4iCisgICAgICAgICAgICIgICAgICByZXNlcnZlZCAweCVseCAtIDB4 JWx4XG4iCisgICAgICAgICAgICIgICAgICBkYXRhICAgICAweCVseCAtIDB4JWx4XG4iLAorICAg ICAgICAgICBzcGZuLCBlcGZuLCByc3Zfc3BmbiwgcnN2X2VwZm4sIGRhdGFfc3BmbiwgZGF0YV9l cGZuKTsKKworIG91dDoKKyAgICByZXR1cm4gcmV0OworfQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L3g4Nl82NC9tbS5jIGIveGVuL2FyY2gveDg2L3g4Nl82NC9tbS5jCmluZGV4IDVjMGY1Mjcu LmIxZjkyZjYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni94ODZfNjQvbW0uYworKysgYi94ZW4v YXJjaC94ODYveDg2XzY0L21tLmMKQEAgLTE0NzQsNiArMTQ3NCw2MCBAQCBkZXN0cm95X2ZyYW1l dGFibGU6CiAgICAgcmV0dXJuIHJldDsKIH0KIAoraW50IHBtZW1fc2V0dXAodW5zaWduZWQgbG9u ZyBzcGZuLCB1bnNpZ25lZCBsb25nIGVwZm4sCisgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n IHJzdl9zcGZuLCB1bnNpZ25lZCBsb25nIHJzdl9lcGZuLAorICAgICAgICAgICAgICAgdW5zaWdu ZWQgbG9uZyBkYXRhX3NwZm4sIHVuc2lnbmVkIGxvbmcgZGF0YV9lcGZuKQoreworICAgIHVuc2ln bmVkIG9sZF9tYXggPSBtYXhfcGFnZSwgb2xkX3RvdGFsID0gdG90YWxfcGFnZXM7CisgICAgc3Ry dWN0IG1lbV9ob3RhZGRfaW5mbyBpbmZvID0KKyAgICAgICAgeyAuc3BmbiA9IHNwZm4sIC5lcGZu ID0gZXBmbiwgLmN1ciA9IHNwZm4gfTsKKyAgICBzdHJ1Y3QgbWVtX2hvdGFkZF9pbmZvIHJzdl9p bmZvID0KKyAgICAgICAgeyAuc3BmbiA9IHJzdl9zcGZuLCAuZXBmbiA9IHJzdl9lcGZuLCAuY3Vy ID0gcnN2X3NwZm4gfTsKKyAgICBpbnQgcmV0OworICAgIHVuc2lnbmVkIGxvbmcgaTsKKyAgICBz dHJ1Y3QgcGFnZV9pbmZvICpwZzsKKworICAgIGlmICggIW1lbV9ob3RhZGRfY2hlY2soc3Bmbiwg ZXBmbikgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIHJldCA9IGV4dGVuZF9mcmFt ZV90YWJsZSgmaW5mbywgJnJzdl9pbmZvKTsKKyAgICBpZiAoIHJldCApCisgICAgICAgIGdvdG8g ZGVzdHJveV9mcmFtZXRhYmxlOworCisgICAgaWYgKCBtYXhfcGFnZSA8IGVwZm4gKQorICAgIHsK KyAgICAgICAgbWF4X3BhZ2UgPSBlcGZuOworICAgICAgICBtYXhfcGR4ID0gcGZuX3RvX3BkeCht YXhfcGFnZSAtIDEpICsgMTsKKyAgICB9CisgICAgdG90YWxfcGFnZXMgKz0gZXBmbiAtIHNwZm47 CisKKyAgICBzZXRfcGR4X3JhbmdlKHNwZm4sIGVwZm4pOworICAgIHJldCA9IHNldHVwX20ycF90 YWJsZSgmaW5mbywgJnJzdl9pbmZvKTsKKyAgICBpZiAoIHJldCApCisgICAgICAgIGdvdG8gZGVz dHJveV9tMnA7CisKKyAgICBzaGFyZV9ob3RhZGRfbTJwX3RhYmxlKCZpbmZvKTsKKworICAgIGZv ciAoIGkgPSBzcGZuOyBpIDwgZXBmbjsgaSsrICkKKyAgICB7CisgICAgICAgIHBnID0gbWZuX3Rv X3BhZ2UoaSk7CisgICAgICAgIHBnLT5jb3VudF9pbmZvID0gKHJzdl9zcGZuIDw9IGkgJiYgaSA8 IHJzdl9pbmZvLmN1cikgPworICAgICAgICAgICAgICAgICAgICAgICAgIFBHQ19zdGF0ZV9pbnVz ZSA6IFBHQ19zdGF0ZV9mcmVlOworICAgIH0KKworICAgIHJldHVybiAwOworCitkZXN0cm95X20y cDoKKyAgICBkZXN0cm95X20ycF9tYXBwaW5nKCZpbmZvKTsKKyAgICBtYXhfcGFnZSA9IG9sZF9t YXg7CisgICAgdG90YWxfcGFnZXMgPSBvbGRfdG90YWw7CisgICAgbWF4X3BkeCA9IHBmbl90b19w ZHgobWF4X3BhZ2UgLSAxKSArIDE7CitkZXN0cm95X2ZyYW1ldGFibGU6CisgICAgY2xlYW51cF9m cmFtZV90YWJsZSgmaW5mbyk7CisKKyAgICByZXR1cm4gcmV0OworfQorCiAjaW5jbHVkZSAiY29t cGF0L21tLmMiCiAKIC8qCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L21tLmggYi94 ZW4vaW5jbHVkZS9hc20teDg2L21tLmgKaW5kZXggYjc4MTQ5NS4uZTMxZjFjOCAxMDA2NDQKLS0t IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9tbS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0u aApAQCAtNTk3LDQgKzU5Nyw4IEBAIHR5cGVkZWYgc3RydWN0IG1tX3J3bG9jayB7CiAKIGV4dGVy biBjb25zdCBjaGFyIHplcm9fcGFnZVtdOwogCitpbnQgcG1lbV9zZXR1cCh1bnNpZ25lZCBsb25n IHNwZm4sIHVuc2lnbmVkIGxvbmcgZXBmbiwKKyAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg cnN2X3NwZm4sIHVuc2lnbmVkIGxvbmcgcnN2X2VwZm4sCisgICAgICAgICAgICAgICB1bnNpZ25l ZCBsb25nIGRhdGFfc3BmbiwgdW5zaWduZWQgbG9uZyBkYXRhX2VwZm4pOworCiAjZW5kaWYgLyog X19BU01fWDg2X01NX0hfXyAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL3BsYXRm b3JtLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvcGxhdGZvcm0uaAppbmRleCAxZTZhNmNlLi5jN2U3 Y2NlIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvcGxhdGZvcm0uaAorKysgYi94ZW4v aW5jbHVkZS9wdWJsaWMvcGxhdGZvcm0uaApAQCAtNjA4LDYgKzYwOCwxOSBAQCBzdHJ1Y3QgeGVu cGZfc3ltZGF0YSB7CiB0eXBlZGVmIHN0cnVjdCB4ZW5wZl9zeW1kYXRhIHhlbnBmX3N5bWRhdGFf dDsKIERFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbnBmX3N5bWRhdGFfdCk7CiAKKyNkZWZpbmUg WEVOUEZfcG1lbV9hZGQgICAgIDY0CitzdHJ1Y3QgeGVucGZfcG1lbV9hZGQgeworICAgIC8qIElO IHZhcmlhYmxlcyAqLworICAgIHVpbnQ2NF90IHNwZm47ICAgICAgLyogc3RhcnQgUEZOIG9mIHRo ZSB3aG9sZSBwbWVtIHJlZ2lvbiAqLworICAgIHVpbnQ2NF90IGVwZm47ICAgICAgLyogZW5kIFBG TiBvZiB0aGUgd2hvbGUgcG1lbSByZWdpb24gKi8KKyAgICB1aW50NjRfdCByc3Zfc3BmbjsgIC8q IHN0YXJ0IFBGTiBvZiB0aGUgcmVzZXJ2ZWQgYXJlYSB3aXRoaW4gdGhlIHJlZ2lvbiAqLworICAg IHVpbnQ2NF90IHJzdl9lcGZuOyAgLyogZW5kIFBGTiBvZiB0aGUgcmVzZXJ2ZWQgYXJlYSB3aXRo aW4gdGhlIHJlZ2lvbiAqLworICAgIHVpbnQ2NF90IGRhdGFfc3BmbjsgLyogc3RhcnQgUEZOIG9m IHRoZSBkYXRhIGFyZWEgd2l0aGluIHRoZSByZWdpb24gKi8KKyAgICB1aW50NjRfdCBkYXRhX2Vw Zm47IC8qIGVuZCBQRk4gb2YgdGhlIGRhdGEgYXJlYSB3aXRoaW4gdGhlIHJlZ2lvbiAqLworfTsK K3R5cGVkZWYgc3RydWN0IHhlbnBmX3BtZW1fYWRkIHhlbnBmX3BtZW1fYWRkX3Q7CitERUZJTkVf WEVOX0dVRVNUX0hBTkRMRSh4ZW5wZl9wbWVtX2FkZF90KTsKKwogLyoKICAqIGAgZW51bSBuZWdf ZXJybm92YWwKICAqIGAgSFlQRVJWSVNPUl9wbGF0Zm9ybV9vcChjb25zdCBzdHJ1Y3QgeGVuX3Bs YXRmb3JtX29wKik7CkBAIC02MzgsNiArNjUxLDcgQEAgc3RydWN0IHhlbl9wbGF0Zm9ybV9vcCB7 CiAgICAgICAgIHN0cnVjdCB4ZW5wZl9jb3JlX3BhcmtpbmcgICAgICBjb3JlX3Bhcmtpbmc7CiAg ICAgICAgIHN0cnVjdCB4ZW5wZl9yZXNvdXJjZV9vcCAgICAgICByZXNvdXJjZV9vcDsKICAgICAg ICAgc3RydWN0IHhlbnBmX3N5bWRhdGEgICAgICAgICAgIHN5bWRhdGE7CisgICAgICAgIHN0cnVj dCB4ZW5wZl9wbWVtX2FkZCAgICAgICAgICBwbWVtX2FkZDsKICAgICAgICAgdWludDhfdCAgICAg ICAgICAgICAgICAgICAgICAgIHBhZFsxMjhdOwogICAgIH0gdTsKIH07CmRpZmYgLS1naXQgYS94 ZW4vaW5jbHVkZS94ZW4vcG1lbS5oIGIveGVuL2luY2x1ZGUveGVuL3BtZW0uaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjcwYWI4Ci0tLSAvZGV2L251bGwKKysrIGIveGVu L2luY2x1ZGUveGVuL3BtZW0uaApAQCAtMCwwICsxLDMxIEBACisvKgorICogeGVuL2luY2x1ZGUv eGVuL3BtZW0uaAorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNiwgSW50ZWwgQ29ycG9yYXRpb24u CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICoKKyAqIEF1dGhvcjogSGFvemhv bmcgWmhhbmcgPGhhb3pob25nLnpoYW5nQGludGVsLmNvbT4KKyAqLworCisjaWZuZGVmIF9fWEVO X1BNRU1fSF9fCisjZGVmaW5lIF9fWEVOX1BNRU1fSF9fCisKKyNpbmNsdWRlIDx4ZW4vdHlwZXMu aD4KKworaW50IHBtZW1fYWRkKHVuc2lnbmVkIGxvbmcgc3BmbiwgdW5zaWduZWQgbG9uZyBlcGZu LAorICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcnN2X3NwZm4sIHVuc2lnbmVkIGxvbmcgcnN2 X2VwZm4sCisgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBkYXRhX3NwZm4sIHVuc2lnbmVkIGxv bmcgZGF0YV9lcGZuKTsKKworI2VuZGlmIC8qIF9fWEVOX1BNRU1fSF9fICovCmRpZmYgLS1naXQg YS94ZW4veHNtL2ZsYXNrL2hvb2tzLmMgYi94ZW4veHNtL2ZsYXNrL2hvb2tzLmMKaW5kZXggMTc3 YzExZi4uOTQ4YTE2MSAxMDA2NDQKLS0tIGEveGVuL3hzbS9mbGFzay9ob29rcy5jCisrKyBiL3hl bi94c20vZmxhc2svaG9va3MuYwpAQCAtMTM2MCw2ICsxMzYwLDcgQEAgc3RhdGljIGludCBmbGFz a19wbGF0Zm9ybV9vcCh1aW50MzJfdCBvcCkKICAgICBjYXNlIFhFTlBGX2NwdV9vZmZsaW5lOgog ICAgIGNhc2UgWEVOUEZfY3B1X2hvdGFkZDoKICAgICBjYXNlIFhFTlBGX21lbV9ob3RhZGQ6Cisg ICAgY2FzZSBYRU5QRl9wbWVtX2FkZDoKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIAotLSAK Mi4xMC4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xp c3RzLnhlbi5vcmcveGVuLWRldmVsCg==