From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Xu, Quan" Subject: [Patch v6 09/11] vt-d: fix the IOMMU flush issue Date: Tue, 31 May 2016 21:57:34 +0800 Message-ID: <1464703056-4741-10-git-send-email-quan.xu@intel.com> References: <1464703056-4741-1-git-send-email-quan.xu@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1464703056-4741-1-git-send-email-quan.xu@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Kevin Tian , Keir Fraser , Quan Xu , Andrew Cooper , dario.faggioli@citrix.com, Jan Beulich , Feng Wu List-Id: xen-devel@lists.xenproject.org RnJvbTogUXVhbiBYdSA8cXVhbi54dUBpbnRlbC5jb20+CgpUaGUgcHJvcGFnYXRpb24gdmFsdWUg ZnJvbSBJT01NVSBmbHVzaCBpbnRlcmZhY2VzIG1heSBiZSBwb3NpdGl2ZSwgd2hpY2gKaW5kaWNh dGVzIGNhbGxlcnMgbmVlZCB0byBmbHVzaCBjYWNoZSwgbm90IG9uZSBvZiBmYWxpdXJlcy4KCndo ZW4gdGhlIHByb3BhZ2F0aW9uIHZhbHVlIGlzIHBvc2l0aXZlLCB0aGlzIHBhdGNoIGZpeGVzIHRo aXMgZmx1c2ggaXNzdWUKYXMgZm9sbG93czoKICAtIGNhbGwgaW9tbXVfZmx1c2hfd3JpdGVfYnVm ZmVyKCkgdG8gZmx1c2ggY2FjaGUuCiAgLSByZXR1cm4gemVyby4KClNpZ25lZC1vZmYtYnk6IFF1 YW4gWHUgPHF1YW4ueHVAaW50ZWwuY29tPgoKQ0M6IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50 ZWwuY29tPgpDQzogRmVuZyBXdSA8ZmVuZy53dUBpbnRlbC5jb20+CkNDOiBLZWlyIEZyYXNlciA8 a2VpckB4ZW4ub3JnPgpDQzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDQzogQW5k cmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KCnY2OgogIDEuIERyb3AgYmxh bmsgbGluZXMuCiAgMi4gQ2hhbmdlICcoKCh1MTYpYnVzKSA8PCA4KSB8IGRldmZuJyB0byAnUENJ X0JERjIoYnVzLCBkZXZmbiknLgogIDMuIEludHJvZHVjZSByYyBmb3IgaW9tbXVfZmx1c2hfY29u dGV4dF9kZXZpY2UoKSAvIHJldCBmb3IKICAgICBpb21tdV9mbHVzaF9pb3RsYl9kc2koKSwgYWRk aW5nICBBU1NFUlQoKSBiZWhpbmQuCiAgNC4gRW5oYW5jZSBjb21tZW50cy4KICA1LiBGaXggaW9t bXVfZmx1c2hfY29udGV4dF8qKCkuCi0tLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lv bW11LmMgfCAxNzAgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCiAxIGZpbGUg Y2hhbmdlZCwgMTI4IGluc2VydGlvbnMoKyksIDQyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jIGIveGVuL2RyaXZlcnMvcGFzc3Ro cm91Z2gvdnRkL2lvbW11LmMKaW5kZXggMDc4OGE1OS4uNzIwYjg2NyAxMDA2NDQKLS0tIGEveGVu L2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Ro cm91Z2gvdnRkL2lvbW11LmMKQEAgLTM4OCwxNyArMzg4LDE4IEBAIHN0YXRpYyBpbnQgZmx1c2hf Y29udGV4dF9yZWcoCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgaW9tbXVfZmx1c2hf Y29udGV4dF9nbG9iYWwoCi0gICAgc3RydWN0IGlvbW11ICppb21tdSwgaW50IGZsdXNoX25vbl9w cmVzZW50X2VudHJ5KQorc3RhdGljIGludCBfX211c3RfY2hlY2sgaW9tbXVfZmx1c2hfY29udGV4 dF9nbG9iYWwoc3RydWN0IGlvbW11ICppb21tdSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbHVzaF9ub25fcHJlc2VudF9lbnRyeSkKIHsK ICAgICBzdHJ1Y3QgaW9tbXVfZmx1c2ggKmZsdXNoID0gaW9tbXVfZ2V0X2ZsdXNoKGlvbW11KTsK ICAgICByZXR1cm4gZmx1c2gtPmNvbnRleHQoaW9tbXUsIDAsIDAsIDAsIERNQV9DQ01EX0dMT0JB TF9JTlZMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmx1c2hfbm9uX3ByZXNl bnRfZW50cnkpOwogfQogCi1zdGF0aWMgaW50IGlvbW11X2ZsdXNoX2NvbnRleHRfZGV2aWNlKAot ICAgIHN0cnVjdCBpb21tdSAqaW9tbXUsIHUxNiBkaWQsIHUxNiBzb3VyY2VfaWQsCi0gICAgdTgg ZnVuY3Rpb25fbWFzaywgaW50IGZsdXNoX25vbl9wcmVzZW50X2VudHJ5KQorc3RhdGljIGludCBf X211c3RfY2hlY2sgaW9tbXVfZmx1c2hfY29udGV4dF9kZXZpY2Uoc3RydWN0IGlvbW11ICppb21t dSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUx NiBkaWQsIHUxNiBzb3VyY2VfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1OCBmdW5jdGlvbl9tYXNrLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsdXNoX25vbl9wcmVzZW50X2VudHJ5 KQogewogICAgIHN0cnVjdCBpb21tdV9mbHVzaCAqZmx1c2ggPSBpb21tdV9nZXRfZmx1c2goaW9t bXUpOwogICAgIHJldHVybiBmbHVzaC0+Y29udGV4dChpb21tdSwgZGlkLCBzb3VyY2VfaWQsIGZ1 bmN0aW9uX21hc2ssCkBAIC00NzMsOCArNDc0LDkgQEAgc3RhdGljIGludCBmbHVzaF9pb3RsYl9y ZWcodm9pZCAqX2lvbW11LCB1MTYgZGlkLAogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgaW50 IGlvbW11X2ZsdXNoX2lvdGxiX2dsb2JhbChzdHJ1Y3QgaW9tbXUgKmlvbW11LAotICAgIGludCBm bHVzaF9ub25fcHJlc2VudF9lbnRyeSwgaW50IGZsdXNoX2Rldl9pb3RsYikKK3N0YXRpYyBpbnQg X19tdXN0X2NoZWNrIGlvbW11X2ZsdXNoX2lvdGxiX2dsb2JhbChzdHJ1Y3QgaW9tbXUgKmlvbW11 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBm bHVzaF9ub25fcHJlc2VudF9lbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgZmx1c2hfZGV2X2lvdGxiKQogewogICAgIHN0cnVjdCBpb21t dV9mbHVzaCAqZmx1c2ggPSBpb21tdV9nZXRfZmx1c2goaW9tbXUpOwogICAgIGludCBzdGF0dXM7 CkBAIC00OTEsOCArNDkzLDkgQEAgc3RhdGljIGludCBpb21tdV9mbHVzaF9pb3RsYl9nbG9iYWwo c3RydWN0IGlvbW11ICppb21tdSwKICAgICByZXR1cm4gc3RhdHVzOwogfQogCi1zdGF0aWMgaW50 IGlvbW11X2ZsdXNoX2lvdGxiX2RzaShzdHJ1Y3QgaW9tbXUgKmlvbW11LCB1MTYgZGlkLAotICAg IGludCBmbHVzaF9ub25fcHJlc2VudF9lbnRyeSwgaW50IGZsdXNoX2Rldl9pb3RsYikKK3N0YXRp YyBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2ZsdXNoX2lvdGxiX2RzaShzdHJ1Y3QgaW9tbXUgKmlv bW11LCB1MTYgZGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGludCBmbHVzaF9ub25fcHJlc2VudF9lbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmx1c2hfZGV2X2lvdGxiKQogewogICAgIHN0cnVj dCBpb21tdV9mbHVzaCAqZmx1c2ggPSBpb21tdV9nZXRfZmx1c2goaW9tbXUpOwogICAgIGludCBz dGF0dXM7CkBAIC01MDksOSArNTEyLDEwIEBAIHN0YXRpYyBpbnQgaW9tbXVfZmx1c2hfaW90bGJf ZHNpKHN0cnVjdCBpb21tdSAqaW9tbXUsIHUxNiBkaWQsCiAgICAgcmV0dXJuIHN0YXR1czsKIH0K IAotc3RhdGljIGludCBpb21tdV9mbHVzaF9pb3RsYl9wc2koCi0gICAgc3RydWN0IGlvbW11ICpp b21tdSwgdTE2IGRpZCwgdTY0IGFkZHIsIHVuc2lnbmVkIGludCBvcmRlciwKLSAgICBpbnQgZmx1 c2hfbm9uX3ByZXNlbnRfZW50cnksIGludCBmbHVzaF9kZXZfaW90bGIpCitzdGF0aWMgaW50IF9f bXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYl9wc2koc3RydWN0IGlvbW11ICppb21tdSwgdTE2 IGRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1NjQg YWRkciwgdW5zaWduZWQgaW50IG9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBmbHVzaF9ub25fcHJlc2VudF9lbnRyeSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmx1c2hfZGV2X2lvdGxiKQog ewogICAgIHN0cnVjdCBpb21tdV9mbHVzaCAqZmx1c2ggPSBpb21tdV9nZXRfZmx1c2goaW9tbXUp OwogICAgIGludCBzdGF0dXM7CkBAIC01NDYsMTcgKzU1MCw0MyBAQCBzdGF0aWMgaW50IF9fbXVz dF9jaGVjayBpb21tdV9mbHVzaF9hbGwodm9pZCkKICAgICBzdHJ1Y3QgYWNwaV9kcmhkX3VuaXQg KmRyaGQ7CiAgICAgc3RydWN0IGlvbW11ICppb21tdTsKICAgICBpbnQgZmx1c2hfZGV2X2lvdGxi OworICAgIGludCByYyA9IDA7CiAKICAgICBmbHVzaF9hbGxfY2FjaGUoKTsKICAgICBmb3JfZWFj aF9kcmhkX3VuaXQgKCBkcmhkICkKICAgICB7CiAgICAgICAgIGlvbW11ID0gZHJoZC0+aW9tbXU7 Ci0gICAgICAgIGlvbW11X2ZsdXNoX2NvbnRleHRfZ2xvYmFsKGlvbW11LCAwKTsKLSAgICAgICAg Zmx1c2hfZGV2X2lvdGxiID0gZmluZF9hdHNfZGV2X2RyaGQoaW9tbXUpID8gMSA6IDA7Ci0gICAg ICAgIGlvbW11X2ZsdXNoX2lvdGxiX2dsb2JhbChpb21tdSwgMCwgZmx1c2hfZGV2X2lvdGxiKTsK KyAgICAgICAgLyoKKyAgICAgICAgICogVGhlIGN1cnJlbnQgbG9naWMgZm9yIHJjIHJldHVybnM6 CisgICAgICAgICAqICAgLSBwb3NpdGl2ZSAgaW52b2tlIGlvbW11X2ZsdXNoX3dyaXRlX2J1ZmZl ciB0byBmbHVzaCBjYWNoZS4KKyAgICAgICAgICogICAtIHplcm8gICAgICBvbiBzdWNjZXNzLgor ICAgICAgICAgKiAgIC0gbmVnYXRpdmUgIG9uIGZhaWx1cmUuIENvbnRpbnVlIHRvIGZsdXNoIElP TU1VIElPVExCIG9uIGEKKyAgICAgICAgICogICAgICAgICAgICAgICBiZXN0IGVmZm9ydCBiYXNp cy4KKyAgICAgICAgICoKKyAgICAgICAgICogTW9yZW92ZXIsIElPTU1VIGZsdXNoIGhhbmRsZXJz IGZsdXNoX2NvbnRleHRfcWkgYW5kIGZsdXNoX2lvdGxiX3FpCisgICAgICAgICAqIChvciBmbHVz aF9jb250ZXh0X3JlZyBhbmQgZmx1c2hfaW90bGJfcmVnLCBkZWVwIGZ1bmN0aW9ucyBpbiB0aGUK KyAgICAgICAgICogY2FsbCB0cmVlcyBvZiBpb21tdV9mbHVzaF9jb250ZXh0X2dsb2JhbCBhbmQg aW9tbXVfZmx1c2hfaW90bGJfZ2xvYmFsKQorICAgICAgICAgKiBhcmUgd2l0aCB0aGUgc2FtZSBs b2dpYyB0byBidWJibGUgdXAgcG9zaXRpdmUgcmV0dXJuIHZhbHVlLgorICAgICAgICAgKi8KKyAg ICAgICAgcmMgPSBpb21tdV9mbHVzaF9jb250ZXh0X2dsb2JhbChpb21tdSwgMCk7CisgICAgICAg IGlmICggcmMgPD0gMCApCisgICAgICAgIHsKKyAgICAgICAgICAgIGludCByZXQ7CisKKyAgICAg ICAgICAgIGZsdXNoX2Rldl9pb3RsYiA9IGZpbmRfYXRzX2Rldl9kcmhkKGlvbW11KSA/IDEgOiAw OworICAgICAgICAgICAgcmV0ID0gaW9tbXVfZmx1c2hfaW90bGJfZ2xvYmFsKGlvbW11LCAwLCBm bHVzaF9kZXZfaW90bGIpOworICAgICAgICAgICAgQVNTRVJUKHJldCA8PSAwKTsKKyAgICAgICAg ICAgIGlmICggIXJjICkKKyAgICAgICAgICAgICAgICByYyA9IHJldDsKKyAgICAgICAgfQorICAg ICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlvbW11X2ZsdXNoX3dyaXRlX2J1ZmZl cihpb21tdSk7CisgICAgICAgICAgICByYyA9IDA7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBy ZXR1cm4gMDsKKyAgICByZXR1cm4gcmM7CiB9CiAKIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlv bW11X2ZsdXNoX2lvdGxiKHN0cnVjdCBkb21haW4gKmQsCkBAIC01NjksNiArNTk5LDcgQEAgc3Rh dGljIGludCBfX211c3RfY2hlY2sgaW9tbXVfZmx1c2hfaW90bGIoc3RydWN0IGRvbWFpbiAqZCwK ICAgICBzdHJ1Y3QgaW9tbXUgKmlvbW11OwogICAgIGludCBmbHVzaF9kZXZfaW90bGI7CiAgICAg aW50IGlvbW11X2RvbWlkOworICAgIGludCByYyA9IDA7CiAKICAgICAvKgogICAgICAqIE5vIG5l ZWQgcGNpZGV2ZXNfbG9jayBoZXJlIGJlY2F1c2Ugd2UgaGF2ZSBmbHVzaApAQCAtNTg3LDIxICs2 MTgsMjMgQEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgaW9tbXVfZmx1c2hfaW90bGIoc3RydWN0 IGRvbWFpbiAqZCwKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmICggcGFnZV9j b3VudCAhPSAxIHx8IGdmbiA9PSBJTlZBTElEX0dGTiApCi0gICAgICAgIHsKLSAgICAgICAgICAg IGlmICggaW9tbXVfZmx1c2hfaW90bGJfZHNpKGlvbW11LCBpb21tdV9kb21pZCwKLSAgICAgICAg ICAgICAgICAgICAgICAgIDAsIGZsdXNoX2Rldl9pb3RsYikgKQotICAgICAgICAgICAgICAgIGlv bW11X2ZsdXNoX3dyaXRlX2J1ZmZlcihpb21tdSk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIHJj ID0gaW9tbXVfZmx1c2hfaW90bGJfZHNpKGlvbW11LCBpb21tdV9kb21pZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGZsdXNoX2Rldl9pb3RsYik7CiAgICAgICAg IGVsc2UKKyAgICAgICAgICAgIHJjID0gaW9tbXVfZmx1c2hfaW90bGJfcHNpKGlvbW11LCBpb21t dV9kb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWRkcl90 KWdmbiA8PCBQQUdFX1NISUZUXzRLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUEFHRV9PUkRFUl80SywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICFkbWFfb2xkX3B0ZV9wcmVzZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZmx1c2hfZGV2X2lvdGxiKTsKKworICAgICAgICBpZiAoIHJjID4gMCApCiAgICAg ICAgIHsKLSAgICAgICAgICAgIGlmICggaW9tbXVfZmx1c2hfaW90bGJfcHNpKGlvbW11LCBpb21t dV9kb21pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIChwYWRkcl90KWdmbiA8PCBQQUdFX1NI SUZUXzRLLCBQQUdFX09SREVSXzRLLAotICAgICAgICAgICAgICAgICAgICAgICAgIWRtYV9vbGRf cHRlX3ByZXNlbnQsIGZsdXNoX2Rldl9pb3RsYikgKQotICAgICAgICAgICAgICAgIGlvbW11X2Zs dXNoX3dyaXRlX2J1ZmZlcihpb21tdSk7CisgICAgICAgICAgICBpb21tdV9mbHVzaF93cml0ZV9i dWZmZXIoaW9tbXUpOworICAgICAgICAgICAgcmMgPSAwOwogICAgICAgICB9CiAgICAgfQogCi0g ICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgaW50IF9fbXVzdF9jaGVj ayBpb21tdV9mbHVzaF9pb3RsYl9wYWdlcyhzdHJ1Y3QgZG9tYWluICpkLApAQCAtMTI5MSw2ICsx MzI0LDcgQEAgaW50IGRvbWFpbl9jb250ZXh0X21hcHBpbmdfb25lKAogICAgIHU2NCBtYWRkciwg cGdkX21hZGRyOwogICAgIHUxNiBzZWcgPSBpb21tdS0+aW50ZWwtPmRyaGQtPnNlZ21lbnQ7CiAg ICAgaW50IGFnYXc7CisgICAgaW50IHJjOwogCiAgICAgQVNTRVJUKHBjaWRldnNfbG9ja2VkKCkp OwogICAgIHNwaW5fbG9jaygmaW9tbXUtPmxvY2spOwpAQCAtMTQwNCwxMyArMTQzOCwzNSBAQCBp bnQgZG9tYWluX2NvbnRleHRfbWFwcGluZ19vbmUoCiAgICAgc3Bpbl91bmxvY2soJmlvbW11LT5s b2NrKTsKIAogICAgIC8qIENvbnRleHQgZW50cnkgd2FzIHByZXZpb3VzbHkgbm9uLXByZXNlbnQg KHdpdGggZG9taWQgMCkuICovCi0gICAgaWYgKCBpb21tdV9mbHVzaF9jb250ZXh0X2RldmljZShp b21tdSwgMCwgKCgodTE2KWJ1cykgPDwgOCkgfCBkZXZmbiwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIERNQV9DQ01EX01BU0tfTk9CSVQsIDEpICkKLSAgICAgICAgaW9tbXVf Zmx1c2hfd3JpdGVfYnVmZmVyKGlvbW11KTsKLSAgICBlbHNlCisgICAgcmMgPSBpb21tdV9mbHVz aF9jb250ZXh0X2RldmljZShpb21tdSwgMCwgUENJX0JERjIoYnVzLCBkZXZmbiksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBETUFfQ0NNRF9NQVNLX05PQklULCAxKTsKKwor ICAgIC8qCisgICAgICogVGhlIGN1cnJlbnQgbG9naWMgZm9yIHJjIHJldHVybnM6CisgICAgICog ICAtIHBvc2l0aXZlICBpbnZva2UgaW9tbXVfZmx1c2hfd3JpdGVfYnVmZmVyIHRvIGZsdXNoIGNh Y2hlLgorICAgICAqICAgLSB6ZXJvICAgICAgb24gc3VjY2Vzcy4KKyAgICAgKiAgIC0gbmVnYXRp dmUgIG9uIGZhaWx1cmUuIENvbnRpbnVlIHRvIGZsdXNoIElPTU1VIElPVExCIG9uIGEKKyAgICAg KiAgICAgICAgICAgICAgIGJlc3QgZWZmb3J0IGJhc2lzLgorICAgICAqCisgICAgICogTW9yZW92 ZXIsIElPTU1VIGZsdXNoIGhhbmRsZXJzIGZsdXNoX2NvbnRleHRfcWkgb3IgZmx1c2hfaW90bGJf cWkKKyAgICAgKiAob3IgZmx1c2hfY29udGV4dF9yZWcgYW5kIGZsdXNoX2lvdGxiX3JlZywgZGVl cCBmdW5jdGlvbnMgaW4gdGhlCisgICAgICogY2FsbCB0cmVlcyBvZiBpb21tdV9mbHVzaF9jb250 ZXh0X2RldmljZSBhbmQgaW9tbXVfZmx1c2hfaW90bGJfZHNpKQorICAgICAqIGFyZSB3aXRoIHRo ZSBzYW1lIGxvZ2ljIHRvIGJ1YmJsZSB1cCBwb3NpdGl2ZSByZXR1cm4gdmFsdWUuCisgICAgICov CisgICAgaWYgKCByYyA8PSAwICkKICAgICB7CiAgICAgICAgIGludCBmbHVzaF9kZXZfaW90bGIg PSBmaW5kX2F0c19kZXZfZHJoZChpb21tdSkgPyAxIDogMDsKLSAgICAgICAgaW9tbXVfZmx1c2hf aW90bGJfZHNpKGlvbW11LCAwLCAxLCBmbHVzaF9kZXZfaW90bGIpOworICAgICAgICBpbnQgcmV0 OworCisgICAgICAgIHJldCA9IGlvbW11X2ZsdXNoX2lvdGxiX2RzaShpb21tdSwgMCwgMSwgZmx1 c2hfZGV2X2lvdGxiKTsKKyAgICAgICAgQVNTRVJUKHJldCA8PSAwKTsKKyAgICAgICAgaWYgKCAh cmMgKQorICAgICAgICAgICAgcmMgPSByZXQ7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAg ICAgIGlvbW11X2ZsdXNoX3dyaXRlX2J1ZmZlcihpb21tdSk7CisgICAgICAgIHJjID0gMDsKICAg ICB9CiAKICAgICBzZXRfYml0KGlvbW11LT5pbmRleCwgJmhkLT5hcmNoLmlvbW11X2JpdG1hcCk7 CkBAIC0xNDIwLDcgKzE0NzYsNyBAQCBpbnQgZG9tYWluX2NvbnRleHRfbWFwcGluZ19vbmUoCiAg ICAgaWYgKCAhc2VnICkKICAgICAgICAgbWVfd2lmaV9xdWlyayhkb21haW4sIGJ1cywgZGV2Zm4s IE1BUF9NRV9QSEFOVE9NX0ZVTkMpOwogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHJjOwog fQogCiBzdGF0aWMgaW50IGRvbWFpbl9jb250ZXh0X21hcHBpbmcoCkBAIC0xNTE1LDYgKzE1NzEs NyBAQCBpbnQgZG9tYWluX2NvbnRleHRfdW5tYXBfb25lKAogICAgIHN0cnVjdCBjb250ZXh0X2Vu dHJ5ICpjb250ZXh0LCAqY29udGV4dF9lbnRyaWVzOwogICAgIHU2NCBtYWRkcjsKICAgICBpbnQg aW9tbXVfZG9taWQ7CisgICAgaW50IHJjOwogCiAgICAgQVNTRVJUKHBjaWRldnNfbG9ja2VkKCkp OwogICAgIHNwaW5fbG9jaygmaW9tbXUtPmxvY2spOwpAQCAtMTUzNSw2ICsxNTkyLDcgQEAgaW50 IGRvbWFpbl9jb250ZXh0X3VubWFwX29uZSgKICAgICBpb21tdV9mbHVzaF9jYWNoZV9lbnRyeShj b250ZXh0LCBzaXplb2Yoc3RydWN0IGNvbnRleHRfZW50cnkpKTsKIAogICAgIGlvbW11X2RvbWlk PSBkb21haW5faW9tbXVfZG9taWQoZG9tYWluLCBpb21tdSk7CisKICAgICBpZiAoIGlvbW11X2Rv bWlkID09IC0xICkKICAgICB7CiAgICAgICAgIHNwaW5fdW5sb2NrKCZpb21tdS0+bG9jayk7CkBA IC0xNTQyLDE0ICsxNjAwLDM2IEBAIGludCBkb21haW5fY29udGV4dF91bm1hcF9vbmUoCiAgICAg ICAgIHJldHVybiAtRUlOVkFMOwogICAgIH0KIAotICAgIGlmICggaW9tbXVfZmx1c2hfY29udGV4 dF9kZXZpY2UoaW9tbXUsIGlvbW11X2RvbWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKCgodTE2KWJ1cykgPDwgOCkgfCBkZXZmbiwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIERNQV9DQ01EX01BU0tfTk9CSVQsIDApICkKLSAgICAgICAgaW9tbXVf Zmx1c2hfd3JpdGVfYnVmZmVyKGlvbW11KTsKLSAgICBlbHNlCisgICAgcmMgPSBpb21tdV9mbHVz aF9jb250ZXh0X2RldmljZShpb21tdSwgaW9tbXVfZG9taWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQQ0lfQkRGMihidXMsIGRldmZuKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIERNQV9DQ01EX01BU0tfTk9CSVQsIDApOworCisgICAgLyoKKyAg ICAgKiBUaGUgY3VycmVudCBsb2dpYyBmb3IgcmMgcmV0dXJuczoKKyAgICAgKiAgIC0gcG9zaXRp dmUgIGludm9rZSBpb21tdV9mbHVzaF93cml0ZV9idWZmZXIgdG8gZmx1c2ggY2FjaGUuCisgICAg ICogICAtIHplcm8gICAgICBvbiBzdWNjZXNzLgorICAgICAqICAgLSBuZWdhdGl2ZSAgb24gZmFp bHVyZS4gQ29udGludWUgdG8gZmx1c2ggSU9NTVUgSU9UTEIgb24gYQorICAgICAqICAgICAgICAg ICAgICAgYmVzdCBlZmZvcnQgYmFzaXMuCisgICAgICoKKyAgICAgKiBNb3Jlb3ZlciwgSU9NTVUg Zmx1c2ggaGFuZGxlcnMgZmx1c2hfY29udGV4dF9xaSBvciBmbHVzaF9pb3RsYl9xaQorICAgICAq IChvciBmbHVzaF9jb250ZXh0X3JlZyBhbmQgZmx1c2hfaW90bGJfcmVnLCBkZWVwIGZ1bmN0aW9u cyBpbiB0aGUKKyAgICAgKiBjYWxsIHRyZWVzIG9mIGlvbW11X2ZsdXNoX2NvbnRleHRfZGV2aWNl IGFuZCBpb21tdV9mbHVzaF9pb3RsYl9kc2kpCisgICAgICogYXJlIHdpdGggdGhlIHNhbWUgbG9n aWMgdG8gYnViYmxlIHVwIHBvc2l0aXZlIHJldHVybiB2YWx1ZS4KKyAgICAgKi8KKyAgICBpZiAo IHJjIDw9IDAgKQogICAgIHsKICAgICAgICAgaW50IGZsdXNoX2Rldl9pb3RsYiA9IGZpbmRfYXRz X2Rldl9kcmhkKGlvbW11KSA/IDEgOiAwOwotICAgICAgICBpb21tdV9mbHVzaF9pb3RsYl9kc2ko aW9tbXUsIGlvbW11X2RvbWlkLCAwLCBmbHVzaF9kZXZfaW90bGIpOworICAgICAgICBpbnQgcmV0 OworCisgICAgICAgIHJldCA9IGlvbW11X2ZsdXNoX2lvdGxiX2RzaShpb21tdSwgaW9tbXVfZG9t aWQsIDAsIGZsdXNoX2Rldl9pb3RsYik7CisgICAgICAgIEFTU0VSVChyZXQgPD0gMCk7CisgICAg ICAgIGlmICggIXJjICkKKyAgICAgICAgICAgIHJjID0gcmV0OworICAgIH0KKyAgICBlbHNlCisg ICAgeworICAgICAgICBpb21tdV9mbHVzaF93cml0ZV9idWZmZXIoaW9tbXUpOworICAgICAgICBy YyA9IDA7CiAgICAgfQogCiAgICAgc3Bpbl91bmxvY2soJmlvbW11LT5sb2NrKTsKQEAgLTE1NTgs NyArMTYzOCw3IEBAIGludCBkb21haW5fY29udGV4dF91bm1hcF9vbmUoCiAgICAgaWYgKCAhaW9t bXUtPmludGVsLT5kcmhkLT5zZWdtZW50ICkKICAgICAgICAgbWVfd2lmaV9xdWlyayhkb21haW4s IGJ1cywgZGV2Zm4sIFVOTUFQX01FX1BIQU5UT01fRlVOQyk7CiAKLSAgICByZXR1cm4gMDsKKyAg ICByZXR1cm4gcmM7CiB9CiAKIHN0YXRpYyBpbnQgZG9tYWluX2NvbnRleHRfdW5tYXAoCkBAIC0x NzcyLDYgKzE4NTIsNyBAQCBpbnQgaW9tbXVfcHRlX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHU2 NCBnZm4sIHU2NCAqcHRlLAogICAgIHN0cnVjdCBkb21haW5faW9tbXUgKmhkID0gZG9tX2lvbW11 KGQpOwogICAgIGludCBmbHVzaF9kZXZfaW90bGI7CiAgICAgaW50IGlvbW11X2RvbWlkOworICAg IGludCByYyA9IDA7CiAKICAgICBpb21tdV9mbHVzaF9jYWNoZV9lbnRyeShwdGUsIHNpemVvZihz dHJ1Y3QgZG1hX3B0ZSkpOwogCkBAIC0xNzg1LDEzICsxODY2LDE4IEBAIGludCBpb21tdV9wdGVf Zmx1c2goc3RydWN0IGRvbWFpbiAqZCwgdTY0IGdmbiwgdTY0ICpwdGUsCiAgICAgICAgIGlvbW11 X2RvbWlkPSBkb21haW5faW9tbXVfZG9taWQoZCwgaW9tbXUpOwogICAgICAgICBpZiAoIGlvbW11 X2RvbWlkID09IC0xICkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIGlvbW11 X2ZsdXNoX2lvdGxiX3BzaShpb21tdSwgaW9tbXVfZG9taWQsCisKKyAgICAgICAgcmMgPSBpb21t dV9mbHVzaF9pb3RsYl9wc2koaW9tbXUsIGlvbW11X2RvbWlkLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAocGFkZHJfdClnZm4gPDwgUEFHRV9TSElGVF80SywKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIsICFwcmVzZW50LCBmbHVzaF9kZXZfaW90 bGIpICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIsICFwcmVzZW50 LCBmbHVzaF9kZXZfaW90bGIpOworICAgICAgICBpZiAoIHJjID4gMCApCisgICAgICAgIHsKICAg ICAgICAgICAgIGlvbW11X2ZsdXNoX3dyaXRlX2J1ZmZlcihpb21tdSk7CisgICAgICAgICAgICBy YyA9IDA7CisgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcmM7 CiB9CiAKIHN0YXRpYyBpbnQgX19pbml0IHZ0ZF9lcHRfcGFnZV9jb21wYXRpYmxlKHN0cnVjdCBp b21tdSAqaW9tbXUpCi0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhl bi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==