From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v4 15/15] x86: extend the map and unmap iommu_ops to support grant references Date: Wed, 1 Aug 2018 14:40:28 +0100 Message-ID: <20180801134028.1654-16-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 1fkref-0002E5-Pi for xen-devel@lists.xenproject.org; Wed, 01 Aug 2018 13:59:09 +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 VGhpcyBwYXRjaCBhbGxvd3MgYSBkb21haW4gdG8gYWRkIG9yIHJlbW92ZSBmb3JlaWduIGZyYW1l cyBmcm9tIGl0cwpJT01NVSBtYXBwaW5ncyBieSBncmFudCByZWZlcmVuY2UgYXMgd2VsbCBhcyBH Rk4uIFRoaXMgaXMgbmVjZXNzYXJ5LApmb3IgZXhhbXBsZSwgdG8gc3VwcG9ydCBhIFBWIG5ldHdv cmsgYmFja2VuZCB0aGF0IG5lZWRzIHRvIGNvbnN0cnVjdCBhCnBhY2tldCBidWZmZXIgdGhhdCBj YW4gYmUgZGlyZWN0bHkgYWNjZXNzZWQgYnkgYSBOSUMuCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1 cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgotLS0KQ2M6IEphbiBCZXVsaWNoIDxqYmV1 bGljaEBzdXNlLmNvbT4KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5j b20+CkNjOiBHZW9yZ2UgRHVubGFwIDxHZW9yZ2UuRHVubGFwQGV1LmNpdHJpeC5jb20+CkNjOiBJ YW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KQ2M6IEp1bGllbiBHcmFsbCA8 anVsaWVuLmdyYWxsQGFybS5jb20+CkNjOiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53 aWxrQG9yYWNsZS5jb20+CkNjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5l bC5vcmc+CkNjOiBUaW0gRGVlZ2FuIDx0aW1AeGVuLm9yZz4KQ2M6IFdlaSBMaXUgPHdlaS5saXUy QGNpdHJpeC5jb20+Cgp2MjoKIC0gTmV3IGluIHYyLgotLS0KIHhlbi9hcmNoL3g4Ni9pb21tdV9v cC5jICAgICAgIHwgIDgzICsrKysrKysrKysrKysrKystLS0tLS0tLQogeGVuL2NvbW1vbi9ncmFu dF90YWJsZS5jICAgICAgfCAxNDMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiB4ZW4vaW5jbHVkZS9wdWJsaWMvaW9tbXVfb3AuaCB8ICAzMSArKysrKysrLS0KIHhl bi9pbmNsdWRlL3hlbi9ncmFudF90YWJsZS5oIHwgICA3ICsrKwogNCBmaWxlcyBjaGFuZ2VkLCAy MzEgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L2lvbW11X29wLmMgYi94ZW4vYXJjaC94ODYvaW9tbXVfb3AuYwppbmRleCAzNWRhZWVlZDky Li42YjU2M2MwMjI3IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaW9tbXVfb3AuYworKysgYi94 ZW4vYXJjaC94ODYvaW9tbXVfb3AuYwpAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgPHhlbi9n dWVzdF9hY2Nlc3MuaD4KICNpbmNsdWRlIDx4ZW4vaHlwZXJjYWxsLmg+CiAjaW5jbHVkZSA8eGVu L25vc3BlYy5oPgorI2luY2x1ZGUgPHhlbi9ncmFudF90YWJsZS5oPgogCiBzdHJ1Y3QgZ2V0X3Jl c2VydmVkX2N0eHQgewogICAgIHVuc2lnbmVkIGludCBtYXhfZW50cmllczsKQEAgLTEyMSwxMCAr MTIyLDEyIEBAIHN0YXRpYyBpbnQgaW9tbXVvcF9tYXAoc3RydWN0IHhlbl9pb21tdV9vcF9tYXAg Km9wKQogICAgIGJvb2wgcmVhZG9ubHkgPSBvcC0+ZmxhZ3MgJiBYRU5fSU9NTVVPUF9tYXBfcmVh ZG9ubHk7CiAgICAgYmZuX3QgYmZuID0gX2JmbihvcC0+YmZuKTsKICAgICBzdHJ1Y3QgcGFnZV9p bmZvICpwYWdlOworICAgIG1mbl90IG1mbjsKICAgICB1bnNpZ25lZCBpbnQgcHJvdDsKICAgICBp bnQgcmMsIGlnbm9yZTsKIAotICAgIGlmICggb3AtPnBhZCB8fCAob3AtPmZsYWdzICYgflhFTl9J T01NVU9QX21hcF9yZWFkb25seSkgKQorICAgIGlmICggb3AtPnBhZCB8fCAob3AtPmZsYWdzICYg fihYRU5fSU9NTVVPUF9tYXBfcmVhZG9ubHkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBYRU5fSU9NTVVPUF9tYXBfZ3JlZikpICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 CiAKICAgICBpZiAoICFpb21tdS0+aW9tbXVfb3BfcmFuZ2VzICkKQEAgLTEzOCwxNSArMTQxLDI4 IEBAIHN0YXRpYyBpbnQgaW9tbXVvcF9tYXAoc3RydWN0IHhlbl9pb21tdV9vcF9tYXAgKm9wKQog ICAgIGlmICggIWQgKQogICAgICAgICByZXR1cm4gLUVTUkNIOwogCi0gICAgcmMgPSBnZXRfcGFn ZWRfZ2ZuKGQsIF9nZm4ob3AtPmdmbiksIHJlYWRvbmx5LCBOVUxMLCAmcGFnZSk7Ci0gICAgaWYg KCByYyApCi0gICAgICAgIGdvdG8gdW5sb2NrOworICAgIGlmICggb3AtPmZsYWdzICYgWEVOX0lP TU1VT1BfbWFwX2dyZWYgKQorICAgIHsKKyAgICAgICAgcmMgPSBhY3F1aXJlX2dyZWZfZm9yX2lv bW11KGQsIG9wLT51LmdyZWYsIHJlYWRvbmx5LCAmbWZuKTsKKyAgICAgICAgaWYgKCByYyApCisg ICAgICAgICAgICBnb3RvIHVubG9jazsKIAotICAgIHJjID0gLUVJTlZBTDsKLSAgICBpZiAoICFy ZWFkb25seSAmJiAhZ2V0X3BhZ2VfdHlwZShwYWdlLCBQR1Rfd3JpdGFibGVfcGFnZSkgKQorICAg ICAgICBwYWdlID0gbWZuX3RvX3BhZ2UobWZuKTsKKyAgICB9CisgICAgZWxzZQogICAgIHsKLSAg ICAgICAgcHV0X3BhZ2UocGFnZSk7Ci0gICAgICAgIGdvdG8gdW5sb2NrOworICAgICAgICByYyA9 IGdldF9wYWdlZF9nZm4oZCwgX2dmbihvcC0+dS5nZm4pLCByZWFkb25seSwgTlVMTCwgJnBhZ2Up OworICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgICAgIGdvdG8gdW5sb2NrOworCisgICAgICAg IHJjID0gLUVJTlZBTDsKKyAgICAgICAgaWYgKCAhcmVhZG9ubHkgJiYgIWdldF9wYWdlX3R5cGUo cGFnZSwgUEdUX3dyaXRhYmxlX3BhZ2UpICkKKyAgICAgICAgeworICAgICAgICAgICAgcHV0X3Bh Z2UocGFnZSk7CisgICAgICAgICAgICBnb3RvIHVubG9jazsKKyAgICAgICAgfQorCisgICAgICAg IG1mbiA9IHBhZ2VfdG9fbWZuKHBhZ2UpOwogICAgIH0KIAogICAgIHByb3QgPSBJT01NVUZfcmVh ZGFibGU7CkBAIC0xNTQsNyArMTcwLDcgQEAgc3RhdGljIGludCBpb21tdW9wX21hcChzdHJ1Y3Qg eGVuX2lvbW11X29wX21hcCAqb3ApCiAgICAgICAgIHByb3QgfD0gSU9NTVVGX3dyaXRhYmxlOwog CiAgICAgcmMgPSAtRUlPOwotICAgIGlmICggaW9tbXVfbWFwX3BhZ2UoY3VycmQsIGJmbiwgcGFn ZV90b19tZm4ocGFnZSksIHByb3QpICkKKyAgICBpZiAoIGlvbW11X21hcF9wYWdlKGN1cnJkLCBi Zm4sIG1mbiwgcHJvdCkgKQogICAgICAgICBnb3RvIHJlbGVhc2U7CiAKICAgICByYyA9IHJhbmdl c2V0X2FkZF9zaW5nbGV0b24oaW9tbXUtPmlvbW11X29wX3JhbmdlcywgYmZuX3goYmZuKSk7CkBA IC0xNjgsOSArMTg0LDE0IEBAIHN0YXRpYyBpbnQgaW9tbXVvcF9tYXAoc3RydWN0IHhlbl9pb21t dV9vcF9tYXAgKm9wKQogICAgIGlnbm9yZSA9IGlvbW11X3VubWFwX3BhZ2UoY3VycmQsIGJmbik7 CiAKICByZWxlYXNlOgotICAgIGlmICggIXJlYWRvbmx5ICkKLSAgICAgICAgcHV0X3BhZ2VfdHlw ZShwYWdlKTsKLSAgICBwdXRfcGFnZShwYWdlKTsKKyAgICBpZiAoIG9wLT5mbGFncyAmIFhFTl9J T01NVU9QX21hcF9ncmVmICkKKyAgICAgICAgcmVsZWFzZV9ncmVmX2Zvcl9pb21tdShkLCBvcC0+ dS5ncmVmLCByZWFkb25seSwgbWZuKTsKKyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAoICFy ZWFkb25seSApCisgICAgICAgICAgICBwdXRfcGFnZV90eXBlKHBhZ2UpOworICAgICAgICBwdXRf cGFnZShwYWdlKTsKKyAgICB9CiAKICB1bmxvY2s6CiAgICAgcmN1X3VubG9ja19kb21haW4oZCk7 CkBAIC0xODUsMTEgKzIwNiw5IEBAIHN0YXRpYyBpbnQgaW9tbXVvcF91bm1hcChzdHJ1Y3QgeGVu X2lvbW11X29wX3VubWFwICpvcCkKICAgICBtZm5fdCBtZm47CiAgICAgYm9vbCByZWFkb25seTsK ICAgICB1bnNpZ25lZCBpbnQgcHJvdDsKLSAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlOwogICAg IGludCByYzsKIAotICAgIGlmICggb3AtPnBhZDAgfHwgb3AtPnBhZDEgKQotICAgICAgICByZXR1 cm4gLUVJTlZBTDsKKyAgICBpZiAoIG9wLT5wYWQgfHwgKG9wLT5mbGFncyAmIH5YRU5fSU9NTVVP UF91bm1hcF9ncmVmKSApCiAKICAgICBpZiAoICFpb21tdS0+aW9tbXVfb3BfcmFuZ2VzICkKICAg ICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOwpAQCAtMjA1LDIxICsyMjQsMzEgQEAgc3RhdGljIGlu dCBpb21tdW9wX3VubWFwKHN0cnVjdCB4ZW5faW9tbXVfb3BfdW5tYXAgKm9wKQogICAgIGlmICgg IWQgKQogICAgICAgICByZXR1cm4gLUVTUkNIOwogCi0gICAgcmMgPSBnZXRfcGFnZWRfZ2ZuKGQs IF9nZm4ob3AtPmdmbiksICEocHJvdCAmIElPTU1VRl93cml0YWJsZSksIE5VTEwsCi0gICAgICAg ICAgICAgICAgICAgICAgICZwYWdlKTsKLSAgICBpZiAoIHJjICkKLSAgICAgICAgZ290byB1bmxv Y2s7CisgICAgaWYgKCBvcC0+ZmxhZ3MgJiBYRU5fSU9NTVVPUF91bm1hcF9ncmVmICkKKyAgICB7 CisgICAgICAgIHJjID0gcmVsZWFzZV9ncmVmX2Zvcl9pb21tdShkLCBvcC0+dS5ncmVmLCByZWFk b25seSwgbWZuKTsKKyAgICAgICAgaWYgKCByYyApCisgICAgICAgICAgICBnb3RvIHVubG9jazsK KyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZTsK IAotICAgIHB1dF9wYWdlKHBhZ2UpOyAvKiByZWxlYXNlIGV4dHJhIHJlZmVyZW5jZSBqdXN0IHRh a2VuICovCisgICAgICAgIHJjID0gZ2V0X3BhZ2VkX2dmbihkLCBfZ2ZuKG9wLT51LmdmbiksIHJl YWRvbmx5LCBOVUxMLCAmcGFnZSk7CisgICAgICAgIGlmICggcmMgKQorICAgICAgICAgICAgZ290 byB1bmxvY2s7CiAKLSAgICByYyA9IC1FSU5WQUw7Ci0gICAgaWYgKCAhbWZuX2VxKHBhZ2VfdG9f bWZuKHBhZ2UpLCBtZm4pICkKLSAgICAgICAgZ290byB1bmxvY2s7CisgICAgICAgIHB1dF9wYWdl KHBhZ2UpOyAvKiByZWxlYXNlIGV4dHJhIHJlZmVyZW5jZSBqdXN0IHRha2VuICovCiAKLSAgICAv KiByZWxlYXNlIHJlZmVyZW5jZSB0YWtlbiBpbiBtYXAgKi8KLSAgICBpZiAoICFyZWFkb25seSAp Ci0gICAgICAgIHB1dF9wYWdlX3R5cGUocGFnZSk7Ci0gICAgcHV0X3BhZ2UocGFnZSk7CisgICAg ICAgIHJjID0gLUVJTlZBTDsKKyAgICAgICAgaWYgKCAhbWZuX2VxKHBhZ2VfdG9fbWZuKHBhZ2Up LCBtZm4pICkKKyAgICAgICAgICAgIGdvdG8gdW5sb2NrOworCisgICAgICAgIC8qIHJlbGVhc2Ug cmVmZXJlbmNlIHRha2VuIGluIG1hcCAqLworICAgICAgICBpZiAoICFyZWFkb25seSApCisgICAg ICAgICAgICBwdXRfcGFnZV90eXBlKHBhZ2UpOworICAgICAgICBwdXRfcGFnZShwYWdlKTsKKyAg ICB9CiAKICAgICByYyA9IHJhbmdlc2V0X3JlbW92ZV9zaW5nbGV0b24oaW9tbXUtPmlvbW11X29w X3JhbmdlcywgYmZuX3goYmZuKSk7CiAgICAgaWYgKCByYyApCmRpZmYgLS1naXQgYS94ZW4vY29t bW9uL2dyYW50X3RhYmxlLmMgYi94ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMKaW5kZXggY2M3MDgw YmM5OC4uZmMyODVmOTc1MyAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9ncmFudF90YWJsZS5jCisr KyBiL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYwpAQCAtMzg5OCw2ICszODk4LDE0OSBAQCBpbnQg Z250dGFiX21hcF9mcmFtZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGlkeCwgZ2Zu X3QgZ2ZuLAogICAgIHJldHVybiByYzsKIH0KIAoraW50CithY3F1aXJlX2dyZWZfZm9yX2lvbW11 KHN0cnVjdCBkb21haW4gKmQsIGdyYW50X3JlZl90IGdyZWYsCisgICAgICAgICAgICAgICAgICAg ICAgIGJvb2wgcmVhZG9ubHksIG1mbl90ICptZm4pCit7CisgICAgc3RydWN0IGRvbWFpbiAqY3Vy cmQgPSBjdXJyZW50LT5kb21haW47CisgICAgc3RydWN0IGdyYW50X3RhYmxlICpndCA9IGQtPmdy YW50X3RhYmxlOworICAgIGdyYW50X2VudHJ5X2hlYWRlcl90ICpzaGFoOworICAgIHN0cnVjdCBh Y3RpdmVfZ3JhbnRfZW50cnkgKmFjdDsKKyAgICB1aW50MTZfdCAqc3RhdHVzOworICAgIGludCBy YzsKKworICAgIGdyYW50X3JlYWRfbG9jayhndCk7CisKKyAgICByYyA9IC1FTk9FTlQ7CisgICAg aWYgKCBncmVmID4gbnJfZ3JhbnRfZW50cmllcyhndCkgKQorICAgICAgICBnb3RvIHVubG9jazsK KworICAgIGFjdCA9IGFjdGl2ZV9lbnRyeV9hY3F1aXJlKGd0LCBncmVmKTsKKyAgICBzaGFoID0g c2hhcmVkX2VudHJ5X2hlYWRlcihndCwgZ3JlZik7CisgICAgc3RhdHVzID0gKCBndC0+Z3RfdmVy c2lvbiA9PSAyICkgPworICAgICAgICAmc3RhdHVzX2VudHJ5KGd0LCBncmVmKSA6CisgICAgICAg ICZzaGFoLT5mbGFnczsKKworICAgIHJjID0gLUVBQ0NFUzsKKyAgICBpZiAoIChzaGFoLT5mbGFn cyAmIEdURl90eXBlX21hc2spICE9IEdURl9wZXJtaXRfYWNjZXNzIHx8CisgICAgICAgICAoc2hh aC0+ZmxhZ3MgJiBHVEZfc3ViX3BhZ2UpICkKKyAgICAgICAgZ290byByZWxlYXNlOworCisgICAg cmMgPSAtRVJBTkdFOworICAgIGlmICggYWN0LT5waW4gJiYgKChhY3QtPmRvbWlkICE9IGN1cnJk LT5kb21haW5faWQpIHx8CisgICAgICAgICAgICAgICAgICAgICAgKGFjdC0+cGluICYgMHg4MDgw ODA4MFUpICE9IDApICkKKyAgICAgICAgZ290byByZWxlYXNlOworCisgICAgcmMgPSAtRUlOVkFM OworICAgIGlmICggIWFjdC0+cGluIHx8CisgICAgICAgICAoIXJlYWRvbmx5ICYmICEoYWN0LT5w aW4gJiBHTlRQSU5fZGV2d19tYXNrKSkgKSB7CisgICAgICAgIGlmICggX3NldF9zdGF0dXMoZ3Qt Pmd0X3ZlcnNpb24sIGN1cnJkLT5kb21haW5faWQsIHJlYWRvbmx5LAorICAgICAgICAgICAgICAg ICAgICAgICAgIDAsIHNoYWgsIGFjdCwgc3RhdHVzKSAhPSBHTlRTVF9va2F5ICkKKyAgICAgICAg ICAgIGdvdG8gcmVsZWFzZTsKKyAgICB9CisKKyAgICBpZiAoICFhY3QtPnBpbiApCisgICAgewor ICAgICAgICBnZm5fdCBnZm4gPSBndC0+Z3RfdmVyc2lvbiA9PSAxID8KKyAgICAgICAgICAgIF9n Zm4oc2hhcmVkX2VudHJ5X3YxKGd0LCBncmVmKS5mcmFtZSkgOgorICAgICAgICAgICAgX2dmbihz aGFyZWRfZW50cnlfdjIoZ3QsIGdyZWYpLmZ1bGxfcGFnZS5mcmFtZSk7CisgICAgICAgIHN0cnVj dCBwYWdlX2luZm8gKnBhZ2U7CisKKyAgICAgICAgcmMgPSAgZ2V0X3BhZ2VkX2dmbihkLCBnZm4s IHJlYWRvbmx5LCBOVUxMLCAmcGFnZSk7CisgICAgICAgIGlmICggcmMgKQorICAgICAgICAgICAg Z290byBjbGVhcjsKKworICAgICAgICBhY3Rfc2V0X2dmbihhY3QsIGdmbik7CisgICAgICAgIGFj dC0+bWZuID0gcGFnZV90b19tZm4ocGFnZSk7CisgICAgICAgIGFjdC0+ZG9taWQgPSBjdXJyZC0+ ZG9tYWluX2lkOworICAgICAgICBhY3QtPnN0YXJ0ID0gMDsKKyAgICAgICAgYWN0LT5sZW5ndGgg PSBQQUdFX1NJWkU7CisgICAgICAgIGFjdC0+aXNfc3ViX3BhZ2UgPSBmYWxzZTsKKyAgICAgICAg YWN0LT50cmFuc19kb21haW4gPSBkOworICAgICAgICBhY3QtPnRyYW5zX2dyZWYgPSBncmVmOwor ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBBU1NFUlQobWZuX3ZhbGlkKGFjdC0+bWZu KSk7CisgICAgICAgIGlmICggIWdldF9wYWdlKG1mbl90b19wYWdlKGFjdC0+bWZuKSwgZCkgKQor ICAgICAgICAgICAgZ290byBjbGVhcjsKKyAgICB9CisKKyAgICByYyA9IDA7CisgICAgYWN0LT5w aW4gKz0gcmVhZG9ubHkgPyBHTlRQSU5fZGV2cl9pbmMgOiBHTlRQSU5fZGV2d19pbmM7CisgICAg Km1mbiA9IGFjdC0+bWZuOworICAgIGdvdG8gcmVsZWFzZTsKKworIGNsZWFyOgorICAgIGlmICgg IXJlYWRvbmx5ICYmICEoYWN0LT5waW4gJiBHTlRQSU5fZGV2d19tYXNrKSApCisgICAgICAgIGdu dHRhYl9jbGVhcl9mbGFnKF9HVEZfd3JpdGluZywgc3RhdHVzKTsKKworICAgIGlmICggIWFjdC0+ cGluICkKKyAgICAgICAgZ250dGFiX2NsZWFyX2ZsYWcoX0dURl9yZWFkaW5nLCBzdGF0dXMpOwor CisgcmVsZWFzZToKKyAgICBhY3RpdmVfZW50cnlfcmVsZWFzZShhY3QpOworCisgdW5sb2NrOgor ICAgIGdyYW50X3JlYWRfdW5sb2NrKGd0KTsKKworICAgIHJldHVybiByYzsKK30KKworaW50City ZWxlYXNlX2dyZWZfZm9yX2lvbW11KHN0cnVjdCBkb21haW4gKmQsIGdyYW50X3JlZl90IGdyZWYs CisgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVhZG9ubHksIG1mbl90IG1mbikKK3sKKyAg ICBzdHJ1Y3QgZG9tYWluICpjdXJyZCA9IGN1cnJlbnQtPmRvbWFpbjsKKyAgICBzdHJ1Y3QgZ3Jh bnRfdGFibGUgKmd0ID0gZC0+Z3JhbnRfdGFibGU7CisgICAgZ3JhbnRfZW50cnlfaGVhZGVyX3Qg KnNoYWg7CisgICAgc3RydWN0IGFjdGl2ZV9ncmFudF9lbnRyeSAqYWN0OworICAgIHVpbnQxNl90 ICpzdGF0dXM7CisgICAgaW50IHJjOworCisgICAgZ3JhbnRfcmVhZF9sb2NrKGd0KTsKKworICAg IHJjID0gLUVOT0VOVDsKKyAgICBpZiAoIGdyZWYgPiBucl9ncmFudF9lbnRyaWVzKGd0KSApCisg ICAgICAgIGdvdG8gdW5sb2NrOworCisgICAgYWN0ID0gYWN0aXZlX2VudHJ5X2FjcXVpcmUoZ3Qs IGdyZWYpOworICAgIHNoYWggPSBzaGFyZWRfZW50cnlfaGVhZGVyKGd0LCBncmVmKTsKKyAgICBz dGF0dXMgPSAoIGd0LT5ndF92ZXJzaW9uID09IDIgKSA/CisgICAgICAgICZzdGF0dXNfZW50cnko Z3QsIGdyZWYpIDoKKyAgICAgICAgJnNoYWgtPmZsYWdzOworCisgICAgcmMgPSAtRUlOVkFMOwor ICAgIGlmICggIWFjdC0+cGluIHx8IChhY3QtPmRvbWlkICE9IGN1cnJkLT5kb21haW5faWQpIHx8 CisgICAgICAgICAhbWZuX2VxKGFjdC0+bWZuLCBtZm4pICkKKyAgICAgICAgZ290byByZWxlYXNl OworCisgICAgcmMgPSAwOworICAgIGlmICggcmVhZG9ubHkgKQorICAgICAgICBhY3QtPnBpbiAt PSBHTlRQSU5fZGV2cl9pbmM7CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgZ250dGFiX21hcmtf ZGlydHkoZCwgbWZuKTsKKworICAgICAgICBhY3QtPnBpbiAtPSBHTlRQSU5fZGV2d19pbmM7Cisg ICAgICAgIGlmICggIShhY3QtPnBpbiAmIEdOVFBJTl9kZXZ3X21hc2spICkKKyAgICAgICAgICAg IGdudHRhYl9jbGVhcl9mbGFnKF9HVEZfd3JpdGluZywgc3RhdHVzKTsKKyAgICB9CisKKyAgICBp ZiAoICFhY3QtPnBpbiApCisgICAgICAgIGdudHRhYl9jbGVhcl9mbGFnKF9HVEZfcmVhZGluZywg c3RhdHVzKTsKKworICAgIHB1dF9wYWdlKG1mbl90b19wYWdlKG1mbikpOworCisgcmVsZWFzZToK KyAgICBhY3RpdmVfZW50cnlfcmVsZWFzZShhY3QpOworCisgdW5sb2NrOgorICAgIGdyYW50X3Jl YWRfdW5sb2NrKGd0KTsKKworICAgIHJldHVybiByYzsKK30KKwogc3RhdGljIHZvaWQgZ250dGFi X3VzYWdlX3ByaW50KHN0cnVjdCBkb21haW4gKnJkKQogewogICAgIGludCBmaXJzdCA9IDE7CmRp ZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvaW9tbXVfb3AuaCBiL3hlbi9pbmNsdWRlL3B1 YmxpYy9pb21tdV9vcC5oCmluZGV4IGM4ZGM1MzFjODMuLjVhNjcyYmNlYWQgMTAwNjQ0Ci0tLSBh L3hlbi9pbmNsdWRlL3B1YmxpYy9pb21tdV9vcC5oCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9p b21tdV9vcC5oCkBAIC0yNCw2ICsyNCw3IEBACiAjZGVmaW5lIFhFTl9QVUJMSUNfSU9NTVVfT1Bf SAogCiAjaW5jbHVkZSAieGVuLmgiCisjaW5jbHVkZSAiZ3JhbnRfdGFibGUuaCIKIAogdHlwZWRl ZiB1aW50NjRfdCB4ZW5fYmZuX3Q7CiAKQEAgLTc5LDEyICs4MCwyMCBAQCBzdHJ1Y3QgeGVuX2lv bW11X29wX21hcCB7CiAKICNkZWZpbmUgX1hFTl9JT01NVU9QX21hcF9yZWFkb25seSAwCiAjZGVm aW5lIFhFTl9JT01NVU9QX21hcF9yZWFkb25seSAoMSA8PCAoX1hFTl9JT01NVU9QX21hcF9yZWFk b25seSkpCisjZGVmaW5lIF9YRU5fSU9NTVVPUF9tYXBfZ3JlZiAxCisjZGVmaW5lIFhFTl9JT01N VU9QX21hcF9ncmVmICgxIDw8IChfWEVOX0lPTU1VT1BfbWFwX2dyZWYpKQogCiAgICAgdWludDMy X3QgcGFkOwogICAgIC8qIElOIC0gVGhlIElPTU1VIGZyYW1lIG51bWJlciB3aGljaCB3aWxsIGhv bGQgdGhlIG5ldyBtYXBwaW5nICovCiAgICAgeGVuX2Jmbl90IGJmbjsKLSAgICAvKiBJTiAtIFRo ZSBndWVzdCBmcmFtZSBudW1iZXIgb2YgdGhlIHBhZ2UgdG8gYmUgbWFwcGVkICovCi0gICAgeGVu X3Bmbl90IGdmbjsKKyAgICAvKgorICAgICAqIElOIC0gVGhlIGd1ZXN0IGZyYW1lIG51bWJlciBv ciBncmFudCByZWZlcmVuY2Ugb2YgdGhlIHBhZ2UgdG8KKyAgICAgKiBiZSBtYXBwZWQuCisgICAg ICovCisgICAgdW5pb24geworICAgICAgICB4ZW5fcGZuX3QgZ2ZuOworICAgICAgICBncmFudF9y ZWZfdCBncmVmOworICAgIH0gdTsKIH07CiAKIC8qCkBAIC05NSwxMiArMTA0LDIyIEBAIHN0cnVj dCB4ZW5faW9tbXVfb3BfbWFwIHsKIHN0cnVjdCB4ZW5faW9tbXVfb3BfdW5tYXAgewogICAgIC8q IElOIC0gVGhlIGRvbWlkIG9mIHRoZSBndWVzdCAqLwogICAgIGRvbWlkX3QgZG9taWQ7Ci0gICAg dWludDE2X3QgcGFkMDsKLSAgICB1aW50MzJfdCBwYWQxOworICAgIHVpbnQxNl90IGZsYWdzOwor CisjZGVmaW5lIF9YRU5fSU9NTVVPUF91bm1hcF9ncmVmIDAKKyNkZWZpbmUgWEVOX0lPTU1VT1Bf dW5tYXBfZ3JlZiAoMSA8PCAoX1hFTl9JT01NVU9QX3VubWFwX2dyZWYpKQorCisgICAgdWludDMy X3QgcGFkOwogICAgIC8qIElOIC0gVGhlIElPTU1VIGZyYW1lIG51bWJlciB3aGljaCBob2xkcyB0 aGUgbWFwcGluZyB0byBiZSByZW1vdmVkICovCiAgICAgeGVuX2Jmbl90IGJmbjsKLSAgICAvKiBJ TiAtIFRoZSBndWVzdCBmcmFtZSBudW1iZXIgb2YgdGhlIHBhZ2UgdGhhdCBpcyBtYXBwZWQgKi8K LSAgICB4ZW5fcGZuX3QgZ2ZuOworICAgIC8qCisgICAgICogSU4gLSBUaGUgZ3Vlc3QgZnJhbWUg bnVtYmVyIG9yIGdyYW50IHJlZmVyZW5jZSBvZiB0aGUgcGFnZSB0aGF0CisgICAgICogaXMgbWFw cGVkLgorICAgICAqLworICAgIHVuaW9uIHsKKyAgICAgICAgeGVuX3Bmbl90IGdmbjsKKyAgICAg ICAgZ3JhbnRfcmVmX3QgZ3JlZjsKKyAgICB9IHU7CiB9OwogCiAvKgpkaWZmIC0tZ2l0IGEveGVu L2luY2x1ZGUveGVuL2dyYW50X3RhYmxlLmggYi94ZW4vaW5jbHVkZS94ZW4vZ3JhbnRfdGFibGUu aAppbmRleCAwMjg2YmEzM2RkLi4wZjQ0YzY1ODdjIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94 ZW4vZ3JhbnRfdGFibGUuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4vZ3JhbnRfdGFibGUuaApAQCAt NTksNiArNTksMTMgQEAgaW50IG1lbV9zaGFyaW5nX2dyZWZfdG9fZ2ZuKHN0cnVjdCBncmFudF90 YWJsZSAqZ3QsIGdyYW50X3JlZl90IHJlZiwKIGludCBnbnR0YWJfbWFwX2ZyYW1lKHN0cnVjdCBk b21haW4gKmQsIHVuc2lnbmVkIGxvbmcgaWR4LCBnZm5fdCBnZm4sCiAgICAgICAgICAgICAgICAg ICAgICBtZm5fdCAqbWZuKTsKIAoraW50CithY3F1aXJlX2dyZWZfZm9yX2lvbW11KHN0cnVjdCBk b21haW4gKmQsIGdyYW50X3JlZl90IGdyZWYsCisgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg cmVhZG9ubHksIG1mbl90ICptZm4pOworaW50CityZWxlYXNlX2dyZWZfZm9yX2lvbW11KHN0cnVj dCBkb21haW4gKmQsIGdyYW50X3JlZl90IGdyZWYsCisgICAgICAgICAgICAgICAgICAgICAgIGJv b2wgcmVhZG9ubHksIG1mbl90IG1mbik7CisKIHVuc2lnbmVkIGludCBnbnR0YWJfZG9tMF9mcmFt ZXModm9pZCk7CiAKICNlbmRpZiAvKiBfX1hFTl9HUkFOVF9UQUJMRV9IX18gKi8KLS0gCjIuMTEu MAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8v bGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=