From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v4 14/15] x86: add iommu_ops to modify and flush IOMMU mappings Date: Wed, 1 Aug 2018 14:40:27 +0100 Message-ID: <20180801134028.1654-15-paul.durrant@citrix.com> References: <20180801134028.1654-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.89) (envelope-from ) id 1fkrei-0002Ei-5P for xen-devel@lists.xenproject.org; Wed, 01 Aug 2018 13:59:12 +0000 In-Reply-To: <20180801134028.1654-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 , Julien Grall , Paul Durrant , Jan Beulich List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBhZGRzIGlvbW11X29wcyB0byBhZGQgKG1hcCkgb3IgcmVtb3ZlICh1bm1hcCkg ZnJhbWVzIGluIHRoZQpkb21haW4ncyBJT01NVSBtYXBwaW5ncywgYW5kIGFuIGlvbW11X29wIHRv IHN5bmNocm9uaXplIChmbHVzaCkgdGhvc2UKbWFuaXB1bGF0aW9ucyB3aXRoIHRoZSBoYXJkd2Fy ZS4KCk1hcHBpbmdzIGFkZGVkIGJ5IHRoZSBtYXAgb3BlcmF0aW9uIGFyZSB0cmFja2VkIGFuZCBv bmx5IHRob3NlIG1hcHBpbmdzCm1heSBiZSByZW1vdmVkIGJ5IGEgc3Vic2VxdWVudCB1bm1hcCBv cGVyYXRpb24uIEZyYW1lcyBhcmUgc3BlY2lmaWVkIGJ5IHRoZQpvd25pbmcgZG9tYWluIGFuZCBH Rk4uIEl0IGlzLCBvZiBjb3Vyc2UsIHBlcm1pc3NhYmxlIGZvciBhIGRvbWFpbiB0byBtYXAKaXRz IG93biBmcmFtZXMgdXNpbmcgRE9NSURfU0VMRi4KCk5PVEU6IFRoZSBvd25pbmcgZG9tYWluIGFu ZCBHRk4gbXVzdCBhbHNvIGJlIHNwZWNpZmllZCBpbiB0aGUgdW5tYXAKICAgICAgb3BlcmF0aW9u LCBhcyB3ZWxsIGFzIHRoZSBCRk4sIHNvIHRoYXQgdGhleSBjYW4gYmUgY3Jvc3MtY2hlY2tlZAog ICAgICB3aXRoIHRoZSBleGlzdGVudCBtYXBwaW5nLgoKU2lnbmVkLW9mZi1ieTogUGF1bCBEdXJy YW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KLS0tCkNjOiBKYW4gQmV1bGljaCA8amJldWxp Y2hAc3VzZS5jb20+CkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29t PgpDYzogR2VvcmdlIER1bmxhcCA8R2VvcmdlLkR1bmxhcEBldS5jaXRyaXguY29tPgpDYzogSWFu IEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+CkNjOiBKdWxpZW4gR3JhbGwgPGp1 bGllbi5ncmFsbEBhcm0uY29tPgpDYzogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2ls a0BvcmFjbGUuY29tPgpDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwu b3JnPgpDYzogVGltIERlZWdhbiA8dGltQHhlbi5vcmc+CkNjOiBXZWkgTGl1IDx3ZWkubGl1MkBj aXRyaXguY29tPgoKdjQ6CiAtIEZpeGVkIGxvZ2ljIGludmVyc2lvbiB3aGVuIGNoZWNraW5nIHJl dHVybiBvZiBpb21tdV91bm1hcF9wYWdlKCkuCgp2MzoKIC0gQWRkIHR5cGUgcGlubmluZy4KCnYy OgogLSBIZWF2aWx5IHJlLXdvcmtlZCBpbiB2MiwgaW5jbHVkaW5nIGV4cGxpY2l0IHRyYWNraW5n IG9mIG1hcHBpbmdzLgogICBUaGlzIGF2b2lkcyB0aGUgbmVlZCB0byBjbGVhciBub24tcmVzZXJ2 ZWQgbWFwcGluZ3MgZnJvbSBJT01NVQogICBhdCBzdGFydCBvZiBkYXksIHdoaWNoIHdvdWxkIGJl IHByb2hpYml0aXZlbHkgc2xvdyBvbiBhIGxhcmdlIGhvc3QuCi0tLQogeGVuL2FyY2gveDg2L2lv bW11X29wLmMgICAgICAgfCAxNTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiB4ZW4vaW5jbHVkZS9wdWJsaWMvaW9tbXVfb3AuaCB8ICA0MyArKysrKysrKysrKysK IHhlbi9pbmNsdWRlL3hsYXQubHN0ICAgICAgICAgIHwgICAyICsKIDMgZmlsZXMgY2hhbmdlZCwg MTk2IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaW9tbXVfb3AuYyBi L3hlbi9hcmNoL3g4Ni9pb21tdV9vcC5jCmluZGV4IGIyOTU0N2JmZmQuLjM1ZGFlZWVkOTIgMTAw NjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9pb21tdV9vcC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9pb21t dV9vcC5jCkBAIC0xMTQsNiArMTE0LDEzMSBAQCBzdGF0aWMgaW50IGlvbW11X29wX2VuYWJsZV9t b2RpZmljYXRpb24odm9pZCkKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBpb21tdW9w X21hcChzdHJ1Y3QgeGVuX2lvbW11X29wX21hcCAqb3ApCit7CisgICAgc3RydWN0IGRvbWFpbiAq ZCwgKmN1cnJkID0gY3VycmVudC0+ZG9tYWluOworICAgIHN0cnVjdCBkb21haW5faW9tbXUgKmlv bW11ID0gZG9tX2lvbW11KGN1cnJkKTsKKyAgICBib29sIHJlYWRvbmx5ID0gb3AtPmZsYWdzICYg WEVOX0lPTU1VT1BfbWFwX3JlYWRvbmx5OworICAgIGJmbl90IGJmbiA9IF9iZm4ob3AtPmJmbik7 CisgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZTsKKyAgICB1bnNpZ25lZCBpbnQgcHJvdDsKKyAg ICBpbnQgcmMsIGlnbm9yZTsKKworICAgIGlmICggb3AtPnBhZCB8fCAob3AtPmZsYWdzICYgflhF Tl9JT01NVU9QX21hcF9yZWFkb25seSkgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAg IGlmICggIWlvbW11LT5pb21tdV9vcF9yYW5nZXMgKQorICAgICAgICByZXR1cm4gLUVPUE5PVFNV UFA7CisKKyAgICAvKiBDaGVjayB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgQkZOIGZhbGxzIGluIGEg cmVzZXJ2ZWQgcmVnaW9uICovCisgICAgaWYgKCByYW5nZXNldF9jb250YWluc19zaW5nbGV0b24o aW9tbXUtPnJlc2VydmVkX3JhbmdlcywgYmZuX3goYmZuKSkgKQorICAgICAgICByZXR1cm4gLUVJ TlZBTDsKKworICAgIGQgPSByY3VfbG9ja19kb21haW5fYnlfYW55X2lkKG9wLT5kb21pZCk7Cisg ICAgaWYgKCAhZCApCisgICAgICAgIHJldHVybiAtRVNSQ0g7CisKKyAgICByYyA9IGdldF9wYWdl ZF9nZm4oZCwgX2dmbihvcC0+Z2ZuKSwgcmVhZG9ubHksIE5VTEwsICZwYWdlKTsKKyAgICBpZiAo IHJjICkKKyAgICAgICAgZ290byB1bmxvY2s7CisKKyAgICByYyA9IC1FSU5WQUw7CisgICAgaWYg KCAhcmVhZG9ubHkgJiYgIWdldF9wYWdlX3R5cGUocGFnZSwgUEdUX3dyaXRhYmxlX3BhZ2UpICkK KyAgICB7CisgICAgICAgIHB1dF9wYWdlKHBhZ2UpOworICAgICAgICBnb3RvIHVubG9jazsKKyAg ICB9CisKKyAgICBwcm90ID0gSU9NTVVGX3JlYWRhYmxlOworICAgIGlmICggIXJlYWRvbmx5ICkK KyAgICAgICAgcHJvdCB8PSBJT01NVUZfd3JpdGFibGU7CisKKyAgICByYyA9IC1FSU87CisgICAg aWYgKCBpb21tdV9tYXBfcGFnZShjdXJyZCwgYmZuLCBwYWdlX3RvX21mbihwYWdlKSwgcHJvdCkg KQorICAgICAgICBnb3RvIHJlbGVhc2U7CisKKyAgICByYyA9IHJhbmdlc2V0X2FkZF9zaW5nbGV0 b24oaW9tbXUtPmlvbW11X29wX3JhbmdlcywgYmZuX3goYmZuKSk7CisgICAgaWYgKCByYyApCisg ICAgICAgIGdvdG8gdW5tYXA7CisKKyAgICByYyA9IDA7CisgICAgZ290byB1bmxvY2s7IC8qIHJl dGFpbiBtYXBwaW5nIGFuZCByZWZlcmVuY2VzICovCisKKyB1bm1hcDoKKyAgICBpZ25vcmUgPSBp b21tdV91bm1hcF9wYWdlKGN1cnJkLCBiZm4pOworCisgcmVsZWFzZToKKyAgICBpZiAoICFyZWFk b25seSApCisgICAgICAgIHB1dF9wYWdlX3R5cGUocGFnZSk7CisgICAgcHV0X3BhZ2UocGFnZSk7 CisKKyB1bmxvY2s6CisgICAgcmN1X3VubG9ja19kb21haW4oZCk7CisgICAgcmV0dXJuIHJjOwor fQorCitzdGF0aWMgaW50IGlvbW11b3BfdW5tYXAoc3RydWN0IHhlbl9pb21tdV9vcF91bm1hcCAq b3ApCit7CisgICAgc3RydWN0IGRvbWFpbiAqZCwgKmN1cnJkID0gY3VycmVudC0+ZG9tYWluOwor ICAgIHN0cnVjdCBkb21haW5faW9tbXUgKmlvbW11ID0gZG9tX2lvbW11KGN1cnJkKTsKKyAgICBi Zm5fdCBiZm4gPSBfYmZuKG9wLT5iZm4pOworICAgIG1mbl90IG1mbjsKKyAgICBib29sIHJlYWRv bmx5OworICAgIHVuc2lnbmVkIGludCBwcm90OworICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2U7 CisgICAgaW50IHJjOworCisgICAgaWYgKCBvcC0+cGFkMCB8fCBvcC0+cGFkMSApCisgICAgICAg IHJldHVybiAtRUlOVkFMOworCisgICAgaWYgKCAhaW9tbXUtPmlvbW11X29wX3JhbmdlcyApCisg ICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsKKworICAgIGlmICggIXJhbmdlc2V0X2NvbnRhaW5z X3NpbmdsZXRvbihpb21tdS0+aW9tbXVfb3BfcmFuZ2VzLCBiZm5feChiZm4pKSB8fAorICAgICAg ICAgaW9tbXVfbG9va3VwX3BhZ2UoY3VycmQsIGJmbiwgJm1mbiwgJnByb3QpIHx8CisgICAgICAg ICAhbWZuX3ZhbGlkKG1mbikgKQorICAgICAgICByZXR1cm4gLUVOT0VOVDsKKworICAgIHJlYWRv bmx5ID0gIShwcm90ICYgSU9NTVVGX3dyaXRhYmxlKTsKKyAgICAKKyAgICBkID0gcmN1X2xvY2tf ZG9tYWluX2J5X2FueV9pZChvcC0+ZG9taWQpOworICAgIGlmICggIWQgKQorICAgICAgICByZXR1 cm4gLUVTUkNIOworCisgICAgcmMgPSBnZXRfcGFnZWRfZ2ZuKGQsIF9nZm4ob3AtPmdmbiksICEo cHJvdCAmIElPTU1VRl93cml0YWJsZSksIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICZw YWdlKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgZ290byB1bmxvY2s7CisKKyAgICBwdXRfcGFn ZShwYWdlKTsgLyogcmVsZWFzZSBleHRyYSByZWZlcmVuY2UganVzdCB0YWtlbiAqLworCisgICAg cmMgPSAtRUlOVkFMOworICAgIGlmICggIW1mbl9lcShwYWdlX3RvX21mbihwYWdlKSwgbWZuKSAp CisgICAgICAgIGdvdG8gdW5sb2NrOworCisgICAgLyogcmVsZWFzZSByZWZlcmVuY2UgdGFrZW4g aW4gbWFwICovCisgICAgaWYgKCAhcmVhZG9ubHkgKQorICAgICAgICBwdXRfcGFnZV90eXBlKHBh Z2UpOworICAgIHB1dF9wYWdlKHBhZ2UpOworCisgICAgcmMgPSByYW5nZXNldF9yZW1vdmVfc2lu Z2xldG9uKGlvbW11LT5pb21tdV9vcF9yYW5nZXMsIGJmbl94KGJmbikpOworICAgIGlmICggcmMg KQorICAgICAgICBnb3RvIHVubG9jazsKKworICAgIGlmICggaW9tbXVfdW5tYXBfcGFnZShjdXJy ZCwgYmZuKSApCisgICAgICAgIHJjID0gLUVJTzsKKworIHVubG9jazoKKyAgICByY3VfdW5sb2Nr X2RvbWFpbihkKTsKKworICAgIHJldHVybiByYzsKK30KKworc3RhdGljIGludCBpb21tdW9wX2Zs dXNoKHZvaWQpCit7CisgICAgcmV0dXJuICFpb21tdV9pb3RsYl9mbHVzaF9hbGwoY3VycmVudC0+ ZG9tYWluKSA/IDAgOiAtRUlPOworfQorCiBzdGF0aWMgdm9pZCBpb21tdV9vcCh4ZW5faW9tbXVf b3BfdCAqb3ApCiB7CiAgICAgc3dpdGNoICggb3AtPm9wICkKQEAgLTEyNiw2ICsyNTEsMjIgQEAg c3RhdGljIHZvaWQgaW9tbXVfb3AoeGVuX2lvbW11X29wX3QgKm9wKQogICAgICAgICBvcC0+c3Rh dHVzID0gaW9tbXVfb3BfZW5hYmxlX21vZGlmaWNhdGlvbigpOwogICAgICAgICBicmVhazsKIAor ICAgIGNhc2UgWEVOX0lPTU1VT1BfbWFwOgorICAgICAgICB0aGlzX2NwdShpb21tdV9kb250X2Zs dXNoX2lvdGxiKSA9IDE7CisgICAgICAgIG9wLT5zdGF0dXMgPSBpb21tdW9wX21hcCgmb3AtPnUu bWFwKTsKKyAgICAgICAgdGhpc19jcHUoaW9tbXVfZG9udF9mbHVzaF9pb3RsYikgPSAwOworICAg ICAgICBicmVhazsKKworICAgIGNhc2UgWEVOX0lPTU1VT1BfdW5tYXA6CisgICAgICAgIHRoaXNf Y3B1KGlvbW11X2RvbnRfZmx1c2hfaW90bGIpID0gMTsKKyAgICAgICAgb3AtPnN0YXR1cyA9IGlv bW11b3BfdW5tYXAoJm9wLT51LnVubWFwKTsKKyAgICAgICAgdGhpc19jcHUoaW9tbXVfZG9udF9m bHVzaF9pb3RsYikgPSAwOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgWEVOX0lPTU1VT1Bf Zmx1c2g6CisgICAgICAgIG9wLT5zdGF0dXMgPSBpb21tdW9wX2ZsdXNoKCk7CisgICAgICAgIGJy ZWFrOworCiAgICAgZGVmYXVsdDoKICAgICAgICAgb3AtPnN0YXR1cyA9IC1FT1BOT1RTVVBQOwog ICAgICAgICBicmVhazsKQEAgLTEzOSw2ICsyODAsOSBAQCBpbnQgZG9fb25lX2lvbW11X29wKHhl bl9pb21tdV9vcF9idWZfdCAqYnVmKQogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgb3Bfc2l6ZVtd ID0gewogICAgICAgICBbWEVOX0lPTU1VT1BfcXVlcnlfcmVzZXJ2ZWRdID0gc2l6ZW9mKHN0cnVj dCB4ZW5faW9tbXVfb3BfcXVlcnlfcmVzZXJ2ZWQpLAogICAgICAgICBbWEVOX0lPTU1VT1BfZW5h YmxlX21vZGlmaWNhdGlvbl0gPSAwLAorICAgICAgICBbWEVOX0lPTU1VT1BfbWFwXSA9IHNpemVv ZihzdHJ1Y3QgeGVuX2lvbW11X29wX21hcCksCisgICAgICAgIFtYRU5fSU9NTVVPUF91bm1hcF0g PSBzaXplb2Yoc3RydWN0IHhlbl9pb21tdV9vcF91bm1hcCksCisgICAgICAgIFtYRU5fSU9NTVVP UF9mbHVzaF0gPSAwLAogICAgIH07CiAgICAgc2l6ZV90IHNpemU7CiAgICAgaW50IHJjOwpAQCAt MjI2LDYgKzM3MCw5IEBAIGludCBjb21wYXRfb25lX2lvbW11X29wKGNvbXBhdF9pb21tdV9vcF9i dWZfdCAqYnVmKQogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgb3Bfc2l6ZVtdID0gewogICAgICAg ICBbWEVOX0lPTU1VT1BfcXVlcnlfcmVzZXJ2ZWRdID0gc2l6ZW9mKHN0cnVjdCBjb21wYXRfaW9t bXVfb3BfcXVlcnlfcmVzZXJ2ZWQpLAogICAgICAgICBbWEVOX0lPTU1VT1BfZW5hYmxlX21vZGlm aWNhdGlvbl0gPSAwLAorICAgICAgICBbWEVOX0lPTU1VT1BfbWFwXSA9IHNpemVvZihzdHJ1Y3Qg Y29tcGF0X2lvbW11X29wX21hcCksCisgICAgICAgIFtYRU5fSU9NTVVPUF91bm1hcF0gPSBzaXpl b2Yoc3RydWN0IGNvbXBhdF9pb21tdV9vcF91bm1hcCksCisgICAgICAgIFtYRU5fSU9NTVVPUF9m bHVzaF0gPSAwLAogICAgIH07CiAgICAgc2l6ZV90IHNpemU7CiAgICAgeGVuX2lvbW11X29wX3Qg bmF0OwpAQCAtMjYzLDYgKzQxMCw4IEBAIGludCBjb21wYXRfb25lX2lvbW11X29wKGNvbXBhdF9p b21tdV9vcF9idWZfdCAqYnVmKQogICAgICAqIHdlIG5lZWQgdG8gZml4IHRoaW5ncyB1cCBoZXJl LgogICAgICAqLwogI2RlZmluZSBYTEFUX2lvbW11X29wX3VfcXVlcnlfcmVzZXJ2ZWQgWEVOX0lP TU1VT1BfcXVlcnlfcmVzZXJ2ZWQKKyNkZWZpbmUgWExBVF9pb21tdV9vcF91X21hcCBYRU5fSU9N TVVPUF9tYXAKKyNkZWZpbmUgWExBVF9pb21tdV9vcF91X3VubWFwIFhFTl9JT01NVU9QX3VubWFw CiAgICAgdSA9IGNtcC5vcDsKIAogI2RlZmluZSBYTEFUX2lvbW11X29wX3F1ZXJ5X3Jlc2VydmVk X0hORExfcmFuZ2VzKF9kXywgX3NfKSAgICAgICAgICAgIFwKQEAgLTMyMiw2ICs0NzEsOCBAQCBp bnQgY29tcGF0X29uZV9pb21tdV9vcChjb21wYXRfaW9tbXVfb3BfYnVmX3QgKmJ1ZikKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNtcCwgc3RhdHVzKSApCiAgICAgICAgIHJldHVy biAtRUZBVUxUOwogCisjdW5kZWYgWExBVF9pb21tdV9vcF91X3VubWFwCisjdW5kZWYgWExBVF9p b21tdV9vcF91X21hcAogI3VuZGVmIFhMQVRfaW9tbXVfb3BfdV9xdWVyeV9yZXNlcnZlZAogCiAg ICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvaW9tbXVfb3AuaCBi L3hlbi9pbmNsdWRlL3B1YmxpYy9pb21tdV9vcC5oCmluZGV4IDliZjc0YmQwMDcuLmM4ZGM1MzFj ODMgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9pb21tdV9vcC5oCisrKyBiL3hlbi9p bmNsdWRlL3B1YmxpYy9pb21tdV9vcC5oCkBAIC02Nyw2ICs2Nyw0NyBAQCBzdHJ1Y3QgeGVuX2lv bW11X29wX3F1ZXJ5X3Jlc2VydmVkIHsKICAqLwogI2RlZmluZSBYRU5fSU9NTVVPUF9lbmFibGVf bW9kaWZpY2F0aW9uIDIKIAorLyoKKyAqIFhFTl9JT01NVU9QX21hcDogTWFwIGEgZ3Vlc3QgcGFn ZSBpbiB0aGUgSU9NTVUuCisgKi8KKyNkZWZpbmUgWEVOX0lPTU1VT1BfbWFwIDMKKworc3RydWN0 IHhlbl9pb21tdV9vcF9tYXAgeworICAgIC8qIElOIC0gVGhlIGRvbWlkIG9mIHRoZSBndWVzdCAq LworICAgIGRvbWlkX3QgZG9taWQ7CisgICAgdWludDE2X3QgZmxhZ3M7CisKKyNkZWZpbmUgX1hF Tl9JT01NVU9QX21hcF9yZWFkb25seSAwCisjZGVmaW5lIFhFTl9JT01NVU9QX21hcF9yZWFkb25s eSAoMSA8PCAoX1hFTl9JT01NVU9QX21hcF9yZWFkb25seSkpCisKKyAgICB1aW50MzJfdCBwYWQ7 CisgICAgLyogSU4gLSBUaGUgSU9NTVUgZnJhbWUgbnVtYmVyIHdoaWNoIHdpbGwgaG9sZCB0aGUg bmV3IG1hcHBpbmcgKi8KKyAgICB4ZW5fYmZuX3QgYmZuOworICAgIC8qIElOIC0gVGhlIGd1ZXN0 IGZyYW1lIG51bWJlciBvZiB0aGUgcGFnZSB0byBiZSBtYXBwZWQgKi8KKyAgICB4ZW5fcGZuX3Qg Z2ZuOworfTsKKworLyoKKyAqIFhFTl9JT01NVU9QX3VubWFwX2dmbjogUmVtb3ZlIGEgbWFwcGlu ZyBpbiB0aGUgSU9NTVUuCisgKi8KKyNkZWZpbmUgWEVOX0lPTU1VT1BfdW5tYXAgNAorCitzdHJ1 Y3QgeGVuX2lvbW11X29wX3VubWFwIHsKKyAgICAvKiBJTiAtIFRoZSBkb21pZCBvZiB0aGUgZ3Vl c3QgKi8KKyAgICBkb21pZF90IGRvbWlkOworICAgIHVpbnQxNl90IHBhZDA7CisgICAgdWludDMy X3QgcGFkMTsKKyAgICAvKiBJTiAtIFRoZSBJT01NVSBmcmFtZSBudW1iZXIgd2hpY2ggaG9sZHMg dGhlIG1hcHBpbmcgdG8gYmUgcmVtb3ZlZCAqLworICAgIHhlbl9iZm5fdCBiZm47CisgICAgLyog SU4gLSBUaGUgZ3Vlc3QgZnJhbWUgbnVtYmVyIG9mIHRoZSBwYWdlIHRoYXQgaXMgbWFwcGVkICov CisgICAgeGVuX3Bmbl90IGdmbjsKK307CisKKy8qCisgKiBYRU5fSU9NTVVPUF9mbHVzaDogRmx1 c2ggdGhlIElPTU1VIFRMQi4KKyAqLworI2RlZmluZSBYRU5fSU9NTVVPUF9mbHVzaCA1CisKIHN0 cnVjdCB4ZW5faW9tbXVfb3AgewogICAgIHVpbnQxNl90IG9wOyAgICAvKiBvcCB0eXBlICovCiAg ICAgdWludDE2X3QgcGFkOwpAQCAtNzQsNiArMTE1LDggQEAgc3RydWN0IHhlbl9pb21tdV9vcCB7 CiAgICAgICAgICAgICAgICAgICAgIC8qIDAgZm9yIHN1Y2Nlc3Mgb3RoZXJ3aXNlLCBuZWdhdGl2 ZSBlcnJubyAqLwogICAgIHVuaW9uIHsKICAgICAgICAgc3RydWN0IHhlbl9pb21tdV9vcF9xdWVy eV9yZXNlcnZlZCBxdWVyeV9yZXNlcnZlZDsKKyAgICAgICAgc3RydWN0IHhlbl9pb21tdV9vcF9t YXAgbWFwOworICAgICAgICBzdHJ1Y3QgeGVuX2lvbW11X29wX3VubWFwIHVubWFwOwogICAgIH0g dTsKIH07CiB0eXBlZGVmIHN0cnVjdCB4ZW5faW9tbXVfb3AgeGVuX2lvbW11X29wX3Q7CmRpZmYg LS1naXQgYS94ZW4vaW5jbHVkZS94bGF0LmxzdCBiL3hlbi9pbmNsdWRlL3hsYXQubHN0CmluZGV4 IGQyZjliMTAzNGIuLjNhZDdlYWRiNWEgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hsYXQubHN0 CisrKyBiL3hlbi9pbmNsdWRlL3hsYXQubHN0CkBAIC03OSw3ICs3OSw5IEBACiA/CXZjcHVfaHZt X3g4Nl82NAkJCWh2bS9odm1fdmNwdS5oCiAhCWlvbW11X29wCQkJaW9tbXVfb3AuaAogIQlpb21t dV9vcF9idWYJCQlpb21tdV9vcC5oCishCWlvbW11X29wX21hcAkJCWlvbW11X29wLmgKICEJaW9t bXVfb3BfcXVlcnlfcmVzZXJ2ZWQJCWlvbW11X29wLmgKKyEJaW9tbXVfb3BfdW5tYXAJCQlpb21t dV9vcC5oCiA/CWlvbW11X3Jlc2VydmVkX3JhbmdlCQlpb21tdV9vcC5oCiA/CWtleGVjX2V4ZWMJ CQlrZXhlYy5oCiAhCWtleGVjX2ltYWdlCQkJa2V4ZWMuaAotLSAKMi4xMS4wCgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcg bGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==