From mboxrd@z Thu Jan 1 00:00:00 1970 From: Quan Xu Subject: [PATCH v3 01/10] vt-d: fix the IOMMU flush issue Date: Fri, 29 Apr 2016 17:25:08 +0800 Message-ID: <1461921917-48394-2-git-send-email-quan.xu@intel.com> References: <1461921917-48394-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: <1461921917-48394-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+Ci0tLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMgfCA5NCArKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiB4ZW4vaW5jbHVkZS9hc20teDg2L2lvbW11 LmggICAgICAgICB8ICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDY0IGluc2VydGlvbnMoKyksIDMy IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9p b21tdS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKaW5kZXggNWFkMjVk Yy4uNmUyZTQzYSAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11 LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKQEAgLTU1OCwxNCAr NTU4LDE2IEBAIHN0YXRpYyB2b2lkIGlvbW11X2ZsdXNoX2FsbCh2b2lkKQogICAgIH0KIH0KIAot c3RhdGljIHZvaWQgX19pbnRlbF9pb21tdV9pb3RsYl9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLCB1 bnNpZ25lZCBsb25nIGdmbiwKLSAgICAgICAgaW50IGRtYV9vbGRfcHRlX3ByZXNlbnQsIHVuc2ln bmVkIGludCBwYWdlX2NvdW50KQorc3RhdGljIGludCBpb21tdV9mbHVzaF9pb3RsYihzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYm9vbF90IGRtYV9vbGRfcHRlX3ByZXNlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludCBwYWdlX2NvdW50KQogewogICAgIHN0cnVjdCBodm1faW9tbXUgKmhk ID0gZG9tYWluX2h2bV9pb21tdShkKTsKICAgICBzdHJ1Y3QgYWNwaV9kcmhkX3VuaXQgKmRyaGQ7 CiAgICAgc3RydWN0IGlvbW11ICppb21tdTsKICAgICBpbnQgZmx1c2hfZGV2X2lvdGxiOwogICAg IGludCBpb21tdV9kb21pZDsKKyAgICBpbnQgcmMsIHJldCA9IDA7CiAKICAgICAvKgogICAgICAq IE5vIG5lZWQgcGNpZGV2ZXNfbG9jayBoZXJlIGJlY2F1c2Ugd2UgaGF2ZSBmbHVzaApAQCAtNTg0 LDI5ICs1ODYsMzUgQEAgc3RhdGljIHZvaWQgX19pbnRlbF9pb21tdV9pb3RsYl9mbHVzaChzdHJ1 Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwKICAgICAgICAgICAgIGNvbnRpbnVlOwog CiAgICAgICAgIGlmICggcGFnZV9jb3VudCAhPSAxIHx8IGdmbiA9PSBJTlZBTElEX0dGTiApCi0g ICAgICAgIHsKLSAgICAgICAgICAgIGlmICggaW9tbXVfZmx1c2hfaW90bGJfZHNpKGlvbW11LCBp b21tdV9kb21pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDAsIGZsdXNoX2Rldl9pb3RsYikg KQotICAgICAgICAgICAgICAgIGlvbW11X2ZsdXNoX3dyaXRlX2J1ZmZlcihpb21tdSk7Ci0gICAg ICAgIH0KKyAgICAgICAgICAgIHJjID0gaW9tbXVfZmx1c2hfaW90bGJfZHNpKGlvbW11LCBpb21t dV9kb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGZsdXNo X2Rldl9pb3RsYik7CiAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJjID0gaW9tbXVfZmx1c2hf aW90bGJfcHNpKGlvbW11LCBpb21tdV9kb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChwYWRkcl90KWdmbiA8PCBQQUdFX1NISUZUXzRLLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFHRV9PUkRFUl80SywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICFkbWFfb2xkX3B0ZV9wcmVzZW50LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmx1c2hfZGV2X2lvdGxiKTsKKworICAgICAg ICBpZiAoIHJjID4gMCApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICggaW9tbXVfZmx1c2hf aW90bGJfcHNpKGlvbW11LCBpb21tdV9kb21pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIChw YWRkcl90KWdmbiA8PCBQQUdFX1NISUZUXzRLLCBQQUdFX09SREVSXzRLLAotICAgICAgICAgICAg ICAgICAgICAgICAgIWRtYV9vbGRfcHRlX3ByZXNlbnQsIGZsdXNoX2Rldl9pb3RsYikgKQotICAg ICAgICAgICAgICAgIGlvbW11X2ZsdXNoX3dyaXRlX2J1ZmZlcihpb21tdSk7CisgICAgICAgICAg ICBpb21tdV9mbHVzaF93cml0ZV9idWZmZXIoaW9tbXUpOworICAgICAgICAgICAgcmV0ID0gMDsK ICAgICAgICAgfQorICAgICAgICBlbHNlIGlmICggcmMgPCAwICkKKyAgICAgICAgICAgIHJldCA9 IHJjOwogICAgIH0KKworICAgIHJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyB2b2lkIGludGVsX2lv bW11X2lvdGxiX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLCB1bnNp Z25lZCBpbnQgcGFnZV9jb3VudCkKIHsKLSAgICBfX2ludGVsX2lvbW11X2lvdGxiX2ZsdXNoKGQs IGdmbiwgMSwgcGFnZV9jb3VudCk7CisgICAgaW9tbXVfZmx1c2hfaW90bGIoZCwgZ2ZuLCAxLCBw YWdlX2NvdW50KTsKIH0KIAogc3RhdGljIHZvaWQgaW50ZWxfaW9tbXVfaW90bGJfZmx1c2hfYWxs KHN0cnVjdCBkb21haW4gKmQpCiB7Ci0gICAgX19pbnRlbF9pb21tdV9pb3RsYl9mbHVzaChkLCBJ TlZBTElEX0dGTiwgMCwgMCk7CisgICAgaW9tbXVfZmx1c2hfaW90bGIoZCwgSU5WQUxJRF9HRk4s IDAsIDApOwogfQogCiAvKiBjbGVhciBvbmUgcGFnZSdzIHBhZ2UgdGFibGUgKi8KQEAgLTY0MCw3 ICs2NDgsNyBAQCBzdGF0aWMgdm9pZCBkbWFfcHRlX2NsZWFyX29uZShzdHJ1Y3QgZG9tYWluICpk b21haW4sIHU2NCBhZGRyKQogICAgIGlvbW11X2ZsdXNoX2NhY2hlX2VudHJ5KHB0ZSwgc2l6ZW9m KHN0cnVjdCBkbWFfcHRlKSk7CiAKICAgICBpZiAoICF0aGlzX2NwdShpb21tdV9kb250X2ZsdXNo X2lvdGxiKSApCi0gICAgICAgIF9faW50ZWxfaW9tbXVfaW90bGJfZmx1c2goZG9tYWluLCBhZGRy ID4+IFBBR0VfU0hJRlRfNEssIDEsIDEpOworICAgICAgICBpb21tdV9mbHVzaF9pb3RsYihkb21h aW4sIGFkZHIgPj4gUEFHRV9TSElGVF80SywgMSwgMSk7CiAKICAgICB1bm1hcF92dGRfZG9tYWlu X3BhZ2UocGFnZSk7CiB9CkBAIC0xMjgxLDYgKzEyODksNyBAQCBpbnQgZG9tYWluX2NvbnRleHRf bWFwcGluZ19vbmUoCiAgICAgdTY0IG1hZGRyLCBwZ2RfbWFkZHI7CiAgICAgdTE2IHNlZyA9IGlv bW11LT5pbnRlbC0+ZHJoZC0+c2VnbWVudDsKICAgICBpbnQgYWdhdzsKKyAgICBpbnQgcmM7CiAK ICAgICBBU1NFUlQocGNpZGV2c19sb2NrZWQoKSk7CiAgICAgc3Bpbl9sb2NrKCZpb21tdS0+bG9j ayk7CkBAIC0xMzk0LDEzICsxNDAzLDE5IEBAIGludCBkb21haW5fY29udGV4dF9tYXBwaW5nX29u ZSgKICAgICBzcGluX3VubG9jaygmaW9tbXUtPmxvY2spOwogCiAgICAgLyogQ29udGV4dCBlbnRy eSB3YXMgcHJldmlvdXNseSBub24tcHJlc2VudCAod2l0aCBkb21pZCAwKS4gKi8KLSAgICBpZiAo IGlvbW11X2ZsdXNoX2NvbnRleHRfZGV2aWNlKGlvbW11LCAwLCAoKCh1MTYpYnVzKSA8PCA4KSB8 IGRldmZuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRE1BX0NDTURfTUFT S19OT0JJVCwgMSkgKQotICAgICAgICBpb21tdV9mbHVzaF93cml0ZV9idWZmZXIoaW9tbXUpOwot ICAgIGVsc2UKKyAgICByYyA9IGlvbW11X2ZsdXNoX2NvbnRleHRfZGV2aWNlKGlvbW11LCAwLCAo KCh1MTYpYnVzKSA8PCA4KSB8IGRldmZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRE1BX0NDTURfTUFTS19OT0JJVCwgMSk7CisKKyAgICBpZiAoICFyYyApCiAgICAgewog ICAgICAgICBpbnQgZmx1c2hfZGV2X2lvdGxiID0gZmluZF9hdHNfZGV2X2RyaGQoaW9tbXUpID8g MSA6IDA7Ci0gICAgICAgIGlvbW11X2ZsdXNoX2lvdGxiX2RzaShpb21tdSwgMCwgMSwgZmx1c2hf ZGV2X2lvdGxiKTsKKyAgICAgICAgcmMgPSBpb21tdV9mbHVzaF9pb3RsYl9kc2koaW9tbXUsIDAs IDEsIGZsdXNoX2Rldl9pb3RsYik7CisgICAgfQorCisgICAgaWYgKCByYyA+IDAgKQorICAgIHsK KyAgICAgICAgaW9tbXVfZmx1c2hfd3JpdGVfYnVmZmVyKGlvbW11KTsKKyAgICAgICAgcmMgPSAw OwogICAgIH0KIAogICAgIHNldF9iaXQoaW9tbXUtPmluZGV4LCAmaGQtPmFyY2guaW9tbXVfYml0 bWFwKTsKQEAgLTE0MTAsNyArMTQyNSw3IEBAIGludCBkb21haW5fY29udGV4dF9tYXBwaW5nX29u ZSgKICAgICBpZiAoICFzZWcgKQogICAgICAgICBtZV93aWZpX3F1aXJrKGRvbWFpbiwgYnVzLCBk ZXZmbiwgTUFQX01FX1BIQU5UT01fRlVOQyk7CiAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g cmM7CiB9CiAKIHN0YXRpYyBpbnQgZG9tYWluX2NvbnRleHRfbWFwcGluZygKQEAgLTE1MDUsNiAr MTUyMCw3IEBAIGludCBkb21haW5fY29udGV4dF91bm1hcF9vbmUoCiAgICAgc3RydWN0IGNvbnRl eHRfZW50cnkgKmNvbnRleHQsICpjb250ZXh0X2VudHJpZXM7CiAgICAgdTY0IG1hZGRyOwogICAg IGludCBpb21tdV9kb21pZDsKKyAgICBpbnQgcmM7CiAKICAgICBBU1NFUlQocGNpZGV2c19sb2Nr ZWQoKSk7CiAgICAgc3Bpbl9sb2NrKCZpb21tdS0+bG9jayk7CkBAIC0xNTMyLDE0ICsxNTQ4LDIw IEBAIGludCBkb21haW5fY29udGV4dF91bm1hcF9vbmUoCiAgICAgICAgIHJldHVybiAtRUlOVkFM OwogICAgIH0KIAotICAgIGlmICggaW9tbXVfZmx1c2hfY29udGV4dF9kZXZpY2UoaW9tbXUsIGlv bW11X2RvbWlkLAorICAgIHJjID0gaW9tbXVfZmx1c2hfY29udGV4dF9kZXZpY2UoaW9tbXUsIGlv bW11X2RvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgodTE2KWJ1 cykgPDwgOCkgfCBkZXZmbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERN QV9DQ01EX01BU0tfTk9CSVQsIDApICkKLSAgICAgICAgaW9tbXVfZmx1c2hfd3JpdGVfYnVmZmVy KGlvbW11KTsKLSAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE TUFfQ0NNRF9NQVNLX05PQklULCAwKTsKKworICAgIGlmICggIXJjICkKICAgICB7CiAgICAgICAg IGludCBmbHVzaF9kZXZfaW90bGIgPSBmaW5kX2F0c19kZXZfZHJoZChpb21tdSkgPyAxIDogMDsK LSAgICAgICAgaW9tbXVfZmx1c2hfaW90bGJfZHNpKGlvbW11LCBpb21tdV9kb21pZCwgMCwgZmx1 c2hfZGV2X2lvdGxiKTsKKyAgICAgICAgcmMgPSBpb21tdV9mbHVzaF9pb3RsYl9kc2koaW9tbXUs IGlvbW11X2RvbWlkLCAwLCBmbHVzaF9kZXZfaW90bGIpOworICAgIH0KKworICAgIGlmICggcmMg PiAwICkKKyAgICB7CisgICAgICAgIGlvbW11X2ZsdXNoX3dyaXRlX2J1ZmZlcihpb21tdSk7Cisg ICAgICAgIHJjID0gMDsKICAgICB9CiAKICAgICBzcGluX3VubG9jaygmaW9tbXUtPmxvY2spOwpA QCAtMTU0OCw3ICsxNTcwLDcgQEAgaW50IGRvbWFpbl9jb250ZXh0X3VubWFwX29uZSgKICAgICBp ZiAoICFpb21tdS0+aW50ZWwtPmRyaGQtPnNlZ21lbnQgKQogICAgICAgICBtZV93aWZpX3F1aXJr KGRvbWFpbiwgYnVzLCBkZXZmbiwgVU5NQVBfTUVfUEhBTlRPTV9GVU5DKTsKIAotICAgIHJldHVy biAwOworICAgIHJldHVybiByYzsKIH0KIAogc3RhdGljIGludCBkb21haW5fY29udGV4dF91bm1h cCgKQEAgLTE3MzgsNyArMTc2MCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfaW9tbXVfbWFwX3BhZ2Uo CiAgICAgdW5tYXBfdnRkX2RvbWFpbl9wYWdlKHBhZ2UpOwogCiAgICAgaWYgKCAhdGhpc19jcHUo aW9tbXVfZG9udF9mbHVzaF9pb3RsYikgKQotICAgICAgICBfX2ludGVsX2lvbW11X2lvdGxiX2Zs dXNoKGQsIGdmbiwgZG1hX3B0ZV9wcmVzZW50KG9sZCksIDEpOworICAgICAgICBpb21tdV9mbHVz aF9pb3RsYihkLCBnZm4sIGRtYV9wdGVfcHJlc2VudChvbGQpLCAxKTsKIAogICAgIHJldHVybiAw OwogfQpAQCAtMTc1NCwxNCArMTc3NiwxNSBAQCBzdGF0aWMgaW50IGludGVsX2lvbW11X3VubWFw X3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4pCiAgICAgcmV0dXJuIDA7 CiB9CiAKLXZvaWQgaW9tbXVfcHRlX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHU2NCBnZm4sIHU2 NCAqcHRlLAotICAgICAgICAgICAgICAgICAgICAgaW50IG9yZGVyLCBpbnQgcHJlc2VudCkKK2lu dCBpb21tdV9wdGVfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwgdTY0IGdmbiwgdTY0ICpwdGUsCisg ICAgICAgICAgICAgICAgICAgIGludCBvcmRlciwgYm9vbF90IHByZXNlbnQpCiB7CiAgICAgc3Ry dWN0IGFjcGlfZHJoZF91bml0ICpkcmhkOwogICAgIHN0cnVjdCBpb21tdSAqaW9tbXUgPSBOVUxM OwogICAgIHN0cnVjdCBodm1faW9tbXUgKmhkID0gZG9tYWluX2h2bV9pb21tdShkKTsKICAgICBp bnQgZmx1c2hfZGV2X2lvdGxiOwogICAgIGludCBpb21tdV9kb21pZDsKKyAgICBpbnQgcmMsIHJl dCA9IDA7CiAKICAgICBpb21tdV9mbHVzaF9jYWNoZV9lbnRyeShwdGUsIHNpemVvZihzdHJ1Y3Qg ZG1hX3B0ZSkpOwogCkBAIC0xNzc1LDExICsxNzk4LDIwIEBAIHZvaWQgaW9tbXVfcHRlX2ZsdXNo KHN0cnVjdCBkb21haW4gKmQsIHU2NCBnZm4sIHU2NCAqcHRlLAogICAgICAgICBpb21tdV9kb21p ZD0gZG9tYWluX2lvbW11X2RvbWlkKGQsIGlvbW11KTsKICAgICAgICAgaWYgKCBpb21tdV9kb21p ZCA9PSAtMSApCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCBpb21tdV9mbHVz aF9pb3RsYl9wc2koaW9tbXUsIGlvbW11X2RvbWlkLAorCisgICAgICAgIHJjID0gaW9tbXVfZmx1 c2hfaW90bGJfcHNpKGlvbW11LCBpb21tdV9kb21pZCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHBhZGRyX3QpZ2ZuIDw8IFBBR0VfU0hJRlRfNEssCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG9yZGVyLCAhcHJlc2VudCwgZmx1c2hfZGV2X2lvdGxiKSAp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyLCAhcHJlc2VudCwgZmx1 c2hfZGV2X2lvdGxiKTsKKyAgICAgICAgaWYgKCByYyA+IDAgKQorICAgICAgICB7CiAgICAgICAg ICAgICBpb21tdV9mbHVzaF93cml0ZV9idWZmZXIoaW9tbXUpOworICAgICAgICAgICAgcmV0ID0g MDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICggcmMgPCAwICkKKyAgICAgICAgICAgIHJl dCA9IHJjOwogICAgIH0KKworICAgIHJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQgX19pbml0 IHZ0ZF9lcHRfcGFnZV9jb21wYXRpYmxlKHN0cnVjdCBpb21tdSAqaW9tbXUpCmRpZmYgLS1naXQg YS94ZW4vaW5jbHVkZS9hc20teDg2L2lvbW11LmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2lvbW11 LmgKaW5kZXggZjIyYjNhNS4uMWFlMGM1YSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4 Ni9pb21tdS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaW9tbXUuaApAQCAtMjYsNyArMjYs NyBAQCBpbnQgaW9tbXVfc2V0dXBfaHBldF9tc2koc3RydWN0IG1zaV9kZXNjICopOwogCiAvKiBX aGlsZSBWVC1kIHNwZWNpZmljLCB0aGlzIG11c3QgZ2V0IGRlY2xhcmVkIGluIGEgZ2VuZXJpYyBo ZWFkZXIuICovCiBpbnQgYWRqdXN0X3Z0ZF9pcnFfYWZmaW5pdGllcyh2b2lkKTsKLXZvaWQgaW9t bXVfcHRlX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHU2NCBnZm4sIHU2NCAqcHRlLCBpbnQgb3Jk ZXIsIGludCBwcmVzZW50KTsKK2ludCBpb21tdV9wdGVfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwg dTY0IGdmbiwgdTY0ICpwdGUsIGludCBvcmRlciwgYm9vbF90IHByZXNlbnQpOwogYm9vbF90IGlv bW11X3N1cHBvcnRzX2VpbSh2b2lkKTsKIGludCBpb21tdV9lbmFibGVfeDJhcGljX0lSKHZvaWQp Owogdm9pZCBpb21tdV9kaXNhYmxlX3gyYXBpY19JUih2b2lkKTsKLS0gCjEuOS4xCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxp bmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4t ZGV2ZWwK