From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Xu, Quan" Subject: [PATCH v8 09/11] vt-d: fix the IOMMU flush issue Date: Mon, 13 Jun 2016 23:17:16 +0800 Message-ID: <1465831038-43005-10-git-send-email-quan.xu@intel.com> References: <1465831038-43005-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: <1465831038-43005-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 YW4gWHUgPHF1YW4ueHVAaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogSmFuIEJldWxpY2ggPGpiZXVs aWNoQHN1c2UuY29tPgoKQ0M6IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPgpDQzog RmVuZyBXdSA8ZmVuZy53dUBpbnRlbC5jb20+CkNDOiBLZWlyIEZyYXNlciA8a2VpckB4ZW4ub3Jn PgpDQzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDQzogQW5kcmV3IENvb3BlciA8 YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KCnY4OiBkcm9wIGFzc2VydGlvbiBhbmQgY2hlY2sg Ym90aCBmbHVzaF9jb250ZXh0IGFuZCBmbHVzaF9pb3RsYgogICAgd2hldGhlciB0aGUgcmV0dXJu IHZhbHVlcyBhcmUgcG9zaXRpdmUuCiAgICAobm90ZTogdGhpcyBjaGFuZ2UgaXMgbm90IHVuZGVy IEphbidzIFItYikuCi0tLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMgfCAx NTAgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwg MTAzIGluc2VydGlvbnMoKyksIDQ3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9kcml2 ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRk L2lvbW11LmMKaW5kZXggNDhlZGI2Ny4uMmYwNDZjYiAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRk L2lvbW11LmMKQEAgLTM4OCwxNyArMzg4LDE4IEBAIHN0YXRpYyBpbnQgZmx1c2hfY29udGV4dF9y ZWcoCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgaW9tbXVfZmx1c2hfY29udGV4dF9n bG9iYWwoCi0gICAgc3RydWN0IGlvbW11ICppb21tdSwgaW50IGZsdXNoX25vbl9wcmVzZW50X2Vu dHJ5KQorc3RhdGljIGludCBfX211c3RfY2hlY2sgaW9tbXVfZmx1c2hfY29udGV4dF9nbG9iYWwo c3RydWN0IGlvbW11ICppb21tdSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBmbHVzaF9ub25fcHJlc2VudF9lbnRyeSkKIHsKICAgICBzdHJ1 Y3QgaW9tbXVfZmx1c2ggKmZsdXNoID0gaW9tbXVfZ2V0X2ZsdXNoKGlvbW11KTsKICAgICByZXR1 cm4gZmx1c2gtPmNvbnRleHQoaW9tbXUsIDAsIDAsIDAsIERNQV9DQ01EX0dMT0JBTF9JTlZMLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmx1c2hfbm9uX3ByZXNlbnRfZW50cnkp OwogfQogCi1zdGF0aWMgaW50IGlvbW11X2ZsdXNoX2NvbnRleHRfZGV2aWNlKAotICAgIHN0cnVj dCBpb21tdSAqaW9tbXUsIHUxNiBkaWQsIHUxNiBzb3VyY2VfaWQsCi0gICAgdTggZnVuY3Rpb25f bWFzaywgaW50IGZsdXNoX25vbl9wcmVzZW50X2VudHJ5KQorc3RhdGljIGludCBfX211c3RfY2hl Y2sgaW9tbXVfZmx1c2hfY29udGV4dF9kZXZpY2Uoc3RydWN0IGlvbW11ICppb21tdSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUxNiBkaWQsIHUx NiBzb3VyY2VfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1OCBmdW5jdGlvbl9tYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IGZsdXNoX25vbl9wcmVzZW50X2VudHJ5KQogewogICAg IHN0cnVjdCBpb21tdV9mbHVzaCAqZmx1c2ggPSBpb21tdV9nZXRfZmx1c2goaW9tbXUpOwogICAg IHJldHVybiBmbHVzaC0+Y29udGV4dChpb21tdSwgZGlkLCBzb3VyY2VfaWQsIGZ1bmN0aW9uX21h c2ssCkBAIC00NzMsOCArNDc0LDkgQEAgc3RhdGljIGludCBmbHVzaF9pb3RsYl9yZWcodm9pZCAq X2lvbW11LCB1MTYgZGlkLAogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGlvbW11X2Zs dXNoX2lvdGxiX2dsb2JhbChzdHJ1Y3QgaW9tbXUgKmlvbW11LAotICAgIGludCBmbHVzaF9ub25f cHJlc2VudF9lbnRyeSwgaW50IGZsdXNoX2Rldl9pb3RsYikKK3N0YXRpYyBpbnQgX19tdXN0X2No ZWNrIGlvbW11X2ZsdXNoX2lvdGxiX2dsb2JhbChzdHJ1Y3QgaW9tbXUgKmlvbW11LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbHVzaF9ub25f cHJlc2VudF9lbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgZmx1c2hfZGV2X2lvdGxiKQogewogICAgIHN0cnVjdCBpb21tdV9mbHVzaCAq Zmx1c2ggPSBpb21tdV9nZXRfZmx1c2goaW9tbXUpOwogICAgIGludCBzdGF0dXM7CkBAIC00OTEs OCArNDkzLDkgQEAgc3RhdGljIGludCBpb21tdV9mbHVzaF9pb3RsYl9nbG9iYWwoc3RydWN0IGlv bW11ICppb21tdSwKICAgICByZXR1cm4gc3RhdHVzOwogfQogCi1zdGF0aWMgaW50IGlvbW11X2Zs dXNoX2lvdGxiX2RzaShzdHJ1Y3QgaW9tbXUgKmlvbW11LCB1MTYgZGlkLAotICAgIGludCBmbHVz aF9ub25fcHJlc2VudF9lbnRyeSwgaW50IGZsdXNoX2Rldl9pb3RsYikKK3N0YXRpYyBpbnQgX19t dXN0X2NoZWNrIGlvbW11X2ZsdXNoX2lvdGxiX2RzaShzdHJ1Y3QgaW9tbXUgKmlvbW11LCB1MTYg ZGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBm bHVzaF9ub25fcHJlc2VudF9lbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgZmx1c2hfZGV2X2lvdGxiKQogewogICAgIHN0cnVjdCBpb21tdV9m bHVzaCAqZmx1c2ggPSBpb21tdV9nZXRfZmx1c2goaW9tbXUpOwogICAgIGludCBzdGF0dXM7CkBA IC01MDksOSArNTEyLDEwIEBAIHN0YXRpYyBpbnQgaW9tbXVfZmx1c2hfaW90bGJfZHNpKHN0cnVj dCBpb21tdSAqaW9tbXUsIHUxNiBkaWQsCiAgICAgcmV0dXJuIHN0YXR1czsKIH0KIAotc3RhdGlj IGludCBpb21tdV9mbHVzaF9pb3RsYl9wc2koCi0gICAgc3RydWN0IGlvbW11ICppb21tdSwgdTE2 IGRpZCwgdTY0IGFkZHIsIHVuc2lnbmVkIGludCBvcmRlciwKLSAgICBpbnQgZmx1c2hfbm9uX3By ZXNlbnRfZW50cnksIGludCBmbHVzaF9kZXZfaW90bGIpCitzdGF0aWMgaW50IF9fbXVzdF9jaGVj ayBpb21tdV9mbHVzaF9pb3RsYl9wc2koc3RydWN0IGlvbW11ICppb21tdSwgdTE2IGRpZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1NjQgYWRkciwgdW5z aWduZWQgaW50IG9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCBmbHVzaF9ub25fcHJlc2VudF9lbnRyeSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmx1c2hfZGV2X2lvdGxiKQogewogICAgIHN0 cnVjdCBpb21tdV9mbHVzaCAqZmx1c2ggPSBpb21tdV9nZXRfZmx1c2goaW9tbXUpOwogICAgIGlu dCBzdGF0dXM7CkBAIC01NDYsMTcgKzU1MCwzNyBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBp b21tdV9mbHVzaF9hbGwodm9pZCkKICAgICBzdHJ1Y3QgYWNwaV9kcmhkX3VuaXQgKmRyaGQ7CiAg ICAgc3RydWN0IGlvbW11ICppb21tdTsKICAgICBpbnQgZmx1c2hfZGV2X2lvdGxiOworICAgIGlu dCByYyA9IDA7CiAKICAgICBmbHVzaF9hbGxfY2FjaGUoKTsKICAgICBmb3JfZWFjaF9kcmhkX3Vu aXQgKCBkcmhkICkKICAgICB7CisgICAgICAgIGludCBpb21tdV9yYywgaW9tbXVfcmV0OworCiAg ICAgICAgIGlvbW11ID0gZHJoZC0+aW9tbXU7Ci0gICAgICAgIGlvbW11X2ZsdXNoX2NvbnRleHRf Z2xvYmFsKGlvbW11LCAwKTsKKyAgICAgICAgaW9tbXVfcmMgPSBpb21tdV9mbHVzaF9jb250ZXh0 X2dsb2JhbChpb21tdSwgMCk7CiAgICAgICAgIGZsdXNoX2Rldl9pb3RsYiA9IGZpbmRfYXRzX2Rl dl9kcmhkKGlvbW11KSA/IDEgOiAwOwotICAgICAgICBpb21tdV9mbHVzaF9pb3RsYl9nbG9iYWwo aW9tbXUsIDAsIGZsdXNoX2Rldl9pb3RsYik7CisgICAgICAgIGlvbW11X3JldCA9IGlvbW11X2Zs dXNoX2lvdGxiX2dsb2JhbChpb21tdSwgMCwgZmx1c2hfZGV2X2lvdGxiKTsKKworICAgICAgICAv KgorICAgICAgICAgKiBUaGUgY3VycmVudCBsb2dpYyBmb3IgcmV0dXJuczoKKyAgICAgICAgICog ICAtIHBvc2l0aXZlICBpbnZva2UgaW9tbXVfZmx1c2hfd3JpdGVfYnVmZmVyIHRvIGZsdXNoIGNh Y2hlLgorICAgICAgICAgKiAgIC0gemVybyAgICAgIG9uIHN1Y2Nlc3MuCisgICAgICAgICAqICAg LSBuZWdhdGl2ZSAgb24gZmFpbHVyZS4gQ29udGludWUgdG8gZmx1c2ggSU9NTVUgSU9UTEIgb24g YQorICAgICAgICAgKiAgICAgICAgICAgICAgIGJlc3QgZWZmb3J0IGJhc2lzLgorICAgICAgICAg Ki8KKyAgICAgICAgaWYgKCBpb21tdV9yYyA+IDAgfHwgaW9tbXVfcmV0ID4gMCApCisgICAgICAg ICAgICBpb21tdV9mbHVzaF93cml0ZV9idWZmZXIoaW9tbXUpOworICAgICAgICBpZiAoIHJjID49 IDAgKQorICAgICAgICAgICAgcmMgPSBpb21tdV9yYzsKKyAgICAgICAgaWYgKCByYyA+PSAwICkK KyAgICAgICAgICAgIHJjID0gaW9tbXVfcmV0OwogICAgIH0KIAotICAgIHJldHVybiAwOworICAg IGlmICggcmMgPiAwICkKKyAgICAgICAgcmMgPSAwOworCisgICAgcmV0dXJuIHJjOwogfQogCiBz dGF0aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYihzdHJ1Y3QgZG9tYWluICpk LApAQCAtNTY5LDYgKzU5Myw3IEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2ZsdXNo X2lvdGxiKHN0cnVjdCBkb21haW4gKmQsCiAgICAgc3RydWN0IGlvbW11ICppb21tdTsKICAgICBp bnQgZmx1c2hfZGV2X2lvdGxiOwogICAgIGludCBpb21tdV9kb21pZDsKKyAgICBpbnQgcmMgPSAw OwogCiAgICAgLyoKICAgICAgKiBObyBuZWVkIHBjaWRldmVzX2xvY2sgaGVyZSBiZWNhdXNlIHdl IGhhdmUgZmx1c2gKQEAgLTU4NywyMSArNjEyLDIzIEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNr IGlvbW11X2ZsdXNoX2lvdGxiKHN0cnVjdCBkb21haW4gKmQsCiAgICAgICAgICAgICBjb250aW51 ZTsKIAogICAgICAgICBpZiAoIHBhZ2VfY291bnQgIT0gMSB8fCBnZm4gPT0gSU5WQUxJRF9HRk4g KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIGlvbW11X2ZsdXNoX2lvdGxiX2RzaShpb21t dSwgaW9tbXVfZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAwLCBmbHVzaF9kZXZfaW90 bGIpICkKLSAgICAgICAgICAgICAgICBpb21tdV9mbHVzaF93cml0ZV9idWZmZXIoaW9tbXUpOwot ICAgICAgICB9CisgICAgICAgICAgICByYyA9IGlvbW11X2ZsdXNoX2lvdGxiX2RzaShpb21tdSwg aW9tbXVfZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBm bHVzaF9kZXZfaW90bGIpOwogICAgICAgICBlbHNlCisgICAgICAgICAgICByYyA9IGlvbW11X2Zs dXNoX2lvdGxiX3BzaShpb21tdSwgaW9tbXVfZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAocGFkZHJfdClnZm4gPDwgUEFHRV9TSElGVF80SywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBR0VfT1JERVJfNEssCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhZG1hX29sZF9wdGVfcHJlc2VudCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsdXNoX2Rldl9pb3RsYik7CisKKyAg ICAgICAgaWYgKCByYyA+IDAgKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIGlvbW11X2Zs dXNoX2lvdGxiX3BzaShpb21tdSwgaW9tbXVfZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAg ICAocGFkZHJfdClnZm4gPDwgUEFHRV9TSElGVF80SywgUEFHRV9PUkRFUl80SywKLSAgICAgICAg ICAgICAgICAgICAgICAgICFkbWFfb2xkX3B0ZV9wcmVzZW50LCBmbHVzaF9kZXZfaW90bGIpICkK LSAgICAgICAgICAgICAgICBpb21tdV9mbHVzaF93cml0ZV9idWZmZXIoaW9tbXUpOworICAgICAg ICAgICAgaW9tbXVfZmx1c2hfd3JpdGVfYnVmZmVyKGlvbW11KTsKKyAgICAgICAgICAgIHJjID0g MDsKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiAwOworICAgIHJldHVybiByYzsKIH0K IAogc3RhdGljIGludCBfX211c3RfY2hlY2sgaW9tbXVfZmx1c2hfaW90bGJfcGFnZXMoc3RydWN0 IGRvbWFpbiAqZCwKQEAgLTEyOTAsNyArMTMxNyw4IEBAIGludCBkb21haW5fY29udGV4dF9tYXBw aW5nX29uZSgKICAgICBzdHJ1Y3QgY29udGV4dF9lbnRyeSAqY29udGV4dCwgKmNvbnRleHRfZW50 cmllczsKICAgICB1NjQgbWFkZHIsIHBnZF9tYWRkcjsKICAgICB1MTYgc2VnID0gaW9tbXUtPmlu dGVsLT5kcmhkLT5zZWdtZW50OwotICAgIGludCBhZ2F3OworICAgIGludCBhZ2F3LCByYywgcmV0 OworICAgIGludCBmbHVzaF9kZXZfaW90bGI7CiAKICAgICBBU1NFUlQocGNpZGV2c19sb2NrZWQo KSk7CiAgICAgc3Bpbl9sb2NrKCZpb21tdS0+bG9jayk7CkBAIC0xNDA0LDE0ICsxNDMyLDI0IEBA IGludCBkb21haW5fY29udGV4dF9tYXBwaW5nX29uZSgKICAgICBzcGluX3VubG9jaygmaW9tbXUt PmxvY2spOwogCiAgICAgLyogQ29udGV4dCBlbnRyeSB3YXMgcHJldmlvdXNseSBub24tcHJlc2Vu dCAod2l0aCBkb21pZCAwKS4gKi8KLSAgICBpZiAoIGlvbW11X2ZsdXNoX2NvbnRleHRfZGV2aWNl KGlvbW11LCAwLCAoKCh1MTYpYnVzKSA8PCA4KSB8IGRldmZuLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRE1BX0NDTURfTUFTS19OT0JJVCwgMSkgKQorICAgIHJjID0gaW9t bXVfZmx1c2hfY29udGV4dF9kZXZpY2UoaW9tbXUsIDAsIFBDSV9CREYyKGJ1cywgZGV2Zm4pLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRE1BX0NDTURfTUFTS19OT0JJVCwg MSk7CisgICAgZmx1c2hfZGV2X2lvdGxiID0gZmluZF9hdHNfZGV2X2RyaGQoaW9tbXUpID8gMSA6 IDA7CisgICAgcmV0ID0gaW9tbXVfZmx1c2hfaW90bGJfZHNpKGlvbW11LCAwLCAxLCBmbHVzaF9k ZXZfaW90bGIpOworCisgICAgLyoKKyAgICAgKiBUaGUgY3VycmVudCBsb2dpYyBmb3IgcmV0dXJu czoKKyAgICAgKiAgIC0gcG9zaXRpdmUgIGludm9rZSBpb21tdV9mbHVzaF93cml0ZV9idWZmZXIg dG8gZmx1c2ggY2FjaGUuCisgICAgICogICAtIHplcm8gICAgICBvbiBzdWNjZXNzLgorICAgICAq ICAgLSBuZWdhdGl2ZSAgb24gZmFpbHVyZS4gQ29udGludWUgdG8gZmx1c2ggSU9NTVUgSU9UTEIg b24gYQorICAgICAqICAgICAgICAgICAgICAgYmVzdCBlZmZvcnQgYmFzaXMuCisgICAgICovCisg ICAgaWYgKCByYyA+IDAgfHwgcmV0ID4gMCApCiAgICAgICAgIGlvbW11X2ZsdXNoX3dyaXRlX2J1 ZmZlcihpb21tdSk7Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgaW50IGZsdXNoX2Rldl9pb3Rs YiA9IGZpbmRfYXRzX2Rldl9kcmhkKGlvbW11KSA/IDEgOiAwOwotICAgICAgICBpb21tdV9mbHVz aF9pb3RsYl9kc2koaW9tbXUsIDAsIDEsIGZsdXNoX2Rldl9pb3RsYik7Ci0gICAgfQorICAgIGlm ICggcmMgPj0gMCApCisgICAgICAgIHJjID0gcmV0OworICAgIGlmICggcmMgPiAwICkKKyAgICAg ICAgcmMgPSAwOwogCiAgICAgc2V0X2JpdChpb21tdS0+aW5kZXgsICZoZC0+YXJjaC5pb21tdV9i aXRtYXApOwogCkBAIC0xNDIwLDcgKzE0NTgsNyBAQCBpbnQgZG9tYWluX2NvbnRleHRfbWFwcGlu Z19vbmUoCiAgICAgaWYgKCAhc2VnICkKICAgICAgICAgbWVfd2lmaV9xdWlyayhkb21haW4sIGJ1 cywgZGV2Zm4sIE1BUF9NRV9QSEFOVE9NX0ZVTkMpOwogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0 dXJuIHJjOwogfQogCiBzdGF0aWMgaW50IGRvbWFpbl9jb250ZXh0X21hcHBpbmcoCkBAIC0xNTE0 LDcgKzE1NTIsOCBAQCBpbnQgZG9tYWluX2NvbnRleHRfdW5tYXBfb25lKAogewogICAgIHN0cnVj dCBjb250ZXh0X2VudHJ5ICpjb250ZXh0LCAqY29udGV4dF9lbnRyaWVzOwogICAgIHU2NCBtYWRk cjsKLSAgICBpbnQgaW9tbXVfZG9taWQ7CisgICAgaW50IGlvbW11X2RvbWlkLCByYywgcmV0Owor ICAgIGludCBmbHVzaF9kZXZfaW90bGI7CiAKICAgICBBU1NFUlQocGNpZGV2c19sb2NrZWQoKSk7 CiAgICAgc3Bpbl9sb2NrKCZpb21tdS0+bG9jayk7CkBAIC0xNTQyLDE1ICsxNTgxLDI2IEBAIGlu dCBkb21haW5fY29udGV4dF91bm1hcF9vbmUoCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwogICAg IH0KIAotICAgIGlmICggaW9tbXVfZmx1c2hfY29udGV4dF9kZXZpY2UoaW9tbXUsIGlvbW11X2Rv bWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgodTE2KWJ1cykgPDwg OCkgfCBkZXZmbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERNQV9DQ01E X01BU0tfTk9CSVQsIDApICkKKyAgICByYyA9IGlvbW11X2ZsdXNoX2NvbnRleHRfZGV2aWNlKGlv bW11LCBpb21tdV9kb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBD SV9CREYyKGJ1cywgZGV2Zm4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg RE1BX0NDTURfTUFTS19OT0JJVCwgMCk7CisKKyAgICBmbHVzaF9kZXZfaW90bGIgPSBmaW5kX2F0 c19kZXZfZHJoZChpb21tdSkgPyAxIDogMDsKKyAgICByZXQgPSBpb21tdV9mbHVzaF9pb3RsYl9k c2koaW9tbXUsIGlvbW11X2RvbWlkLCAwLCBmbHVzaF9kZXZfaW90bGIpOworCisgICAgLyoKKyAg ICAgKiBUaGUgY3VycmVudCBsb2dpYyBmb3IgcmV0dXJuczoKKyAgICAgKiAgIC0gcG9zaXRpdmUg IGludm9rZSBpb21tdV9mbHVzaF93cml0ZV9idWZmZXIgdG8gZmx1c2ggY2FjaGUuCisgICAgICog ICAtIHplcm8gICAgICBvbiBzdWNjZXNzLgorICAgICAqICAgLSBuZWdhdGl2ZSAgb24gZmFpbHVy ZS4gQ29udGludWUgdG8gZmx1c2ggSU9NTVUgSU9UTEIgb24gYQorICAgICAqICAgICAgICAgICAg ICAgYmVzdCBlZmZvcnQgYmFzaXMuCisgICAgICovCisgICAgaWYgKCByYyA+IDAgfHwgcmV0ID4g MCApCiAgICAgICAgIGlvbW11X2ZsdXNoX3dyaXRlX2J1ZmZlcihpb21tdSk7Ci0gICAgZWxzZQot ICAgIHsKLSAgICAgICAgaW50IGZsdXNoX2Rldl9pb3RsYiA9IGZpbmRfYXRzX2Rldl9kcmhkKGlv bW11KSA/IDEgOiAwOwotICAgICAgICBpb21tdV9mbHVzaF9pb3RsYl9kc2koaW9tbXUsIGlvbW11 X2RvbWlkLCAwLCBmbHVzaF9kZXZfaW90bGIpOwotICAgIH0KKyAgICBpZiAoIHJjID49IDAgKQor ICAgICAgICByYyA9IHJldDsKKyAgICBpZiAoIHJjID4gMCApCisgICAgICAgIHJjID0gMDsKIAog ICAgIHNwaW5fdW5sb2NrKCZpb21tdS0+bG9jayk7CiAgICAgdW5tYXBfdnRkX2RvbWFpbl9wYWdl KGNvbnRleHRfZW50cmllcyk7CkBAIC0xNTU4LDcgKzE2MDgsNyBAQCBpbnQgZG9tYWluX2NvbnRl eHRfdW5tYXBfb25lKAogICAgIGlmICggIWlvbW11LT5pbnRlbC0+ZHJoZC0+c2VnbWVudCApCiAg ICAgICAgIG1lX3dpZmlfcXVpcmsoZG9tYWluLCBidXMsIGRldmZuLCBVTk1BUF9NRV9QSEFOVE9N X0ZVTkMpOwogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgaW50 IGRvbWFpbl9jb250ZXh0X3VubWFwKApAQCAtMTc3Miw2ICsxODIyLDcgQEAgaW50IGlvbW11X3B0 ZV9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLCB1NjQgZ2ZuLCB1NjQgKnB0ZSwKICAgICBzdHJ1Y3Qg ZG9tYWluX2lvbW11ICpoZCA9IGRvbV9pb21tdShkKTsKICAgICBpbnQgZmx1c2hfZGV2X2lvdGxi OwogICAgIGludCBpb21tdV9kb21pZDsKKyAgICBpbnQgcmMgPSAwOwogCiAgICAgaW9tbXVfZmx1 c2hfY2FjaGVfZW50cnkocHRlLCBzaXplb2Yoc3RydWN0IGRtYV9wdGUpKTsKIApAQCAtMTc4NSwx MyArMTgzNiwxOCBAQCBpbnQgaW9tbXVfcHRlX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHU2NCBn Zm4sIHU2NCAqcHRlLAogICAgICAgICBpb21tdV9kb21pZD0gZG9tYWluX2lvbW11X2RvbWlkKGQs IGlvbW11KTsKICAgICAgICAgaWYgKCBpb21tdV9kb21pZCA9PSAtMSApCiAgICAgICAgICAgICBj b250aW51ZTsKLSAgICAgICAgaWYgKCBpb21tdV9mbHVzaF9pb3RsYl9wc2koaW9tbXUsIGlvbW11 X2RvbWlkLAorCisgICAgICAgIHJjID0gaW9tbXVfZmx1c2hfaW90bGJfcHNpKGlvbW11LCBpb21t dV9kb21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhZGRyX3QpZ2Zu IDw8IFBBR0VfU0hJRlRfNEssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9y ZGVyLCAhcHJlc2VudCwgZmx1c2hfZGV2X2lvdGxiKSApCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG9yZGVyLCAhcHJlc2VudCwgZmx1c2hfZGV2X2lvdGxiKTsKKyAgICAgICAg aWYgKCByYyA+IDAgKQorICAgICAgICB7CiAgICAgICAgICAgICBpb21tdV9mbHVzaF93cml0ZV9i dWZmZXIoaW9tbXUpOworICAgICAgICAgICAgcmMgPSAwOworICAgICAgICB9CiAgICAgfQogCi0g ICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgaW50IF9faW5pdCB2dGRf ZXB0X3BhZ2VfY29tcGF0aWJsZShzdHJ1Y3QgaW9tbXUgKmlvbW11KQotLSAKMS45LjEKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFp bGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hl bi1kZXZlbAo=