From mboxrd@z Thu Jan 1 00:00:00 1970 From: Quan Xu Subject: [PATCH v2 01/11] vt-d: fix the IOMMU flush issue Date: Mon, 18 Apr 2016 22:00:01 +0800 Message-ID: <1460988011-17758-2-git-send-email-quan.xu@intel.com> References: <1460988011-17758-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: <1460988011-17758-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 KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiB4ZW4vaW5jbHVkZS9hc20teDg2L2lvbW11 LmggICAgICAgICB8ICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDYzIGluc2VydGlvbnMoKyksIDMz IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9p b21tdS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKaW5kZXggNWFkMjVk Yy4uNTBkOThhYyAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11 LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKQEAgLTU1OCwxNCAr NTU4LDE2IEBAIHN0YXRpYyB2b2lkIGlvbW11X2ZsdXNoX2FsbCh2b2lkKQogICAgIH0KIH0KIAot c3RhdGljIHZvaWQgX19pbnRlbF9pb21tdV9pb3RsYl9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLCB1 bnNpZ25lZCBsb25nIGdmbiwKLSAgICAgICAgaW50IGRtYV9vbGRfcHRlX3ByZXNlbnQsIHVuc2ln bmVkIGludCBwYWdlX2NvdW50KQorc3RhdGljIGludCBpb21tdV9mbHVzaF9pb3RsYihzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50IGRtYV9vbGRfcHRlX3ByZXNlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGludCBwYWdlX2NvdW50KQogewogICAgIHN0cnVjdCBodm1faW9tbXUgKmhkID0g ZG9tYWluX2h2bV9pb21tdShkKTsKICAgICBzdHJ1Y3QgYWNwaV9kcmhkX3VuaXQgKmRyaGQ7CiAg ICAgc3RydWN0IGlvbW11ICppb21tdTsKICAgICBpbnQgZmx1c2hfZGV2X2lvdGxiOwogICAgIGlu dCBpb21tdV9kb21pZDsKKyAgICBpbnQgcmMgPSAwOwogCiAgICAgLyoKICAgICAgKiBObyBuZWVk IHBjaWRldmVzX2xvY2sgaGVyZSBiZWNhdXNlIHdlIGhhdmUgZmx1c2gKQEAgLTU4NCwyOSArNTg2 LDM0IEBAIHN0YXRpYyB2b2lkIF9faW50ZWxfaW9tbXVfaW90bGJfZmx1c2goc3RydWN0IGRvbWFp biAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAg ICBpZiAoIHBhZ2VfY291bnQgIT0gMSB8fCBnZm4gPT0gSU5WQUxJRF9HRk4gKQotICAgICAgICB7 Ci0gICAgICAgICAgICBpZiAoIGlvbW11X2ZsdXNoX2lvdGxiX2RzaShpb21tdSwgaW9tbXVfZG9t aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAwLCBmbHVzaF9kZXZfaW90bGIpICkKLSAgICAg ICAgICAgICAgICBpb21tdV9mbHVzaF93cml0ZV9idWZmZXIoaW9tbXUpOwotICAgICAgICB9Cisg ICAgICAgICAgICByYyA9IGlvbW11X2ZsdXNoX2lvdGxiX2RzaShpb21tdSwgaW9tbXVfZG9taWQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBmbHVzaF9kZXZfaW90 bGIpOwogICAgICAgICBlbHNlCisgICAgICAgICAgICByYyA9IGlvbW11X2ZsdXNoX2lvdGxiX3Bz aShpb21tdSwgaW9tbXVfZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAocGFkZHJfdClnZm4gPDwgUEFHRV9TSElGVF80SywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFBBR0VfT1JERVJfNEssCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAhZG1hX29sZF9wdGVfcHJlc2VudCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZsdXNoX2Rldl9pb3RsYik7CisKKyAgICAgICAgaWYgKCBy YyA+IDAgKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIGlvbW11X2ZsdXNoX2lvdGxiX3Bz aShpb21tdSwgaW9tbXVfZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAocGFkZHJfdCln Zm4gPDwgUEFHRV9TSElGVF80SywgUEFHRV9PUkRFUl80SywKLSAgICAgICAgICAgICAgICAgICAg ICAgICFkbWFfb2xkX3B0ZV9wcmVzZW50LCBmbHVzaF9kZXZfaW90bGIpICkKLSAgICAgICAgICAg ICAgICBpb21tdV9mbHVzaF93cml0ZV9idWZmZXIoaW9tbXUpOwotICAgICAgICB9CisgICAgICAg ICAgICBpb21tdV9mbHVzaF93cml0ZV9idWZmZXIoaW9tbXUpOworICAgICAgICAgICAgcmMgPSAw OworICAgICAgICB9IGVsc2UgaWYgKCByYyA8IDAgKQorICAgICAgICAgICAgYnJlYWs7CiAgICAg fQorCisgICAgcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgdm9pZCBpbnRlbF9pb21tdV9pb3RsYl9m bHVzaChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQgaW50IHBh Z2VfY291bnQpCiB7Ci0gICAgX19pbnRlbF9pb21tdV9pb3RsYl9mbHVzaChkLCBnZm4sIDEsIHBh Z2VfY291bnQpOworICAgIGlvbW11X2ZsdXNoX2lvdGxiKGQsIGdmbiwgMSwgcGFnZV9jb3VudCk7 CiB9CiAKIHN0YXRpYyB2b2lkIGludGVsX2lvbW11X2lvdGxiX2ZsdXNoX2FsbChzdHJ1Y3QgZG9t YWluICpkKQogewotICAgIF9faW50ZWxfaW9tbXVfaW90bGJfZmx1c2goZCwgSU5WQUxJRF9HRk4s IDAsIDApOworICAgIGlvbW11X2ZsdXNoX2lvdGxiKGQsIElOVkFMSURfR0ZOLCAwLCAwKTsKIH0K IAogLyogY2xlYXIgb25lIHBhZ2UncyBwYWdlIHRhYmxlICovCkBAIC02NDAsNyArNjQ3LDcgQEAg c3RhdGljIHZvaWQgZG1hX3B0ZV9jbGVhcl9vbmUoc3RydWN0IGRvbWFpbiAqZG9tYWluLCB1NjQg YWRkcikKICAgICBpb21tdV9mbHVzaF9jYWNoZV9lbnRyeShwdGUsIHNpemVvZihzdHJ1Y3QgZG1h X3B0ZSkpOwogCiAgICAgaWYgKCAhdGhpc19jcHUoaW9tbXVfZG9udF9mbHVzaF9pb3RsYikgKQot ICAgICAgICBfX2ludGVsX2lvbW11X2lvdGxiX2ZsdXNoKGRvbWFpbiwgYWRkciA+PiBQQUdFX1NI SUZUXzRLLCAxLCAxKTsKKyAgICAgICAgaW9tbXVfZmx1c2hfaW90bGIoZG9tYWluLCBhZGRyID4+ IFBBR0VfU0hJRlRfNEssIDEsIDEpOwogCiAgICAgdW5tYXBfdnRkX2RvbWFpbl9wYWdlKHBhZ2Up OwogfQpAQCAtMTI4MSw2ICsxMjg4LDcgQEAgaW50IGRvbWFpbl9jb250ZXh0X21hcHBpbmdfb25l KAogICAgIHU2NCBtYWRkciwgcGdkX21hZGRyOwogICAgIHUxNiBzZWcgPSBpb21tdS0+aW50ZWwt PmRyaGQtPnNlZ21lbnQ7CiAgICAgaW50IGFnYXc7CisgICAgaW50IHJjOwogCiAgICAgQVNTRVJU KHBjaWRldnNfbG9ja2VkKCkpOwogICAgIHNwaW5fbG9jaygmaW9tbXUtPmxvY2spOwpAQCAtMTM5 NCwxMyArMTQwMiwxOSBAQCBpbnQgZG9tYWluX2NvbnRleHRfbWFwcGluZ19vbmUoCiAgICAgc3Bp bl91bmxvY2soJmlvbW11LT5sb2NrKTsKIAogICAgIC8qIENvbnRleHQgZW50cnkgd2FzIHByZXZp b3VzbHkgbm9uLXByZXNlbnQgKHdpdGggZG9taWQgMCkuICovCi0gICAgaWYgKCBpb21tdV9mbHVz aF9jb250ZXh0X2RldmljZShpb21tdSwgMCwgKCgodTE2KWJ1cykgPDwgOCkgfCBkZXZmbiwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERNQV9DQ01EX01BU0tfTk9CSVQsIDEp ICkKLSAgICAgICAgaW9tbXVfZmx1c2hfd3JpdGVfYnVmZmVyKGlvbW11KTsKLSAgICBlbHNlCisg ICAgcmMgPSBpb21tdV9mbHVzaF9jb250ZXh0X2RldmljZShpb21tdSwgMCwgKCgodTE2KWJ1cykg PDwgOCkgfCBkZXZmbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERNQV9D Q01EX01BU0tfTk9CSVQsIDEpOworCisgICAgaWYgKCAhcmMgKQogICAgIHsKICAgICAgICAgaW50 IGZsdXNoX2Rldl9pb3RsYiA9IGZpbmRfYXRzX2Rldl9kcmhkKGlvbW11KSA/IDEgOiAwOwotICAg ICAgICBpb21tdV9mbHVzaF9pb3RsYl9kc2koaW9tbXUsIDAsIDEsIGZsdXNoX2Rldl9pb3RsYik7 CisgICAgICAgIHJjID0gaW9tbXVfZmx1c2hfaW90bGJfZHNpKGlvbW11LCAwLCAxLCBmbHVzaF9k ZXZfaW90bGIpOworICAgIH0KKworICAgIGlmICggcmMgPiAwICkKKyAgICB7CisgICAgICAgIGlv bW11X2ZsdXNoX3dyaXRlX2J1ZmZlcihpb21tdSk7CisgICAgICAgIHJjID0gMDsKICAgICB9CiAK ICAgICBzZXRfYml0KGlvbW11LT5pbmRleCwgJmhkLT5hcmNoLmlvbW11X2JpdG1hcCk7CkBAIC0x NDEwLDcgKzE0MjQsNyBAQCBpbnQgZG9tYWluX2NvbnRleHRfbWFwcGluZ19vbmUoCiAgICAgaWYg KCAhc2VnICkKICAgICAgICAgbWVfd2lmaV9xdWlyayhkb21haW4sIGJ1cywgZGV2Zm4sIE1BUF9N RV9QSEFOVE9NX0ZVTkMpOwogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHJjOwogfQogCiBz dGF0aWMgaW50IGRvbWFpbl9jb250ZXh0X21hcHBpbmcoCkBAIC0xNTA1LDYgKzE1MTksNyBAQCBp bnQgZG9tYWluX2NvbnRleHRfdW5tYXBfb25lKAogICAgIHN0cnVjdCBjb250ZXh0X2VudHJ5ICpj b250ZXh0LCAqY29udGV4dF9lbnRyaWVzOwogICAgIHU2NCBtYWRkcjsKICAgICBpbnQgaW9tbXVf ZG9taWQ7CisgICAgaW50IHJjOwogCiAgICAgQVNTRVJUKHBjaWRldnNfbG9ja2VkKCkpOwogICAg IHNwaW5fbG9jaygmaW9tbXUtPmxvY2spOwpAQCAtMTUzMiwxNCArMTU0NywyMCBAQCBpbnQgZG9t YWluX2NvbnRleHRfdW5tYXBfb25lKAogICAgICAgICByZXR1cm4gLUVJTlZBTDsKICAgICB9CiAK LSAgICBpZiAoIGlvbW11X2ZsdXNoX2NvbnRleHRfZGV2aWNlKGlvbW11LCBpb21tdV9kb21pZCwK KyAgICByYyA9IGlvbW11X2ZsdXNoX2NvbnRleHRfZGV2aWNlKGlvbW11LCBpb21tdV9kb21pZCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKHUxNilidXMpIDw8IDgpIHwg ZGV2Zm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBETUFfQ0NNRF9NQVNL X05PQklULCAwKSApCi0gICAgICAgIGlvbW11X2ZsdXNoX3dyaXRlX2J1ZmZlcihpb21tdSk7Ci0g ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRE1BX0NDTURfTUFT S19OT0JJVCwgMCk7CisKKyAgICBpZiAoICFyYyApCiAgICAgewogICAgICAgICBpbnQgZmx1c2hf ZGV2X2lvdGxiID0gZmluZF9hdHNfZGV2X2RyaGQoaW9tbXUpID8gMSA6IDA7Ci0gICAgICAgIGlv bW11X2ZsdXNoX2lvdGxiX2RzaShpb21tdSwgaW9tbXVfZG9taWQsIDAsIGZsdXNoX2Rldl9pb3Rs Yik7CisgICAgICAgIHJjID0gaW9tbXVfZmx1c2hfaW90bGJfZHNpKGlvbW11LCBpb21tdV9kb21p ZCwgMCwgZmx1c2hfZGV2X2lvdGxiKTsKKyAgICB9CisKKyAgICBpZiAoIHJjID4gMCApCisgICAg eworICAgICAgICBpb21tdV9mbHVzaF93cml0ZV9idWZmZXIoaW9tbXUpOworICAgICAgICByYyA9 IDA7CiAgICAgfQogCiAgICAgc3Bpbl91bmxvY2soJmlvbW11LT5sb2NrKTsKQEAgLTE1NDgsNyAr MTU2OSw3IEBAIGludCBkb21haW5fY29udGV4dF91bm1hcF9vbmUoCiAgICAgaWYgKCAhaW9tbXUt PmludGVsLT5kcmhkLT5zZWdtZW50ICkKICAgICAgICAgbWVfd2lmaV9xdWlyayhkb21haW4sIGJ1 cywgZGV2Zm4sIFVOTUFQX01FX1BIQU5UT01fRlVOQyk7CiAKLSAgICByZXR1cm4gMDsKKyAgICBy ZXR1cm4gcmM7CiB9CiAKIHN0YXRpYyBpbnQgZG9tYWluX2NvbnRleHRfdW5tYXAoCkBAIC0xNzM4 LDcgKzE3NTksNyBAQCBzdGF0aWMgaW50IGludGVsX2lvbW11X21hcF9wYWdlKAogICAgIHVubWFw X3Z0ZF9kb21haW5fcGFnZShwYWdlKTsKIAogICAgIGlmICggIXRoaXNfY3B1KGlvbW11X2RvbnRf Zmx1c2hfaW90bGIpICkKLSAgICAgICAgX19pbnRlbF9pb21tdV9pb3RsYl9mbHVzaChkLCBnZm4s IGRtYV9wdGVfcHJlc2VudChvbGQpLCAxKTsKKyAgICAgICAgaW9tbXVfZmx1c2hfaW90bGIoZCwg Z2ZuLCBkbWFfcHRlX3ByZXNlbnQob2xkKSwgMSk7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTE3 NTQsMTQgKzE3NzUsMTUgQEAgc3RhdGljIGludCBpbnRlbF9pb21tdV91bm1hcF9wYWdlKHN0cnVj dCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuKQogICAgIHJldHVybiAwOwogfQogCi12b2lk IGlvbW11X3B0ZV9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLCB1NjQgZ2ZuLCB1NjQgKnB0ZSwKLSAg ICAgICAgICAgICAgICAgICAgIGludCBvcmRlciwgaW50IHByZXNlbnQpCitpbnQgaW9tbXVfcHRl X2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHU2NCBnZm4sIHU2NCAqcHRlLAorICAgICAgICAgICAg ICAgICAgICBpbnQgb3JkZXIsIGludCBwcmVzZW50KQogewogICAgIHN0cnVjdCBhY3BpX2RyaGRf dW5pdCAqZHJoZDsKICAgICBzdHJ1Y3QgaW9tbXUgKmlvbW11ID0gTlVMTDsKICAgICBzdHJ1Y3Qg aHZtX2lvbW11ICpoZCA9IGRvbWFpbl9odm1faW9tbXUoZCk7CiAgICAgaW50IGZsdXNoX2Rldl9p b3RsYjsKICAgICBpbnQgaW9tbXVfZG9taWQ7CisgICAgaW50IHJjID0gMDsKIAogICAgIGlvbW11 X2ZsdXNoX2NhY2hlX2VudHJ5KHB0ZSwgc2l6ZW9mKHN0cnVjdCBkbWFfcHRlKSk7CiAKQEAgLTE3 NzUsMTEgKzE3OTcsMTkgQEAgdm9pZCBpb21tdV9wdGVfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwg dTY0IGdmbiwgdTY0ICpwdGUsCiAgICAgICAgIGlvbW11X2RvbWlkPSBkb21haW5faW9tbXVfZG9t aWQoZCwgaW9tbXUpOwogICAgICAgICBpZiAoIGlvbW11X2RvbWlkID09IC0xICkKICAgICAgICAg ICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIGlvbW11X2ZsdXNoX2lvdGxiX3BzaShpb21tdSwg aW9tbXVfZG9taWQsCisKKyAgICAgICAgcmMgPSBpb21tdV9mbHVzaF9pb3RsYl9wc2koaW9tbXUs IGlvbW11X2RvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFkZHJf dClnZm4gPDwgUEFHRV9TSElGVF80SywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgb3JkZXIsICFwcmVzZW50LCBmbHVzaF9kZXZfaW90bGIpICkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgb3JkZXIsICFwcmVzZW50LCBmbHVzaF9kZXZfaW90bGIpOworICAg ICAgICBpZiAoIHJjID4gMCApCisgICAgICAgIHsKICAgICAgICAgICAgIGlvbW11X2ZsdXNoX3dy aXRlX2J1ZmZlcihpb21tdSk7CisgICAgICAgICAgICByYyA9IDA7CisgICAgICAgIH0gZWxzZSBp ZiAoIHJjIDwgMCApCisgICAgICAgICAgICBicmVhazsKICAgICB9CisKKyAgICByZXR1cm4gcmM7 CiB9CiAKIHN0YXRpYyBpbnQgX19pbml0IHZ0ZF9lcHRfcGFnZV9jb21wYXRpYmxlKHN0cnVjdCBp b21tdSAqaW9tbXUpCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2lvbW11LmggYi94 ZW4vaW5jbHVkZS9hc20teDg2L2lvbW11LmgKaW5kZXggZjIyYjNhNS4uNzkwNzAxZSAxMDA2NDQK LS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9pb21tdS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14 ODYvaW9tbXUuaApAQCAtMjYsNyArMjYsNyBAQCBpbnQgaW9tbXVfc2V0dXBfaHBldF9tc2koc3Ry dWN0IG1zaV9kZXNjICopOwogCiAvKiBXaGlsZSBWVC1kIHNwZWNpZmljLCB0aGlzIG11c3QgZ2V0 IGRlY2xhcmVkIGluIGEgZ2VuZXJpYyBoZWFkZXIuICovCiBpbnQgYWRqdXN0X3Z0ZF9pcnFfYWZm aW5pdGllcyh2b2lkKTsKLXZvaWQgaW9tbXVfcHRlX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHU2 NCBnZm4sIHU2NCAqcHRlLCBpbnQgb3JkZXIsIGludCBwcmVzZW50KTsKK2ludCBpb21tdV9wdGVf Zmx1c2goc3RydWN0IGRvbWFpbiAqZCwgdTY0IGdmbiwgdTY0ICpwdGUsIGludCBvcmRlciwgaW50 IHByZXNlbnQpOwogYm9vbF90IGlvbW11X3N1cHBvcnRzX2VpbSh2b2lkKTsKIGludCBpb21tdV9l bmFibGVfeDJhcGljX0lSKHZvaWQpOwogdm9pZCBpb21tdV9kaXNhYmxlX3gyYXBpY19JUih2b2lk KTsKLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRw Oi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK