From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH 5/7] public / x86: introduce __HYPERCALL_iommu_op Date: Mon, 12 Feb 2018 10:47:12 +0000 Message-ID: <20180212104714.1922-6-paul.durrant@citrix.com> References: <20180212104714.1922-1-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1elBgT-0004E6-If for xen-devel@lists.xenproject.org; Mon, 12 Feb 2018 10:50:05 +0000 In-Reply-To: <20180212104714.1922-1-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Stefano Stabellini , Wei Liu , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Paul Durrant , Jan Beulich , Daniel De Graaf List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBib2lsZXJwbGF0ZSBmb3IgYSBuZXcgaHlwZXJjYWxs IHRvIGFsbG93IGEKZG9tYWluIHRvIGNvbnRyb2wgSU9NTVUgbWFwcGluZ3MgZm9yIGl0cyBvd24g cGFnZXMuCldoaWxzdCB0aGVyZSBpcyBkdXBsaWNhdGlvbiBvZiBjb2RlIGJldHdlZW4gdGhlIG5h dGl2ZSBhbmQgY29tcGF0IGVudHJ5CnBvaW50cyB3aGljaCBhcHBlYXJzIHJpcGUgZm9yIHNvbWUg Zm9ybSBvZiBjb21iaW5hdGlvbiwgSSB0aGluayBpdCBpcwpiZXR0ZXIgdG8gbWFpbnRhaW4gdGhl IHNlcGFyYXRpb24gYXMtaXMgYmVjYXVzZSB0aGUgY29tcGF0IGVudHJ5IHBvaW50CndpbGwgbmVj ZXNzYXJpbHkgZ2FpbiBjb21wbGV4aXR5IGluIHN1YnNlcXVlbnQgcGF0Y2hlcy4KCk5PVEU6IFRo aXMgaHlwZXJjYWxsIGlzIG9ubHkgaW1wbGVtZW50ZWQgZm9yIHg4NiBhbmQgaXMgY3VycmVudGx5 CiAgICAgIHJlc3RyaWN0ZWQgYnkgWFNNIHRvIGRvbTAgc2luY2UgaXQgY291bGQgYmUgdXNlZCB0 byBjYXVzZSBJT01NVQogICAgICBmYXVsdHMgd2hpY2ggbWF5IGJyaW5nIGRvd24gYSBob3N0LgoK U2lnbmVkLW9mZi1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KLS0t CkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgpDYzogR2Vvcmdl IER1bmxhcCA8R2VvcmdlLkR1bmxhcEBldS5jaXRyaXguY29tPgpDYzogSWFuIEphY2tzb24gPGlh bi5qYWNrc29uQGV1LmNpdHJpeC5jb20+CkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5j b20+CkNjOiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+CkNj OiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+CkNjOiBUaW0gRGVl Z2FuIDx0aW1AeGVuLm9yZz4KQ2M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+CkNjOiBE YW5pZWwgRGUgR3JhYWYgPGRnZGVncmFAdHljaG8ubnNhLmdvdj4KLS0tCiB0b29scy9mbGFzay9w b2xpY3kvbW9kdWxlcy94ZW4uaWYgICB8ICAgMSArCiB4ZW4vYXJjaC94ODYvTWFrZWZpbGUgICAg ICAgICAgICAgICB8ICAgMSArCiB4ZW4vYXJjaC94ODYvaHZtL2h5cGVyY2FsbC5jICAgICAgICB8 ICAgMSArCiB4ZW4vYXJjaC94ODYvaHlwZXJjYWxsLmMgICAgICAgICAgICB8ICAgMSArCiB4ZW4v YXJjaC94ODYvaW9tbXVfb3AuYyAgICAgICAgICAgICB8IDE2OSArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIHhlbi9hcmNoL3g4Ni9wdi9oeXBlcmNhbGwuYyAgICAgICAgIHwg ICAxICsKIHhlbi9pbmNsdWRlL01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICAyICsKIHhlbi9p bmNsdWRlL3B1YmxpYy9pb21tdV9vcC5oICAgICAgIHwgIDU1ICsrKysrKysrKysrKwogeGVuL2lu Y2x1ZGUvcHVibGljL3hlbi5oICAgICAgICAgICAgfCAgIDEgKwogeGVuL2luY2x1ZGUveGVuL2h5 cGVyY2FsbC5oICAgICAgICAgfCAgMTIgKysrCiB4ZW4vaW5jbHVkZS94bGF0LmxzdCAgICAgICAg ICAgICAgICB8ICAgMSArCiB4ZW4vaW5jbHVkZS94c20vZHVtbXkuaCAgICAgICAgICAgICB8ICAg NiArKwogeGVuL2luY2x1ZGUveHNtL3hzbS5oICAgICAgICAgICAgICAgfCAgIDYgKysKIHhlbi94 c20vZHVtbXkuYyAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHhlbi94c20vZmxhc2svaG9v a3MuYyAgICAgICAgICAgICAgIHwgICA2ICsrCiB4ZW4veHNtL2ZsYXNrL3BvbGljeS9hY2Nlc3Nf dmVjdG9ycyB8ICAgMiArCiAxNiBmaWxlcyBjaGFuZ2VkLCAyNjYgaW5zZXJ0aW9ucygrKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL3g4Ni9pb21tdV9vcC5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgeGVuL2luY2x1ZGUvcHVibGljL2lvbW11X29wLmgKCmRpZmYgLS1naXQgYS90b29scy9mbGFz ay9wb2xpY3kvbW9kdWxlcy94ZW4uaWYgYi90b29scy9mbGFzay9wb2xpY3kvbW9kdWxlcy94ZW4u aWYKaW5kZXggNDU5ODgwYmIwMS4uNWExZDQ0N2FmZCAxMDA2NDQKLS0tIGEvdG9vbHMvZmxhc2sv cG9saWN5L21vZHVsZXMveGVuLmlmCisrKyBiL3Rvb2xzL2ZsYXNrL3BvbGljeS9tb2R1bGVzL3hl bi5pZgpAQCAtNTksNiArNTksNyBAQCBkZWZpbmUoYGNyZWF0ZV9kb21haW5fY29tbW9uJywgYAog CWFsbG93ICQxICQyOmdyYW50IHNldHVwOwogCWFsbG93ICQxICQyOmh2bSB7IGdldHBhcmFtIGh2 bWN0bCBzZXRodm1jCiAJCQlzZXRwYXJhbSBuZXN0ZWQgYWx0cDJtaHZtIGFsdHAybWh2bV9vcCBk bSB9OworCWFsbG93ICQxICQyOnJlc291cmNlIGNvbnRyb2xfaW9tbXU7CiAnKQogCiAjIGNyZWF0 ZV9kb21haW4ocHJpdiwgdGFyZ2V0KQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L01ha2VmaWxl IGIveGVuL2FyY2gveDg2L01ha2VmaWxlCmluZGV4IGQ5MDNiN2FiYjkuLmRmM2ZkYzFiZWIgMTAw NjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9NYWtlZmlsZQorKysgYi94ZW4vYXJjaC94ODYvTWFrZWZp bGUKQEAgLTMzLDYgKzMzLDcgQEAgb2JqLSQoQ09ORklHX0NSQVNIX0RFQlVHKSArPSBnZGJzdHVi Lm8KIG9iai15ICs9IGh5cGVyY2FsbC5vCiBvYmoteSArPSBpMzg3Lm8KIG9iai15ICs9IGk4MjU5 Lm8KK29iai15ICs9IGlvbW11X29wLm8KIG9iai15ICs9IGlvX2FwaWMubwogb2JqLSQoQ09ORklH X0xJVkVQQVRDSCkgKz0gYWx0ZXJuYXRpdmUubyBsaXZlcGF0Y2gubwogb2JqLXkgKz0gbXNpLm8K ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaHlwZXJjYWxsLmMgYi94ZW4vYXJjaC94ODYv aHZtL2h5cGVyY2FsbC5jCmluZGV4IDU3NDJkZDE3OTcuLmRmOTYwMTkxMDMgMTAwNjQ0Ci0tLSBh L3hlbi9hcmNoL3g4Ni9odm0vaHlwZXJjYWxsLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9oeXBl cmNhbGwuYwpAQCAtMTMyLDYgKzEzMiw3IEBAIHN0YXRpYyBjb25zdCBoeXBlcmNhbGxfdGFibGVf dCBodm1faHlwZXJjYWxsX3RhYmxlW10gPSB7CiAgICAgQ09NUEFUX0NBTEwobW11ZXh0X29wKSwK ICAgICBIWVBFUkNBTEwoeGVucG11X29wKSwKICAgICBDT01QQVRfQ0FMTChkbV9vcCksCisgICAg Q09NUEFUX0NBTEwoaW9tbXVfb3ApLAogICAgIEhZUEVSQ0FMTChhcmNoXzEpCiB9OwogCmRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvaHlwZXJjYWxsLmMgYi94ZW4vYXJjaC94ODYvaHlwZXJjYWxs LmMKaW5kZXggOTBlODhjMWQyYy4uMDQ1NzUzZTcwMiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2 L2h5cGVyY2FsbC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9oeXBlcmNhbGwuYwpAQCAtNjgsNiArNjgs NyBAQCBjb25zdCBoeXBlcmNhbGxfYXJnc190IGh5cGVyY2FsbF9hcmdzX3RhYmxlW05SX2h5cGVy Y2FsbHNdID0KICAgICBBUkdTKHhlbnBtdV9vcCwgMiksCiAgICAgQVJHUyhkbV9vcCwgMyksCiAg ICAgQVJHUyhtY2EsIDEpLAorICAgIEFSR1MoaW9tbXVfb3AsIDIpLAogICAgIEFSR1MoYXJjaF8x LCAxKSwKIH07CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9pb21tdV9vcC5jIGIveGVuL2Fy Y2gveDg2L2lvbW11X29wLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u ZWRkOGEzODRiMwotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9hcmNoL3g4Ni9pb21tdV9vcC5jCkBA IC0wLDAgKzEsMTY5IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiB4ODYvaW9tbXVfb3Au YworICoKKyAqIFBhcmF2aXJ0dWFsaXNlZCBJT01NVSBmdW5jdGlvbmFsaXR5CisgKgorICogVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisg KiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBDaXRyaXgg U3lzdGVtcyBJbmMKKyAqLworCisjaW5jbHVkZSA8eGVuL2V2ZW50Lmg+CisjaW5jbHVkZSA8eGVu L2d1ZXN0X2FjY2Vzcy5oPgorI2luY2x1ZGUgPHhlbi9oeXBlcmNhbGwuaD4KKworc3RhdGljIGJv b2wgY2FuX2NvbnRyb2xfaW9tbXUodm9pZCkKK3sKKyAgICBzdHJ1Y3QgZG9tYWluICpjdXJyZCA9 IGN1cnJlbnQtPmRvbWFpbjsKKworICAgIC8qCisgICAgICogSU9NTVUgbWFwcGluZ3MgY2Fubm90 IGJlIG1hbmlwdWxhdGVkIGlmOgorICAgICAqIC0gdGhlIElPTU1VIGlzIG5vdCBlbmFibGVkIG9y LAorICAgICAqIC0gdGhlIElPTU1VIGlzIHBhc3NlZCB0aHJvdWdoIG9yLAorICAgICAqIC0gc2hh cmVkIEVQVCBjb25maWd1cmVkIG9yLAorICAgICAqIC0gWGVuIGlzIG1haW50YWluaW5nIGFuIGlk ZW50aXR5IG1hcC4KKyAgICAgKi8KKyAgICBpZiAoICFpb21tdV9lbmFibGVkIHx8IGlvbW11X3Bh c3N0aHJvdWdoIHx8CisgICAgICAgICBpb21tdV91c2VfaGFwX3B0KGN1cnJkKSB8fCBuZWVkX2lv bW11KGN1cnJkKSApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOwor fQorCitzdGF0aWMgdm9pZCBpb21tdV9vcCh4ZW5faW9tbXVfb3BfdCAqb3ApCit7CisgICAgc3dp dGNoICggb3AtPm9wICkKKyAgICB7CisgICAgZGVmYXVsdDoKKyAgICAgICAgb3AtPnN0YXR1cyA9 IC1FT1BOT1RTVVBQOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK2xvbmcgZG9faW9tbXVf b3AoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5faW9tbXVfb3BfdCkgdW9wcywKKyAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IGNvdW50KQoreworICAgIHVuc2lnbmVkIGludCBpOworICAg IGludCByYzsKKworICAgIHJjID0geHNtX2lvbW11X29wKFhTTV9QUklWLCBjdXJyZW50LT5kb21h aW4pOworICAgIGlmICggcmMgKQorICAgICAgICByZXR1cm4gcmM7CisKKyAgICBpZiAoICFjYW5f Y29udHJvbF9pb21tdSgpICkKKyAgICAgICAgcmV0dXJuIC1FQUNDRVM7CisKKyAgICBmb3IgKCBp ID0gMDsgaSA8IGNvdW50OyBpKysgKQorICAgIHsKKyAgICAgICAgeGVuX2lvbW11X29wX3Qgb3A7 CisKKyAgICAgICAgaWYgKCAoKGkgJiAweGZmKSA9PSAweGZmKSAmJiBoeXBlcmNhbGxfcHJlZW1w dF9jaGVjaygpICkKKyAgICAgICAgeworICAgICAgICAgICAgcmMgPSBpOworICAgICAgICAgICAg YnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIGNvcHlfZnJvbV9ndWVzdF9vZmZzZXQo Jm9wLCB1b3BzLCBpLCAxKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJjID0gLUVGQVVMVDsK KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaW9tbXVfb3AoJm9wKTsK KworICAgICAgICBpZiAoIGNvcHlfdG9fZ3Vlc3Rfb2Zmc2V0KHVvcHMsIGksICZvcCwgMSkgKQor ICAgICAgICB7CisgICAgICAgICAgICByYyA9IC1FRkFVTFQ7CisgICAgICAgICAgICBicmVhazsK KyAgICAgICAgfQorICAgIH0KKworICAgIGlmICggcmMgPiAwICkKKyAgICB7CisgICAgICAgIEFT U0VSVChyYyA8IGNvdW50KTsKKyAgICAgICAgZ3Vlc3RfaGFuZGxlX2FkZF9vZmZzZXQodW9wcywg cmMpOworICAgICAgICBjb3VudCAtPSByYzsKKworICAgICAgICByYyA9IGh5cGVyY2FsbF9jcmVh dGVfY29udGludWF0aW9uKF9fSFlQRVJWSVNPUl9pb21tdV9vcCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiaGkiLCB1b3BzLCBjb3VudCk7CisgICAgfQorCisg ICAgcmV0dXJuIHJjOworfQorCitpbnQgY29tcGF0X2lvbW11X29wKFhFTl9HVUVTVF9IQU5ETEVf UEFSQU0oY29tcGF0X2lvbW11X29wX3QpIHVvcHMsCisgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGludCBjb3VudCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBpbnQgcmM7CisKKyAg ICByYyA9IHhzbV9pb21tdV9vcChYU01fUFJJViwgY3VycmVudC0+ZG9tYWluKTsKKyAgICBpZiAo IHJjICkKKyAgICAgICAgcmV0dXJuIHJjOworCisgICAgaWYgKCAhY2FuX2NvbnRyb2xfaW9tbXUo KSApCisgICAgICAgIHJldHVybiAtRUFDQ0VTOworCisgICAgZm9yICggaSA9IDA7IGkgPCBjb3Vu dDsgaSsrICkKKyAgICB7CisgICAgICAgIGNvbXBhdF9pb21tdV9vcF90IGNtcDsKKyAgICAgICAg eGVuX2lvbW11X29wX3QgbmF0OworCisgICAgICAgIGlmICggKChpICYgMHhmZikgPT0gMHhmZikg JiYgaHlwZXJjYWxsX3ByZWVtcHRfY2hlY2soKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJj ID0gaTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBjb3B5 X2Zyb21fZ3Vlc3Rfb2Zmc2V0KCZjbXAsIHVvcHMsIGksIDEpICkKKyAgICAgICAgeworICAgICAg ICAgICAgcmMgPSAtRUZBVUxUOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAg ICAgICBYTEFUX2lvbW11X29wKCZuYXQsICZjbXApOworCisgICAgICAgIGlvbW11X29wKCZuYXQp OworCisgICAgICAgIFhMQVRfaW9tbXVfb3AoJmNtcCwgJm5hdCk7CisKKyAgICAgICAgaWYgKCBj b3B5X3RvX2d1ZXN0X29mZnNldCh1b3BzLCBpLCAmY21wLCAxKSApCisgICAgICAgIHsKKyAgICAg ICAgICAgIHJjID0gLUVGQVVMVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg fQorCisgICAgaWYgKCByYyA+IDAgKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJjIDwgY291bnQp OworICAgICAgICBndWVzdF9oYW5kbGVfYWRkX29mZnNldCh1b3BzLCByYyk7CisgICAgICAgIGNv dW50IC09IHJjOworCisgICAgICAgIHJjID0gaHlwZXJjYWxsX2NyZWF0ZV9jb250aW51YXRpb24o X19IWVBFUlZJU09SX2lvbW11X29wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJoaSIsIHVvcHMsIGNvdW50KTsKKyAgICB9CisKKyAgICByZXR1cm4gcmM7Cit9 CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6 ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQt dGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3B2 L2h5cGVyY2FsbC5jIGIveGVuL2FyY2gveDg2L3B2L2h5cGVyY2FsbC5jCmluZGV4IGJiYzMwMTFk MWEuLmQyM2Y5YWY0MmYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9wdi9oeXBlcmNhbGwuYwor KysgYi94ZW4vYXJjaC94ODYvcHYvaHlwZXJjYWxsLmMKQEAgLTgwLDYgKzgwLDcgQEAgY29uc3Qg aHlwZXJjYWxsX3RhYmxlX3QgcHZfaHlwZXJjYWxsX3RhYmxlW10gPSB7CiAgICAgSFlQRVJDQUxM KHhlbnBtdV9vcCksCiAgICAgQ09NUEFUX0NBTEwoZG1fb3ApLAogICAgIEhZUEVSQ0FMTChtY2Ep LAorICAgIENPTVBBVF9DQUxMKGlvbW11X29wKSwKICAgICBIWVBFUkNBTEwoYXJjaF8xKSwKIH07 CiAKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL01ha2VmaWxlIGIveGVuL2luY2x1ZGUvTWFrZWZp bGUKaW5kZXggMTkwNjZhMzNhMC4uYWMzZDZlNWFlZiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUv TWFrZWZpbGUKKysrIGIveGVuL2luY2x1ZGUvTWFrZWZpbGUKQEAgLTExLDYgKzExLDcgQEAgaGVh ZGVycy15IDo9IFwKICAgICBjb21wYXQvZmVhdHVyZXMuaCBcCiAgICAgY29tcGF0L2dyYW50X3Rh YmxlLmggXAogICAgIGNvbXBhdC9rZXhlYy5oIFwKKyAgICBjb21wYXQvaW9tbXVfb3AuaCBcCiAg ICAgY29tcGF0L21lbW9yeS5oIFwKICAgICBjb21wYXQvbm1pLmggXAogICAgIGNvbXBhdC9waHlz ZGV2LmggXApAQCAtMjgsNiArMjksNyBAQCBoZWFkZXJzLSQoQ09ORklHX1g4NikgICAgICs9IGNv bXBhdC9hcmNoLXg4Ni94ZW4uaAogaGVhZGVycy0kKENPTkZJR19YODYpICAgICArPSBjb21wYXQv YXJjaC14ODYveGVuLSQoY29tcGF0LWFyY2gteSkuaAogaGVhZGVycy0kKENPTkZJR19YODYpICAg ICArPSBjb21wYXQvaHZtL2h2bV92Y3B1LmgKIGhlYWRlcnMtJChDT05GSUdfWDg2KSAgICAgKz0g Y29tcGF0L2h2bS9kbV9vcC5oCitoZWFkZXJzLSQoQ09ORklHX1g4NikgICAgICs9IGNvbXBhdC9p b21tdV9vcC5oCiBoZWFkZXJzLXkgICAgICAgICAgICAgICAgICs9IGNvbXBhdC9hcmNoLSQoY29t cGF0LWFyY2gteSkuaCBjb21wYXQvcG11LmggY29tcGF0L3hsYXQuaAogaGVhZGVycy0kKENPTkZJ R19GTEFTSykgICArPSBjb21wYXQveHNtL2ZsYXNrX29wLmgKIApkaWZmIC0tZ2l0IGEveGVuL2lu Y2x1ZGUvcHVibGljL2lvbW11X29wLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvaW9tbXVfb3AuaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4yMDJjYjYzZmI1Ci0tLSAvZGV2 L251bGwKKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2lvbW11X29wLmgKQEAgLTAsMCArMSw1NSBA QAorLyoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0 byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bworICogZGVh bCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQg bGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1 Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorICogc2VsbCBjb3BpZXMgb2Yg dGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUg aXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz c2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3Rh bnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9S CisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT IE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF IEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBP UiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBP VEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9S VCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O IFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRI RSBTT0ZUV0FSRS4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQ2l0cml4IFN5c3RlbXMgSW5j CisgKi8KKworI2lmbmRlZiBfX1hFTl9QVUJMSUNfSU9NTVVfT1BfSF9fCisjZGVmaW5lIF9fWEVO X1BVQkxJQ19JT01NVV9PUF9IX18KKworI2luY2x1ZGUgInhlbi5oIgorCitzdHJ1Y3QgeGVuX2lv bW11X29wIHsKKyAgICB1aW50MTZfdCBvcDsKKyAgICB1aW50MTZfdCBmbGFnczsgLyogb3Agc3Bl Y2lmaWMgZmxhZ3MgKi8KKyAgICBpbnQzMl90IHN0YXR1czsgLyogb3AgY29tcGxldGlvbiBzdGF0 dXM6ICovCisgICAgICAgICAgICAgICAgICAgIC8qIDAgZm9yIHN1Y2Nlc3Mgb3RoZXJ3aXNlLCBu ZWdhdGl2ZSBlcnJubyAqLworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9pb21tdV9vcCB4ZW5faW9t bXVfb3BfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9pb21tdV9vcF90KTsKKworLyog YCBlbnVtIG5lZ19lcnJub3ZhbAorICogYCBIWVBFUlZJU09SX2lvbW11X29wKHhlbl9pb21tdV9v cF90IG9wc1tdLAorICogYCAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjb3VudCkK KyAqIGAKKyAqCisgKiBAb3BzIHBvaW50cyB0byBhbiBhcnJheSBvZiBAY291bnQgeGVuX2lvbW11 X29wIHN0cnVjdHVyZXMuCisgKi8KKworI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19JT01NVV9PUF9I X18gKi8KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1z dHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGlu ZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVk ZS9wdWJsaWMveGVuLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMveGVuLmgKaW5kZXggMzA4MTA5ZjE3 Ni4uNDIwMDI2NDQxMSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL3hlbi5oCisrKyBi L3hlbi9pbmNsdWRlL3B1YmxpYy94ZW4uaApAQCAtMTIxLDYgKzEyMSw3IEBAIERFRklORV9YRU5f R1VFU1RfSEFORExFKHhlbl91bG9uZ190KTsKICNkZWZpbmUgX19IWVBFUlZJU09SX3hjX3Jlc2Vy dmVkX29wICAgICAgIDM5IC8qIHJlc2VydmVkIGZvciBYZW5DbGllbnQgKi8KICNkZWZpbmUgX19I WVBFUlZJU09SX3hlbnBtdV9vcCAgICAgICAgICAgIDQwCiAjZGVmaW5lIF9fSFlQRVJWSVNPUl9k bV9vcCAgICAgICAgICAgICAgICA0MQorI2RlZmluZSBfX0hZUEVSVklTT1JfaW9tbXVfb3AgICAg ICAgICAgICAgNDIKIAogLyogQXJjaGl0ZWN0dXJlLXNwZWNpZmljIGh5cGVyY2FsbCBkZWZpbml0 aW9ucy4gKi8KICNkZWZpbmUgX19IWVBFUlZJU09SX2FyY2hfMCAgICAgICAgICAgICAgIDQ4CmRp ZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vaHlwZXJjYWxsLmggYi94ZW4vaW5jbHVkZS94ZW4v aHlwZXJjYWxsLmgKaW5kZXggY2M5OWFlYTU3ZC4uOGNiNjJiN2Q2NSAxMDA2NDQKLS0tIGEveGVu L2luY2x1ZGUveGVuL2h5cGVyY2FsbC5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9oeXBlcmNhbGwu aApAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgPHB1YmxpYy92ZXJzaW9uLmg+CiAjaW5jbHVk ZSA8cHVibGljL3BtdS5oPgogI2luY2x1ZGUgPHB1YmxpYy9odm0vZG1fb3AuaD4KKyNpbmNsdWRl IDxwdWJsaWMvaW9tbXVfb3AuaD4KICNpbmNsdWRlIDxhc20vaHlwZXJjYWxsLmg+CiAjaW5jbHVk ZSA8eHNtL3hzbS5oPgogCkBAIC0xNDgsNiArMTQ5LDEwIEBAIGRvX2RtX29wKAogICAgIHVuc2ln bmVkIGludCBucl9idWZzLAogICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2RtX29wX2J1 Zl90KSBidWZzKTsKIAorZXh0ZXJuIGxvbmcKK2RvX2lvbW11X29wKFhFTl9HVUVTVF9IQU5ETEVf UEFSQU0oeGVuX2lvbW11X29wX3QpIG9wcywKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBjb3Vu dCk7CisKICNpZmRlZiBDT05GSUdfQ09NUEFUCiAKIGV4dGVybiBpbnQKQEAgLTIwNSw2ICsyMTAs MTMgQEAgY29tcGF0X2RtX29wKAogICAgIHVuc2lnbmVkIGludCBucl9idWZzLAogICAgIFhFTl9H VUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYnVmcyk7CiAKKyNpbmNsdWRlIDxjb21wYXQvaW9tbXVf b3AuaD4KKworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoY29tcGF0X2lvbW11X29wX3QpOworZXh0 ZXJuIGludAorY29tcGF0X2lvbW11X29wKFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oY29tcGF0X2lv bW11X29wX3QpIG9wcywKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY291bnQpOworCiAj ZW5kaWYKIAogdm9pZCBhcmNoX2dldF94ZW5fY2Fwcyh4ZW5fY2FwYWJpbGl0aWVzX2luZm9fdCAq aW5mbyk7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94bGF0LmxzdCBiL3hlbi9pbmNsdWRlL3hs YXQubHN0CmluZGV4IDM2OTBiOTdkNWQuLjc0MDk3NTkwODQgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNs dWRlL3hsYXQubHN0CisrKyBiL3hlbi9pbmNsdWRlL3hsYXQubHN0CkBAIC03Niw2ICs3Niw3IEBA CiA/CXZjcHVfaHZtX2NvbnRleHQJCWh2bS9odm1fdmNwdS5oCiA/CXZjcHVfaHZtX3g4Nl8zMgkJ CWh2bS9odm1fdmNwdS5oCiA/CXZjcHVfaHZtX3g4Nl82NAkJCWh2bS9odm1fdmNwdS5oCishCWlv bW11X29wCQkJaW9tbXVfb3AuaAogPwlrZXhlY19leGVjCQkJa2V4ZWMuaAogIQlrZXhlY19pbWFn ZQkJCWtleGVjLmgKICEJa2V4ZWNfcmFuZ2UJCQlrZXhlYy5oCmRpZmYgLS1naXQgYS94ZW4vaW5j bHVkZS94c20vZHVtbXkuaCBiL3hlbi9pbmNsdWRlL3hzbS9kdW1teS5oCmluZGV4IGQ2ZGRhZGNh ZmQuLjY5NDMxYzg4Y2QgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hzbS9kdW1teS5oCisrKyBi L3hlbi9pbmNsdWRlL3hzbS9kdW1teS5oCkBAIC03MDEsNiArNzAxLDEyIEBAIHN0YXRpYyBYU01f SU5MSU5FIGludCB4c21fZG1fb3AoWFNNX0RFRkFVTFRfQVJHIHN0cnVjdCBkb21haW4gKmQpCiAg ICAgcmV0dXJuIHhzbV9kZWZhdWx0X2FjdGlvbihhY3Rpb24sIGN1cnJlbnQtPmRvbWFpbiwgZCk7 CiB9CiAKK3N0YXRpYyBYU01fSU5MSU5FIGludCB4c21faW9tbXVfb3AoWFNNX0RFRkFVTFRfQVJH IHN0cnVjdCBkb21haW4gKmQpCit7CisgICAgWFNNX0FTU0VSVF9BQ1RJT04oWFNNX1BSSVYpOwor ICAgIHJldHVybiB4c21fZGVmYXVsdF9hY3Rpb24oYWN0aW9uLCBjdXJyZW50LT5kb21haW4sIGQp OworfQorCiAjZW5kaWYgLyogQ09ORklHX1g4NiAqLwogCiAjaW5jbHVkZSA8cHVibGljL3ZlcnNp b24uaD4KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hzbS94c20uaCBiL3hlbi9pbmNsdWRlL3hz bS94c20uaAppbmRleCBlMzkxMmJjYzlkLi45ZDk1YTRlNWJiIDEwMDY0NAotLS0gYS94ZW4vaW5j bHVkZS94c20veHNtLmgKKysrIGIveGVuL2luY2x1ZGUveHNtL3hzbS5oCkBAIC0xNzgsNiArMTc4 LDcgQEAgc3RydWN0IHhzbV9vcGVyYXRpb25zIHsKICAgICBpbnQgKCppb3BvcnRfbWFwcGluZykg KHN0cnVjdCBkb21haW4gKmQsIHVpbnQzMl90IHMsIHVpbnQzMl90IGUsIHVpbnQ4X3QgYWxsb3cp OwogICAgIGludCAoKnBtdV9vcCkgKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBvcCk7 CiAgICAgaW50ICgqZG1fb3ApIChzdHJ1Y3QgZG9tYWluICpkKTsKKyAgICBpbnQgKCppb21tdV9v cCkgKHN0cnVjdCBkb21haW4gKmQpOwogI2VuZGlmCiAgICAgaW50ICgqeGVuX3ZlcnNpb24pICh1 aW50MzJfdCBjbWQpOwogfTsKQEAgLTY4NSw2ICs2ODYsMTEgQEAgc3RhdGljIGlubGluZSBpbnQg eHNtX2RtX29wKHhzbV9kZWZhdWx0X3QgZGVmLCBzdHJ1Y3QgZG9tYWluICpkKQogICAgIHJldHVy biB4c21fb3BzLT5kbV9vcChkKTsKIH0KIAorc3RhdGljIGlubGluZSBpbnQgeHNtX2lvbW11X29w KHhzbV9kZWZhdWx0X3QgZGVmLCBzdHJ1Y3QgZG9tYWluICpkKQoreworICAgIHJldHVybiB4c21f b3BzLT5pb21tdV9vcChkKTsKK30KKwogI2VuZGlmIC8qIENPTkZJR19YODYgKi8KIAogc3RhdGlj IGlubGluZSBpbnQgeHNtX3hlbl92ZXJzaW9uICh4c21fZGVmYXVsdF90IGRlZiwgdWludDMyX3Qg b3ApCmRpZmYgLS1naXQgYS94ZW4veHNtL2R1bW15LmMgYi94ZW4veHNtL2R1bW15LmMKaW5kZXgg NDc5YjEwMzYxNC4uMjFjZWZkZWU3NCAxMDA2NDQKLS0tIGEveGVuL3hzbS9kdW1teS5jCisrKyBi L3hlbi94c20vZHVtbXkuYwpAQCAtMTU1LDYgKzE1NSw3IEBAIHZvaWQgX19pbml0IHhzbV9maXh1 cF9vcHMgKHN0cnVjdCB4c21fb3BlcmF0aW9ucyAqb3BzKQogICAgIHNldF90b19kdW1teV9pZl9u dWxsKG9wcywgaW9wb3J0X21hcHBpbmcpOwogICAgIHNldF90b19kdW1teV9pZl9udWxsKG9wcywg cG11X29wKTsKICAgICBzZXRfdG9fZHVtbXlfaWZfbnVsbChvcHMsIGRtX29wKTsKKyAgICBzZXRf dG9fZHVtbXlfaWZfbnVsbChvcHMsIGlvbW11X29wKTsKICNlbmRpZgogICAgIHNldF90b19kdW1t eV9pZl9udWxsKG9wcywgeGVuX3ZlcnNpb24pOwogfQpkaWZmIC0tZ2l0IGEveGVuL3hzbS9mbGFz ay9ob29rcy5jIGIveGVuL3hzbS9mbGFzay9ob29rcy5jCmluZGV4IDE4MDJkOGRmZTYuLjFiZWYz MjY5YzQgMTAwNjQ0Ci0tLSBhL3hlbi94c20vZmxhc2svaG9va3MuYworKysgYi94ZW4veHNtL2Zs YXNrL2hvb2tzLmMKQEAgLTE2NzAsNiArMTY3MCwxMSBAQCBzdGF0aWMgaW50IGZsYXNrX2RtX29w KHN0cnVjdCBkb21haW4gKmQpCiAgICAgcmV0dXJuIGN1cnJlbnRfaGFzX3Blcm0oZCwgU0VDQ0xB U1NfSFZNLCBIVk1fX0RNKTsKIH0KIAorc3RhdGljIGludCBmbGFza19pb21tdV9vcChzdHJ1Y3Qg ZG9tYWluICpkKQoreworICAgIHJldHVybiBjdXJyZW50X2hhc19wZXJtKGQsIFNFQ0NMQVNTX1JF U09VUkNFLCBSRVNPVVJDRV9fQ09OVFJPTF9JT01NVSk7Cit9CisKICNlbmRpZiAvKiBDT05GSUdf WDg2ICovCiAKIHN0YXRpYyBpbnQgZmxhc2tfeGVuX3ZlcnNpb24gKHVpbnQzMl90IG9wKQpAQCAt MTg0Myw2ICsxODQ4LDcgQEAgc3RhdGljIHN0cnVjdCB4c21fb3BlcmF0aW9ucyBmbGFza19vcHMg PSB7CiAgICAgLmlvcG9ydF9tYXBwaW5nID0gZmxhc2tfaW9wb3J0X21hcHBpbmcsCiAgICAgLnBt dV9vcCA9IGZsYXNrX3BtdV9vcCwKICAgICAuZG1fb3AgPSBmbGFza19kbV9vcCwKKyAgICAuaW9t bXVfb3AgPSBmbGFza19pb21tdV9vcCwKICNlbmRpZgogICAgIC54ZW5fdmVyc2lvbiA9IGZsYXNr X3hlbl92ZXJzaW9uLAogfTsKZGlmZiAtLWdpdCBhL3hlbi94c20vZmxhc2svcG9saWN5L2FjY2Vz c192ZWN0b3JzIGIveGVuL3hzbS9mbGFzay9wb2xpY3kvYWNjZXNzX3ZlY3RvcnMKaW5kZXggODli OTk5NjZiYi4uMTkwMDE3ZGZjMyAxMDA2NDQKLS0tIGEveGVuL3hzbS9mbGFzay9wb2xpY3kvYWNj ZXNzX3ZlY3RvcnMKKysrIGIveGVuL3hzbS9mbGFzay9wb2xpY3kvYWNjZXNzX3ZlY3RvcnMKQEAg LTQ3MSw2ICs0NzEsOCBAQCBjbGFzcyByZXNvdXJjZQogIyBjaGVja2VkIGZvciBQSFlTREVWT1Bf c2V0dXBfZ3NpICh0YXJnZXQgSVJRKQogIyBjaGVja2VkIGZvciBQSFlTREVWT1BfcGNpX21tY2Zn X3Jlc2VydmVkICh0YXJnZXQgeGVuX3QpCiAgICAgc2V0dXAKKyMgY2hlY2tlZCBmb3IgSU9NTVVf T1AKKyAgICBjb250cm9sX2lvbW11CiB9CiAKICMgQ2xhc3Mgc2VjdXJpdHkgZGVzY3JpYmVzIHRo ZSBGTEFTSyBzZWN1cml0eSBzZXJ2ZXIgaXRzZWxmOyB0aGVzZSBvcGVyYXRpb25zCi0tIAoyLjEx LjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczov L2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs