From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v4 08/15] x86: add iommu_op to query reserved ranges Date: Wed, 1 Aug 2018 14:40:21 +0100 Message-ID: <20180801134028.1654-9-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 1fkrMl-0008OB-1a for xen-devel@lists.xenproject.org; Wed, 01 Aug 2018 13:40:39 +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 , Paul Durrant , Jan Beulich List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBhZGRzIGFuIGlvbW11X29wIHRvIGFsbG93IHRoZSBkb21haW4gSU9NTVUgcmVz ZXJ2ZWQgcmFuZ2VzIHRvIGJlCnF1ZXJpZWQgYnkgdGhlIGd1ZXN0LgoKTk9URTogVGhlIG51bWJl ciBvZiByZXNlcnZlZCByYW5nZXMgaXMgZGV0ZXJtaW5lZCBieSBzeXN0ZW0gZmlybXdhcmUsIGlu CiAgICAgIGNvbmp1bmN0aW9uIHdpdGggWGVuIGNvbW1hbmQgbGluZSBvcHRpb25zLCBhbmQgaXMg ZXhwZWN0ZWQgdG8gYmUKICAgICAgc21hbGwuIFRodXMsIHRvIGF2b2lkIG92ZXItY29tcGxpY2F0 aW5nIHRoZSBjb2RlLCB0aGVyZSBpcyBubwogICAgICBwcmUtZW1wdGlvbiBjaGVjayB3aXRoaW4g dGhlIG9wZXJhdGlvbi4KClNpZ25lZC1vZmYtYnk6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50 QGNpdHJpeC5jb20+Ci0tLQpDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzog QW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ2M6IEdlb3JnZSBEdW5s YXAgPEdlb3JnZS5EdW5sYXBAZXUuY2l0cml4LmNvbT4KQ2M6IElhbiBKYWNrc29uIDxpYW4uamFj a3NvbkBldS5jaXRyaXguY29tPgpDYzogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2ls a0BvcmFjbGUuY29tPgpDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwu b3JnPgpDYzogVGltIERlZWdhbiA8dGltQHhlbi5vcmc+CkNjOiBXZWkgTGl1IDx3ZWkubGl1MkBj aXRyaXguY29tPgoKdjQ6CiAtIE1ha2UgeGVuX2Jmbl90IHN0cmljdGx5IDY0IGJpdHMgd2lkZSBh bmQgZHJvcCBhc3NvY2lhdGVkIGNvbXBhdAogICB0cmFuc2xhdGlvbi4KCnYzOgogLSBBdm9pZCBz cGVjdWxhdGlvbiBiZXlvbmQgYXJyYXkgYm91bmRzIGNoZWNrLgoKdjI6CiAtIFJlLWltcGxlbWVu dGVkIGZvciB2MiBiYXNlZCBvbiBuZXcgcmFuZ2VzZXQuCi0tLQogeGVuL2FyY2gveDg2L2lvbW11 X29wLmMgICAgICAgfCAxNjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tCiB4ZW4vaW5jbHVkZS9wdWJsaWMvaW9tbXVfb3AuaCB8ICAzOSArKysrKysrKysrCiB4ZW4v aW5jbHVkZS94bGF0LmxzdCAgICAgICAgICB8ICAgMiArCiAzIGZpbGVzIGNoYW5nZWQsIDE5OSBp bnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9p b21tdV9vcC5jIGIveGVuL2FyY2gveDg2L2lvbW11X29wLmMKaW5kZXggNzQ0YzBmY2UyNy4uYmNm Y2Q0OTEwMiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2lvbW11X29wLmMKKysrIGIveGVuL2Fy Y2gveDg2L2lvbW11X29wLmMKQEAgLTIyLDExICsyMiw3MCBAQAogI2luY2x1ZGUgPHhlbi9ldmVu dC5oPgogI2luY2x1ZGUgPHhlbi9ndWVzdF9hY2Nlc3MuaD4KICNpbmNsdWRlIDx4ZW4vaHlwZXJj YWxsLmg+CisjaW5jbHVkZSA8eGVuL25vc3BlYy5oPgorCitzdHJ1Y3QgZ2V0X3Jlc2VydmVkX2N0 eHQgeworICAgIHVuc2lnbmVkIGludCBtYXhfZW50cmllczsKKyAgICB1bnNpZ25lZCBpbnQgbnJf ZW50cmllczsKKyAgICBYRU5fR1VFU1RfSEFORExFKHhlbl9pb21tdV9yZXNlcnZlZF9yYW5nZV90 KSByYW5nZXM7Cit9OworCitzdGF0aWMgaW50IGdldF9yZXNlcnZlZCh1bnNpZ25lZCBsb25nIHMs IHVuc2lnbmVkIGxvbmcgZSwgdm9pZCAqYXJnKQoreworICAgIHN0cnVjdCBnZXRfcmVzZXJ2ZWRf Y3R4dCAqY3R4dCA9IGFyZzsKKworICAgIGlmICggY3R4dC0+bnJfZW50cmllcyA8IGN0eHQtPm1h eF9lbnRyaWVzICkKKyAgICB7CisgICAgICAgIHhlbl9pb21tdV9yZXNlcnZlZF9yYW5nZV90IHJh bmdlID0geworICAgICAgICAgICAgLnN0YXJ0X2JmbiA9IHMsCisgICAgICAgICAgICAubnJfZnJh bWVzID0gZSAtIHMsCisgICAgICAgIH07CisKKyAgICAgICAgaWYgKCBjb3B5X3RvX2d1ZXN0X29m ZnNldChjdHh0LT5yYW5nZXMsIGN0eHQtPm5yX2VudHJpZXMsICZyYW5nZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAxKSApCisgICAgICAgICAgICByZXR1cm4gLUVGQVVMVDsK KyAgICB9CisKKyAgICBjdHh0LT5ucl9lbnRyaWVzKys7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQgaW9tbXVfb3BfcXVlcnlfcmVzZXJ2ZWQoc3RydWN0IHhlbl9pb21tdV9vcF9xdWVy eV9yZXNlcnZlZCAqb3ApCit7CisgICAgc3RydWN0IGRvbWFpbiAqY3VycmQgPSBjdXJyZW50LT5k b21haW47CisgICAgc3RydWN0IGRvbWFpbl9pb21tdSAqaW9tbXUgPSBkb21faW9tbXUoY3VycmQp OworICAgIHN0cnVjdCBnZXRfcmVzZXJ2ZWRfY3R4dCBjdHh0ID0geworICAgICAgICAubWF4X2Vu dHJpZXMgPSBvcC0+bnJfZW50cmllcywKKyAgICAgICAgLnJhbmdlcyA9IG9wLT5yYW5nZXMsCisg ICAgfTsKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoIG9wLT5wYWQgKQorICAgICAgICByZXR1cm4g LUVJTlZBTDsKKworICAgIHJjID0gcmFuZ2VzZXRfcmVwb3J0X3Jhbmdlcyhpb21tdS0+cmVzZXJ2 ZWRfcmFuZ2VzLCAwLCB+MHVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRf cmVzZXJ2ZWQsICZjdHh0KTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgcmV0dXJuIHJjOworCisg ICAgLyogUGFzcyBiYWNrIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJlc2VydmVkIHJhbmdlcyAqLwor ICAgIG9wLT5ucl9lbnRyaWVzID0gY3R4dC5ucl9lbnRyaWVzOworCisgICAgaWYgKCAhZ3Vlc3Rf aGFuZGxlX2lzX251bGwoY3R4dC5yYW5nZXMpICYmCisgICAgICAgICBjdHh0Lm5yX2VudHJpZXMg PiBjdHh0Lm1heF9lbnRyaWVzICkKKyAgICAgICAgcmV0dXJuIC1FTk9CVUZTOworCisgICAgcmV0 dXJuIDA7Cit9CiAKIHN0YXRpYyB2b2lkIGlvbW11X29wKHhlbl9pb21tdV9vcF90ICpvcCkKIHsK ICAgICBzd2l0Y2ggKCBvcC0+b3AgKQogICAgIHsKKyAgICBjYXNlIFhFTl9JT01NVU9QX3F1ZXJ5 X3Jlc2VydmVkOgorICAgICAgICBvcC0+c3RhdHVzID0gaW9tbXVfb3BfcXVlcnlfcmVzZXJ2ZWQo Jm9wLT51LnF1ZXJ5X3Jlc2VydmVkKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBkZWZhdWx0Ogog ICAgICAgICBvcC0+c3RhdHVzID0gLUVPUE5PVFNVUFA7CiAgICAgICAgIGJyZWFrOwpAQCAtMzUs MTMgKzk0LDIwIEBAIHN0YXRpYyB2b2lkIGlvbW11X29wKHhlbl9pb21tdV9vcF90ICpvcCkKIAog aW50IGRvX29uZV9pb21tdV9vcCh4ZW5faW9tbXVfb3BfYnVmX3QgKmJ1ZikKIHsKLSAgICB4ZW5f aW9tbXVfb3BfdCBvcDsKKyAgICB4ZW5faW9tbXVfb3BfdCBvcCA9IHt9OworICAgIHNpemVfdCBv ZmZzZXQ7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBvcF9zaXplW10gPSB7CisgICAgICAgIFtY RU5fSU9NTVVPUF9xdWVyeV9yZXNlcnZlZF0gPSBzaXplb2Yoc3RydWN0IHhlbl9pb21tdV9vcF9x dWVyeV9yZXNlcnZlZCksCisgICAgfTsKKyAgICBzaXplX3Qgc2l6ZTsKICAgICBpbnQgcmM7CiAK LSAgICBpZiAoIGJ1Zi0+c2l6ZSA8IHNpemVvZihvcCkgKQorICAgIG9mZnNldCA9IG9mZnNldG9m KHN0cnVjdCB4ZW5faW9tbXVfb3AsIHUpOworCisgICAgaWYgKCBidWYtPnNpemUgPCBvZmZzZXQg KQogICAgICAgICByZXR1cm4gLUVGQVVMVDsKIAotICAgIGlmICggY29weV9mcm9tX2d1ZXN0KCh2 b2lkICopJm9wLCBidWYtPmgsIHNpemVvZihvcCkpICkKKyAgICBpZiAoIGNvcHlfZnJvbV9ndWVz dCgodm9pZCAqKSZvcCwgYnVmLT5oLCBvZmZzZXQpICkKICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7 CiAKICAgICBpZiAoIG9wLnBhZCApCkBAIC01MSw2ICsxMTcsMTYgQEAgaW50IGRvX29uZV9pb21t dV9vcCh4ZW5faW9tbXVfb3BfYnVmX3QgKmJ1ZikKICAgICBpZiAoIHJjICkKICAgICAgICAgcmV0 dXJuIHJjOwogCisgICAgaWYgKCBvcC5vcCA+PSBBUlJBWV9TSVpFKG9wX3NpemUpICkKKyAgICAg ICAgcmV0dXJuIC1FT1BOT1RTVVBQOworCisgICAgc2l6ZSA9IG9wX3NpemVbYXJyYXlfaW5kZXhf bm9zcGVjKG9wLm9wLCBBUlJBWV9TSVpFKG9wX3NpemUpKV07CisgICAgaWYgKCBidWYtPnNpemUg PCBvZmZzZXQgKyBzaXplICkKKyAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CisKKyAgICBpZiAoIGNv cHlfZnJvbV9ndWVzdF9vZmZzZXQoKHZvaWQgKikmb3AudSwgYnVmLT5oLCBvZmZzZXQsIHNpemUp ICkKKyAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CisKICAgICBpb21tdV9vcCgmb3ApOwogCiAgICAg aWYgKCBfX2NvcHlfZmllbGRfdG9fZ3Vlc3QoZ3Vlc3RfaGFuZGxlX2Nhc3QoYnVmLT5oLCB4ZW5f aW9tbXVfb3BfdCksCkBAIC0xMDAsMTYgKzE3NiwyNyBAQCBsb25nIGRvX2lvbW11X29wKHVuc2ln bmVkIGludCBucl9idWZzLAogICAgIHJldHVybiByYzsKIH0KIAorQ0hFQ0tfaW9tbXVfcmVzZXJ2 ZWRfcmFuZ2U7CisKIGludCBjb21wYXRfb25lX2lvbW11X29wKGNvbXBhdF9pb21tdV9vcF9idWZf dCAqYnVmKQogewotICAgIGNvbXBhdF9pb21tdV9vcF90IGNtcDsKKyAgICBjb21wYXRfaW9tbXVf b3BfdCBjbXAgPSB7fTsKKyAgICBzaXplX3Qgb2Zmc2V0OworICAgIHN0YXRpYyBjb25zdCBzaXpl X3Qgb3Bfc2l6ZVtdID0geworICAgICAgICBbWEVOX0lPTU1VT1BfcXVlcnlfcmVzZXJ2ZWRdID0g c2l6ZW9mKHN0cnVjdCBjb21wYXRfaW9tbXVfb3BfcXVlcnlfcmVzZXJ2ZWQpLAorICAgIH07Cisg ICAgc2l6ZV90IHNpemU7CiAgICAgeGVuX2lvbW11X29wX3QgbmF0OworICAgIHVuc2lnbmVkIGlu dCB1OworICAgIGludDMyX3Qgc3RhdHVzOwogICAgIGludCByYzsKIAotICAgIGlmICggYnVmLT5z aXplIDwgc2l6ZW9mKGNtcCkgKQorICAgIG9mZnNldCA9IG9mZnNldG9mKHN0cnVjdCBjb21wYXRf aW9tbXVfb3AsIHUpOworCisgICAgaWYgKCBidWYtPnNpemUgPCBvZmZzZXQgKQogICAgICAgICBy ZXR1cm4gLUVGQVVMVDsKIAotICAgIGlmICggY29weV9mcm9tX2NvbXBhdCgodm9pZCAqKSZjbXAs IGJ1Zi0+aCwgc2l6ZW9mKGNtcCkpICkKKyAgICBpZiAoIGNvcHlfZnJvbV9jb21wYXQoKHZvaWQg KikmY21wLCBidWYtPmgsIG9mZnNldCkgKQogICAgICAgICByZXR1cm4gLUVGQVVMVDsKIAogICAg IGlmICggY21wLnBhZCApCkBAIC0xMTksMTcgKzIwNiw4MiBAQCBpbnQgY29tcGF0X29uZV9pb21t dV9vcChjb21wYXRfaW9tbXVfb3BfYnVmX3QgKmJ1ZikKICAgICBpZiAoIHJjICkKICAgICAgICAg cmV0dXJuIHJjOwogCisgICAgaWYgKCBjbXAub3AgPj0gQVJSQVlfU0laRShvcF9zaXplKSApCisg ICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsKKworICAgIHNpemUgPSBvcF9zaXplW2FycmF5X2lu ZGV4X25vc3BlYyhjbXAub3AsIEFSUkFZX1NJWkUob3Bfc2l6ZSkpXTsKKyAgICBpZiAoIGJ1Zi0+ c2l6ZSA8IG9mZnNldCArIHNpemUgKQorICAgICAgICByZXR1cm4gLUVGQVVMVDsKKworICAgIGlm ICggY29weV9mcm9tX2NvbXBhdF9vZmZzZXQoKHZvaWQgKikmY21wLnUsIGJ1Zi0+aCwgb2Zmc2V0 LCBzaXplKSApCisgICAgICAgIHJldHVybiAtRUZBVUxUOworCisgICAgLyoKKyAgICAgKiBUaGUg eGxhdCBtYWdpYyBkb2Vzbid0IHF1aXRlIGtub3cgaG93IHRvIGhhbmRsZSB0aGUgdW5pb24gc28K KyAgICAgKiB3ZSBuZWVkIHRvIGZpeCB0aGluZ3MgdXAgaGVyZS4KKyAgICAgKi8KKyNkZWZpbmUg WExBVF9pb21tdV9vcF91X3F1ZXJ5X3Jlc2VydmVkIFhFTl9JT01NVU9QX3F1ZXJ5X3Jlc2VydmVk CisgICAgdSA9IGNtcC5vcDsKKworI2RlZmluZSBYTEFUX2lvbW11X29wX3F1ZXJ5X3Jlc2VydmVk X0hORExfcmFuZ2VzKF9kXywgX3NfKSAgICAgICAgICAgIFwKKyAgICBkbyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgICAgICBpZiAoICFjb21wYXRfaGFuZGxlX2lzX251bGwoKF9zXyktPnJh bmdlcykgKSAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgeyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgKm5yX2VudHJpZXMgPSBDT01QQVRfQVJHX1hMQVRfVklSVF9CQVNFOyAgICAg XAorICAgICAgICAgICAgeGVuX2lvbW11X3Jlc2VydmVkX3JhbmdlX3QgKnJhbmdlcyA9ICAgICAg ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAodm9pZCAqKShucl9lbnRyaWVzICsg MSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg ICAgICAgaWYgKCBzaXplb2YoKm5yX2VudHJpZXMpICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICAgICAgICAgICAgICAgKHNpemVvZigqcmFuZ2VzKSAqIChfc18pLT5ucl9l bnRyaWVzKSA+ICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgIENPTVBBVF9BUkdfWExB VF9TSVpFICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAg IHJldHVybiAtRTJCSUc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCisgICAgICAgICAgICAqbnJfZW50cmllcyA9IChfc18pLT5ucl9lbnRy aWVzOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgc2V0X3hlbl9ndWVz dF9oYW5kbGUoKF9kXyktPnJhbmdlcywgcmFuZ2VzKTsgICAgICAgICAgICAgIFwKKyAgICAgICAg fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCisgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgc2V0X3hlbl9ndWVzdF9oYW5kbGUo KF9kXyktPnJhbmdlcywgTlVMTCk7ICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxz ZSkKKwogICAgIFhMQVRfaW9tbXVfb3AoJm5hdCwgJmNtcCk7CiAKKyN1bmRlZiBYTEFUX2lvbW11 X29wX3F1ZXJ5X3Jlc2VydmVkX0hORExfcmFuZ2VzCisKICAgICBpb21tdV9vcCgmbmF0KTsKIAor ICAgIHN0YXR1cyA9IG5hdC5zdGF0dXM7CisKKyNkZWZpbmUgWExBVF9pb21tdV9vcF9xdWVyeV9y ZXNlcnZlZF9ITkRMX3JhbmdlcyhfZF8sIF9zXykgICAgICAgICAgICAgICBcCisgICAgZG8gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKCAhY29tcGF0X2hhbmRsZV9p c19udWxsKChfZF8pLT5yYW5nZXMpICkgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50ICpucl9lbnRyaWVzID0gQ09NUEFUX0FS R19YTEFUX1ZJUlRfQkFTRTsgICAgICAgIFwKKyAgICAgICAgICAgIGNvbXBhdF9pb21tdV9yZXNl cnZlZF9yYW5nZV90ICpyYW5nZXMgPSAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg ICAgICAgKHZvaWQgKikobnJfZW50cmllcyArIDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IG5yID0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBtaW5fdCh1bnNpZ25l ZCBpbnQsIChfZF8pLT5ucl9lbnRyaWVzLCAqbnJfZW50cmllcyk7ICAgICBcCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgICAgICAgICAgaWYgKCBfX2NvcHlfdG9fY29tcGF0X29mZnNldCgoX2RfKS0+ cmFuZ2VzLCAwLCByYW5nZXMsIG5yKSApIFwKKyAgICAgICAgICAgICAgICBzdGF0dXMgPSAtRUZB VUxUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCiAgICAgWExBVF9pb21tdV9vcCgmY21wLCAm bmF0KTsKIAorICAgIC8qIHN0YXR1cyB3aWxsIGhhdmUgYmVlbiBtb2RpZmllZCBpZiBfX2NvcHlf dG9fY29tcGF0X29mZnNldCgpIGZhaWxlZCAqLworICAgIGNtcC5zdGF0dXMgPSBzdGF0dXM7CisK KyN1bmRlZiBYTEFUX2lvbW11X29wX3F1ZXJ5X3Jlc2VydmVkX0hORExfcmFuZ2VzCisKICAgICBp ZiAoIF9fY29weV9maWVsZF90b19jb21wYXQoY29tcGF0X2hhbmRsZV9jYXN0KGJ1Zi0+aCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhdF9p b21tdV9vcF90KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNtcCwgc3RhdHVz KSApCiAgICAgICAgIHJldHVybiAtRUZBVUxUOwogCisjdW5kZWYgWExBVF9pb21tdV9vcF91X3F1 ZXJ5X3Jlc2VydmVkCisKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUvcHVibGljL2lvbW11X29wLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvaW9tbXVfb3AuaAppbmRl eCBjM2I2OGY2NjVhLi5hZGU0MDRhODc3IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMv aW9tbXVfb3AuaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvaW9tbXVfb3AuaApAQCAtMjUsMTEg KzI1LDUwIEBACiAKICNpbmNsdWRlICJ4ZW4uaCIKIAordHlwZWRlZiB1aW50NjRfdCB4ZW5fYmZu X3Q7CisKKy8qIFN0cnVjdHVyZSBkZXNjcmliaW5nIGEgc2luZ2xlIHJhbmdlIHJlc2VydmVkIGlu IHRoZSBJT01NVSAqLworc3RydWN0IHhlbl9pb21tdV9yZXNlcnZlZF9yYW5nZSB7CisgICAgeGVu X2Jmbl90IHN0YXJ0X2JmbjsKKyAgICB1bnNpZ25lZCBpbnQgbnJfZnJhbWVzOworICAgIHVuc2ln bmVkIGludCBwYWQ7Cit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX2lvbW11X3Jlc2VydmVkX3Jhbmdl IHhlbl9pb21tdV9yZXNlcnZlZF9yYW5nZV90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVu X2lvbW11X3Jlc2VydmVkX3JhbmdlX3QpOworCisvKgorICogWEVOX0lPTU1VT1BfcXVlcnlfcmVz ZXJ2ZWQ6IFF1ZXJ5IHJhbmdlcyByZXNlcnZlZCBpbiB0aGUgSU9NTVUuCisgKi8KKyNkZWZpbmUg WEVOX0lPTU1VT1BfcXVlcnlfcmVzZXJ2ZWQgMQorCitzdHJ1Y3QgeGVuX2lvbW11X29wX3F1ZXJ5 X3Jlc2VydmVkIHsKKyAgICAvKgorICAgICAqIElOL09VVCAtIE9uIGVudHJ5IHRoaXMgaXMgdGhl IG51bWJlciBvZiBlbnRyaWVzIGF2YWlsYWJsZQorICAgICAqICAgICAgICAgIGluIHRoZSByYW5n ZXMgYXJyYXkgYmVsb3cuCisgICAgICogICAgICAgICAgT24gZXhpdCB0aGlzIGlzIHRoZSBhY3R1 YWwgbnVtYmVyIG9mIHJlc2VydmVkIHJhbmdlcy4KKyAgICAgKi8KKyAgICB1bnNpZ25lZCBpbnQg bnJfZW50cmllczsKKyAgICB1bnNpZ25lZCBpbnQgcGFkOworICAgIC8qCisgICAgICogT1VUIC0g VGhpcyBhcnJheSBpcyBwb3B1bGF0ZWQgd2l0aCByZXNlcnZlZCByYW5nZXMuIElmIGl0IGlzCisg ICAgICogICAgICAgbm90IHN1ZmZpY2llbnRseSBsYXJnZSB0aGVuIGF2YWlsYWJsZSBlbnRyaWVz IGFyZSBwb3B1bGF0ZWQsCisgICAgICogICAgICAgYnV0IHRoZSBvcCBzdGF0dXMgY29kZSB3aWxs IGJlIHNldCB0byAtRU5PQlVGUy4KKyAgICAgKiAgICAgICBJdCBpcyBwZXJtaXNzYWJsZSB0byBz ZXQgdGhpcyB0byBOVUxMIGlmIG5yX2VudHJpZXMgaXMgYWxzbworICAgICAqICAgICAgIHNldCB0 byB6ZXJvLiBJbiB0aGlzIGNhc2UsIG9uIGV4aXQsIG5yX2VudHJpZXMgd2lsbCBzdGlsbCBiZQor ICAgICAqICAgICAgIHNldCB0byB0aGUgYWN0dWFsIG51bWJlciBvZiByZXNlcnZlZCByYW5nZXMg YnV0IHRoZSBzdGF0dXMKKyAgICAgKiAgICAgICBjb2RlIHdpbGwgYmUgc2V0IHRvIHplcm8uCisg ICAgICovCisgICAgWEVOX0dVRVNUX0hBTkRMRSh4ZW5faW9tbXVfcmVzZXJ2ZWRfcmFuZ2VfdCkg cmFuZ2VzOworfTsKKwogc3RydWN0IHhlbl9pb21tdV9vcCB7CiAgICAgdWludDE2X3Qgb3A7ICAg IC8qIG9wIHR5cGUgKi8KICAgICB1aW50MTZfdCBwYWQ7CiAgICAgaW50MzJfdCBzdGF0dXM7IC8q IG9wIGNvbXBsZXRpb24gc3RhdHVzOiAqLwogICAgICAgICAgICAgICAgICAgICAvKiAwIGZvciBz dWNjZXNzIG90aGVyd2lzZSwgbmVnYXRpdmUgZXJybm8gKi8KKyAgICB1bmlvbiB7CisgICAgICAg IHN0cnVjdCB4ZW5faW9tbXVfb3BfcXVlcnlfcmVzZXJ2ZWQgcXVlcnlfcmVzZXJ2ZWQ7CisgICAg fSB1OwogfTsKIHR5cGVkZWYgc3RydWN0IHhlbl9pb21tdV9vcCB4ZW5faW9tbXVfb3BfdDsKIERF RklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9pb21tdV9vcF90KTsKZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL3hsYXQubHN0IGIveGVuL2luY2x1ZGUveGxhdC5sc3QKaW5kZXggM2IxNWMxOGM0ZS4u ZDJmOWIxMDM0YiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGxhdC5sc3QKKysrIGIveGVuL2lu Y2x1ZGUveGxhdC5sc3QKQEAgLTc5LDYgKzc5LDggQEAKID8JdmNwdV9odm1feDg2XzY0CQkJaHZt L2h2bV92Y3B1LmgKICEJaW9tbXVfb3AJCQlpb21tdV9vcC5oCiAhCWlvbW11X29wX2J1ZgkJCWlv bW11X29wLmgKKyEJaW9tbXVfb3BfcXVlcnlfcmVzZXJ2ZWQJCWlvbW11X29wLmgKKz8JaW9tbXVf cmVzZXJ2ZWRfcmFuZ2UJCWlvbW11X29wLmgKID8Ja2V4ZWNfZXhlYwkJCWtleGVjLmgKICEJa2V4 ZWNfaW1hZ2UJCQlrZXhlYy5oCiAhCWtleGVjX3JhbmdlCQkJa2V4ZWMuaAotLSAKMi4xMS4wCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0 cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==