From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Xu, Quan" Subject: [PATCH v9 1/3] vt-d: fix the IOMMU flush issue Date: Fri, 17 Jun 2016 11:37:23 +0800 Message-ID: <1466134645-50852-2-git-send-email-quan.xu@intel.com> References: <1466134645-50852-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: <1466134645-50852-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 bmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgoKLS0tCnY5OiBmaXggbmFtaW5nIGlzc3VlLCBjaGFu Z2luZyAnaW9tbXVfcmMgLyBpb21tdV9yZXQnIHRvICdjb250ZXh0X3JjIC8gaW90bGJfcmMnCi0t LQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMgfCAxNTAgKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTAzIGluc2VydGlvbnMo KyksIDQ3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdo L3Z0ZC9pb21tdS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKaW5kZXgg NDhlZGI2Ny4uMjY3OWVmNiAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRk L2lvbW11LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKQEAgLTM4 OCwxNyArMzg4LDE4IEBAIHN0YXRpYyBpbnQgZmx1c2hfY29udGV4dF9yZWcoCiAgICAgcmV0dXJu IDA7CiB9CiAKLXN0YXRpYyBpbnQgaW9tbXVfZmx1c2hfY29udGV4dF9nbG9iYWwoCi0gICAgc3Ry dWN0IGlvbW11ICppb21tdSwgaW50IGZsdXNoX25vbl9wcmVzZW50X2VudHJ5KQorc3RhdGljIGlu dCBfX211c3RfY2hlY2sgaW9tbXVfZmx1c2hfY29udGV4dF9nbG9iYWwoc3RydWN0IGlvbW11ICpp b21tdSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludCBmbHVzaF9ub25fcHJlc2VudF9lbnRyeSkKIHsKICAgICBzdHJ1Y3QgaW9tbXVfZmx1c2gg KmZsdXNoID0gaW9tbXVfZ2V0X2ZsdXNoKGlvbW11KTsKICAgICByZXR1cm4gZmx1c2gtPmNvbnRl eHQoaW9tbXUsIDAsIDAsIDAsIERNQV9DQ01EX0dMT0JBTF9JTlZMLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZmx1c2hfbm9uX3ByZXNlbnRfZW50cnkpOwogfQogCi1zdGF0aWMg aW50IGlvbW11X2ZsdXNoX2NvbnRleHRfZGV2aWNlKAotICAgIHN0cnVjdCBpb21tdSAqaW9tbXUs IHUxNiBkaWQsIHUxNiBzb3VyY2VfaWQsCi0gICAgdTggZnVuY3Rpb25fbWFzaywgaW50IGZsdXNo X25vbl9wcmVzZW50X2VudHJ5KQorc3RhdGljIGludCBfX211c3RfY2hlY2sgaW9tbXVfZmx1c2hf Y29udGV4dF9kZXZpY2Uoc3RydWN0IGlvbW11ICppb21tdSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUxNiBkaWQsIHUxNiBzb3VyY2VfaWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OCBmdW5j dGlvbl9tYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50IGZsdXNoX25vbl9wcmVzZW50X2VudHJ5KQogewogICAgIHN0cnVjdCBpb21tdV9m bHVzaCAqZmx1c2ggPSBpb21tdV9nZXRfZmx1c2goaW9tbXUpOwogICAgIHJldHVybiBmbHVzaC0+ Y29udGV4dChpb21tdSwgZGlkLCBzb3VyY2VfaWQsIGZ1bmN0aW9uX21hc2ssCkBAIC00NzMsOCAr NDc0LDkgQEAgc3RhdGljIGludCBmbHVzaF9pb3RsYl9yZWcodm9pZCAqX2lvbW11LCB1MTYgZGlk LAogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGlvbW11X2ZsdXNoX2lvdGxiX2dsb2Jh bChzdHJ1Y3QgaW9tbXUgKmlvbW11LAotICAgIGludCBmbHVzaF9ub25fcHJlc2VudF9lbnRyeSwg aW50IGZsdXNoX2Rldl9pb3RsYikKK3N0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2ZsdXNo X2lvdGxiX2dsb2JhbChzdHJ1Y3QgaW9tbXUgKmlvbW11LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbHVzaF9ub25fcHJlc2VudF9lbnRyeSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmx1 c2hfZGV2X2lvdGxiKQogewogICAgIHN0cnVjdCBpb21tdV9mbHVzaCAqZmx1c2ggPSBpb21tdV9n ZXRfZmx1c2goaW9tbXUpOwogICAgIGludCBzdGF0dXM7CkBAIC00OTEsOCArNDkzLDkgQEAgc3Rh dGljIGludCBpb21tdV9mbHVzaF9pb3RsYl9nbG9iYWwoc3RydWN0IGlvbW11ICppb21tdSwKICAg ICByZXR1cm4gc3RhdHVzOwogfQogCi1zdGF0aWMgaW50IGlvbW11X2ZsdXNoX2lvdGxiX2RzaShz dHJ1Y3QgaW9tbXUgKmlvbW11LCB1MTYgZGlkLAotICAgIGludCBmbHVzaF9ub25fcHJlc2VudF9l bnRyeSwgaW50IGZsdXNoX2Rldl9pb3RsYikKK3N0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlvbW11 X2ZsdXNoX2lvdGxiX2RzaShzdHJ1Y3QgaW9tbXUgKmlvbW11LCB1MTYgZGlkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbHVzaF9ub25fcHJlc2Vu dF9lbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgZmx1c2hfZGV2X2lvdGxiKQogewogICAgIHN0cnVjdCBpb21tdV9mbHVzaCAqZmx1c2ggPSBp b21tdV9nZXRfZmx1c2goaW9tbXUpOwogICAgIGludCBzdGF0dXM7CkBAIC01MDksOSArNTEyLDEw IEBAIHN0YXRpYyBpbnQgaW9tbXVfZmx1c2hfaW90bGJfZHNpKHN0cnVjdCBpb21tdSAqaW9tbXUs IHUxNiBkaWQsCiAgICAgcmV0dXJuIHN0YXR1czsKIH0KIAotc3RhdGljIGludCBpb21tdV9mbHVz aF9pb3RsYl9wc2koCi0gICAgc3RydWN0IGlvbW11ICppb21tdSwgdTE2IGRpZCwgdTY0IGFkZHIs IHVuc2lnbmVkIGludCBvcmRlciwKLSAgICBpbnQgZmx1c2hfbm9uX3ByZXNlbnRfZW50cnksIGlu dCBmbHVzaF9kZXZfaW90bGIpCitzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9p b3RsYl9wc2koc3RydWN0IGlvbW11ICppb21tdSwgdTE2IGRpZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1NjQgYWRkciwgdW5zaWduZWQgaW50IG9yZGVy LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbHVz aF9ub25fcHJlc2VudF9lbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgZmx1c2hfZGV2X2lvdGxiKQogewogICAgIHN0cnVjdCBpb21tdV9mbHVz aCAqZmx1c2ggPSBpb21tdV9nZXRfZmx1c2goaW9tbXUpOwogICAgIGludCBzdGF0dXM7CkBAIC01 NDYsMTcgKzU1MCwzNyBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9hbGwo dm9pZCkKICAgICBzdHJ1Y3QgYWNwaV9kcmhkX3VuaXQgKmRyaGQ7CiAgICAgc3RydWN0IGlvbW11 ICppb21tdTsKICAgICBpbnQgZmx1c2hfZGV2X2lvdGxiOworICAgIGludCByYyA9IDA7CiAKICAg ICBmbHVzaF9hbGxfY2FjaGUoKTsKICAgICBmb3JfZWFjaF9kcmhkX3VuaXQgKCBkcmhkICkKICAg ICB7CisgICAgICAgIGludCBjb250ZXh0X3JjLCBpb3RsYl9yYzsKKwogICAgICAgICBpb21tdSA9 IGRyaGQtPmlvbW11OwotICAgICAgICBpb21tdV9mbHVzaF9jb250ZXh0X2dsb2JhbChpb21tdSwg MCk7CisgICAgICAgIGNvbnRleHRfcmMgPSBpb21tdV9mbHVzaF9jb250ZXh0X2dsb2JhbChpb21t dSwgMCk7CiAgICAgICAgIGZsdXNoX2Rldl9pb3RsYiA9IGZpbmRfYXRzX2Rldl9kcmhkKGlvbW11 KSA/IDEgOiAwOwotICAgICAgICBpb21tdV9mbHVzaF9pb3RsYl9nbG9iYWwoaW9tbXUsIDAsIGZs dXNoX2Rldl9pb3RsYik7CisgICAgICAgIGlvdGxiX3JjID0gaW9tbXVfZmx1c2hfaW90bGJfZ2xv YmFsKGlvbW11LCAwLCBmbHVzaF9kZXZfaW90bGIpOworCisgICAgICAgIC8qCisgICAgICAgICAq IFRoZSBjdXJyZW50IGxvZ2ljIGZvciByZXR1cm5zOgorICAgICAgICAgKiAgIC0gcG9zaXRpdmUg IGludm9rZSBpb21tdV9mbHVzaF93cml0ZV9idWZmZXIgdG8gZmx1c2ggY2FjaGUuCisgICAgICAg ICAqICAgLSB6ZXJvICAgICAgb24gc3VjY2Vzcy4KKyAgICAgICAgICogICAtIG5lZ2F0aXZlICBv biBmYWlsdXJlLiBDb250aW51ZSB0byBmbHVzaCBJT01NVSBJT1RMQiBvbiBhCisgICAgICAgICAq ICAgICAgICAgICAgICAgYmVzdCBlZmZvcnQgYmFzaXMuCisgICAgICAgICAqLworICAgICAgICBp ZiAoIGNvbnRleHRfcmMgPiAwIHx8IGlvdGxiX3JjID4gMCApCisgICAgICAgICAgICBpb21tdV9m bHVzaF93cml0ZV9idWZmZXIoaW9tbXUpOworICAgICAgICBpZiAoIGNvbnRleHRfcmMgPj0gMCAp CisgICAgICAgICAgICByYyA9IGNvbnRleHRfcmM7CisgICAgICAgIGlmICggcmMgPj0gMCApCisg ICAgICAgICAgICByYyA9IGlvdGxiX3JjOwogICAgIH0KIAotICAgIHJldHVybiAwOworICAgIGlm ICggcmMgPiAwICkKKyAgICAgICAgcmMgPSAwOworCisgICAgcmV0dXJuIHJjOwogfQogCiBzdGF0 aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYihzdHJ1Y3QgZG9tYWluICpkLApA QCAtNTY5LDYgKzU5Myw3IEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2ZsdXNoX2lv dGxiKHN0cnVjdCBkb21haW4gKmQsCiAgICAgc3RydWN0IGlvbW11ICppb21tdTsKICAgICBpbnQg Zmx1c2hfZGV2X2lvdGxiOwogICAgIGludCBpb21tdV9kb21pZDsKKyAgICBpbnQgcmMgPSAwOwog CiAgICAgLyoKICAgICAgKiBObyBuZWVkIHBjaWRldmVzX2xvY2sgaGVyZSBiZWNhdXNlIHdlIGhh dmUgZmx1c2gKQEAgLTU4NywyMSArNjEyLDIzIEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlv bW11X2ZsdXNoX2lvdGxiKHN0cnVjdCBkb21haW4gKmQsCiAgICAgICAgICAgICBjb250aW51ZTsK IAogICAgICAgICBpZiAoIHBhZ2VfY291bnQgIT0gMSB8fCBnZm4gPT0gSU5WQUxJRF9HRk4gKQot ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIGlvbW11X2ZsdXNoX2lvdGxiX2RzaShpb21tdSwg aW9tbXVfZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAwLCBmbHVzaF9kZXZfaW90bGIp ICkKLSAgICAgICAgICAgICAgICBpb21tdV9mbHVzaF93cml0ZV9idWZmZXIoaW9tbXUpOwotICAg ICAgICB9CisgICAgICAgICAgICByYyA9IGlvbW11X2ZsdXNoX2lvdGxiX2RzaShpb21tdSwgaW9t bXVfZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBmbHVz aF9kZXZfaW90bGIpOwogICAgICAgICBlbHNlCisgICAgICAgICAgICByYyA9IGlvbW11X2ZsdXNo X2lvdGxiX3BzaShpb21tdSwgaW9tbXVfZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAocGFkZHJfdClnZm4gPDwgUEFHRV9TSElGVF80SywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBR0VfT1JERVJfNEssCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAhZG1hX29sZF9wdGVfcHJlc2VudCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsdXNoX2Rldl9pb3RsYik7CisKKyAgICAg ICAgaWYgKCByYyA+IDAgKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIGlvbW11X2ZsdXNo X2lvdGxiX3BzaShpb21tdSwgaW9tbXVfZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAo cGFkZHJfdClnZm4gPDwgUEFHRV9TSElGVF80SywgUEFHRV9PUkRFUl80SywKLSAgICAgICAgICAg ICAgICAgICAgICAgICFkbWFfb2xkX3B0ZV9wcmVzZW50LCBmbHVzaF9kZXZfaW90bGIpICkKLSAg ICAgICAgICAgICAgICBpb21tdV9mbHVzaF93cml0ZV9idWZmZXIoaW9tbXUpOworICAgICAgICAg ICAgaW9tbXVfZmx1c2hfd3JpdGVfYnVmZmVyKGlvbW11KTsKKyAgICAgICAgICAgIHJjID0gMDsK ICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiAwOworICAgIHJldHVybiByYzsKIH0KIAog c3RhdGljIGludCBfX211c3RfY2hlY2sgaW9tbXVfZmx1c2hfaW90bGJfcGFnZXMoc3RydWN0IGRv bWFpbiAqZCwKQEAgLTEyOTAsNyArMTMxNyw4IEBAIGludCBkb21haW5fY29udGV4dF9tYXBwaW5n X29uZSgKICAgICBzdHJ1Y3QgY29udGV4dF9lbnRyeSAqY29udGV4dCwgKmNvbnRleHRfZW50cmll czsKICAgICB1NjQgbWFkZHIsIHBnZF9tYWRkcjsKICAgICB1MTYgc2VnID0gaW9tbXUtPmludGVs LT5kcmhkLT5zZWdtZW50OwotICAgIGludCBhZ2F3OworICAgIGludCBhZ2F3LCByYywgcmV0Owor ICAgIGludCBmbHVzaF9kZXZfaW90bGI7CiAKICAgICBBU1NFUlQocGNpZGV2c19sb2NrZWQoKSk7 CiAgICAgc3Bpbl9sb2NrKCZpb21tdS0+bG9jayk7CkBAIC0xNDA0LDE0ICsxNDMyLDI0IEBAIGlu dCBkb21haW5fY29udGV4dF9tYXBwaW5nX29uZSgKICAgICBzcGluX3VubG9jaygmaW9tbXUtPmxv Y2spOwogCiAgICAgLyogQ29udGV4dCBlbnRyeSB3YXMgcHJldmlvdXNseSBub24tcHJlc2VudCAo d2l0aCBkb21pZCAwKS4gKi8KLSAgICBpZiAoIGlvbW11X2ZsdXNoX2NvbnRleHRfZGV2aWNlKGlv bW11LCAwLCAoKCh1MTYpYnVzKSA8PCA4KSB8IGRldmZuLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRE1BX0NDTURfTUFTS19OT0JJVCwgMSkgKQorICAgIHJjID0gaW9tbXVf Zmx1c2hfY29udGV4dF9kZXZpY2UoaW9tbXUsIDAsIFBDSV9CREYyKGJ1cywgZGV2Zm4pLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRE1BX0NDTURfTUFTS19OT0JJVCwgMSk7 CisgICAgZmx1c2hfZGV2X2lvdGxiID0gZmluZF9hdHNfZGV2X2RyaGQoaW9tbXUpID8gMSA6IDA7 CisgICAgcmV0ID0gaW9tbXVfZmx1c2hfaW90bGJfZHNpKGlvbW11LCAwLCAxLCBmbHVzaF9kZXZf aW90bGIpOworCisgICAgLyoKKyAgICAgKiBUaGUgY3VycmVudCBsb2dpYyBmb3IgcmV0dXJuczoK KyAgICAgKiAgIC0gcG9zaXRpdmUgIGludm9rZSBpb21tdV9mbHVzaF93cml0ZV9idWZmZXIgdG8g Zmx1c2ggY2FjaGUuCisgICAgICogICAtIHplcm8gICAgICBvbiBzdWNjZXNzLgorICAgICAqICAg LSBuZWdhdGl2ZSAgb24gZmFpbHVyZS4gQ29udGludWUgdG8gZmx1c2ggSU9NTVUgSU9UTEIgb24g YQorICAgICAqICAgICAgICAgICAgICAgYmVzdCBlZmZvcnQgYmFzaXMuCisgICAgICovCisgICAg aWYgKCByYyA+IDAgfHwgcmV0ID4gMCApCiAgICAgICAgIGlvbW11X2ZsdXNoX3dyaXRlX2J1ZmZl cihpb21tdSk7Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgaW50IGZsdXNoX2Rldl9pb3RsYiA9 IGZpbmRfYXRzX2Rldl9kcmhkKGlvbW11KSA/IDEgOiAwOwotICAgICAgICBpb21tdV9mbHVzaF9p b3RsYl9kc2koaW9tbXUsIDAsIDEsIGZsdXNoX2Rldl9pb3RsYik7Ci0gICAgfQorICAgIGlmICgg cmMgPj0gMCApCisgICAgICAgIHJjID0gcmV0OworICAgIGlmICggcmMgPiAwICkKKyAgICAgICAg cmMgPSAwOwogCiAgICAgc2V0X2JpdChpb21tdS0+aW5kZXgsICZoZC0+YXJjaC5pb21tdV9iaXRt YXApOwogCkBAIC0xNDIwLDcgKzE0NTgsNyBAQCBpbnQgZG9tYWluX2NvbnRleHRfbWFwcGluZ19v bmUoCiAgICAgaWYgKCAhc2VnICkKICAgICAgICAgbWVfd2lmaV9xdWlyayhkb21haW4sIGJ1cywg ZGV2Zm4sIE1BUF9NRV9QSEFOVE9NX0ZVTkMpOwogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJu IHJjOwogfQogCiBzdGF0aWMgaW50IGRvbWFpbl9jb250ZXh0X21hcHBpbmcoCkBAIC0xNTE0LDcg KzE1NTIsOCBAQCBpbnQgZG9tYWluX2NvbnRleHRfdW5tYXBfb25lKAogewogICAgIHN0cnVjdCBj b250ZXh0X2VudHJ5ICpjb250ZXh0LCAqY29udGV4dF9lbnRyaWVzOwogICAgIHU2NCBtYWRkcjsK LSAgICBpbnQgaW9tbXVfZG9taWQ7CisgICAgaW50IGlvbW11X2RvbWlkLCByYywgcmV0OworICAg IGludCBmbHVzaF9kZXZfaW90bGI7CiAKICAgICBBU1NFUlQocGNpZGV2c19sb2NrZWQoKSk7CiAg ICAgc3Bpbl9sb2NrKCZpb21tdS0+bG9jayk7CkBAIC0xNTQyLDE1ICsxNTgxLDI2IEBAIGludCBk b21haW5fY29udGV4dF91bm1hcF9vbmUoCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwogICAgIH0K IAotICAgIGlmICggaW9tbXVfZmx1c2hfY29udGV4dF9kZXZpY2UoaW9tbXUsIGlvbW11X2RvbWlk LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgodTE2KWJ1cykgPDwgOCkg fCBkZXZmbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERNQV9DQ01EX01B U0tfTk9CSVQsIDApICkKKyAgICByYyA9IGlvbW11X2ZsdXNoX2NvbnRleHRfZGV2aWNlKGlvbW11 LCBpb21tdV9kb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9C REYyKGJ1cywgZGV2Zm4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRE1B X0NDTURfTUFTS19OT0JJVCwgMCk7CisKKyAgICBmbHVzaF9kZXZfaW90bGIgPSBmaW5kX2F0c19k ZXZfZHJoZChpb21tdSkgPyAxIDogMDsKKyAgICByZXQgPSBpb21tdV9mbHVzaF9pb3RsYl9kc2ko aW9tbXUsIGlvbW11X2RvbWlkLCAwLCBmbHVzaF9kZXZfaW90bGIpOworCisgICAgLyoKKyAgICAg KiBUaGUgY3VycmVudCBsb2dpYyBmb3IgcmV0dXJuczoKKyAgICAgKiAgIC0gcG9zaXRpdmUgIGlu dm9rZSBpb21tdV9mbHVzaF93cml0ZV9idWZmZXIgdG8gZmx1c2ggY2FjaGUuCisgICAgICogICAt IHplcm8gICAgICBvbiBzdWNjZXNzLgorICAgICAqICAgLSBuZWdhdGl2ZSAgb24gZmFpbHVyZS4g Q29udGludWUgdG8gZmx1c2ggSU9NTVUgSU9UTEIgb24gYQorICAgICAqICAgICAgICAgICAgICAg YmVzdCBlZmZvcnQgYmFzaXMuCisgICAgICovCisgICAgaWYgKCByYyA+IDAgfHwgcmV0ID4gMCAp CiAgICAgICAgIGlvbW11X2ZsdXNoX3dyaXRlX2J1ZmZlcihpb21tdSk7Ci0gICAgZWxzZQotICAg IHsKLSAgICAgICAgaW50IGZsdXNoX2Rldl9pb3RsYiA9IGZpbmRfYXRzX2Rldl9kcmhkKGlvbW11 KSA/IDEgOiAwOwotICAgICAgICBpb21tdV9mbHVzaF9pb3RsYl9kc2koaW9tbXUsIGlvbW11X2Rv bWlkLCAwLCBmbHVzaF9kZXZfaW90bGIpOwotICAgIH0KKyAgICBpZiAoIHJjID49IDAgKQorICAg ICAgICByYyA9IHJldDsKKyAgICBpZiAoIHJjID4gMCApCisgICAgICAgIHJjID0gMDsKIAogICAg IHNwaW5fdW5sb2NrKCZpb21tdS0+bG9jayk7CiAgICAgdW5tYXBfdnRkX2RvbWFpbl9wYWdlKGNv bnRleHRfZW50cmllcyk7CkBAIC0xNTU4LDcgKzE2MDgsNyBAQCBpbnQgZG9tYWluX2NvbnRleHRf dW5tYXBfb25lKAogICAgIGlmICggIWlvbW11LT5pbnRlbC0+ZHJoZC0+c2VnbWVudCApCiAgICAg ICAgIG1lX3dpZmlfcXVpcmsoZG9tYWluLCBidXMsIGRldmZuLCBVTk1BUF9NRV9QSEFOVE9NX0ZV TkMpOwogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgaW50IGRv bWFpbl9jb250ZXh0X3VubWFwKApAQCAtMTc3Miw2ICsxODIyLDcgQEAgaW50IGlvbW11X3B0ZV9m bHVzaChzdHJ1Y3QgZG9tYWluICpkLCB1NjQgZ2ZuLCB1NjQgKnB0ZSwKICAgICBzdHJ1Y3QgZG9t YWluX2lvbW11ICpoZCA9IGRvbV9pb21tdShkKTsKICAgICBpbnQgZmx1c2hfZGV2X2lvdGxiOwog ICAgIGludCBpb21tdV9kb21pZDsKKyAgICBpbnQgcmMgPSAwOwogCiAgICAgaW9tbXVfZmx1c2hf Y2FjaGVfZW50cnkocHRlLCBzaXplb2Yoc3RydWN0IGRtYV9wdGUpKTsKIApAQCAtMTc4NSwxMyAr MTgzNiwxOCBAQCBpbnQgaW9tbXVfcHRlX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHU2NCBnZm4s IHU2NCAqcHRlLAogICAgICAgICBpb21tdV9kb21pZD0gZG9tYWluX2lvbW11X2RvbWlkKGQsIGlv bW11KTsKICAgICAgICAgaWYgKCBpb21tdV9kb21pZCA9PSAtMSApCiAgICAgICAgICAgICBjb250 aW51ZTsKLSAgICAgICAgaWYgKCBpb21tdV9mbHVzaF9pb3RsYl9wc2koaW9tbXUsIGlvbW11X2Rv bWlkLAorCisgICAgICAgIHJjID0gaW9tbXVfZmx1c2hfaW90bGJfcHNpKGlvbW11LCBpb21tdV9k b21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhZGRyX3QpZ2ZuIDw8 IFBBR0VfU0hJRlRfNEssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVy LCAhcHJlc2VudCwgZmx1c2hfZGV2X2lvdGxiKSApCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG9yZGVyLCAhcHJlc2VudCwgZmx1c2hfZGV2X2lvdGxiKTsKKyAgICAgICAgaWYg KCByYyA+IDAgKQorICAgICAgICB7CiAgICAgICAgICAgICBpb21tdV9mbHVzaF93cml0ZV9idWZm ZXIoaW9tbXUpOworICAgICAgICAgICAgcmMgPSAwOworICAgICAgICB9CiAgICAgfQogCi0gICAg cmV0dXJuIDA7CisgICAgcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgaW50IF9faW5pdCB2dGRfZXB0 X3BhZ2VfY29tcGF0aWJsZShzdHJ1Y3QgaW9tbXUgKmlvbW11KQotLSAKMS45LjEKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGlu ZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1k ZXZlbAo=