From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Xu, Quan" Subject: [PATCH v10 1/3] vt-d: fix the IOMMU flush issue Date: Wed, 22 Jun 2016 15:51:08 +0800 Message-ID: <1466581870-53183-2-git-send-email-quan.xu@intel.com> References: <1466581870-53183-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: <1466581870-53183-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 YW4gWHUgPHF1YW4ueHVAaW50ZWwuY29tPgpBY2tlZC1ieTogS2V2aW4gVGlhbiA8a2V2aW4udGlh bkBpbnRlbC5jb20+CgpDQzogS2V2aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRlbC5jb20+CkNDOiBG ZW5nIFd1IDxmZW5nLnd1QGludGVsLmNvbT4KQ0M6IEtlaXIgRnJhc2VyIDxrZWlyQHhlbi5vcmc+ CkNDOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNDOiBBbmRyZXcgQ29vcGVyIDxh bmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgoKLS0tCnYxMDogY2hhbmdlICdpZiAoIGNvbnRleHRf cmMgPj0gMCApJyB0byAnaWYgKCByYyA+PSAwICknCi0tLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91 Z2gvdnRkL2lvbW11LmMgfCAxNTAgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t CiAxIGZpbGUgY2hhbmdlZCwgMTAzIGluc2VydGlvbnMoKyksIDQ3IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jIGIveGVuL2RyaXZl cnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKaW5kZXggNDhlZGI2Ny4uOTk5Y2RmNiAxMDA2NDQK LS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKKysrIGIveGVuL2RyaXZl cnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKQEAgLTM4OCwxNyArMzg4LDE4IEBAIHN0YXRpYyBp bnQgZmx1c2hfY29udGV4dF9yZWcoCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgaW9t bXVfZmx1c2hfY29udGV4dF9nbG9iYWwoCi0gICAgc3RydWN0IGlvbW11ICppb21tdSwgaW50IGZs dXNoX25vbl9wcmVzZW50X2VudHJ5KQorc3RhdGljIGludCBfX211c3RfY2hlY2sgaW9tbXVfZmx1 c2hfY29udGV4dF9nbG9iYWwoc3RydWN0IGlvbW11ICppb21tdSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbHVzaF9ub25fcHJlc2VudF9l bnRyeSkKIHsKICAgICBzdHJ1Y3QgaW9tbXVfZmx1c2ggKmZsdXNoID0gaW9tbXVfZ2V0X2ZsdXNo KGlvbW11KTsKICAgICByZXR1cm4gZmx1c2gtPmNvbnRleHQoaW9tbXUsIDAsIDAsIDAsIERNQV9D Q01EX0dMT0JBTF9JTlZMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmx1c2hf bm9uX3ByZXNlbnRfZW50cnkpOwogfQogCi1zdGF0aWMgaW50IGlvbW11X2ZsdXNoX2NvbnRleHRf ZGV2aWNlKAotICAgIHN0cnVjdCBpb21tdSAqaW9tbXUsIHUxNiBkaWQsIHUxNiBzb3VyY2VfaWQs Ci0gICAgdTggZnVuY3Rpb25fbWFzaywgaW50IGZsdXNoX25vbl9wcmVzZW50X2VudHJ5KQorc3Rh dGljIGludCBfX211c3RfY2hlY2sgaW9tbXVfZmx1c2hfY29udGV4dF9kZXZpY2Uoc3RydWN0IGlv bW11ICppb21tdSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHUxNiBkaWQsIHUxNiBzb3VyY2VfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1OCBmdW5jdGlvbl9tYXNrLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsdXNoX25vbl9wcmVz ZW50X2VudHJ5KQogewogICAgIHN0cnVjdCBpb21tdV9mbHVzaCAqZmx1c2ggPSBpb21tdV9nZXRf Zmx1c2goaW9tbXUpOwogICAgIHJldHVybiBmbHVzaC0+Y29udGV4dChpb21tdSwgZGlkLCBzb3Vy Y2VfaWQsIGZ1bmN0aW9uX21hc2ssCkBAIC00NzMsOCArNDc0LDkgQEAgc3RhdGljIGludCBmbHVz aF9pb3RsYl9yZWcodm9pZCAqX2lvbW11LCB1MTYgZGlkLAogICAgIHJldHVybiAwOwogfQogCi1z dGF0aWMgaW50IGlvbW11X2ZsdXNoX2lvdGxiX2dsb2JhbChzdHJ1Y3QgaW9tbXUgKmlvbW11LAot ICAgIGludCBmbHVzaF9ub25fcHJlc2VudF9lbnRyeSwgaW50IGZsdXNoX2Rldl9pb3RsYikKK3N0 YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2ZsdXNoX2lvdGxiX2dsb2JhbChzdHJ1Y3QgaW9t bXUgKmlvbW11LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGludCBmbHVzaF9ub25fcHJlc2VudF9lbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmx1c2hfZGV2X2lvdGxiKQogewogICAgIHN0 cnVjdCBpb21tdV9mbHVzaCAqZmx1c2ggPSBpb21tdV9nZXRfZmx1c2goaW9tbXUpOwogICAgIGlu dCBzdGF0dXM7CkBAIC00OTEsOCArNDkzLDkgQEAgc3RhdGljIGludCBpb21tdV9mbHVzaF9pb3Rs Yl9nbG9iYWwoc3RydWN0IGlvbW11ICppb21tdSwKICAgICByZXR1cm4gc3RhdHVzOwogfQogCi1z dGF0aWMgaW50IGlvbW11X2ZsdXNoX2lvdGxiX2RzaShzdHJ1Y3QgaW9tbXUgKmlvbW11LCB1MTYg ZGlkLAotICAgIGludCBmbHVzaF9ub25fcHJlc2VudF9lbnRyeSwgaW50IGZsdXNoX2Rldl9pb3Rs YikKK3N0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2ZsdXNoX2lvdGxiX2RzaShzdHJ1Y3Qg aW9tbXUgKmlvbW11LCB1MTYgZGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludCBmbHVzaF9ub25fcHJlc2VudF9lbnRyeSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmx1c2hfZGV2X2lvdGxiKQogewog ICAgIHN0cnVjdCBpb21tdV9mbHVzaCAqZmx1c2ggPSBpb21tdV9nZXRfZmx1c2goaW9tbXUpOwog ICAgIGludCBzdGF0dXM7CkBAIC01MDksOSArNTEyLDEwIEBAIHN0YXRpYyBpbnQgaW9tbXVfZmx1 c2hfaW90bGJfZHNpKHN0cnVjdCBpb21tdSAqaW9tbXUsIHUxNiBkaWQsCiAgICAgcmV0dXJuIHN0 YXR1czsKIH0KIAotc3RhdGljIGludCBpb21tdV9mbHVzaF9pb3RsYl9wc2koCi0gICAgc3RydWN0 IGlvbW11ICppb21tdSwgdTE2IGRpZCwgdTY0IGFkZHIsIHVuc2lnbmVkIGludCBvcmRlciwKLSAg ICBpbnQgZmx1c2hfbm9uX3ByZXNlbnRfZW50cnksIGludCBmbHVzaF9kZXZfaW90bGIpCitzdGF0 aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYl9wc2koc3RydWN0IGlvbW11ICpp b21tdSwgdTE2IGRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1NjQgYWRkciwgdW5zaWduZWQgaW50IG9yZGVyLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbHVzaF9ub25fcHJlc2VudF9lbnRyeSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmx1c2hfZGV2 X2lvdGxiKQogewogICAgIHN0cnVjdCBpb21tdV9mbHVzaCAqZmx1c2ggPSBpb21tdV9nZXRfZmx1 c2goaW9tbXUpOwogICAgIGludCBzdGF0dXM7CkBAIC01NDYsMTcgKzU1MCwzNyBAQCBzdGF0aWMg aW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9hbGwodm9pZCkKICAgICBzdHJ1Y3QgYWNwaV9k cmhkX3VuaXQgKmRyaGQ7CiAgICAgc3RydWN0IGlvbW11ICppb21tdTsKICAgICBpbnQgZmx1c2hf ZGV2X2lvdGxiOworICAgIGludCByYyA9IDA7CiAKICAgICBmbHVzaF9hbGxfY2FjaGUoKTsKICAg ICBmb3JfZWFjaF9kcmhkX3VuaXQgKCBkcmhkICkKICAgICB7CisgICAgICAgIGludCBjb250ZXh0 X3JjLCBpb3RsYl9yYzsKKwogICAgICAgICBpb21tdSA9IGRyaGQtPmlvbW11OwotICAgICAgICBp b21tdV9mbHVzaF9jb250ZXh0X2dsb2JhbChpb21tdSwgMCk7CisgICAgICAgIGNvbnRleHRfcmMg PSBpb21tdV9mbHVzaF9jb250ZXh0X2dsb2JhbChpb21tdSwgMCk7CiAgICAgICAgIGZsdXNoX2Rl dl9pb3RsYiA9IGZpbmRfYXRzX2Rldl9kcmhkKGlvbW11KSA/IDEgOiAwOwotICAgICAgICBpb21t dV9mbHVzaF9pb3RsYl9nbG9iYWwoaW9tbXUsIDAsIGZsdXNoX2Rldl9pb3RsYik7CisgICAgICAg IGlvdGxiX3JjID0gaW9tbXVfZmx1c2hfaW90bGJfZ2xvYmFsKGlvbW11LCAwLCBmbHVzaF9kZXZf aW90bGIpOworCisgICAgICAgIC8qCisgICAgICAgICAqIFRoZSBjdXJyZW50IGxvZ2ljIGZvciBy ZXR1cm5zOgorICAgICAgICAgKiAgIC0gcG9zaXRpdmUgIGludm9rZSBpb21tdV9mbHVzaF93cml0 ZV9idWZmZXIgdG8gZmx1c2ggY2FjaGUuCisgICAgICAgICAqICAgLSB6ZXJvICAgICAgb24gc3Vj Y2Vzcy4KKyAgICAgICAgICogICAtIG5lZ2F0aXZlICBvbiBmYWlsdXJlLiBDb250aW51ZSB0byBm bHVzaCBJT01NVSBJT1RMQiBvbiBhCisgICAgICAgICAqICAgICAgICAgICAgICAgYmVzdCBlZmZv cnQgYmFzaXMuCisgICAgICAgICAqLworICAgICAgICBpZiAoIGNvbnRleHRfcmMgPiAwIHx8IGlv dGxiX3JjID4gMCApCisgICAgICAgICAgICBpb21tdV9mbHVzaF93cml0ZV9idWZmZXIoaW9tbXUp OworICAgICAgICBpZiAoIHJjID49IDAgKQorICAgICAgICAgICAgcmMgPSBjb250ZXh0X3JjOwor ICAgICAgICBpZiAoIHJjID49IDAgKQorICAgICAgICAgICAgcmMgPSBpb3RsYl9yYzsKICAgICB9 CiAKLSAgICByZXR1cm4gMDsKKyAgICBpZiAoIHJjID4gMCApCisgICAgICAgIHJjID0gMDsKKwor ICAgIHJldHVybiByYzsKIH0KIAogc3RhdGljIGludCBfX211c3RfY2hlY2sgaW9tbXVfZmx1c2hf aW90bGIoc3RydWN0IGRvbWFpbiAqZCwKQEAgLTU2OSw2ICs1OTMsNyBAQCBzdGF0aWMgaW50IF9f bXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYihzdHJ1Y3QgZG9tYWluICpkLAogICAgIHN0cnVj dCBpb21tdSAqaW9tbXU7CiAgICAgaW50IGZsdXNoX2Rldl9pb3RsYjsKICAgICBpbnQgaW9tbXVf ZG9taWQ7CisgICAgaW50IHJjID0gMDsKIAogICAgIC8qCiAgICAgICogTm8gbmVlZCBwY2lkZXZl c19sb2NrIGhlcmUgYmVjYXVzZSB3ZSBoYXZlIGZsdXNoCkBAIC01ODcsMjEgKzYxMiwyMyBAQCBz dGF0aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYihzdHJ1Y3QgZG9tYWluICpk LAogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKCBwYWdlX2NvdW50ICE9IDEg fHwgZ2ZuID09IElOVkFMSURfR0ZOICkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCBpb21t dV9mbHVzaF9pb3RsYl9kc2koaW9tbXUsIGlvbW11X2RvbWlkLAotICAgICAgICAgICAgICAgICAg ICAgICAgMCwgZmx1c2hfZGV2X2lvdGxiKSApCi0gICAgICAgICAgICAgICAgaW9tbXVfZmx1c2hf d3JpdGVfYnVmZmVyKGlvbW11KTsKLSAgICAgICAgfQorICAgICAgICAgICAgcmMgPSBpb21tdV9m bHVzaF9pb3RsYl9kc2koaW9tbXUsIGlvbW11X2RvbWlkLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMCwgZmx1c2hfZGV2X2lvdGxiKTsKICAgICAgICAgZWxzZQorICAg ICAgICAgICAgcmMgPSBpb21tdV9mbHVzaF9pb3RsYl9wc2koaW9tbXUsIGlvbW11X2RvbWlkLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhZGRyX3QpZ2ZuIDw8IFBB R0VfU0hJRlRfNEssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQUdF X09SREVSXzRLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWRtYV9v bGRfcHRlX3ByZXNlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm bHVzaF9kZXZfaW90bGIpOworCisgICAgICAgIGlmICggcmMgPiAwICkKICAgICAgICAgewotICAg ICAgICAgICAgaWYgKCBpb21tdV9mbHVzaF9pb3RsYl9wc2koaW9tbXUsIGlvbW11X2RvbWlkLAot ICAgICAgICAgICAgICAgICAgICAgICAgKHBhZGRyX3QpZ2ZuIDw8IFBBR0VfU0hJRlRfNEssIFBB R0VfT1JERVJfNEssCi0gICAgICAgICAgICAgICAgICAgICAgICAhZG1hX29sZF9wdGVfcHJlc2Vu dCwgZmx1c2hfZGV2X2lvdGxiKSApCi0gICAgICAgICAgICAgICAgaW9tbXVfZmx1c2hfd3JpdGVf YnVmZmVyKGlvbW11KTsKKyAgICAgICAgICAgIGlvbW11X2ZsdXNoX3dyaXRlX2J1ZmZlcihpb21t dSk7CisgICAgICAgICAgICByYyA9IDA7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4g MDsKKyAgICByZXR1cm4gcmM7CiB9CiAKIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2Zs dXNoX2lvdGxiX3BhZ2VzKHN0cnVjdCBkb21haW4gKmQsCkBAIC0xMjkwLDcgKzEzMTcsOCBAQCBp bnQgZG9tYWluX2NvbnRleHRfbWFwcGluZ19vbmUoCiAgICAgc3RydWN0IGNvbnRleHRfZW50cnkg KmNvbnRleHQsICpjb250ZXh0X2VudHJpZXM7CiAgICAgdTY0IG1hZGRyLCBwZ2RfbWFkZHI7CiAg ICAgdTE2IHNlZyA9IGlvbW11LT5pbnRlbC0+ZHJoZC0+c2VnbWVudDsKLSAgICBpbnQgYWdhdzsK KyAgICBpbnQgYWdhdywgcmMsIHJldDsKKyAgICBpbnQgZmx1c2hfZGV2X2lvdGxiOwogCiAgICAg QVNTRVJUKHBjaWRldnNfbG9ja2VkKCkpOwogICAgIHNwaW5fbG9jaygmaW9tbXUtPmxvY2spOwpA QCAtMTQwNCwxNCArMTQzMiwyNCBAQCBpbnQgZG9tYWluX2NvbnRleHRfbWFwcGluZ19vbmUoCiAg ICAgc3Bpbl91bmxvY2soJmlvbW11LT5sb2NrKTsKIAogICAgIC8qIENvbnRleHQgZW50cnkgd2Fz IHByZXZpb3VzbHkgbm9uLXByZXNlbnQgKHdpdGggZG9taWQgMCkuICovCi0gICAgaWYgKCBpb21t dV9mbHVzaF9jb250ZXh0X2RldmljZShpb21tdSwgMCwgKCgodTE2KWJ1cykgPDwgOCkgfCBkZXZm biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERNQV9DQ01EX01BU0tfTk9C SVQsIDEpICkKKyAgICByYyA9IGlvbW11X2ZsdXNoX2NvbnRleHRfZGV2aWNlKGlvbW11LCAwLCBQ Q0lfQkRGMihidXMsIGRldmZuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IERNQV9DQ01EX01BU0tfTk9CSVQsIDEpOworICAgIGZsdXNoX2Rldl9pb3RsYiA9IGZpbmRfYXRz X2Rldl9kcmhkKGlvbW11KSA/IDEgOiAwOworICAgIHJldCA9IGlvbW11X2ZsdXNoX2lvdGxiX2Rz aShpb21tdSwgMCwgMSwgZmx1c2hfZGV2X2lvdGxiKTsKKworICAgIC8qCisgICAgICogVGhlIGN1 cnJlbnQgbG9naWMgZm9yIHJldHVybnM6CisgICAgICogICAtIHBvc2l0aXZlICBpbnZva2UgaW9t bXVfZmx1c2hfd3JpdGVfYnVmZmVyIHRvIGZsdXNoIGNhY2hlLgorICAgICAqICAgLSB6ZXJvICAg ICAgb24gc3VjY2Vzcy4KKyAgICAgKiAgIC0gbmVnYXRpdmUgIG9uIGZhaWx1cmUuIENvbnRpbnVl IHRvIGZsdXNoIElPTU1VIElPVExCIG9uIGEKKyAgICAgKiAgICAgICAgICAgICAgIGJlc3QgZWZm b3J0IGJhc2lzLgorICAgICAqLworICAgIGlmICggcmMgPiAwIHx8IHJldCA+IDAgKQogICAgICAg ICBpb21tdV9mbHVzaF93cml0ZV9idWZmZXIoaW9tbXUpOwotICAgIGVsc2UKLSAgICB7Ci0gICAg ICAgIGludCBmbHVzaF9kZXZfaW90bGIgPSBmaW5kX2F0c19kZXZfZHJoZChpb21tdSkgPyAxIDog MDsKLSAgICAgICAgaW9tbXVfZmx1c2hfaW90bGJfZHNpKGlvbW11LCAwLCAxLCBmbHVzaF9kZXZf aW90bGIpOwotICAgIH0KKyAgICBpZiAoIHJjID49IDAgKQorICAgICAgICByYyA9IHJldDsKKyAg ICBpZiAoIHJjID4gMCApCisgICAgICAgIHJjID0gMDsKIAogICAgIHNldF9iaXQoaW9tbXUtPmlu ZGV4LCAmaGQtPmFyY2guaW9tbXVfYml0bWFwKTsKIApAQCAtMTQyMCw3ICsxNDU4LDcgQEAgaW50 IGRvbWFpbl9jb250ZXh0X21hcHBpbmdfb25lKAogICAgIGlmICggIXNlZyApCiAgICAgICAgIG1l X3dpZmlfcXVpcmsoZG9tYWluLCBidXMsIGRldmZuLCBNQVBfTUVfUEhBTlRPTV9GVU5DKTsKIAot ICAgIHJldHVybiAwOworICAgIHJldHVybiByYzsKIH0KIAogc3RhdGljIGludCBkb21haW5fY29u dGV4dF9tYXBwaW5nKApAQCAtMTUxNCw3ICsxNTUyLDggQEAgaW50IGRvbWFpbl9jb250ZXh0X3Vu bWFwX29uZSgKIHsKICAgICBzdHJ1Y3QgY29udGV4dF9lbnRyeSAqY29udGV4dCwgKmNvbnRleHRf ZW50cmllczsKICAgICB1NjQgbWFkZHI7Ci0gICAgaW50IGlvbW11X2RvbWlkOworICAgIGludCBp b21tdV9kb21pZCwgcmMsIHJldDsKKyAgICBpbnQgZmx1c2hfZGV2X2lvdGxiOwogCiAgICAgQVNT RVJUKHBjaWRldnNfbG9ja2VkKCkpOwogICAgIHNwaW5fbG9jaygmaW9tbXUtPmxvY2spOwpAQCAt MTU0MiwxNSArMTU4MSwyNiBAQCBpbnQgZG9tYWluX2NvbnRleHRfdW5tYXBfb25lKAogICAgICAg ICByZXR1cm4gLUVJTlZBTDsKICAgICB9CiAKLSAgICBpZiAoIGlvbW11X2ZsdXNoX2NvbnRleHRf ZGV2aWNlKGlvbW11LCBpb21tdV9kb21pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICgoKHUxNilidXMpIDw8IDgpIHwgZGV2Zm4sCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBETUFfQ0NNRF9NQVNLX05PQklULCAwKSApCisgICAgcmMgPSBpb21tdV9m bHVzaF9jb250ZXh0X2RldmljZShpb21tdSwgaW9tbXVfZG9taWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQQ0lfQkRGMihidXMsIGRldmZuKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIERNQV9DQ01EX01BU0tfTk9CSVQsIDApOworCisgICAgZmx1 c2hfZGV2X2lvdGxiID0gZmluZF9hdHNfZGV2X2RyaGQoaW9tbXUpID8gMSA6IDA7CisgICAgcmV0 ID0gaW9tbXVfZmx1c2hfaW90bGJfZHNpKGlvbW11LCBpb21tdV9kb21pZCwgMCwgZmx1c2hfZGV2 X2lvdGxiKTsKKworICAgIC8qCisgICAgICogVGhlIGN1cnJlbnQgbG9naWMgZm9yIHJldHVybnM6 CisgICAgICogICAtIHBvc2l0aXZlICBpbnZva2UgaW9tbXVfZmx1c2hfd3JpdGVfYnVmZmVyIHRv IGZsdXNoIGNhY2hlLgorICAgICAqICAgLSB6ZXJvICAgICAgb24gc3VjY2Vzcy4KKyAgICAgKiAg IC0gbmVnYXRpdmUgIG9uIGZhaWx1cmUuIENvbnRpbnVlIHRvIGZsdXNoIElPTU1VIElPVExCIG9u IGEKKyAgICAgKiAgICAgICAgICAgICAgIGJlc3QgZWZmb3J0IGJhc2lzLgorICAgICAqLworICAg IGlmICggcmMgPiAwIHx8IHJldCA+IDAgKQogICAgICAgICBpb21tdV9mbHVzaF93cml0ZV9idWZm ZXIoaW9tbXUpOwotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGludCBmbHVzaF9kZXZfaW90bGIg PSBmaW5kX2F0c19kZXZfZHJoZChpb21tdSkgPyAxIDogMDsKLSAgICAgICAgaW9tbXVfZmx1c2hf aW90bGJfZHNpKGlvbW11LCBpb21tdV9kb21pZCwgMCwgZmx1c2hfZGV2X2lvdGxiKTsKLSAgICB9 CisgICAgaWYgKCByYyA+PSAwICkKKyAgICAgICAgcmMgPSByZXQ7CisgICAgaWYgKCByYyA+IDAg KQorICAgICAgICByYyA9IDA7CiAKICAgICBzcGluX3VubG9jaygmaW9tbXUtPmxvY2spOwogICAg IHVubWFwX3Z0ZF9kb21haW5fcGFnZShjb250ZXh0X2VudHJpZXMpOwpAQCAtMTU1OCw3ICsxNjA4 LDcgQEAgaW50IGRvbWFpbl9jb250ZXh0X3VubWFwX29uZSgKICAgICBpZiAoICFpb21tdS0+aW50 ZWwtPmRyaGQtPnNlZ21lbnQgKQogICAgICAgICBtZV93aWZpX3F1aXJrKGRvbWFpbiwgYnVzLCBk ZXZmbiwgVU5NQVBfTUVfUEhBTlRPTV9GVU5DKTsKIAotICAgIHJldHVybiAwOworICAgIHJldHVy biByYzsKIH0KIAogc3RhdGljIGludCBkb21haW5fY29udGV4dF91bm1hcCgKQEAgLTE3NzIsNiAr MTgyMiw3IEBAIGludCBpb21tdV9wdGVfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwgdTY0IGdmbiwg dTY0ICpwdGUsCiAgICAgc3RydWN0IGRvbWFpbl9pb21tdSAqaGQgPSBkb21faW9tbXUoZCk7CiAg ICAgaW50IGZsdXNoX2Rldl9pb3RsYjsKICAgICBpbnQgaW9tbXVfZG9taWQ7CisgICAgaW50IHJj ID0gMDsKIAogICAgIGlvbW11X2ZsdXNoX2NhY2hlX2VudHJ5KHB0ZSwgc2l6ZW9mKHN0cnVjdCBk bWFfcHRlKSk7CiAKQEAgLTE3ODUsMTMgKzE4MzYsMTggQEAgaW50IGlvbW11X3B0ZV9mbHVzaChz dHJ1Y3QgZG9tYWluICpkLCB1NjQgZ2ZuLCB1NjQgKnB0ZSwKICAgICAgICAgaW9tbXVfZG9taWQ9 IGRvbWFpbl9pb21tdV9kb21pZChkLCBpb21tdSk7CiAgICAgICAgIGlmICggaW9tbXVfZG9taWQg PT0gLTEgKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICggaW9tbXVfZmx1c2hf aW90bGJfcHNpKGlvbW11LCBpb21tdV9kb21pZCwKKworICAgICAgICByYyA9IGlvbW11X2ZsdXNo X2lvdGxiX3BzaShpb21tdSwgaW9tbXVfZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChwYWRkcl90KWdmbiA8PCBQQUdFX1NISUZUXzRLLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvcmRlciwgIXByZXNlbnQsIGZsdXNoX2Rldl9pb3RsYikgKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlciwgIXByZXNlbnQsIGZsdXNo X2Rldl9pb3RsYik7CisgICAgICAgIGlmICggcmMgPiAwICkKKyAgICAgICAgewogICAgICAgICAg ICAgaW9tbXVfZmx1c2hfd3JpdGVfYnVmZmVyKGlvbW11KTsKKyAgICAgICAgICAgIHJjID0gMDsK KyAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiAwOworICAgIHJldHVybiByYzsKIH0KIAog c3RhdGljIGludCBfX2luaXQgdnRkX2VwdF9wYWdlX2NvbXBhdGlibGUoc3RydWN0IGlvbW11ICpp b21tdSkKLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpo dHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK