From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v6 14/14] x86: extend the map and unmap iommu_ops to support grant references Date: Thu, 23 Aug 2018 10:47:11 +0100 Message-ID: <20180823094711.21376-15-paul.durrant@citrix.com> References: <20180823094711.21376-1-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fsmO3-00028d-Vs for xen-devel@lists.xenproject.org; Thu, 23 Aug 2018 09:58:44 +0000 In-Reply-To: <20180823094711.21376-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+Cgp2NjoKIC0gUmUtYmFzZS4KCnYyOgogLSBOZXcgaW4gdjIuCi0tLQogeGVu L2NvbW1vbi9ncmFudF90YWJsZS5jICAgICAgfCAxNDMgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiB4ZW4vY29tbW9uL2lvbW11X29wLmMgICAgICAgICB8ICA4MyAr KysrKysrKysrKysrKysrLS0tLS0tLS0KIHhlbi9pbmNsdWRlL3B1YmxpYy9pb21tdV9vcC5oIHwg IDI5ICsrKysrKystLQogeGVuL2luY2x1ZGUveGVuL2dyYW50X3RhYmxlLmggfCAgIDcgKysrCiA0 IGZpbGVzIGNoYW5nZWQsIDIzMiBpbnNlcnRpb25zKCspLCAzMCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS94ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMgYi94ZW4vY29tbW9uL2dyYW50X3RhYmxl LmMKaW5kZXggZjNiMmZhZDdhOC4uMDFhOTVjMDVlZCAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9n cmFudF90YWJsZS5jCisrKyBiL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYwpAQCAtMzk2MSw2ICsz OTYxLDE0OSBAQCBpbnQgZ250dGFiX2dldF9zdGF0dXNfZnJhbWUoc3RydWN0IGRvbWFpbiAqZCwg dW5zaWduZWQgbG9uZyBpZHgsCiAgICAgcmV0dXJuIHJjOwogfQogCitpbnQKK2FjcXVpcmVfZ3Jl Zl9mb3JfaW9tbXUoc3RydWN0IGRvbWFpbiAqZCwgZ3JhbnRfcmVmX3QgZ3JlZiwKKyAgICAgICAg ICAgICAgICAgICAgICAgYm9vbCByZWFkb25seSwgbWZuX3QgKm1mbikKK3sKKyAgICBzdHJ1Y3Qg ZG9tYWluICpjdXJyZCA9IGN1cnJlbnQtPmRvbWFpbjsKKyAgICBzdHJ1Y3QgZ3JhbnRfdGFibGUg Kmd0ID0gZC0+Z3JhbnRfdGFibGU7CisgICAgZ3JhbnRfZW50cnlfaGVhZGVyX3QgKnNoYWg7Cisg ICAgc3RydWN0IGFjdGl2ZV9ncmFudF9lbnRyeSAqYWN0OworICAgIHVpbnQxNl90ICpzdGF0dXM7 CisgICAgaW50IHJjOworCisgICAgZ3JhbnRfcmVhZF9sb2NrKGd0KTsKKworICAgIHJjID0gLUVO T0VOVDsKKyAgICBpZiAoIGdyZWYgPiBucl9ncmFudF9lbnRyaWVzKGd0KSApCisgICAgICAgIGdv dG8gdW5sb2NrOworCisgICAgYWN0ID0gYWN0aXZlX2VudHJ5X2FjcXVpcmUoZ3QsIGdyZWYpOwor ICAgIHNoYWggPSBzaGFyZWRfZW50cnlfaGVhZGVyKGd0LCBncmVmKTsKKyAgICBzdGF0dXMgPSAo IGd0LT5ndF92ZXJzaW9uID09IDIgKSA/CisgICAgICAgICZzdGF0dXNfZW50cnkoZ3QsIGdyZWYp IDoKKyAgICAgICAgJnNoYWgtPmZsYWdzOworCisgICAgcmMgPSAtRUFDQ0VTOworICAgIGlmICgg KHNoYWgtPmZsYWdzICYgR1RGX3R5cGVfbWFzaykgIT0gR1RGX3Blcm1pdF9hY2Nlc3MgfHwKKyAg ICAgICAgIChzaGFoLT5mbGFncyAmIEdURl9zdWJfcGFnZSkgKQorICAgICAgICBnb3RvIHJlbGVh c2U7CisKKyAgICByYyA9IC1FUkFOR0U7CisgICAgaWYgKCBhY3QtPnBpbiAmJiAoKGFjdC0+ZG9t aWQgIT0gY3VycmQtPmRvbWFpbl9pZCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAoYWN0LT5w aW4gJiAweDgwODA4MDgwVSkgIT0gMCkgKQorICAgICAgICBnb3RvIHJlbGVhc2U7CisKKyAgICBy YyA9IC1FSU5WQUw7CisgICAgaWYgKCAhYWN0LT5waW4gfHwKKyAgICAgICAgICghcmVhZG9ubHkg JiYgIShhY3QtPnBpbiAmIEdOVFBJTl9kZXZ3X21hc2spKSApIHsKKyAgICAgICAgaWYgKCBfc2V0 X3N0YXR1cyhndC0+Z3RfdmVyc2lvbiwgY3VycmQtPmRvbWFpbl9pZCwgcmVhZG9ubHksCisgICAg ICAgICAgICAgICAgICAgICAgICAgMCwgc2hhaCwgYWN0LCBzdGF0dXMpICE9IEdOVFNUX29rYXkg KQorICAgICAgICAgICAgZ290byByZWxlYXNlOworICAgIH0KKworICAgIGlmICggIWFjdC0+cGlu ICkKKyAgICB7CisgICAgICAgIGdmbl90IGdmbiA9IGd0LT5ndF92ZXJzaW9uID09IDEgPworICAg ICAgICAgICAgX2dmbihzaGFyZWRfZW50cnlfdjEoZ3QsIGdyZWYpLmZyYW1lKSA6CisgICAgICAg ICAgICBfZ2ZuKHNoYXJlZF9lbnRyeV92MihndCwgZ3JlZikuZnVsbF9wYWdlLmZyYW1lKTsKKyAg ICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZTsKKworICAgICAgICByYyA9ICBnZXRfcGFnZWRf Z2ZuKGQsIGdmbiwgcmVhZG9ubHksIE5VTEwsICZwYWdlKTsKKyAgICAgICAgaWYgKCByYyApCisg ICAgICAgICAgICBnb3RvIGNsZWFyOworCisgICAgICAgIGFjdF9zZXRfZ2ZuKGFjdCwgZ2ZuKTsK KyAgICAgICAgYWN0LT5tZm4gPSBwYWdlX3RvX21mbihwYWdlKTsKKyAgICAgICAgYWN0LT5kb21p ZCA9IGN1cnJkLT5kb21haW5faWQ7CisgICAgICAgIGFjdC0+c3RhcnQgPSAwOworICAgICAgICBh Y3QtPmxlbmd0aCA9IFBBR0VfU0laRTsKKyAgICAgICAgYWN0LT5pc19zdWJfcGFnZSA9IGZhbHNl OworICAgICAgICBhY3QtPnRyYW5zX2RvbWFpbiA9IGQ7CisgICAgICAgIGFjdC0+dHJhbnNfZ3Jl ZiA9IGdyZWY7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIEFTU0VSVChtZm5fdmFs aWQoYWN0LT5tZm4pKTsKKyAgICAgICAgaWYgKCAhZ2V0X3BhZ2UobWZuX3RvX3BhZ2UoYWN0LT5t Zm4pLCBkKSApCisgICAgICAgICAgICBnb3RvIGNsZWFyOworICAgIH0KKworICAgIHJjID0gMDsK KyAgICBhY3QtPnBpbiArPSByZWFkb25seSA/IEdOVFBJTl9kZXZyX2luYyA6IEdOVFBJTl9kZXZ3 X2luYzsKKyAgICAqbWZuID0gYWN0LT5tZm47CisgICAgZ290byByZWxlYXNlOworCisgY2xlYXI6 CisgICAgaWYgKCAhcmVhZG9ubHkgJiYgIShhY3QtPnBpbiAmIEdOVFBJTl9kZXZ3X21hc2spICkK KyAgICAgICAgZ250dGFiX2NsZWFyX2ZsYWcoX0dURl93cml0aW5nLCBzdGF0dXMpOworCisgICAg aWYgKCAhYWN0LT5waW4gKQorICAgICAgICBnbnR0YWJfY2xlYXJfZmxhZyhfR1RGX3JlYWRpbmcs IHN0YXR1cyk7CisKKyByZWxlYXNlOgorICAgIGFjdGl2ZV9lbnRyeV9yZWxlYXNlKGFjdCk7CisK KyB1bmxvY2s6CisgICAgZ3JhbnRfcmVhZF91bmxvY2soZ3QpOworCisgICAgcmV0dXJuIHJjOwor fQorCitpbnQKK3JlbGVhc2VfZ3JlZl9mb3JfaW9tbXUoc3RydWN0IGRvbWFpbiAqZCwgZ3JhbnRf cmVmX3QgZ3JlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZWFkb25seSwgbWZuX3Qg bWZuKQoreworICAgIHN0cnVjdCBkb21haW4gKmN1cnJkID0gY3VycmVudC0+ZG9tYWluOworICAg IHN0cnVjdCBncmFudF90YWJsZSAqZ3QgPSBkLT5ncmFudF90YWJsZTsKKyAgICBncmFudF9lbnRy eV9oZWFkZXJfdCAqc2hhaDsKKyAgICBzdHJ1Y3QgYWN0aXZlX2dyYW50X2VudHJ5ICphY3Q7Cisg ICAgdWludDE2X3QgKnN0YXR1czsKKyAgICBpbnQgcmM7CisKKyAgICBncmFudF9yZWFkX2xvY2so Z3QpOworCisgICAgcmMgPSAtRU5PRU5UOworICAgIGlmICggZ3JlZiA+IG5yX2dyYW50X2VudHJp ZXMoZ3QpICkKKyAgICAgICAgZ290byB1bmxvY2s7CisKKyAgICBhY3QgPSBhY3RpdmVfZW50cnlf YWNxdWlyZShndCwgZ3JlZik7CisgICAgc2hhaCA9IHNoYXJlZF9lbnRyeV9oZWFkZXIoZ3QsIGdy ZWYpOworICAgIHN0YXR1cyA9ICggZ3QtPmd0X3ZlcnNpb24gPT0gMiApID8KKyAgICAgICAgJnN0 YXR1c19lbnRyeShndCwgZ3JlZikgOgorICAgICAgICAmc2hhaC0+ZmxhZ3M7CisKKyAgICByYyA9 IC1FSU5WQUw7CisgICAgaWYgKCAhYWN0LT5waW4gfHwgKGFjdC0+ZG9taWQgIT0gY3VycmQtPmRv bWFpbl9pZCkgfHwKKyAgICAgICAgICFtZm5fZXEoYWN0LT5tZm4sIG1mbikgKQorICAgICAgICBn b3RvIHJlbGVhc2U7CisKKyAgICByYyA9IDA7CisgICAgaWYgKCByZWFkb25seSApCisgICAgICAg IGFjdC0+cGluIC09IEdOVFBJTl9kZXZyX2luYzsKKyAgICBlbHNlCisgICAgeworICAgICAgICBn bnR0YWJfbWFya19kaXJ0eShkLCBtZm4pOworCisgICAgICAgIGFjdC0+cGluIC09IEdOVFBJTl9k ZXZ3X2luYzsKKyAgICAgICAgaWYgKCAhKGFjdC0+cGluICYgR05UUElOX2RldndfbWFzaykgKQor ICAgICAgICAgICAgZ250dGFiX2NsZWFyX2ZsYWcoX0dURl93cml0aW5nLCBzdGF0dXMpOworICAg IH0KKworICAgIGlmICggIWFjdC0+cGluICkKKyAgICAgICAgZ250dGFiX2NsZWFyX2ZsYWcoX0dU Rl9yZWFkaW5nLCBzdGF0dXMpOworCisgICAgcHV0X3BhZ2UobWZuX3RvX3BhZ2UobWZuKSk7CisK KyByZWxlYXNlOgorICAgIGFjdGl2ZV9lbnRyeV9yZWxlYXNlKGFjdCk7CisKKyB1bmxvY2s6Cisg ICAgZ3JhbnRfcmVhZF91bmxvY2soZ3QpOworCisgICAgcmV0dXJuIHJjOworfQorCiBzdGF0aWMg dm9pZCBnbnR0YWJfdXNhZ2VfcHJpbnQoc3RydWN0IGRvbWFpbiAqcmQpCiB7CiAgICAgaW50IGZp cnN0ID0gMTsKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vaW9tbXVfb3AuYyBiL3hlbi9jb21tb24v aW9tbXVfb3AuYwppbmRleCAzMjg1MjJmMjQ1Li4yNzJmNTMyOThmIDEwMDY0NAotLS0gYS94ZW4v Y29tbW9uL2lvbW11X29wLmMKKysrIGIveGVuL2NvbW1vbi9pb21tdV9vcC5jCkBAIC0yMyw2ICsy Myw3IEBACiAjaW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPgogI2luY2x1ZGUgPHhlbi9oeXBl cmNhbGwuaD4KICNpbmNsdWRlIDx4ZW4vbm9zcGVjLmg+CisjaW5jbHVkZSA8eGVuL2dyYW50X3Rh YmxlLmg+CiAKIHN0cnVjdCBnZXRfcmVzZXJ2ZWRfY3R4dCB7CiAgICAgdW5zaWduZWQgaW50IG1h eF9lbnRyaWVzOwpAQCAtMTMwLDEyICsxMzEsMTQgQEAgc3RhdGljIGludCBpb21tdW9wX21hcChz dHJ1Y3QgeGVuX2lvbW11X29wX21hcCAqb3ApCiAgICAgYm9vbCByZWFkb25seSA9IG9wLT5mbGFn cyAmIFhFTl9JT01NVU9QX21hcF9yZWFkb25seTsKICAgICBiZm5fdCBiZm4gPSBfYmZuKG9wLT5i Zm4pOwogICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2U7CisgICAgbWZuX3QgbWZuOwogICAgIHVu c2lnbmVkIGludCBwcm90OwogICAgIGludCByYywgaWdub3JlOwogCiAgICAgaWYgKCBvcC0+cGFk IHx8CiAgICAgICAgICAob3AtPmZsYWdzICYgfihYRU5fSU9NTVVPUF9tYXBfYWxsIHwKLSAgICAg ICAgICAgICAgICAgICAgICAgIFhFTl9JT01NVU9QX21hcF9yZWFkb25seSkpICkKKyAgICAgICAg ICAgICAgICAgICAgICAgIFhFTl9JT01NVU9QX21hcF9yZWFkb25seSB8CisgICAgICAgICAgICAg ICAgICAgICAgICBYRU5fSU9NTVVPUF9tYXBfZ3JlZikpICkKICAgICAgICAgcmV0dXJuIC1FSU5W QUw7CiAKICAgICBpZiAoICFpb21tdS0+aW9tbXVfb3BfcmFuZ2VzICkKQEAgLTE1MywxNSArMTU2 LDI4IEBAIHN0YXRpYyBpbnQgaW9tbXVvcF9tYXAoc3RydWN0IHhlbl9pb21tdV9vcF9tYXAgKm9w KQogICAgIGlmICggIWQgKQogICAgICAgICByZXR1cm4gLUVTUkNIOwogCi0gICAgcmMgPSBnZXRf cGFnZWRfZ2ZuKGQsIF9nZm4ob3AtPmdmbiksIHJlYWRvbmx5LCBOVUxMLCAmcGFnZSk7Ci0gICAg aWYgKCByYyApCi0gICAgICAgIGdvdG8gdW5sb2NrOworICAgIGlmICggb3AtPmZsYWdzICYgWEVO X0lPTU1VT1BfbWFwX2dyZWYgKQorICAgIHsKKyAgICAgICAgcmMgPSBhY3F1aXJlX2dyZWZfZm9y X2lvbW11KGQsIG9wLT51LmdyZWYsIHJlYWRvbmx5LCAmbWZuKTsKKyAgICAgICAgaWYgKCByYyAp CisgICAgICAgICAgICBnb3RvIHVubG9jazsKIAotICAgIHJjID0gLUVJTlZBTDsKLSAgICBpZiAo ICFyZWFkb25seSAmJiAhZ2V0X3BhZ2VfdHlwZShwYWdlLCBQR1Rfd3JpdGFibGVfcGFnZSkgKQor ICAgICAgICBwYWdlID0gbWZuX3RvX3BhZ2UobWZuKTsKKyAgICB9CisgICAgZWxzZQogICAgIHsK LSAgICAgICAgcHV0X3BhZ2UocGFnZSk7Ci0gICAgICAgIGdvdG8gdW5sb2NrOworICAgICAgICBy YyA9IGdldF9wYWdlZF9nZm4oZCwgX2dmbihvcC0+dS5nZm4pLCByZWFkb25seSwgTlVMTCwgJnBh Z2UpOworICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgICAgIGdvdG8gdW5sb2NrOworCisgICAg ICAgIHJjID0gLUVJTlZBTDsKKyAgICAgICAgaWYgKCAhcmVhZG9ubHkgJiYgIWdldF9wYWdlX3R5 cGUocGFnZSwgUEdUX3dyaXRhYmxlX3BhZ2UpICkKKyAgICAgICAgeworICAgICAgICAgICAgcHV0 X3BhZ2UocGFnZSk7CisgICAgICAgICAgICBnb3RvIHVubG9jazsKKyAgICAgICAgfQorCisgICAg ICAgIG1mbiA9IHBhZ2VfdG9fbWZuKHBhZ2UpOwogICAgIH0KIAogICAgIHByb3QgPSBJT01NVUZf cmVhZGFibGU7CkBAIC0xNjksNyArMTg1LDcgQEAgc3RhdGljIGludCBpb21tdW9wX21hcChzdHJ1 Y3QgeGVuX2lvbW11X29wX21hcCAqb3ApCiAgICAgICAgIHByb3QgfD0gSU9NTVVGX3dyaXRhYmxl OwogCiAgICAgcmMgPSAtRUlPOwotICAgIGlmICggaW9tbXVfbWFwX3BhZ2UoY3VycmQsIGJmbiwg cGFnZV90b19tZm4ocGFnZSksIHByb3QpICkKKyAgICBpZiAoIGlvbW11X21hcF9wYWdlKGN1cnJk LCBiZm4sIG1mbiwgcHJvdCkgKQogICAgICAgICBnb3RvIHJlbGVhc2U7CiAKICAgICByYyA9IHJh bmdlc2V0X2FkZF9zaW5nbGV0b24oaW9tbXUtPmlvbW11X29wX3JhbmdlcywgYmZuX3goYmZuKSk7 CkBAIC0xODMsOSArMTk5LDE0IEBAIHN0YXRpYyBpbnQgaW9tbXVvcF9tYXAoc3RydWN0IHhlbl9p b21tdV9vcF9tYXAgKm9wKQogICAgIGlnbm9yZSA9IGlvbW11X3VubWFwX3BhZ2UoY3VycmQsIGJm bik7CiAKICByZWxlYXNlOgotICAgIGlmICggIXJlYWRvbmx5ICkKLSAgICAgICAgcHV0X3BhZ2Vf dHlwZShwYWdlKTsKLSAgICBwdXRfcGFnZShwYWdlKTsKKyAgICBpZiAoIG9wLT5mbGFncyAmIFhF Tl9JT01NVU9QX21hcF9ncmVmICkKKyAgICAgICAgcmVsZWFzZV9ncmVmX2Zvcl9pb21tdShkLCBv cC0+dS5ncmVmLCByZWFkb25seSwgbWZuKTsKKyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAo ICFyZWFkb25seSApCisgICAgICAgICAgICBwdXRfcGFnZV90eXBlKHBhZ2UpOworICAgICAgICBw dXRfcGFnZShwYWdlKTsKKyAgICB9CiAKICB1bmxvY2s6CiAgICAgcmN1X3VubG9ja19kb21haW4o ZCk7CkBAIC0yMDAsMTEgKzIyMSwxMSBAQCBzdGF0aWMgaW50IGlvbW11b3BfdW5tYXAoc3RydWN0 IHhlbl9pb21tdV9vcF91bm1hcCAqb3ApCiAgICAgbWZuX3QgbWZuOwogICAgIGJvb2wgcmVhZG9u bHk7CiAgICAgdW5zaWduZWQgaW50IHByb3Q7Ci0gICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZTsK ICAgICBpbnQgcmM7CiAKICAgICBpZiAoIG9wLT5wYWQgfHwKLSAgICAgICAgIChvcC0+ZmxhZ3Mg JiB+WEVOX0lPTU1VT1BfdW5tYXBfYWxsKSApCisgICAgICAgICAob3AtPmZsYWdzICYgfihYRU5f SU9NTVVPUF91bm1hcF9hbGwgfAorICAgICAgICAgICAgICAgICAgICAgICAgWEVOX0lPTU1VT1Bf dW5tYXBfZ3JlZikpICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAKICAgICBpZiAoICFpb21t dS0+aW9tbXVfb3BfcmFuZ2VzICkKQEAgLTIyNSwyMSArMjQ2LDMxIEBAIHN0YXRpYyBpbnQgaW9t bXVvcF91bm1hcChzdHJ1Y3QgeGVuX2lvbW11X29wX3VubWFwICpvcCkKICAgICBpZiAoICFkICkK ICAgICAgICAgcmV0dXJuIC1FU1JDSDsKIAotICAgIHJjID0gZ2V0X3BhZ2VkX2dmbihkLCBfZ2Zu KG9wLT5nZm4pLCAhKHByb3QgJiBJT01NVUZfd3JpdGFibGUpLCBOVUxMLAotICAgICAgICAgICAg ICAgICAgICAgICAmcGFnZSk7Ci0gICAgaWYgKCByYyApCi0gICAgICAgIGdvdG8gdW5sb2NrOwor ICAgIGlmICggb3AtPmZsYWdzICYgWEVOX0lPTU1VT1BfdW5tYXBfZ3JlZiApCisgICAgeworICAg ICAgICByYyA9IHJlbGVhc2VfZ3JlZl9mb3JfaW9tbXUoZCwgb3AtPnUuZ3JlZiwgcmVhZG9ubHks IG1mbik7CisgICAgICAgIGlmICggcmMgKQorICAgICAgICAgICAgZ290byB1bmxvY2s7CisgICAg fQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2U7CiAKLSAg ICBwdXRfcGFnZShwYWdlKTsgLyogcmVsZWFzZSBleHRyYSByZWZlcmVuY2UganVzdCB0YWtlbiAq LworICAgICAgICByYyA9IGdldF9wYWdlZF9nZm4oZCwgX2dmbihvcC0+dS5nZm4pLCByZWFkb25s eSwgTlVMTCwgJnBhZ2UpOworICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgICAgIGdvdG8gdW5s b2NrOwogCi0gICAgcmMgPSAtRUlOVkFMOwotICAgIGlmICggIW1mbl9lcShwYWdlX3RvX21mbihw YWdlKSwgbWZuKSApCi0gICAgICAgIGdvdG8gdW5sb2NrOworICAgICAgICBwdXRfcGFnZShwYWdl KTsgLyogcmVsZWFzZSBleHRyYSByZWZlcmVuY2UganVzdCB0YWtlbiAqLwogCi0gICAgLyogcmVs ZWFzZSByZWZlcmVuY2UgdGFrZW4gaW4gbWFwICovCi0gICAgaWYgKCAhcmVhZG9ubHkgKQotICAg ICAgICBwdXRfcGFnZV90eXBlKHBhZ2UpOwotICAgIHB1dF9wYWdlKHBhZ2UpOworICAgICAgICBy YyA9IC1FSU5WQUw7CisgICAgICAgIGlmICggIW1mbl9lcShwYWdlX3RvX21mbihwYWdlKSwgbWZu KSApCisgICAgICAgICAgICBnb3RvIHVubG9jazsKKworICAgICAgICAvKiByZWxlYXNlIHJlZmVy ZW5jZSB0YWtlbiBpbiBtYXAgKi8KKyAgICAgICAgaWYgKCAhcmVhZG9ubHkgKQorICAgICAgICAg ICAgcHV0X3BhZ2VfdHlwZShwYWdlKTsKKyAgICAgICAgcHV0X3BhZ2UocGFnZSk7CisgICAgfQog CiAgICAgcmMgPSByYW5nZXNldF9yZW1vdmVfc2luZ2xldG9uKGlvbW11LT5pb21tdV9vcF9yYW5n ZXMsIGJmbl94KGJmbikpOwogICAgIGlmICggcmMgKQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUv cHVibGljL2lvbW11X29wLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvaW9tbXVfb3AuaAppbmRleCBl NmMwOGY0YmRkLi5lM2Q3MDJhOGQwIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvaW9t bXVfb3AuaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvaW9tbXVfb3AuaApAQCAtMjQsNiArMjQs NyBAQAogI2RlZmluZSBYRU5fUFVCTElDX0lPTU1VX09QX0gKIAogI2luY2x1ZGUgInhlbi5oIgor I2luY2x1ZGUgImdyYW50X3RhYmxlLmgiCiAKIHR5cGVkZWYgdWludDY0X3QgeGVuX2Jmbl90Owog CkBAIC0xMDcsNiArMTA4LDEwIEBAIHN0cnVjdCB4ZW5faW9tbXVfb3BfbWFwIHsKICNkZWZpbmUg X1hFTl9JT01NVU9QX21hcF9yZWFkb25seSAxCiAjZGVmaW5lIFhFTl9JT01NVU9QX21hcF9yZWFk b25seSAoMSA8PCAoX1hFTl9JT01NVU9QX21hcF9yZWFkb25seSkpCiAKKyAgICAvKiBJcyB0aGUg bWVtb3J5IHNwZWNpZmllZCBieSBnZm4gb3IgZ3JhbnQgcmVmZXJlbmNlPyAqLworI2RlZmluZSBf WEVOX0lPTU1VT1BfbWFwX2dyZWYgMgorI2RlZmluZSBYRU5fSU9NTVVPUF9tYXBfZ3JlZiAoMSA8 PCAoX1hFTl9JT01NVU9QX21hcF9ncmVmKSkKKwogICAgIHVpbnQzMl90IHBhZDsKICAgICAvKgog ICAgICAqIElOIC0gU2VnbWVudC9CdXMvRGV2aWNlL0Z1bmN0aW9uIG9mIHRoZSBpbml0aWF0b3Iu CkBAIC0xMTYsOCArMTIxLDE0IEBAIHN0cnVjdCB4ZW5faW9tbXVfb3BfbWFwIHsKICAgICB1aW50 NjRfdCBzYmRmOwogICAgIC8qIElOIC0gVGhlIElPTU1VIGZyYW1lIG51bWJlciB3aGljaCB3aWxs IGhvbGQgdGhlIG5ldyBtYXBwaW5nICovCiAgICAgeGVuX2Jmbl90IGJmbjsKLSAgICAvKiBJTiAt IFRoZSBndWVzdCBmcmFtZSBudW1iZXIgb2YgdGhlIHBhZ2UgdG8gYmUgbWFwcGVkICovCi0gICAg eGVuX3Bmbl90IGdmbjsKKyAgICAvKgorICAgICAqIElOIC0gVGhlIGd1ZXN0IGZyYW1lIG51bWJl ciBvciBncmFudCByZWZlcmVuY2Ugb2YgdGhlIHBhZ2UgdG8KKyAgICAgKiBiZSBtYXBwZWQuCisg ICAgICovCisgICAgdW5pb24geworICAgICAgICB4ZW5fcGZuX3QgZ2ZuOworICAgICAgICBncmFu dF9yZWZfdCBncmVmOworICAgIH0gdTsKIH07CiAKIC8qCkBAIC0xNDMsNiArMTU0LDEwIEBAIHN0 cnVjdCB4ZW5faW9tbXVfb3BfdW5tYXAgewogI2RlZmluZSBfWEVOX0lPTU1VT1BfdW5tYXBfYWxs IDAKICNkZWZpbmUgWEVOX0lPTU1VT1BfdW5tYXBfYWxsICgxIDw8IChfWEVOX0lPTU1VT1BfdW5t YXBfYWxsKSkKIAorICAgIC8qIElzIHRoZSBtZW1vcnkgc3BlY2lmaWVkIGJ5IGdmbiBvciBncmFu dCByZWZlcmVuY2U/ICovCisjZGVmaW5lIF9YRU5fSU9NTVVPUF91bm1hcF9ncmVmIDEKKyNkZWZp bmUgWEVOX0lPTU1VT1BfdW5tYXBfZ3JlZiAoMSA8PCAoX1hFTl9JT01NVU9QX3VubWFwX2dyZWYp KQorCiAgICAgdWludDMyX3QgcGFkOwogICAgIC8qCiAgICAgICogSU4gLSBTZWdtZW50L0J1cy9E ZXZpY2UvRnVuY3Rpb24gb2YgdGhlIGluaXRpYXRvci4KQEAgLTE1Miw4ICsxNjcsMTQgQEAgc3Ry dWN0IHhlbl9pb21tdV9vcF91bm1hcCB7CiAgICAgdWludDY0X3Qgc2JkZjsKICAgICAvKiBJTiAt IFRoZSBJT01NVSBmcmFtZSBudW1iZXIgd2hpY2ggaG9sZHMgdGhlIG1hcHBpbmcgdG8gYmUgcmVt b3ZlZCAqLwogICAgIHhlbl9iZm5fdCBiZm47Ci0gICAgLyogSU4gLSBUaGUgZ3Vlc3QgZnJhbWUg bnVtYmVyIG9mIHRoZSBwYWdlIHRoYXQgaXMgbWFwcGVkICovCi0gICAgeGVuX3Bmbl90IGdmbjsK KyAgICAvKgorICAgICAqIElOIC0gVGhlIGd1ZXN0IGZyYW1lIG51bWJlciBvciBncmFudCByZWZl cmVuY2Ugb2YgdGhlIHBhZ2UgdGhhdAorICAgICAqIGlzIG1hcHBlZC4KKyAgICAgKi8KKyAgICB1 bmlvbiB7CisgICAgICAgIHhlbl9wZm5fdCBnZm47CisgICAgICAgIGdyYW50X3JlZl90IGdyZWY7 CisgICAgfSB1OwogfTsKIAogLyoKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9ncmFudF90 YWJsZS5oIGIveGVuL2luY2x1ZGUveGVuL2dyYW50X3RhYmxlLmgKaW5kZXggYzg4MTQxNGU1Yi4u MzVhZmIyNzIwMiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL2dyYW50X3RhYmxlLmgKKysr IGIveGVuL2luY2x1ZGUveGVuL2dyYW50X3RhYmxlLmgKQEAgLTYzLDYgKzYzLDEzIEBAIGludCBn bnR0YWJfZ2V0X3NoYXJlZF9mcmFtZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGlk eCwKIGludCBnbnR0YWJfZ2V0X3N0YXR1c19mcmFtZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25l ZCBsb25nIGlkeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZm5fdCAqbWZuKTsKIAor aW50CithY3F1aXJlX2dyZWZfZm9yX2lvbW11KHN0cnVjdCBkb21haW4gKmQsIGdyYW50X3JlZl90 IGdyZWYsCisgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVhZG9ubHksIG1mbl90ICptZm4p OworaW50CityZWxlYXNlX2dyZWZfZm9yX2lvbW11KHN0cnVjdCBkb21haW4gKmQsIGdyYW50X3Jl Zl90IGdyZWYsCisgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVhZG9ubHksIG1mbl90IG1m bik7CisKIHVuc2lnbmVkIGludCBnbnR0YWJfZG9tMF9mcmFtZXModm9pZCk7CiAKICNlbmRpZiAv KiBfX1hFTl9HUkFOVF9UQUJMRV9IX18gKi8KLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVu LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv bWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=