From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Xu, Quan" Subject: [PATCH v7 09/11] vt-d: fix the IOMMU flush issue Date: Wed, 8 Jun 2016 16:59:02 +0800 Message-ID: <1465376344-28290-10-git-send-email-quan.xu@intel.com> References: <1465376344-28290-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: <1465376344-28290-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 YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KCnY3OgogIDEuIERyb3AgYmxhbmsgbGluZXMuCiAg Mi4gbWFrZSB0aGUgYXNzaWdubWVudCBiZSByZXBsYWNlZCBieSBpdHMgcmlnaHQgc2lkZSBiZWNv bWluZwogICAgIHRoZSB2YXJpYWJsZSdzIGluaXRpYWxpemVyLgogIDMuIGxlYXZlIHRoZSBjb21t ZW50cyBhcyBhcmUsIG5vIHJlcGx5IGZyb20gVlQtZCBtYWludGFpbmVycyB5ZXQuCi0tLQogeGVu L2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMgfCAxNjcgKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTI0IGluc2VydGlvbnMoKyksIDQz IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9p b21tdS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKaW5kZXggNDhlZGI2 Ny4uMmE1NTk4NSAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11 LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKQEAgLTM4OCwxNyAr Mzg4LDE4IEBAIHN0YXRpYyBpbnQgZmx1c2hfY29udGV4dF9yZWcoCiAgICAgcmV0dXJuIDA7CiB9 CiAKLXN0YXRpYyBpbnQgaW9tbXVfZmx1c2hfY29udGV4dF9nbG9iYWwoCi0gICAgc3RydWN0IGlv bW11ICppb21tdSwgaW50IGZsdXNoX25vbl9wcmVzZW50X2VudHJ5KQorc3RhdGljIGludCBfX211 c3RfY2hlY2sgaW9tbXVfZmx1c2hfY29udGV4dF9nbG9iYWwoc3RydWN0IGlvbW11ICppb21tdSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBm bHVzaF9ub25fcHJlc2VudF9lbnRyeSkKIHsKICAgICBzdHJ1Y3QgaW9tbXVfZmx1c2ggKmZsdXNo ID0gaW9tbXVfZ2V0X2ZsdXNoKGlvbW11KTsKICAgICByZXR1cm4gZmx1c2gtPmNvbnRleHQoaW9t bXUsIDAsIDAsIDAsIERNQV9DQ01EX0dMT0JBTF9JTlZMLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZmx1c2hfbm9uX3ByZXNlbnRfZW50cnkpOwogfQogCi1zdGF0aWMgaW50IGlv bW11X2ZsdXNoX2NvbnRleHRfZGV2aWNlKAotICAgIHN0cnVjdCBpb21tdSAqaW9tbXUsIHUxNiBk aWQsIHUxNiBzb3VyY2VfaWQsCi0gICAgdTggZnVuY3Rpb25fbWFzaywgaW50IGZsdXNoX25vbl9w cmVzZW50X2VudHJ5KQorc3RhdGljIGludCBfX211c3RfY2hlY2sgaW9tbXVfZmx1c2hfY29udGV4 dF9kZXZpY2Uoc3RydWN0IGlvbW11ICppb21tdSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHUxNiBkaWQsIHUxNiBzb3VyY2VfaWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OCBmdW5jdGlvbl9t YXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IGZsdXNoX25vbl9wcmVzZW50X2VudHJ5KQogewogICAgIHN0cnVjdCBpb21tdV9mbHVzaCAq Zmx1c2ggPSBpb21tdV9nZXRfZmx1c2goaW9tbXUpOwogICAgIHJldHVybiBmbHVzaC0+Y29udGV4 dChpb21tdSwgZGlkLCBzb3VyY2VfaWQsIGZ1bmN0aW9uX21hc2ssCkBAIC00NzMsOCArNDc0LDkg QEAgc3RhdGljIGludCBmbHVzaF9pb3RsYl9yZWcodm9pZCAqX2lvbW11LCB1MTYgZGlkLAogICAg IHJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGlvbW11X2ZsdXNoX2lvdGxiX2dsb2JhbChzdHJ1 Y3QgaW9tbXUgKmlvbW11LAotICAgIGludCBmbHVzaF9ub25fcHJlc2VudF9lbnRyeSwgaW50IGZs dXNoX2Rldl9pb3RsYikKK3N0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2ZsdXNoX2lvdGxi X2dsb2JhbChzdHJ1Y3QgaW9tbXUgKmlvbW11LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCBmbHVzaF9ub25fcHJlc2VudF9lbnRyeSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmx1c2hfZGV2 X2lvdGxiKQogewogICAgIHN0cnVjdCBpb21tdV9mbHVzaCAqZmx1c2ggPSBpb21tdV9nZXRfZmx1 c2goaW9tbXUpOwogICAgIGludCBzdGF0dXM7CkBAIC00OTEsOCArNDkzLDkgQEAgc3RhdGljIGlu dCBpb21tdV9mbHVzaF9pb3RsYl9nbG9iYWwoc3RydWN0IGlvbW11ICppb21tdSwKICAgICByZXR1 cm4gc3RhdHVzOwogfQogCi1zdGF0aWMgaW50IGlvbW11X2ZsdXNoX2lvdGxiX2RzaShzdHJ1Y3Qg aW9tbXUgKmlvbW11LCB1MTYgZGlkLAotICAgIGludCBmbHVzaF9ub25fcHJlc2VudF9lbnRyeSwg aW50IGZsdXNoX2Rldl9pb3RsYikKK3N0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2ZsdXNo X2lvdGxiX2RzaShzdHJ1Y3QgaW9tbXUgKmlvbW11LCB1MTYgZGlkLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbHVzaF9ub25fcHJlc2VudF9lbnRy eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmx1 c2hfZGV2X2lvdGxiKQogewogICAgIHN0cnVjdCBpb21tdV9mbHVzaCAqZmx1c2ggPSBpb21tdV9n ZXRfZmx1c2goaW9tbXUpOwogICAgIGludCBzdGF0dXM7CkBAIC01MDksOSArNTEyLDEwIEBAIHN0 YXRpYyBpbnQgaW9tbXVfZmx1c2hfaW90bGJfZHNpKHN0cnVjdCBpb21tdSAqaW9tbXUsIHUxNiBk aWQsCiAgICAgcmV0dXJuIHN0YXR1czsKIH0KIAotc3RhdGljIGludCBpb21tdV9mbHVzaF9pb3Rs Yl9wc2koCi0gICAgc3RydWN0IGlvbW11ICppb21tdSwgdTE2IGRpZCwgdTY0IGFkZHIsIHVuc2ln bmVkIGludCBvcmRlciwKLSAgICBpbnQgZmx1c2hfbm9uX3ByZXNlbnRfZW50cnksIGludCBmbHVz aF9kZXZfaW90bGIpCitzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYl9w c2koc3RydWN0IGlvbW11ICppb21tdSwgdTE2IGRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1NjQgYWRkciwgdW5zaWduZWQgaW50IG9yZGVyLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbHVzaF9ub25f cHJlc2VudF9lbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgZmx1c2hfZGV2X2lvdGxiKQogewogICAgIHN0cnVjdCBpb21tdV9mbHVzaCAqZmx1 c2ggPSBpb21tdV9nZXRfZmx1c2goaW9tbXUpOwogICAgIGludCBzdGF0dXM7CkBAIC01NDUsMTgg KzU0OSw0MiBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9hbGwodm9pZCkK IHsKICAgICBzdHJ1Y3QgYWNwaV9kcmhkX3VuaXQgKmRyaGQ7CiAgICAgc3RydWN0IGlvbW11ICpp b21tdTsKLSAgICBpbnQgZmx1c2hfZGV2X2lvdGxiOworICAgIGludCByYyA9IDA7CiAKICAgICBm bHVzaF9hbGxfY2FjaGUoKTsKICAgICBmb3JfZWFjaF9kcmhkX3VuaXQgKCBkcmhkICkKICAgICB7 CiAgICAgICAgIGlvbW11ID0gZHJoZC0+aW9tbXU7Ci0gICAgICAgIGlvbW11X2ZsdXNoX2NvbnRl eHRfZ2xvYmFsKGlvbW11LCAwKTsKLSAgICAgICAgZmx1c2hfZGV2X2lvdGxiID0gZmluZF9hdHNf ZGV2X2RyaGQoaW9tbXUpID8gMSA6IDA7Ci0gICAgICAgIGlvbW11X2ZsdXNoX2lvdGxiX2dsb2Jh bChpb21tdSwgMCwgZmx1c2hfZGV2X2lvdGxiKTsKKyAgICAgICAgLyoKKyAgICAgICAgICogVGhl IGN1cnJlbnQgbG9naWMgZm9yIHJjIHJldHVybnM6CisgICAgICAgICAqICAgLSBwb3NpdGl2ZSAg aW52b2tlIGlvbW11X2ZsdXNoX3dyaXRlX2J1ZmZlciB0byBmbHVzaCBjYWNoZS4KKyAgICAgICAg ICogICAtIHplcm8gICAgICBvbiBzdWNjZXNzLgorICAgICAgICAgKiAgIC0gbmVnYXRpdmUgIG9u IGZhaWx1cmUuIENvbnRpbnVlIHRvIGZsdXNoIElPTU1VIElPVExCIG9uIGEKKyAgICAgICAgICog ICAgICAgICAgICAgICBiZXN0IGVmZm9ydCBiYXNpcy4KKyAgICAgICAgICoKKyAgICAgICAgICog TW9yZW92ZXIsIElPTU1VIGZsdXNoIGhhbmRsZXJzIGZsdXNoX2NvbnRleHRfcWkgYW5kIGZsdXNo X2lvdGxiX3FpCisgICAgICAgICAqIChvciBmbHVzaF9jb250ZXh0X3JlZyBhbmQgZmx1c2hfaW90 bGJfcmVnLCBkZWVwIGZ1bmN0aW9ucyBpbiB0aGUKKyAgICAgICAgICogY2FsbCB0cmVlcyBvZiBp b21tdV9mbHVzaF9jb250ZXh0X2dsb2JhbCBhbmQgaW9tbXVfZmx1c2hfaW90bGJfZ2xvYmFsKQor ICAgICAgICAgKiBhcmUgd2l0aCB0aGUgc2FtZSBsb2dpYyB0byBidWJibGUgdXAgcG9zaXRpdmUg cmV0dXJuIHZhbHVlLgorICAgICAgICAgKi8KKyAgICAgICAgcmMgPSBpb21tdV9mbHVzaF9jb250 ZXh0X2dsb2JhbChpb21tdSwgMCk7CisgICAgICAgIGlmICggcmMgPD0gMCApCisgICAgICAgIHsK KyAgICAgICAgICAgIGludCBmbHVzaF9kZXZfaW90bGIgPSBmaW5kX2F0c19kZXZfZHJoZChpb21t dSkgPyAxIDogMDsKKyAgICAgICAgICAgIGludCByZXQgPSBpb21tdV9mbHVzaF9pb3RsYl9nbG9i YWwoaW9tbXUsIDAsIGZsdXNoX2Rldl9pb3RsYik7CisKKyAgICAgICAgICAgIEFTU0VSVChyZXQg PD0gMCk7CisgICAgICAgICAgICBpZiAoICFyYyApCisgICAgICAgICAgICAgICAgcmMgPSByZXQ7 CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBpb21tdV9m bHVzaF93cml0ZV9idWZmZXIoaW9tbXUpOworICAgICAgICAgICAgcmMgPSAwOworICAgICAgICB9 CiAgICAgfQogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgaW50 IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYihzdHJ1Y3QgZG9tYWluICpkLApAQCAtNTY5 LDYgKzU5Nyw3IEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2ZsdXNoX2lvdGxiKHN0 cnVjdCBkb21haW4gKmQsCiAgICAgc3RydWN0IGlvbW11ICppb21tdTsKICAgICBpbnQgZmx1c2hf ZGV2X2lvdGxiOwogICAgIGludCBpb21tdV9kb21pZDsKKyAgICBpbnQgcmMgPSAwOwogCiAgICAg LyoKICAgICAgKiBObyBuZWVkIHBjaWRldmVzX2xvY2sgaGVyZSBiZWNhdXNlIHdlIGhhdmUgZmx1 c2gKQEAgLTU4NywyMSArNjE2LDIzIEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2Zs dXNoX2lvdGxiKHN0cnVjdCBkb21haW4gKmQsCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg ICAgICBpZiAoIHBhZ2VfY291bnQgIT0gMSB8fCBnZm4gPT0gSU5WQUxJRF9HRk4gKQotICAgICAg ICB7Ci0gICAgICAgICAgICBpZiAoIGlvbW11X2ZsdXNoX2lvdGxiX2RzaShpb21tdSwgaW9tbXVf ZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAwLCBmbHVzaF9kZXZfaW90bGIpICkKLSAg ICAgICAgICAgICAgICBpb21tdV9mbHVzaF93cml0ZV9idWZmZXIoaW9tbXUpOwotICAgICAgICB9 CisgICAgICAgICAgICByYyA9IGlvbW11X2ZsdXNoX2lvdGxiX2RzaShpb21tdSwgaW9tbXVfZG9t aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBmbHVzaF9kZXZf aW90bGIpOwogICAgICAgICBlbHNlCisgICAgICAgICAgICByYyA9IGlvbW11X2ZsdXNoX2lvdGxi X3BzaShpb21tdSwgaW9tbXVfZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAocGFkZHJfdClnZm4gPDwgUEFHRV9TSElGVF80SywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBBR0VfT1JERVJfNEssCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAhZG1hX29sZF9wdGVfcHJlc2VudCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZsdXNoX2Rldl9pb3RsYik7CisKKyAgICAgICAgaWYg KCByYyA+IDAgKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIGlvbW11X2ZsdXNoX2lvdGxi X3BzaShpb21tdSwgaW9tbXVfZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAocGFkZHJf dClnZm4gPDwgUEFHRV9TSElGVF80SywgUEFHRV9PUkRFUl80SywKLSAgICAgICAgICAgICAgICAg ICAgICAgICFkbWFfb2xkX3B0ZV9wcmVzZW50LCBmbHVzaF9kZXZfaW90bGIpICkKLSAgICAgICAg ICAgICAgICBpb21tdV9mbHVzaF93cml0ZV9idWZmZXIoaW9tbXUpOworICAgICAgICAgICAgaW9t bXVfZmx1c2hfd3JpdGVfYnVmZmVyKGlvbW11KTsKKyAgICAgICAgICAgIHJjID0gMDsKICAgICAg ICAgfQogICAgIH0KIAotICAgIHJldHVybiAwOworICAgIHJldHVybiByYzsKIH0KIAogc3RhdGlj IGludCBfX211c3RfY2hlY2sgaW9tbXVfZmx1c2hfaW90bGJfcGFnZXMoc3RydWN0IGRvbWFpbiAq ZCwKQEAgLTEyOTEsNiArMTMyMiw3IEBAIGludCBkb21haW5fY29udGV4dF9tYXBwaW5nX29uZSgK ICAgICB1NjQgbWFkZHIsIHBnZF9tYWRkcjsKICAgICB1MTYgc2VnID0gaW9tbXUtPmludGVsLT5k cmhkLT5zZWdtZW50OwogICAgIGludCBhZ2F3OworICAgIGludCByYzsKIAogICAgIEFTU0VSVChw Y2lkZXZzX2xvY2tlZCgpKTsKICAgICBzcGluX2xvY2soJmlvbW11LT5sb2NrKTsKQEAgLTE0MDQs MTMgKzE0MzYsMzQgQEAgaW50IGRvbWFpbl9jb250ZXh0X21hcHBpbmdfb25lKAogICAgIHNwaW5f dW5sb2NrKCZpb21tdS0+bG9jayk7CiAKICAgICAvKiBDb250ZXh0IGVudHJ5IHdhcyBwcmV2aW91 c2x5IG5vbi1wcmVzZW50ICh3aXRoIGRvbWlkIDApLiAqLwotICAgIGlmICggaW9tbXVfZmx1c2hf Y29udGV4dF9kZXZpY2UoaW9tbXUsIDAsICgoKHUxNilidXMpIDw8IDgpIHwgZGV2Zm4sCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBETUFfQ0NNRF9NQVNLX05PQklULCAxKSAp Ci0gICAgICAgIGlvbW11X2ZsdXNoX3dyaXRlX2J1ZmZlcihpb21tdSk7Ci0gICAgZWxzZQorICAg IHJjID0gaW9tbXVfZmx1c2hfY29udGV4dF9kZXZpY2UoaW9tbXUsIDAsIFBDSV9CREYyKGJ1cywg ZGV2Zm4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRE1BX0NDTURfTUFT S19OT0JJVCwgMSk7CisKKyAgICAvKgorICAgICAqIFRoZSBjdXJyZW50IGxvZ2ljIGZvciByYyBy ZXR1cm5zOgorICAgICAqICAgLSBwb3NpdGl2ZSAgaW52b2tlIGlvbW11X2ZsdXNoX3dyaXRlX2J1 ZmZlciB0byBmbHVzaCBjYWNoZS4KKyAgICAgKiAgIC0gemVybyAgICAgIG9uIHN1Y2Nlc3MuCisg ICAgICogICAtIG5lZ2F0aXZlICBvbiBmYWlsdXJlLiBDb250aW51ZSB0byBmbHVzaCBJT01NVSBJ T1RMQiBvbiBhCisgICAgICogICAgICAgICAgICAgICBiZXN0IGVmZm9ydCBiYXNpcy4KKyAgICAg KgorICAgICAqIE1vcmVvdmVyLCBJT01NVSBmbHVzaCBoYW5kbGVycyBmbHVzaF9jb250ZXh0X3Fp IG9yIGZsdXNoX2lvdGxiX3FpCisgICAgICogKG9yIGZsdXNoX2NvbnRleHRfcmVnIGFuZCBmbHVz aF9pb3RsYl9yZWcsIGRlZXAgZnVuY3Rpb25zIGluIHRoZQorICAgICAqIGNhbGwgdHJlZXMgb2Yg aW9tbXVfZmx1c2hfY29udGV4dF9kZXZpY2UgYW5kIGlvbW11X2ZsdXNoX2lvdGxiX2RzaSkKKyAg ICAgKiBhcmUgd2l0aCB0aGUgc2FtZSBsb2dpYyB0byBidWJibGUgdXAgcG9zaXRpdmUgcmV0dXJu IHZhbHVlLgorICAgICAqLworICAgIGlmICggcmMgPD0gMCApCiAgICAgewogICAgICAgICBpbnQg Zmx1c2hfZGV2X2lvdGxiID0gZmluZF9hdHNfZGV2X2RyaGQoaW9tbXUpID8gMSA6IDA7Ci0gICAg ICAgIGlvbW11X2ZsdXNoX2lvdGxiX2RzaShpb21tdSwgMCwgMSwgZmx1c2hfZGV2X2lvdGxiKTsK KyAgICAgICAgaW50IHJldCA9IGlvbW11X2ZsdXNoX2lvdGxiX2RzaShpb21tdSwgMCwgMSwgZmx1 c2hfZGV2X2lvdGxiKTsKKworICAgICAgICBBU1NFUlQocmV0IDw9IDApOworICAgICAgICBpZiAo ICFyYyApCisgICAgICAgICAgICByYyA9IHJldDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAg ICAgICAgaW9tbXVfZmx1c2hfd3JpdGVfYnVmZmVyKGlvbW11KTsKKyAgICAgICAgcmMgPSAwOwog ICAgIH0KIAogICAgIHNldF9iaXQoaW9tbXUtPmluZGV4LCAmaGQtPmFyY2guaW9tbXVfYml0bWFw KTsKQEAgLTE0MjAsNyArMTQ3Myw3IEBAIGludCBkb21haW5fY29udGV4dF9tYXBwaW5nX29uZSgK ICAgICBpZiAoICFzZWcgKQogICAgICAgICBtZV93aWZpX3F1aXJrKGRvbWFpbiwgYnVzLCBkZXZm biwgTUFQX01FX1BIQU5UT01fRlVOQyk7CiAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcmM7 CiB9CiAKIHN0YXRpYyBpbnQgZG9tYWluX2NvbnRleHRfbWFwcGluZygKQEAgLTE1MTUsNiArMTU2 OCw3IEBAIGludCBkb21haW5fY29udGV4dF91bm1hcF9vbmUoCiAgICAgc3RydWN0IGNvbnRleHRf ZW50cnkgKmNvbnRleHQsICpjb250ZXh0X2VudHJpZXM7CiAgICAgdTY0IG1hZGRyOwogICAgIGlu dCBpb21tdV9kb21pZDsKKyAgICBpbnQgcmM7CiAKICAgICBBU1NFUlQocGNpZGV2c19sb2NrZWQo KSk7CiAgICAgc3Bpbl9sb2NrKCZpb21tdS0+bG9jayk7CkBAIC0xNTQyLDE0ICsxNTk2LDM1IEBA IGludCBkb21haW5fY29udGV4dF91bm1hcF9vbmUoCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwog ICAgIH0KIAotICAgIGlmICggaW9tbXVfZmx1c2hfY29udGV4dF9kZXZpY2UoaW9tbXUsIGlvbW11 X2RvbWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgodTE2KWJ1cykg PDwgOCkgfCBkZXZmbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERNQV9D Q01EX01BU0tfTk9CSVQsIDApICkKLSAgICAgICAgaW9tbXVfZmx1c2hfd3JpdGVfYnVmZmVyKGlv bW11KTsKLSAgICBlbHNlCisgICAgcmMgPSBpb21tdV9mbHVzaF9jb250ZXh0X2RldmljZShpb21t dSwgaW9tbXVfZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lf QkRGMihidXMsIGRldmZuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERN QV9DQ01EX01BU0tfTk9CSVQsIDApOworCisgICAgLyoKKyAgICAgKiBUaGUgY3VycmVudCBsb2dp YyBmb3IgcmMgcmV0dXJuczoKKyAgICAgKiAgIC0gcG9zaXRpdmUgIGludm9rZSBpb21tdV9mbHVz aF93cml0ZV9idWZmZXIgdG8gZmx1c2ggY2FjaGUuCisgICAgICogICAtIHplcm8gICAgICBvbiBz dWNjZXNzLgorICAgICAqICAgLSBuZWdhdGl2ZSAgb24gZmFpbHVyZS4gQ29udGludWUgdG8gZmx1 c2ggSU9NTVUgSU9UTEIgb24gYQorICAgICAqICAgICAgICAgICAgICAgYmVzdCBlZmZvcnQgYmFz aXMuCisgICAgICoKKyAgICAgKiBNb3Jlb3ZlciwgSU9NTVUgZmx1c2ggaGFuZGxlcnMgZmx1c2hf Y29udGV4dF9xaSBvciBmbHVzaF9pb3RsYl9xaQorICAgICAqIChvciBmbHVzaF9jb250ZXh0X3Jl ZyBhbmQgZmx1c2hfaW90bGJfcmVnLCBkZWVwIGZ1bmN0aW9ucyBpbiB0aGUKKyAgICAgKiBjYWxs IHRyZWVzIG9mIGlvbW11X2ZsdXNoX2NvbnRleHRfZGV2aWNlIGFuZCBpb21tdV9mbHVzaF9pb3Rs Yl9kc2kpCisgICAgICogYXJlIHdpdGggdGhlIHNhbWUgbG9naWMgdG8gYnViYmxlIHVwIHBvc2l0 aXZlIHJldHVybiB2YWx1ZS4KKyAgICAgKi8KKyAgICBpZiAoIHJjIDw9IDAgKQogICAgIHsKICAg ICAgICAgaW50IGZsdXNoX2Rldl9pb3RsYiA9IGZpbmRfYXRzX2Rldl9kcmhkKGlvbW11KSA/IDEg OiAwOwotICAgICAgICBpb21tdV9mbHVzaF9pb3RsYl9kc2koaW9tbXUsIGlvbW11X2RvbWlkLCAw LCBmbHVzaF9kZXZfaW90bGIpOworICAgICAgICBpbnQgcmV0ID0gaW9tbXVfZmx1c2hfaW90bGJf ZHNpKGlvbW11LCBpb21tdV9kb21pZCwgMCwgZmx1c2hfZGV2X2lvdGxiKTsKKworICAgICAgICBB U1NFUlQocmV0IDw9IDApOworICAgICAgICBpZiAoICFyYyApCisgICAgICAgICAgICByYyA9IHJl dDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaW9tbXVfZmx1c2hfd3JpdGVfYnVm ZmVyKGlvbW11KTsKKyAgICAgICAgcmMgPSAwOwogICAgIH0KIAogICAgIHNwaW5fdW5sb2NrKCZp b21tdS0+bG9jayk7CkBAIC0xNTU4LDcgKzE2MzMsNyBAQCBpbnQgZG9tYWluX2NvbnRleHRfdW5t YXBfb25lKAogICAgIGlmICggIWlvbW11LT5pbnRlbC0+ZHJoZC0+c2VnbWVudCApCiAgICAgICAg IG1lX3dpZmlfcXVpcmsoZG9tYWluLCBidXMsIGRldmZuLCBVTk1BUF9NRV9QSEFOVE9NX0ZVTkMp OwogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgaW50IGRvbWFp bl9jb250ZXh0X3VubWFwKApAQCAtMTc3Miw2ICsxODQ3LDcgQEAgaW50IGlvbW11X3B0ZV9mbHVz aChzdHJ1Y3QgZG9tYWluICpkLCB1NjQgZ2ZuLCB1NjQgKnB0ZSwKICAgICBzdHJ1Y3QgZG9tYWlu X2lvbW11ICpoZCA9IGRvbV9pb21tdShkKTsKICAgICBpbnQgZmx1c2hfZGV2X2lvdGxiOwogICAg IGludCBpb21tdV9kb21pZDsKKyAgICBpbnQgcmMgPSAwOwogCiAgICAgaW9tbXVfZmx1c2hfY2Fj aGVfZW50cnkocHRlLCBzaXplb2Yoc3RydWN0IGRtYV9wdGUpKTsKIApAQCAtMTc4NSwxMyArMTg2 MSwxOCBAQCBpbnQgaW9tbXVfcHRlX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHU2NCBnZm4sIHU2 NCAqcHRlLAogICAgICAgICBpb21tdV9kb21pZD0gZG9tYWluX2lvbW11X2RvbWlkKGQsIGlvbW11 KTsKICAgICAgICAgaWYgKCBpb21tdV9kb21pZCA9PSAtMSApCiAgICAgICAgICAgICBjb250aW51 ZTsKLSAgICAgICAgaWYgKCBpb21tdV9mbHVzaF9pb3RsYl9wc2koaW9tbXUsIGlvbW11X2RvbWlk LAorCisgICAgICAgIHJjID0gaW9tbXVfZmx1c2hfaW90bGJfcHNpKGlvbW11LCBpb21tdV9kb21p ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhZGRyX3QpZ2ZuIDw8IFBB R0VfU0hJRlRfNEssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyLCAh cHJlc2VudCwgZmx1c2hfZGV2X2lvdGxiKSApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9yZGVyLCAhcHJlc2VudCwgZmx1c2hfZGV2X2lvdGxiKTsKKyAgICAgICAgaWYgKCBy YyA+IDAgKQorICAgICAgICB7CiAgICAgICAgICAgICBpb21tdV9mbHVzaF93cml0ZV9idWZmZXIo aW9tbXUpOworICAgICAgICAgICAgcmMgPSAwOworICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0 dXJuIDA7CisgICAgcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgaW50IF9faW5pdCB2dGRfZXB0X3Bh Z2VfY29tcGF0aWJsZShzdHJ1Y3QgaW9tbXUgKmlvbW11KQotLSAKMS45LjEKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBs aXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZl bAo=