From mboxrd@z Thu Jan 1 00:00:00 1970 From: Quan Xu Subject: [PATCH v5 01/10] vt-d: fix the IOMMU flush issue Date: Wed, 18 May 2016 16:08:22 +0800 Message-ID: <1463558911-98187-2-git-send-email-quan.xu@intel.com> References: <1463558911-98187-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: <1463558911-98187-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 VGhlIHByb3BhZ2F0aW9uIHZhbHVlIGZyb20gSU9NTVUgZmx1c2ggaW50ZXJmYWNlcyBtYXkgYmUg cG9zaXRpdmUsIHdoaWNoCmluZGljYXRlcyBjYWxsZXJzIG5lZWQgdG8gZmx1c2ggY2FjaGUsIG5v dCBvbmUgb2YgZmFsaXVyZXMuCgp3aGVuIHRoZSBwcm9wYWdhdGlvbiB2YWx1ZSBpcyBwb3NpdGl2 ZSwgdGhpcyBwYXRjaCBmaXhlcyB0aGlzIGZsdXNoIGlzc3VlCmFzIGZvbGxvd3M6CiAgLSBjYWxs IGlvbW11X2ZsdXNoX3dyaXRlX2J1ZmZlcigpIHRvIGZsdXNoIGNhY2hlLgogIC0gcmV0dXJuIHpl cm8uCgpTaWduZWQtb2ZmLWJ5OiBRdWFuIFh1IDxxdWFuLnh1QGludGVsLmNvbT4KCkNDOiBLZXZp biBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4KQ0M6IEZlbmcgV3UgPGZlbmcud3VAaW50ZWwu Y29tPgpDQzogS2VpciBGcmFzZXIgPGtlaXJAeGVuLm9yZz4KQ0M6IEphbiBCZXVsaWNoIDxqYmV1 bGljaEBzdXNlLmNvbT4KQ0M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5j b20+Ci0tLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMgfCAxMDEgKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCiB4ZW4vaW5jbHVkZS9hc20teDg2L2lvbW11 LmggICAgICAgICB8ICAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCA3NSBpbnNlcnRpb25zKCspLCAy OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQv aW9tbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jCmluZGV4IGRiODM5 NDkuLjNlY2U4MTUgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21t dS5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jCkBAIC01NTcsMTQg KzU1NywxNiBAQCBzdGF0aWMgdm9pZCBpb21tdV9mbHVzaF9hbGwodm9pZCkKICAgICB9CiB9CiAK LXN0YXRpYyB2b2lkIF9faW50ZWxfaW9tbXVfaW90bGJfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwg dW5zaWduZWQgbG9uZyBnZm4sCi0gICAgICAgIGludCBkbWFfb2xkX3B0ZV9wcmVzZW50LCB1bnNp Z25lZCBpbnQgcGFnZV9jb3VudCkKK3N0YXRpYyBpbnQgX19pbnRlbF9pb21tdV9pb3RsYl9mbHVz aChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBib29sX3QgZG1hX29sZF9wdGVfcHJlc2VudCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcGFnZV9jb3VudCkKIHsK ICAgICBzdHJ1Y3QgZG9tYWluX2lvbW11ICpoZCA9IGRvbV9pb21tdShkKTsKICAgICBzdHJ1Y3Qg YWNwaV9kcmhkX3VuaXQgKmRyaGQ7CiAgICAgc3RydWN0IGlvbW11ICppb21tdTsKICAgICBpbnQg Zmx1c2hfZGV2X2lvdGxiOwogICAgIGludCBpb21tdV9kb21pZDsKKyAgICBpbnQgcmMgPSAwOwog CiAgICAgLyoKICAgICAgKiBObyBuZWVkIHBjaWRldmVzX2xvY2sgaGVyZSBiZWNhdXNlIHdlIGhh dmUgZmx1c2gKQEAgLTU3OSwyMyArNTgxLDI4IEBAIHN0YXRpYyB2b2lkIF9faW50ZWxfaW9tbXVf aW90bGJfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCiAKICAgICAg ICAgZmx1c2hfZGV2X2lvdGxiID0gZmluZF9hdHNfZGV2X2RyaGQoaW9tbXUpID8gMSA6IDA7CiAg ICAgICAgIGlvbW11X2RvbWlkPSBkb21haW5faW9tbXVfZG9taWQoZCwgaW9tbXUpOworCiAgICAg ICAgIGlmICggaW9tbXVfZG9taWQgPT0gLTEgKQogICAgICAgICAgICAgY29udGludWU7CiAKICAg ICAgICAgaWYgKCBwYWdlX2NvdW50ICE9IDEgfHwgZ2ZuID09IElOVkFMSURfR0ZOICkKLSAgICAg ICAgewotICAgICAgICAgICAgaWYgKCBpb21tdV9mbHVzaF9pb3RsYl9kc2koaW9tbXUsIGlvbW11 X2RvbWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgMCwgZmx1c2hfZGV2X2lvdGxiKSApCi0g ICAgICAgICAgICAgICAgaW9tbXVfZmx1c2hfd3JpdGVfYnVmZmVyKGlvbW11KTsKLSAgICAgICAg fQorICAgICAgICAgICAgcmMgPSBpb21tdV9mbHVzaF9pb3RsYl9kc2koaW9tbXUsIGlvbW11X2Rv bWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgZmx1c2hfZGV2 X2lvdGxiKTsKICAgICAgICAgZWxzZQorICAgICAgICAgICAgcmMgPSBpb21tdV9mbHVzaF9pb3Rs Yl9wc2koaW9tbXUsIGlvbW11X2RvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHBhZGRyX3QpZ2ZuIDw8IFBBR0VfU0hJRlRfNEssCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQQUdFX09SREVSXzRLLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIWRtYV9vbGRfcHRlX3ByZXNlbnQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmbHVzaF9kZXZfaW90bGIpOworCisgICAgICAgIGlm ICggcmMgPiAwICkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCBpb21tdV9mbHVzaF9pb3Rs Yl9wc2koaW9tbXUsIGlvbW11X2RvbWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgKHBhZGRy X3QpZ2ZuIDw8IFBBR0VfU0hJRlRfNEssIFBBR0VfT1JERVJfNEssCi0gICAgICAgICAgICAgICAg ICAgICAgICAhZG1hX29sZF9wdGVfcHJlc2VudCwgZmx1c2hfZGV2X2lvdGxiKSApCi0gICAgICAg ICAgICAgICAgaW9tbXVfZmx1c2hfd3JpdGVfYnVmZmVyKGlvbW11KTsKKyAgICAgICAgICAgIGlv bW11X2ZsdXNoX3dyaXRlX2J1ZmZlcihpb21tdSk7CisgICAgICAgICAgICByYyA9IDA7CiAgICAg ICAgIH0KICAgICB9CisKKyAgICByZXR1cm4gcmM7CiB9CiAKIHN0YXRpYyB2b2lkIGludGVsX2lv bW11X2lvdGxiX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLCB1bnNp Z25lZCBpbnQgcGFnZV9jb3VudCkKQEAgLTEyNzgsNiArMTI4NSw3IEBAIGludCBkb21haW5fY29u dGV4dF9tYXBwaW5nX29uZSgKICAgICB1NjQgbWFkZHIsIHBnZF9tYWRkcjsKICAgICB1MTYgc2Vn ID0gaW9tbXUtPmludGVsLT5kcmhkLT5zZWdtZW50OwogICAgIGludCBhZ2F3OworICAgIGludCBy YzsKIAogICAgIEFTU0VSVChwY2lkZXZzX2xvY2tlZCgpKTsKICAgICBzcGluX2xvY2soJmlvbW11 LT5sb2NrKTsKQEAgLTEzOTEsMTMgKzEzOTksMjYgQEAgaW50IGRvbWFpbl9jb250ZXh0X21hcHBp bmdfb25lKAogICAgIHNwaW5fdW5sb2NrKCZpb21tdS0+bG9jayk7CiAKICAgICAvKiBDb250ZXh0 IGVudHJ5IHdhcyBwcmV2aW91c2x5IG5vbi1wcmVzZW50ICh3aXRoIGRvbWlkIDApLiAqLwotICAg IGlmICggaW9tbXVfZmx1c2hfY29udGV4dF9kZXZpY2UoaW9tbXUsIDAsICgoKHUxNilidXMpIDw8 IDgpIHwgZGV2Zm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBETUFfQ0NN RF9NQVNLX05PQklULCAxKSApCi0gICAgICAgIGlvbW11X2ZsdXNoX3dyaXRlX2J1ZmZlcihpb21t dSk7Ci0gICAgZWxzZQorICAgIHJjID0gaW9tbXVfZmx1c2hfY29udGV4dF9kZXZpY2UoaW9tbXUs IDAsICgoKHUxNilidXMpIDw8IDgpIHwgZGV2Zm4sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBETUFfQ0NNRF9NQVNLX05PQklULCAxKTsKKworICAgIC8qCisgICAgICogVGhl IGN1cnJlbnQgbG9naWMgZm9yIHJjIHJldHVybnM6CisgICAgICogICAtIHBvc2l0aXZlICBpbnZv a2UgaW9tbXVfZmx1c2hfd3JpdGVfYnVmZmVyIHRvIGZsdXNoIGNhY2hlLgorICAgICAqICAgLSB6 ZXJvICAgICAgc3VjY2Vzcy4KKyAgICAgKiAgIC0gbmVnYXRpdmUgIGZhaWx1cmUuIENvbnRpbnVl IHRvIGZsdXNoIElPTU1VIElPVExCIG9uIGEgYmVzdAorICAgICAqICAgICAgICAgICAgICAgZWZm b3J0IGJhc2lzLgorICAgICAqLworICAgIGlmICggcmMgPD0gMCApCiAgICAgewogICAgICAgICBp bnQgZmx1c2hfZGV2X2lvdGxiID0gZmluZF9hdHNfZGV2X2RyaGQoaW9tbXUpID8gMSA6IDA7Ci0g ICAgICAgIGlvbW11X2ZsdXNoX2lvdGxiX2RzaShpb21tdSwgMCwgMSwgZmx1c2hfZGV2X2lvdGxi KTsKKworICAgICAgICByYyA9IGlvbW11X2ZsdXNoX2lvdGxiX2RzaShpb21tdSwgMCwgMSwgZmx1 c2hfZGV2X2lvdGxiKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaW9tbXVfZmx1 c2hfd3JpdGVfYnVmZmVyKGlvbW11KTsKKyAgICAgICAgcmMgPSAwOwogICAgIH0KIAogICAgIHNl dF9iaXQoaW9tbXUtPmluZGV4LCAmaGQtPmFyY2guaW9tbXVfYml0bWFwKTsKQEAgLTE0MDcsNyAr MTQyOCw3IEBAIGludCBkb21haW5fY29udGV4dF9tYXBwaW5nX29uZSgKICAgICBpZiAoICFzZWcg KQogICAgICAgICBtZV93aWZpX3F1aXJrKGRvbWFpbiwgYnVzLCBkZXZmbiwgTUFQX01FX1BIQU5U T01fRlVOQyk7CiAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcmM7CiB9CiAKIHN0YXRpYyBp bnQgZG9tYWluX2NvbnRleHRfbWFwcGluZygKQEAgLTE1MDIsNiArMTUyMyw3IEBAIGludCBkb21h aW5fY29udGV4dF91bm1hcF9vbmUoCiAgICAgc3RydWN0IGNvbnRleHRfZW50cnkgKmNvbnRleHQs ICpjb250ZXh0X2VudHJpZXM7CiAgICAgdTY0IG1hZGRyOwogICAgIGludCBpb21tdV9kb21pZDsK KyAgICBpbnQgcmM7CiAKICAgICBBU1NFUlQocGNpZGV2c19sb2NrZWQoKSk7CiAgICAgc3Bpbl9s b2NrKCZpb21tdS0+bG9jayk7CkBAIC0xNTIyLDYgKzE1NDQsNyBAQCBpbnQgZG9tYWluX2NvbnRl eHRfdW5tYXBfb25lKAogICAgIGlvbW11X2ZsdXNoX2NhY2hlX2VudHJ5KGNvbnRleHQsIHNpemVv ZihzdHJ1Y3QgY29udGV4dF9lbnRyeSkpOwogCiAgICAgaW9tbXVfZG9taWQ9IGRvbWFpbl9pb21t dV9kb21pZChkb21haW4sIGlvbW11KTsKKwogICAgIGlmICggaW9tbXVfZG9taWQgPT0gLTEgKQog ICAgIHsKICAgICAgICAgc3Bpbl91bmxvY2soJmlvbW11LT5sb2NrKTsKQEAgLTE1MjksMTQgKzE1 NTIsMjcgQEAgaW50IGRvbWFpbl9jb250ZXh0X3VubWFwX29uZSgKICAgICAgICAgcmV0dXJuIC1F SU5WQUw7CiAgICAgfQogCi0gICAgaWYgKCBpb21tdV9mbHVzaF9jb250ZXh0X2RldmljZShpb21t dSwgaW9tbXVfZG9taWQsCisgICAgcmMgPSBpb21tdV9mbHVzaF9jb250ZXh0X2RldmljZShpb21t dSwgaW9tbXVfZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCh1 MTYpYnVzKSA8PCA4KSB8IGRldmZuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRE1BX0NDTURfTUFTS19OT0JJVCwgMCkgKQotICAgICAgICBpb21tdV9mbHVzaF93cml0ZV9i dWZmZXIoaW9tbXUpOwotICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIERNQV9DQ01EX01BU0tfTk9CSVQsIDApOworCisgICAgLyoKKyAgICAgKiBUaGUgY3VycmVu dCBsb2dpYyBmb3IgcmMgcmV0dXJuczoKKyAgICAgKiAgIC0gcG9zaXRpdmUgIGludm9rZSBpb21t dV9mbHVzaF93cml0ZV9idWZmZXIgdG8gZmx1c2ggY2FjaGUuCisgICAgICogICAtIHplcm8gICAg ICBzdWNjZXNzLgorICAgICAqICAgLSBuZWdhdGl2ZSAgZmFpbHVyZS4gQ29udGludWUgdG8gZmx1 c2ggSU9NTVUgSU9UTEIgb24gYSBiZXN0CisgICAgICogICAgICAgICAgICAgICBlZmZvcnQgYmFz aXMuCisgICAgICovCisgICAgaWYgKCByYyA8PSAwICkKICAgICB7CiAgICAgICAgIGludCBmbHVz aF9kZXZfaW90bGIgPSBmaW5kX2F0c19kZXZfZHJoZChpb21tdSkgPyAxIDogMDsKLSAgICAgICAg aW9tbXVfZmx1c2hfaW90bGJfZHNpKGlvbW11LCBpb21tdV9kb21pZCwgMCwgZmx1c2hfZGV2X2lv dGxiKTsKKworICAgICAgICByYyA9IGlvbW11X2ZsdXNoX2lvdGxiX2RzaShpb21tdSwgaW9tbXVf ZG9taWQsIDAsIGZsdXNoX2Rldl9pb3RsYik7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAg ICAgIGlvbW11X2ZsdXNoX3dyaXRlX2J1ZmZlcihpb21tdSk7CisgICAgICAgIHJjID0gMDsKICAg ICB9CiAKICAgICBzcGluX3VubG9jaygmaW9tbXUtPmxvY2spOwpAQCAtMTU0NSw3ICsxNTgxLDcg QEAgaW50IGRvbWFpbl9jb250ZXh0X3VubWFwX29uZSgKICAgICBpZiAoICFpb21tdS0+aW50ZWwt PmRyaGQtPnNlZ21lbnQgKQogICAgICAgICBtZV93aWZpX3F1aXJrKGRvbWFpbiwgYnVzLCBkZXZm biwgVU5NQVBfTUVfUEhBTlRPTV9GVU5DKTsKIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBy YzsKIH0KIAogc3RhdGljIGludCBkb21haW5fY29udGV4dF91bm1hcCgKQEAgLTE3NTAsMzIgKzE3 ODYsNDMgQEAgc3RhdGljIGludCBpbnRlbF9pb21tdV91bm1hcF9wYWdlKHN0cnVjdCBkb21haW4g KmQsIHVuc2lnbmVkIGxvbmcgZ2ZuKQogICAgIHJldHVybiAwOwogfQogCi12b2lkIGlvbW11X3B0 ZV9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLCB1NjQgZ2ZuLCB1NjQgKnB0ZSwKLSAgICAgICAgICAg ICAgICAgICAgIGludCBvcmRlciwgaW50IHByZXNlbnQpCitpbnQgaW9tbXVfcHRlX2ZsdXNoKHN0 cnVjdCBkb21haW4gKmQsIHU2NCBnZm4sIHU2NCAqcHRlLAorICAgICAgICAgICAgICAgICAgICBp bnQgb3JkZXIsIGJvb2xfdCBwcmVzZW50KQogewogICAgIHN0cnVjdCBhY3BpX2RyaGRfdW5pdCAq ZHJoZDsKICAgICBzdHJ1Y3QgaW9tbXUgKmlvbW11ID0gTlVMTDsKICAgICBzdHJ1Y3QgZG9tYWlu X2lvbW11ICpoZCA9IGRvbV9pb21tdShkKTsKICAgICBpbnQgZmx1c2hfZGV2X2lvdGxiOwogICAg IGludCBpb21tdV9kb21pZDsKKyAgICBpbnQgcmMgPSAwOwogCiAgICAgaW9tbXVfZmx1c2hfY2Fj aGVfZW50cnkocHRlLCBzaXplb2Yoc3RydWN0IGRtYV9wdGUpKTsKIAogICAgIGZvcl9lYWNoX2Ry aGRfdW5pdCAoIGRyaGQgKQogICAgIHsKICAgICAgICAgaW9tbXUgPSBkcmhkLT5pb21tdTsKKwog ICAgICAgICBpZiAoICF0ZXN0X2JpdChpb21tdS0+aW5kZXgsICZoZC0+YXJjaC5pb21tdV9iaXRt YXApICkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGZsdXNoX2Rldl9pb3RsYiA9 IGZpbmRfYXRzX2Rldl9kcmhkKGlvbW11KSA/IDEgOiAwOwogICAgICAgICBpb21tdV9kb21pZD0g ZG9tYWluX2lvbW11X2RvbWlkKGQsIGlvbW11KTsKKwogICAgICAgICBpZiAoIGlvbW11X2RvbWlk ID09IC0xICkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIGlvbW11X2ZsdXNo X2lvdGxiX3BzaShpb21tdSwgaW9tbXVfZG9taWQsCisKKyAgICAgICAgcmMgPSBpb21tdV9mbHVz aF9pb3RsYl9wc2koaW9tbXUsIGlvbW11X2RvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAocGFkZHJfdClnZm4gPDwgUEFHRV9TSElGVF80SywKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb3JkZXIsICFwcmVzZW50LCBmbHVzaF9kZXZfaW90bGIpICkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIsICFwcmVzZW50LCBmbHVz aF9kZXZfaW90bGIpOworCisgICAgICAgIGlmICggcmMgPiAwICkKKyAgICAgICAgewogICAgICAg ICAgICAgaW9tbXVfZmx1c2hfd3JpdGVfYnVmZmVyKGlvbW11KTsKKyAgICAgICAgICAgIHJjID0g MDsKKyAgICAgICAgfQogICAgIH0KKworICAgIHJldHVybiByYzsKIH0KIAogc3RhdGljIGludCBf X2luaXQgdnRkX2VwdF9wYWdlX2NvbXBhdGlibGUoc3RydWN0IGlvbW11ICppb21tdSkKZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaW9tbXUuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYv aW9tbXUuaAppbmRleCBlODJhMmYwLi40M2YxNjIwIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9h c20teDg2L2lvbW11LmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9pb21tdS5oCkBAIC0yNyw3 ICsyNyw3IEBAIGludCBpb21tdV9zZXR1cF9ocGV0X21zaShzdHJ1Y3QgbXNpX2Rlc2MgKik7CiAK IC8qIFdoaWxlIFZULWQgc3BlY2lmaWMsIHRoaXMgbXVzdCBnZXQgZGVjbGFyZWQgaW4gYSBnZW5l cmljIGhlYWRlci4gKi8KIGludCBhZGp1c3RfdnRkX2lycV9hZmZpbml0aWVzKHZvaWQpOwotdm9p ZCBpb21tdV9wdGVfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwgdTY0IGdmbiwgdTY0ICpwdGUsIGlu dCBvcmRlciwgaW50IHByZXNlbnQpOworaW50IGlvbW11X3B0ZV9mbHVzaChzdHJ1Y3QgZG9tYWlu ICpkLCB1NjQgZ2ZuLCB1NjQgKnB0ZSwgaW50IG9yZGVyLCBib29sX3QgcHJlc2VudCk7CiBib29s X3QgaW9tbXVfc3VwcG9ydHNfZWltKHZvaWQpOwogaW50IGlvbW11X2VuYWJsZV94MmFwaWNfSVIo dm9pZCk7CiB2b2lkIGlvbW11X2Rpc2FibGVfeDJhcGljX0lSKHZvaWQpOwotLSAKMS45LjEKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwg bWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3Jn L3hlbi1kZXZlbAo=