From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v3 13/13] x86: extend the map and unmap iommu_ops to support grant references Date: Tue, 17 Jul 2018 14:38:16 +0100 Message-ID: <20180717133816.37958-14-paul.durrant@citrix.com> References: <20180717133816.37958-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 1ffQUv-0008NO-0o for xen-devel@lists.xenproject.org; Tue, 17 Jul 2018 13:58:37 +0000 In-Reply-To: <20180717133816.37958-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 VGhpcyBwYXRjaCBhbGxvd3MgYSBkb21haW4gdG8gYWRkIG9yIHJlbW92ZSBmb3JlaWduIGZyYW1l cyBmcm9tIGl0cwpJT01NVSBtYXBwaW5ncyBieSBncmFudCByZWZlcmVuY2UgYXMgd2VsbCBhcyBH Rk4uIFRoaXMgaXMgbmVjZXNzYXJ5LApmb3IgZXhhbXBsZSwgdG8gc3VwcG9ydCBhIFBWIG5ldHdv cmsgYmFja2VuZCB0aGF0IG5lZWRzIHRvIGNvbnN0cnVjdCBhCnBhY2tldCBidWZmZXIgdGhhdCBj YW4gYmUgZGlyZWN0bHkgYWNjZXNzZWQgYnkgYSBOSUMuCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1 cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgotLS0KQ2M6IEphbiBCZXVsaWNoIDxqYmV1 bGljaEBzdXNlLmNvbT4KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5j b20+CkNjOiBHZW9yZ2UgRHVubGFwIDxHZW9yZ2UuRHVubGFwQGV1LmNpdHJpeC5jb20+CkNjOiBJ YW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KQ2M6IEp1bGllbiBHcmFsbCA8 anVsaWVuLmdyYWxsQGFybS5jb20+CkNjOiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53 aWxrQG9yYWNsZS5jb20+CkNjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5l bC5vcmc+CkNjOiBUaW0gRGVlZ2FuIDx0aW1AeGVuLm9yZz4KQ2M6IFdlaSBMaXUgPHdlaS5saXUy QGNpdHJpeC5jb20+Cgp2MjoKIC0gTmV3IGluIHYyLgotLS0KIHhlbi9hcmNoL3g4Ni9pb21tdV9v cC5jICAgICAgIHwgIDc2ICsrKysrKysrKysrKysrKy0tLS0tLS0KIHhlbi9jb21tb24vZ3JhbnRf dGFibGUuYyAgICAgIHwgMTQzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwogeGVuL2luY2x1ZGUvcHVibGljL2lvbW11X29wLmggfCAgMzEgKysrKysrKy0tCiB4ZW4v aW5jbHVkZS94ZW4vZ3JhbnRfdGFibGUuaCB8ICAgNyArKysKIDQgZmlsZXMgY2hhbmdlZCwgMjI4 IGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4 Ni9pb21tdV9vcC5jIGIveGVuL2FyY2gveDg2L2lvbW11X29wLmMKaW5kZXggMDJiZjljNjc5ZS4u YjNkZTdiY2UyNSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2lvbW11X29wLmMKKysrIGIveGVu L2FyY2gveDg2L2lvbW11X29wLmMKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlIDx4ZW4vZ3Vl c3RfYWNjZXNzLmg+CiAjaW5jbHVkZSA8eGVuL2h5cGVyY2FsbC5oPgogI2luY2x1ZGUgPHhlbi9u b3NwZWMuaD4KKyNpbmNsdWRlIDx4ZW4vZ3JhbnRfdGFibGUuaD4KIAogc3RydWN0IGdldF9yZXNl cnZlZF9jdHh0IHsKICAgICB1bnNpZ25lZCBpbnQgbWF4X2VudHJpZXM7CkBAIC0xMjEsMTAgKzEy MiwxMiBAQCBzdGF0aWMgaW50IGlvbW11b3BfbWFwKHN0cnVjdCB4ZW5faW9tbXVfb3BfbWFwICpv cCkKICAgICBib29sIHJlYWRvbmx5ID0gb3AtPmZsYWdzICYgWEVOX0lPTU1VT1BfbWFwX3JlYWRv bmx5OwogICAgIGJmbl90IGJmbiA9IF9iZm4ob3AtPmJmbik7CiAgICAgc3RydWN0IHBhZ2VfaW5m byAqcGFnZTsKKyAgICBtZm5fdCBtZm47CiAgICAgdW5zaWduZWQgaW50IHByb3Q7CiAgICAgaW50 IHJjLCBpZ25vcmU7CiAKLSAgICBpZiAoIG9wLT5wYWQgfHwgKG9wLT5mbGFncyAmIH5YRU5fSU9N TVVPUF9tYXBfcmVhZG9ubHkpICkKKyAgICBpZiAoIG9wLT5wYWQgfHwgKG9wLT5mbGFncyAmIH4o WEVOX0lPTU1VT1BfbWFwX3JlYWRvbmx5IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgWEVOX0lPTU1VT1BfbWFwX2dyZWYpKSApCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwog CiAgICAgaWYgKCAhaW9tbXUtPmlvbW11X29wX3JhbmdlcyApCkBAIC0xMzgsMTUgKzE0MSwyOCBA QCBzdGF0aWMgaW50IGlvbW11b3BfbWFwKHN0cnVjdCB4ZW5faW9tbXVfb3BfbWFwICpvcCkKICAg ICBpZiAoICFkICkKICAgICAgICAgcmV0dXJuIC1FU1JDSDsKIAotICAgIHJjID0gZ2V0X3BhZ2Vk X2dmbihkLCBfZ2ZuKG9wLT5nZm4pLCByZWFkb25seSwgTlVMTCwgJnBhZ2UpOwotICAgIGlmICgg cmMgKQotICAgICAgICBnb3RvIHVubG9jazsKKyAgICBpZiAoIG9wLT5mbGFncyAmIFhFTl9JT01N VU9QX21hcF9ncmVmICkKKyAgICB7CisgICAgICAgIHJjID0gYWNxdWlyZV9ncmVmX2Zvcl9pb21t dShkLCBvcC0+dS5ncmVmLCByZWFkb25seSwgJm1mbik7CisgICAgICAgIGlmICggcmMgKQorICAg ICAgICAgICAgZ290byB1bmxvY2s7CiAKLSAgICByYyA9IC1FSU5WQUw7Ci0gICAgaWYgKCAhZ2V0 X3BhZ2VfdHlwZShwYWdlLCByZWFkb25seSA/IFBHVF9ub25lIDogUEdUX3dyaXRhYmxlX3BhZ2Up ICkKKyAgICAgICAgcGFnZSA9IG1mbl90b19wYWdlKG1mbik7CisgICAgfQorICAgIGVsc2UKICAg ICB7Ci0gICAgICAgIHB1dF9wYWdlKHBhZ2UpOwotICAgICAgICBnb3RvIHVubG9jazsKKyAgICAg ICAgcmMgPSBnZXRfcGFnZWRfZ2ZuKGQsIF9nZm4ob3AtPnUuZ2ZuKSwgcmVhZG9ubHksIE5VTEws ICZwYWdlKTsKKyAgICAgICAgaWYgKCByYyApCisgICAgICAgICAgICBnb3RvIHVubG9jazsKKwor ICAgICAgICByYyA9IC1FSU5WQUw7CisgICAgICAgIGlmICggIWdldF9wYWdlX3R5cGUocGFnZSwg cmVhZG9ubHkgPyBQR1Rfbm9uZSA6IFBHVF93cml0YWJsZV9wYWdlKSApCisgICAgICAgIHsKKyAg ICAgICAgICAgIHB1dF9wYWdlKHBhZ2UpOworICAgICAgICAgICAgZ290byB1bmxvY2s7CisgICAg ICAgIH0KKworICAgICAgICBtZm4gPSBwYWdlX3RvX21mbihwYWdlKTsKICAgICB9CiAKICAgICBw cm90ID0gSU9NTVVGX3JlYWRhYmxlOwpAQCAtMTU0LDcgKzE3MCw3IEBAIHN0YXRpYyBpbnQgaW9t bXVvcF9tYXAoc3RydWN0IHhlbl9pb21tdV9vcF9tYXAgKm9wKQogICAgICAgICBwcm90IHw9IElP TU1VRl93cml0YWJsZTsKIAogICAgIHJjID0gLUVJTzsKLSAgICBpZiAoIGlvbW11X21hcF9wYWdl KGN1cnJkLCBiZm4sIHBhZ2VfdG9fbWZuKHBhZ2UpLCBwcm90KSApCisgICAgaWYgKCBpb21tdV9t YXBfcGFnZShjdXJyZCwgYmZuLCBtZm4sIHByb3QpICkKICAgICAgICAgZ290byByZWxlYXNlOwog CiAgICAgcmMgPSByYW5nZXNldF9hZGRfc2luZ2xldG9uKGlvbW11LT5pb21tdV9vcF9yYW5nZXMs IGJmbl94KGJmbikpOwpAQCAtMTY4LDcgKzE4NCwxMCBAQCBzdGF0aWMgaW50IGlvbW11b3BfbWFw KHN0cnVjdCB4ZW5faW9tbXVfb3BfbWFwICpvcCkKICAgICBpZ25vcmUgPSBpb21tdV91bm1hcF9w YWdlKGN1cnJkLCBiZm4pOwogCiAgcmVsZWFzZToKLSAgICBwdXRfcGFnZV9hbmRfdHlwZShwYWdl KTsKKyAgICBpZiAoIG9wLT5mbGFncyAmIFhFTl9JT01NVU9QX21hcF9ncmVmICkKKyAgICAgICAg cmVsZWFzZV9ncmVmX2Zvcl9pb21tdShkLCBvcC0+dS5ncmVmLCByZWFkb25seSwgbWZuKTsKKyAg ICBlbHNlCisgICAgICAgIHB1dF9wYWdlX2FuZF90eXBlKHBhZ2UpOwogCiAgdW5sb2NrOgogICAg IHJjdV91bmxvY2tfZG9tYWluKGQpOwpAQCAtMTgyLDExICsyMDEsMTAgQEAgc3RhdGljIGludCBp b21tdW9wX3VubWFwKHN0cnVjdCB4ZW5faW9tbXVfb3BfdW5tYXAgKm9wKQogICAgIGJmbl90IGJm biA9IF9iZm4ob3AtPmJmbik7CiAgICAgbWZuX3QgbWZuOwogICAgIHVuc2lnbmVkIGludCBwcm90 OwotICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2U7CisgICAgYm9vbCByZWFkb25seTsKICAgICBp bnQgcmM7CiAKLSAgICBpZiAoIG9wLT5wYWQwIHx8IG9wLT5wYWQxICkKLSAgICAgICAgcmV0dXJu IC1FSU5WQUw7CisgICAgaWYgKCBvcC0+cGFkIHx8IChvcC0+ZmxhZ3MgJiB+WEVOX0lPTU1VT1Bf dW5tYXBfZ3JlZikgKQogCiAgICAgaWYgKCAhaW9tbXUtPmlvbW11X29wX3JhbmdlcyApCiAgICAg ICAgIHJldHVybiAtRU9QTk9UU1VQUDsKQEAgLTE5NiwyOCArMjE0LDQwIEBAIHN0YXRpYyBpbnQg aW9tbXVvcF91bm1hcChzdHJ1Y3QgeGVuX2lvbW11X29wX3VubWFwICpvcCkKICAgICAgICAgICFt Zm5fdmFsaWQobWZuKSApCiAgICAgICAgIHJldHVybiAtRU5PRU5UOwogCisgICAgcmVhZG9ubHkg PSAhKHByb3QgJiBJT01NVUZfd3JpdGFibGUpOworCiAgICAgZCA9IHJjdV9sb2NrX2RvbWFpbl9i eV9hbnlfaWQob3AtPmRvbWlkKTsKICAgICBpZiAoICFkICkKICAgICAgICAgcmV0dXJuIC1FU1JD SDsKIAotICAgIHJjID0gZ2V0X3BhZ2VkX2dmbihkLCBfZ2ZuKG9wLT5nZm4pLCAhKHByb3QgJiBJ T01NVUZfd3JpdGFibGUpLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAmcGFnZSk7Ci0g ICAgaWYgKCByYyApCi0gICAgICAgIGdvdG8gdW5sb2NrOworICAgIGlmICggb3AtPmZsYWdzICYg WEVOX0lPTU1VT1BfdW5tYXBfZ3JlZiApCisgICAgeworICAgICAgICByYyA9IHJlbGVhc2VfZ3Jl Zl9mb3JfaW9tbXUoZCwgb3AtPnUuZ3JlZiwgcmVhZG9ubHksIG1mbik7CisgICAgICAgIGlmICgg cmMgKQorICAgICAgICAgICAgZ290byB1bmxvY2s7CisgICAgfQorICAgIGVsc2UKKyAgICB7Cisg ICAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2U7CisKKyAgICAgICAgcmMgPSBnZXRfcGFnZWRf Z2ZuKGQsIF9nZm4ob3AtPnUuZ2ZuKSwgcmVhZG9ubHksIE5VTEwsICZwYWdlKTsKKyAgICAgICAg aWYgKCByYyApCisgICAgICAgICAgICBnb3RvIHVubG9jazsKIAotICAgIHB1dF9wYWdlKHBhZ2Up OyAvKiByZWxlYXNlIGV4dHJhIHJlZmVyZW5jZSBqdXN0IHRha2VuICovCisgICAgICAgIHB1dF9w YWdlKHBhZ2UpOyAvKiByZWxlYXNlIGV4dHJhIHJlZmVyZW5jZSBqdXN0IHRha2VuICovCiAKLSAg ICByYyA9IC1FSU5WQUw7Ci0gICAgaWYgKCAhbWZuX2VxKHBhZ2VfdG9fbWZuKHBhZ2UpLCBtZm4p ICkKLSAgICAgICAgZ290byB1bmxvY2s7CisgICAgICAgIHJjID0gLUVJTlZBTDsKKyAgICAgICAg aWYgKCAhbWZuX2VxKHBhZ2VfdG9fbWZuKHBhZ2UpLCBtZm4pICkKKyAgICAgICAgICAgIGdvdG8g dW5sb2NrOwogCi0gICAgcHV0X3BhZ2VfYW5kX3R5cGUocGFnZSk7IC8qIHJlbGVhc2UgcmVmZXJl bmNlcyB0YWtlbiBpbiBtYXAgKi8KKyAgICAgICAgcHV0X3BhZ2VfYW5kX3R5cGUocGFnZSk7IC8q IHJlbGVhc2UgcmVmZXJlbmNlcyB0YWtlbiBpbiBtYXAgKi8KKyAgICB9CiAKICAgICByYyA9IHJh bmdlc2V0X3JlbW92ZV9zaW5nbGV0b24oaW9tbXUtPmlvbW11X29wX3JhbmdlcywgYmZuX3goYmZu KSk7CiAgICAgaWYgKCByYyApCiAgICAgICAgIGdvdG8gdW5sb2NrOwogCi0gICAgaWYgKCAhaW9t bXVfdW5tYXBfcGFnZShjdXJyZCwgYmZuKSApCisgICAgaWYgKCBpb21tdV91bm1hcF9wYWdlKGN1 cnJkLCBiZm4pICkKICAgICAgICAgcmMgPSAtRUlPOwogCiAgdW5sb2NrOgpkaWZmIC0tZ2l0IGEv eGVuL2NvbW1vbi9ncmFudF90YWJsZS5jIGIveGVuL2NvbW1vbi9ncmFudF90YWJsZS5jCmluZGV4 IGE0OTJkZjIzNjIuLjZkNWJjY2E2ZGYgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vZ3JhbnRfdGFi bGUuYworKysgYi94ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMKQEAgLTM5MDksNiArMzkwOSwxNDkg QEAgaW50IGdudHRhYl9tYXBfZnJhbWUoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBp ZHgsIGdmbl90IGdmbiwKICAgICByZXR1cm4gcmM7CiB9CiAKK2ludAorYWNxdWlyZV9ncmVmX2Zv cl9pb21tdShzdHJ1Y3QgZG9tYWluICpkLCBncmFudF9yZWZfdCBncmVmLAorICAgICAgICAgICAg ICAgICAgICAgICBib29sIHJlYWRvbmx5LCBtZm5fdCAqbWZuKQoreworICAgIHN0cnVjdCBkb21h aW4gKmN1cnJkID0gY3VycmVudC0+ZG9tYWluOworICAgIHN0cnVjdCBncmFudF90YWJsZSAqZ3Qg PSBkLT5ncmFudF90YWJsZTsKKyAgICBncmFudF9lbnRyeV9oZWFkZXJfdCAqc2hhaDsKKyAgICBz dHJ1Y3QgYWN0aXZlX2dyYW50X2VudHJ5ICphY3Q7CisgICAgdWludDE2X3QgKnN0YXR1czsKKyAg ICBpbnQgcmM7CisKKyAgICBncmFudF9yZWFkX2xvY2soZ3QpOworCisgICAgcmMgPSAtRU5PRU5U OworICAgIGlmICggZ3JlZiA+IG5yX2dyYW50X2VudHJpZXMoZ3QpICkKKyAgICAgICAgZ290byB1 bmxvY2s7CisKKyAgICBhY3QgPSBhY3RpdmVfZW50cnlfYWNxdWlyZShndCwgZ3JlZik7CisgICAg c2hhaCA9IHNoYXJlZF9lbnRyeV9oZWFkZXIoZ3QsIGdyZWYpOworICAgIHN0YXR1cyA9ICggZ3Qt Pmd0X3ZlcnNpb24gPT0gMiApID8KKyAgICAgICAgJnN0YXR1c19lbnRyeShndCwgZ3JlZikgOgor ICAgICAgICAmc2hhaC0+ZmxhZ3M7CisKKyAgICByYyA9IC1FQUNDRVM7CisgICAgaWYgKCAoc2hh aC0+ZmxhZ3MgJiBHVEZfdHlwZV9tYXNrKSAhPSBHVEZfcGVybWl0X2FjY2VzcyB8fAorICAgICAg ICAgKHNoYWgtPmZsYWdzICYgR1RGX3N1Yl9wYWdlKSApCisgICAgICAgIGdvdG8gcmVsZWFzZTsK KworICAgIHJjID0gLUVSQU5HRTsKKyAgICBpZiAoIGFjdC0+cGluICYmICgoYWN0LT5kb21pZCAh PSBjdXJyZC0+ZG9tYWluX2lkKSB8fAorICAgICAgICAgICAgICAgICAgICAgIChhY3QtPnBpbiAm IDB4ODA4MDgwODBVKSAhPSAwKSApCisgICAgICAgIGdvdG8gcmVsZWFzZTsKKworICAgIHJjID0g LUVJTlZBTDsKKyAgICBpZiAoICFhY3QtPnBpbiB8fAorICAgICAgICAgKCFyZWFkb25seSAmJiAh KGFjdC0+cGluICYgR05UUElOX2RldndfbWFzaykpICkgeworICAgICAgICBpZiAoIF9zZXRfc3Rh dHVzKGd0LT5ndF92ZXJzaW9uLCBjdXJyZC0+ZG9tYWluX2lkLCByZWFkb25seSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAwLCBzaGFoLCBhY3QsIHN0YXR1cykgIT0gR05UU1Rfb2theSApCisg ICAgICAgICAgICBnb3RvIHJlbGVhc2U7CisgICAgfQorCisgICAgaWYgKCAhYWN0LT5waW4gKQor ICAgIHsKKyAgICAgICAgZ2ZuX3QgZ2ZuID0gZ3QtPmd0X3ZlcnNpb24gPT0gMSA/CisgICAgICAg ICAgICBfZ2ZuKHNoYXJlZF9lbnRyeV92MShndCwgZ3JlZikuZnJhbWUpIDoKKyAgICAgICAgICAg IF9nZm4oc2hhcmVkX2VudHJ5X3YyKGd0LCBncmVmKS5mdWxsX3BhZ2UuZnJhbWUpOworICAgICAg ICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlOworCisgICAgICAgIHJjID0gIGdldF9wYWdlZF9nZm4o ZCwgZ2ZuLCByZWFkb25seSwgTlVMTCwgJnBhZ2UpOworICAgICAgICBpZiAoIHJjICkKKyAgICAg ICAgICAgIGdvdG8gY2xlYXI7CisKKyAgICAgICAgYWN0X3NldF9nZm4oYWN0LCBnZm4pOworICAg ICAgICBhY3QtPm1mbiA9IHBhZ2VfdG9fbWZuKHBhZ2UpOworICAgICAgICBhY3QtPmRvbWlkID0g Y3VycmQtPmRvbWFpbl9pZDsKKyAgICAgICAgYWN0LT5zdGFydCA9IDA7CisgICAgICAgIGFjdC0+ bGVuZ3RoID0gUEFHRV9TSVpFOworICAgICAgICBhY3QtPmlzX3N1Yl9wYWdlID0gZmFsc2U7Cisg ICAgICAgIGFjdC0+dHJhbnNfZG9tYWluID0gZDsKKyAgICAgICAgYWN0LT50cmFuc19ncmVmID0g Z3JlZjsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1mbl92YWxpZChh Y3QtPm1mbikpOworICAgICAgICBpZiAoICFnZXRfcGFnZShtZm5fdG9fcGFnZShhY3QtPm1mbiks IGQpICkKKyAgICAgICAgICAgIGdvdG8gY2xlYXI7CisgICAgfQorCisgICAgcmMgPSAwOworICAg IGFjdC0+cGluICs9IHJlYWRvbmx5ID8gR05UUElOX2RldnJfaW5jIDogR05UUElOX2RldndfaW5j OworICAgICptZm4gPSBhY3QtPm1mbjsKKyAgICBnb3RvIHJlbGVhc2U7CisKKyBjbGVhcjoKKyAg ICBpZiAoICFyZWFkb25seSAmJiAhKGFjdC0+cGluICYgR05UUElOX2RldndfbWFzaykgKQorICAg ICAgICBnbnR0YWJfY2xlYXJfZmxhZyhfR1RGX3dyaXRpbmcsIHN0YXR1cyk7CisKKyAgICBpZiAo ICFhY3QtPnBpbiApCisgICAgICAgIGdudHRhYl9jbGVhcl9mbGFnKF9HVEZfcmVhZGluZywgc3Rh dHVzKTsKKworIHJlbGVhc2U6CisgICAgYWN0aXZlX2VudHJ5X3JlbGVhc2UoYWN0KTsKKworIHVu bG9jazoKKyAgICBncmFudF9yZWFkX3VubG9jayhndCk7CisKKyAgICByZXR1cm4gcmM7Cit9CisK K2ludAorcmVsZWFzZV9ncmVmX2Zvcl9pb21tdShzdHJ1Y3QgZG9tYWluICpkLCBncmFudF9yZWZf dCBncmVmLAorICAgICAgICAgICAgICAgICAgICAgICBib29sIHJlYWRvbmx5LCBtZm5fdCBtZm4p Cit7CisgICAgc3RydWN0IGRvbWFpbiAqY3VycmQgPSBjdXJyZW50LT5kb21haW47CisgICAgc3Ry dWN0IGdyYW50X3RhYmxlICpndCA9IGQtPmdyYW50X3RhYmxlOworICAgIGdyYW50X2VudHJ5X2hl YWRlcl90ICpzaGFoOworICAgIHN0cnVjdCBhY3RpdmVfZ3JhbnRfZW50cnkgKmFjdDsKKyAgICB1 aW50MTZfdCAqc3RhdHVzOworICAgIGludCByYzsKKworICAgIGdyYW50X3JlYWRfbG9jayhndCk7 CisKKyAgICByYyA9IC1FTk9FTlQ7CisgICAgaWYgKCBncmVmID4gbnJfZ3JhbnRfZW50cmllcyhn dCkgKQorICAgICAgICBnb3RvIHVubG9jazsKKworICAgIGFjdCA9IGFjdGl2ZV9lbnRyeV9hY3F1 aXJlKGd0LCBncmVmKTsKKyAgICBzaGFoID0gc2hhcmVkX2VudHJ5X2hlYWRlcihndCwgZ3JlZik7 CisgICAgc3RhdHVzID0gKCBndC0+Z3RfdmVyc2lvbiA9PSAyICkgPworICAgICAgICAmc3RhdHVz X2VudHJ5KGd0LCBncmVmKSA6CisgICAgICAgICZzaGFoLT5mbGFnczsKKworICAgIHJjID0gLUVJ TlZBTDsKKyAgICBpZiAoICFhY3QtPnBpbiB8fCAoYWN0LT5kb21pZCAhPSBjdXJyZC0+ZG9tYWlu X2lkKSB8fAorICAgICAgICAgIW1mbl9lcShhY3QtPm1mbiwgbWZuKSApCisgICAgICAgIGdvdG8g cmVsZWFzZTsKKworICAgIHJjID0gMDsKKyAgICBpZiAoIHJlYWRvbmx5ICkKKyAgICAgICAgYWN0 LT5waW4gLT0gR05UUElOX2RldnJfaW5jOworICAgIGVsc2UKKyAgICB7CisgICAgICAgIGdudHRh Yl9tYXJrX2RpcnR5KGQsIG1mbik7CisKKyAgICAgICAgYWN0LT5waW4gLT0gR05UUElOX2Rldndf aW5jOworICAgICAgICBpZiAoICEoYWN0LT5waW4gJiBHTlRQSU5fZGV2d19tYXNrKSApCisgICAg ICAgICAgICBnbnR0YWJfY2xlYXJfZmxhZyhfR1RGX3dyaXRpbmcsIHN0YXR1cyk7CisgICAgfQor CisgICAgaWYgKCAhYWN0LT5waW4gKQorICAgICAgICBnbnR0YWJfY2xlYXJfZmxhZyhfR1RGX3Jl YWRpbmcsIHN0YXR1cyk7CisKKyAgICBwdXRfcGFnZShtZm5fdG9fcGFnZShtZm4pKTsKKworIHJl bGVhc2U6CisgICAgYWN0aXZlX2VudHJ5X3JlbGVhc2UoYWN0KTsKKworIHVubG9jazoKKyAgICBn cmFudF9yZWFkX3VubG9jayhndCk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKIHN0YXRpYyB2b2lk IGdudHRhYl91c2FnZV9wcmludChzdHJ1Y3QgZG9tYWluICpyZCkKIHsKICAgICBpbnQgZmlyc3Qg PSAxOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2lvbW11X29wLmggYi94ZW4vaW5j bHVkZS9wdWJsaWMvaW9tbXVfb3AuaAppbmRleCA3MzdlMmM4Y2ZlLi40ODU3ODJhNTIyIDEwMDY0 NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvaW9tbXVfb3AuaAorKysgYi94ZW4vaW5jbHVkZS9w dWJsaWMvaW9tbXVfb3AuaApAQCAtMjQsNiArMjQsNyBAQAogI2RlZmluZSBYRU5fUFVCTElDX0lP TU1VX09QX0gKIAogI2luY2x1ZGUgInhlbi5oIgorI2luY2x1ZGUgImdyYW50X3RhYmxlLmgiCiAK IHR5cGVkZWYgdW5zaWduZWQgbG9uZyB4ZW5fYmZuX3Q7CiAKQEAgLTc5LDEyICs4MCwyMCBAQCBz dHJ1Y3QgeGVuX2lvbW11X29wX21hcCB7CiAKICNkZWZpbmUgX1hFTl9JT01NVU9QX21hcF9yZWFk b25seSAwCiAjZGVmaW5lIFhFTl9JT01NVU9QX21hcF9yZWFkb25seSAoMSA8PCAoX1hFTl9JT01N VU9QX21hcF9yZWFkb25seSkpCisjZGVmaW5lIF9YRU5fSU9NTVVPUF9tYXBfZ3JlZiAxCisjZGVm aW5lIFhFTl9JT01NVU9QX21hcF9ncmVmICgxIDw8IChfWEVOX0lPTU1VT1BfbWFwX2dyZWYpKQog CiAgICAgdWludDMyX3QgcGFkOwogICAgIC8qIElOIC0gVGhlIElPTU1VIGZyYW1lIG51bWJlciB3 aGljaCB3aWxsIGhvbGQgdGhlIG5ldyBtYXBwaW5nICovCiAgICAgeGVuX2Jmbl90IGJmbjsKLSAg ICAvKiBJTiAtIFRoZSBndWVzdCBmcmFtZSBudW1iZXIgb2YgdGhlIHBhZ2UgdG8gYmUgbWFwcGVk ICovCi0gICAgeGVuX3Bmbl90IGdmbjsKKyAgICAvKgorICAgICAqIElOIC0gVGhlIGd1ZXN0IGZy YW1lIG51bWJlciBvciBncmFudCByZWZlcmVuY2Ugb2YgdGhlIHBhZ2UgdG8KKyAgICAgKiBiZSBt YXBwZWQuCisgICAgICovCisgICAgdW5pb24geworICAgICAgICB4ZW5fcGZuX3QgZ2ZuOworICAg ICAgICBncmFudF9yZWZfdCBncmVmOworICAgIH0gdTsKIH07CiAKIC8qCkBAIC05NSwxMiArMTA0 LDIyIEBAIHN0cnVjdCB4ZW5faW9tbXVfb3BfbWFwIHsKIHN0cnVjdCB4ZW5faW9tbXVfb3BfdW5t YXAgewogICAgIC8qIElOIC0gVGhlIGRvbWlkIG9mIHRoZSBndWVzdCAqLwogICAgIGRvbWlkX3Qg ZG9taWQ7Ci0gICAgdWludDE2X3QgcGFkMDsKLSAgICB1aW50MzJfdCBwYWQxOworICAgIHVpbnQx Nl90IGZsYWdzOworCisjZGVmaW5lIF9YRU5fSU9NTVVPUF91bm1hcF9ncmVmIDAKKyNkZWZpbmUg WEVOX0lPTU1VT1BfdW5tYXBfZ3JlZiAoMSA8PCAoX1hFTl9JT01NVU9QX3VubWFwX2dyZWYpKQor CisgICAgdWludDMyX3QgcGFkOwogICAgIC8qIElOIC0gVGhlIElPTU1VIGZyYW1lIG51bWJlciB3 aGljaCBob2xkcyB0aGUgbWFwcGluZyB0byBiZSByZW1vdmVkICovCiAgICAgeGVuX2Jmbl90IGJm bjsKLSAgICAvKiBJTiAtIFRoZSBndWVzdCBmcmFtZSBudW1iZXIgb2YgdGhlIHBhZ2UgdGhhdCBp cyBtYXBwZWQgKi8KLSAgICB4ZW5fcGZuX3QgZ2ZuOworICAgIC8qCisgICAgICogSU4gLSBUaGUg Z3Vlc3QgZnJhbWUgbnVtYmVyIG9yIGdyYW50IHJlZmVyZW5jZSBvZiB0aGUgcGFnZSB0aGF0Cisg ICAgICogaXMgbWFwcGVkLgorICAgICAqLworICAgIHVuaW9uIHsKKyAgICAgICAgeGVuX3Bmbl90 IGdmbjsKKyAgICAgICAgZ3JhbnRfcmVmX3QgZ3JlZjsKKyAgICB9IHU7CiB9OwogCiAvKgpkaWZm IC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL2dyYW50X3RhYmxlLmggYi94ZW4vaW5jbHVkZS94ZW4v Z3JhbnRfdGFibGUuaAppbmRleCBiM2E5NWZkYTU4Li4yMmM4MGMyMjM4IDEwMDY0NAotLS0gYS94 ZW4vaW5jbHVkZS94ZW4vZ3JhbnRfdGFibGUuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4vZ3JhbnRf dGFibGUuaApAQCAtNTYsNiArNTYsMTMgQEAgaW50IG1lbV9zaGFyaW5nX2dyZWZfdG9fZ2ZuKHN0 cnVjdCBncmFudF90YWJsZSAqZ3QsIGdyYW50X3JlZl90IHJlZiwKIGludCBnbnR0YWJfbWFwX2Zy YW1lKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgaWR4LCBnZm5fdCBnZm4sCiAgICAg ICAgICAgICAgICAgICAgICBtZm5fdCAqbWZuKTsKIAoraW50CithY3F1aXJlX2dyZWZfZm9yX2lv bW11KHN0cnVjdCBkb21haW4gKmQsIGdyYW50X3JlZl90IGdyZWYsCisgICAgICAgICAgICAgICAg ICAgICAgIGJvb2wgcmVhZG9ubHksIG1mbl90ICptZm4pOworaW50CityZWxlYXNlX2dyZWZfZm9y X2lvbW11KHN0cnVjdCBkb21haW4gKmQsIGdyYW50X3JlZl90IGdyZWYsCisgICAgICAgICAgICAg ICAgICAgICAgIGJvb2wgcmVhZG9ubHksIG1mbl90IG1mbik7CisKIHVuc2lnbmVkIGludCBnbnR0 YWJfZG9tMF9mcmFtZXModm9pZCk7CiAKICNlbmRpZiAvKiBfX1hFTl9HUkFOVF9UQUJMRV9IX18g Ki8KLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2 ZWw=