From mboxrd@z Thu Jan 1 00:00:00 1970 From: Quan Xu Subject: [PATCH v6 2/5] IOMMU/MMU: Adjust low level functions for VT-d Device-TLB flush error Date: Wed, 2 Mar 2016 22:31:26 +0800 Message-ID: <1456929089-17414-3-git-send-email-quan.xu@intel.com> References: <1456929089-17414-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: <1456929089-17414-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: jbeulich@suse.com, kevin.tian@intel.com Cc: feng.wu@intel.com, ian.campbell@citrix.com, george.dunlap@eu.citrix.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, tim@xen.org, xen-devel@lists.xen.org, stefano.stabellini@citrix.com, Aravind.Gopalakrishnan@amd.com, jun.nakajima@intel.com, jinsong.liu@alibaba-inc.com, Quan Xu , keir@xen.org, suravee.suthikulpanit@amd.com List-Id: xen-devel@lists.xenproject.org U2lnbmVkLW9mZi1ieTogUXVhbiBYdSA8cXVhbi54dUBpbnRlbC5jb20+Ci0tLQogeGVuL2FyY2gv eDg2L21tL3AybS1lcHQuYyAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiB4ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfaW5pdC5jICAgICAgfCAgMTIgKystCiB4ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC9hbWQvcGNpX2FtZF9pb21tdS5jICAgfCAgIDIgKy0KIHhlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL2FybS9zbW11LmMgICAgICAgICAgICB8ICAxMCArKy0KIHhlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL2lvbW11LmMgICAgICAgICAgICAgICB8ICAxNyArKy0tCiB4ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC92dGQvZXh0ZXJuLmggICAgICAgICAgfCAgIDIgKy0KIHhlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jICAgICAgICAgICB8IDEyMCArKysrKysrKysrKysrKysr KystLS0tLS0tLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3F1aXJrcy5jICAgICAgICAg IHwgIDI2ICsrKy0tLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vc3ZtL2FtZC1pb21tdS1wcm90 by5oIHwgICAyICstCiB4ZW4vaW5jbHVkZS9hc20teDg2L2lvbW11LmggICAgICAgICAgICAgICAg ICAgfCAgIDIgKy0KIHhlbi9pbmNsdWRlL3hlbi9pb21tdS5oICAgICAgICAgICAgICAgICAgICAg ICB8ICAgNiArLQogMTEgZmlsZXMgY2hhbmdlZCwgMTMzIGluc2VydGlvbnMoKyksIDY4IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMgYi94ZW4vYXJj aC94ODYvbW0vcDJtLWVwdC5jCmluZGV4IGQzMWI5YWYuLjIyNDc5NzIgMTAwNjQ0Ci0tLSBhL3hl bi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMKKysrIGIveGVuL2FyY2gveDg2L21tL3AybS1lcHQuYwpA QCAtODI5LDcgKzgyOSw3IEBAIG91dDoKICAgICAgICAgIG5lZWRfbW9kaWZ5X3Z0ZF90YWJsZSAp CiAgICAgewogICAgICAgICBpZiAoIGlvbW11X2hhcF9wdF9zaGFyZSApCi0gICAgICAgICAgICBp b21tdV9wdGVfZmx1c2goZCwgZ2ZuLCAmZXB0X2VudHJ5LT5lcHRlLCBvcmRlciwgdnRkX3B0ZV9w cmVzZW50KTsKKyAgICAgICAgICAgIHJjID0gaW9tbXVfcHRlX2ZsdXNoKGQsIGdmbiwgJmVwdF9l bnRyeS0+ZXB0ZSwgb3JkZXIsIHZ0ZF9wdGVfcHJlc2VudCk7CiAgICAgICAgIGVsc2UKICAgICAg ICAgewogICAgICAgICAgICAgaWYgKCBpb21tdV9mbGFncyApCmRpZmYgLS1naXQgYS94ZW4vZHJp dmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfaW5pdC5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91 Z2gvYW1kL2lvbW11X2luaXQuYwppbmRleCBkOTBhMmQyLi41NjM1NjUwIDEwMDY0NAotLS0gYS94 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfaW5pdC5jCisrKyBiL3hlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9pbml0LmMKQEAgLTEzNDAsMTIgKzEzNDAsMTQgQEAgc3Rh dGljIHZvaWQgaW52YWxpZGF0ZV9hbGxfZGV2aWNlcyh2b2lkKQogICAgIGl0ZXJhdGVfaXZyc19t YXBwaW5ncyhfaW52YWxpZGF0ZV9hbGxfZGV2aWNlcyk7CiB9CiAKLXZvaWQgYW1kX2lvbW11X3N1 c3BlbmQodm9pZCkKK2ludCBhbWRfaW9tbXVfc3VzcGVuZCh2b2lkKQogewogICAgIHN0cnVjdCBh bWRfaW9tbXUgKmlvbW11OwogCiAgICAgZm9yX2VhY2hfYW1kX2lvbW11ICggaW9tbXUgKQogICAg ICAgICBkaXNhYmxlX2lvbW11KGlvbW11KTsKKworICAgIHJldHVybiAwOwogfQogCiB2b2lkIGFt ZF9pb21tdV9yZXN1bWUodm9pZCkKQEAgLTEzNjksMyArMTM3MSwxMSBAQCB2b2lkIGFtZF9pb21t dV9yZXN1bWUodm9pZCkKICAgICAgICAgaW52YWxpZGF0ZV9hbGxfZG9tYWluX3BhZ2VzKCk7CiAg ICAgfQogfQorCit2b2lkIGFtZF9pb21tdV9jcmFzaF9zaHV0ZG93bih2b2lkKQoreworICAgIHN0 cnVjdCBhbWRfaW9tbXUgKmlvbW11OworCisgICAgZm9yX2VhY2hfYW1kX2lvbW11ICggaW9tbXUg KQorICAgICAgICBkaXNhYmxlX2lvbW11KGlvbW11KTsKK30KZGlmZiAtLWdpdCBhL3hlbi9kcml2 ZXJzL3Bhc3N0aHJvdWdoL2FtZC9wY2lfYW1kX2lvbW11LmMgYi94ZW4vZHJpdmVycy9wYXNzdGhy b3VnaC9hbWQvcGNpX2FtZF9pb21tdS5jCmluZGV4IGMxYzBiNmIuLjhkOWYzNTggMTAwNjQ0Ci0t LSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9wY2lfYW1kX2lvbW11LmMKKysrIGIveGVu L2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL3BjaV9hbWRfaW9tbXUuYwpAQCAtNjI4LDYgKzYyOCw2 IEBAIGNvbnN0IHN0cnVjdCBpb21tdV9vcHMgYW1kX2lvbW11X29wcyA9IHsKICAgICAuc3VzcGVu ZCA9IGFtZF9pb21tdV9zdXNwZW5kLAogICAgIC5yZXN1bWUgPSBhbWRfaW9tbXVfcmVzdW1lLAog ICAgIC5zaGFyZV9wMm0gPSBhbWRfaW9tbXVfc2hhcmVfcDJtLAotICAgIC5jcmFzaF9zaHV0ZG93 biA9IGFtZF9pb21tdV9zdXNwZW5kLAorICAgIC5jcmFzaF9zaHV0ZG93biA9IGFtZF9pb21tdV9j cmFzaF9zaHV0ZG93biwKICAgICAuZHVtcF9wMm1fdGFibGUgPSBhbWRfZHVtcF9wMm1fdGFibGUs CiB9OwpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUuYyBiL3hl bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMKaW5kZXggYmIwODgyNy4uOTZiYjU2OCAx MDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUuYworKysgYi94ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jCkBAIC0yNTQ0LDcgKzI1NDQsNyBAQCBzdGF0 aWMgaW50IGZvcmNlX3N0YWdlID0gMjsKICAqLwogc3RhdGljIHUzMiBwbGF0Zm9ybV9mZWF0dXJl cyA9IEFSTV9TTU1VX0ZFQVRfQ09IRVJFTlRfV0FMSzsKIAotc3RhdGljIHZvaWQgYXJtX3NtbXVf aW90bGJfZmx1c2hfYWxsKHN0cnVjdCBkb21haW4gKmQpCitzdGF0aWMgaW50IGFybV9zbW11X2lv dGxiX2ZsdXNoX2FsbChzdHJ1Y3QgZG9tYWluICpkKQogewogCXN0cnVjdCBhcm1fc21tdV94ZW5f ZG9tYWluICpzbW11X2RvbWFpbiA9IGRvbWFpbl9odm1faW9tbXUoZCktPmFyY2gucHJpdjsKIAlz dHJ1Y3QgaW9tbXVfZG9tYWluICpjZmc7CkBAIC0yNTYxLDEzICsyNTYxLDE1IEBAIHN0YXRpYyB2 b2lkIGFybV9zbW11X2lvdGxiX2ZsdXNoX2FsbChzdHJ1Y3QgZG9tYWluICpkKQogCQlhcm1fc21t dV90bGJfaW52X2NvbnRleHQoY2ZnLT5wcml2KTsKIAl9CiAJc3Bpbl91bmxvY2soJnNtbXVfZG9t YWluLT5sb2NrKTsKKworICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBhcm1fc21tdV9p b3RsYl9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX2NvdW50KQorc3RhdGlj IGludCBhcm1fc21tdV9pb3RsYl9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25n IGdmbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBhZ2Vf Y291bnQpCiB7CiAgICAgLyogQVJNIFNNTVUgdjEgZG9lc24ndCBoYXZlIGZsdXNoIGJ5IFZNQSBh bmQgVk1JRCAqLwotICAgIGFybV9zbW11X2lvdGxiX2ZsdXNoX2FsbChkKTsKKyAgICByZXR1cm4g YXJtX3NtbXVfaW90bGJfZmx1c2hfYWxsKGQpOwogfQogCiBzdGF0aWMgc3RydWN0IGlvbW11X2Rv bWFpbiAqYXJtX3NtbXVfZ2V0X2RvbWFpbihzdHJ1Y3QgZG9tYWluICpkLApkaWZmIC0tZ2l0IGEv eGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdo L2lvbW11LmMKaW5kZXggZGFmZjAwYy4uZmZmNjBlOSAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvaW9tbXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5j CkBAIC0xNzEsNyArMTcxLDExIEBAIHZvaWQgX19od2RvbV9pbml0IGlvbW11X2h3ZG9tX2luaXQo c3RydWN0IGRvbWFpbiAqZCkKICAgICAgICAgICAgICAgICAgKChwYWdlLT51LmludXNlLnR5cGVf aW5mbyAmIFBHVF90eXBlX21hc2spCiAgICAgICAgICAgICAgICAgICA9PSBQR1Rfd3JpdGFibGVf cGFnZSkgKQogICAgICAgICAgICAgICAgIG1hcHBpbmcgfD0gSU9NTVVGX3dyaXRhYmxlOwotICAg ICAgICAgICAgaGQtPnBsYXRmb3JtX29wcy0+bWFwX3BhZ2UoZCwgZ2ZuLCBtZm4sIG1hcHBpbmcp OworICAgICAgICAgICAgaWYgKCBoZC0+cGxhdGZvcm1fb3BzLT5tYXBfcGFnZShkLCBnZm4sIG1m biwgbWFwcGluZykgKQorICAgICAgICAgICAgICAgIHByaW50ayhYRU5MT0dfR19FUlIKKyAgICAg ICAgICAgICAgICAgICAgICAgIklPTU1VOiBNYXAgcGFnZSBnZm46IDB4JWx4KG1mbjogMHglbHgp IGZhaWxlZC5cbiIsCisgICAgICAgICAgICAgICAgICAgICAgIGdmbiwgbWZuKTsKKwogICAgICAg ICAgICAgaWYgKCAhKGkrKyAmIDB4ZmZmZmYpICkKICAgICAgICAgICAgICAgICBwcm9jZXNzX3Bl bmRpbmdfc29mdGlycXMoKTsKICAgICAgICAgfQpAQCAtMjczLDkgKzI3Nyw3IEBAIGludCBpb21t dV9pb3RsYl9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWdu ZWQgaW50IHBhZ2VfY291CiAgICAgaWYgKCAhaW9tbXVfZW5hYmxlZCB8fCAhaGQtPnBsYXRmb3Jt X29wcyB8fCAhaGQtPnBsYXRmb3JtX29wcy0+aW90bGJfZmx1c2ggKQogICAgICAgICByZXR1cm4g MDsKIAotICAgIGhkLT5wbGF0Zm9ybV9vcHMtPmlvdGxiX2ZsdXNoKGQsIGdmbiwgcGFnZV9jb3Vu dCk7Ci0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gaGQtPnBsYXRmb3JtX29wcy0+aW90bGJf Zmx1c2goZCwgZ2ZuLCBwYWdlX2NvdW50KTsKIH0KIAogaW50IGlvbW11X2lvdGxiX2ZsdXNoX2Fs bChzdHJ1Y3QgZG9tYWluICpkKQpAQCAtMjg1LDkgKzI4Nyw3IEBAIGludCBpb21tdV9pb3RsYl9m bHVzaF9hbGwoc3RydWN0IGRvbWFpbiAqZCkKICAgICBpZiAoICFpb21tdV9lbmFibGVkIHx8ICFo ZC0+cGxhdGZvcm1fb3BzIHx8ICFoZC0+cGxhdGZvcm1fb3BzLT5pb3RsYl9mbHVzaF9hbGwgKQog ICAgICAgICByZXR1cm4gMDsKIAotICAgIGhkLT5wbGF0Zm9ybV9vcHMtPmlvdGxiX2ZsdXNoX2Fs bChkKTsKLQotICAgIHJldHVybiAwOworICAgIHJldHVybiBoZC0+cGxhdGZvcm1fb3BzLT5pb3Rs Yl9mbHVzaF9hbGwoZCk7CiB9CiAKIGludCBfX2luaXQgaW9tbXVfc2V0dXAodm9pZCkKQEAgLTM2 MSw4ICszNjEsOSBAQCBpbnQgaW9tbXVfZG9fZG9tY3RsKAogaW50IGlvbW11X3N1c3BlbmQoKQog ewogICAgIGNvbnN0IHN0cnVjdCBpb21tdV9vcHMgKm9wcyA9IGlvbW11X2dldF9vcHMoKTsKKwog ICAgIGlmICggaW9tbXVfZW5hYmxlZCApCi0gICAgICAgIG9wcy0+c3VzcGVuZCgpOworICAgICAg ICByZXR1cm4gb3BzLT5zdXNwZW5kKCk7CiAKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBh L3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9leHRlcm4uaCBiL3hlbi9kcml2ZXJzL3Bhc3N0 aHJvdWdoL3Z0ZC9leHRlcm4uaAppbmRleCA4YWNmODg5Li41MDdjMmU5IDEwMDY0NAotLS0gYS94 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvZXh0ZXJuLmgKKysrIGIveGVuL2RyaXZlcnMvcGFz c3Rocm91Z2gvdnRkL2V4dGVybi5oCkBAIC05MSw3ICs5MSw3IEBAIGludCBpc19pZ2RfdnRfZW5h YmxlZF9xdWlyayh2b2lkKTsKIHZvaWQgcGxhdGZvcm1fcXVpcmtzX2luaXQodm9pZCk7CiB2b2lk IHZ0ZF9vcHNfcHJlYW1ibGVfcXVpcmsoc3RydWN0IGlvbW11KiBpb21tdSk7CiB2b2lkIHZ0ZF9v cHNfcG9zdGFtYmxlX3F1aXJrKHN0cnVjdCBpb21tdSogaW9tbXUpOwotdm9pZCBtZV93aWZpX3F1 aXJrKHN0cnVjdCBkb21haW4gKmRvbWFpbiwgdTggYnVzLCB1OCBkZXZmbiwgaW50IG1hcCk7Citp bnQgbWVfd2lmaV9xdWlyayhzdHJ1Y3QgZG9tYWluICpkb21haW4sIHU4IGJ1cywgdTggZGV2Zm4s IGludCBtYXApOwogdm9pZCBwY2lfdnRkX3F1aXJrKGNvbnN0IHN0cnVjdCBwY2lfZGV2ICopOwog aW50IHBsYXRmb3JtX3N1cHBvcnRzX2ludHJlbWFwKHZvaWQpOwogaW50IHBsYXRmb3JtX3N1cHBv cnRzX3gyYXBpYyh2b2lkKTsKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0 ZC9pb21tdS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKaW5kZXggZGQx Mzg2NS4uNmU2MmE0MiAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lv bW11LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKQEAgLTU0Miwx MSArNTQyLDEyIEBAIHN0YXRpYyBpbnQgaW9tbXVfZmx1c2hfaW90bGJfcHNpKAogICAgIHJldHVy biBzdGF0dXM7CiB9CiAKLXN0YXRpYyB2b2lkIGlvbW11X2ZsdXNoX2FsbCh2b2lkKQorc3RhdGlj IGludCBpb21tdV9mbHVzaF9hbGwodm9pZCkKIHsKICAgICBzdHJ1Y3QgYWNwaV9kcmhkX3VuaXQg KmRyaGQ7CiAgICAgc3RydWN0IGlvbW11ICppb21tdTsKICAgICBpbnQgZmx1c2hfZGV2X2lvdGxi OworICAgIGludCByYzsKIAogICAgIGZsdXNoX2FsbF9jYWNoZSgpOwogICAgIGZvcl9lYWNoX2Ry aGRfdW5pdCAoIGRyaGQgKQpAQCAtNTU0LDExICs1NTUsMjQgQEAgc3RhdGljIHZvaWQgaW9tbXVf Zmx1c2hfYWxsKHZvaWQpCiAgICAgICAgIGlvbW11ID0gZHJoZC0+aW9tbXU7CiAgICAgICAgIGlv bW11X2ZsdXNoX2NvbnRleHRfZ2xvYmFsKGlvbW11LCAwKTsKICAgICAgICAgZmx1c2hfZGV2X2lv dGxiID0gZmluZF9hdHNfZGV2X2RyaGQoaW9tbXUpID8gMSA6IDA7Ci0gICAgICAgIGlvbW11X2Zs dXNoX2lvdGxiX2dsb2JhbChpb21tdSwgMCwgZmx1c2hfZGV2X2lvdGxiKTsKKyAgICAgICAgcmMg PSBpb21tdV9mbHVzaF9pb3RsYl9nbG9iYWwoaW9tbXUsIDAsIGZsdXNoX2Rldl9pb3RsYik7CisK KyAgICAgICAgaWYgKCByYyA+IDAgKQorICAgICAgICB7CisgICAgICAgICAgICBpb21tdV9mbHVz aF93cml0ZV9idWZmZXIoaW9tbXUpOworICAgICAgICAgICAgcmMgPSAwOworICAgICAgICB9Cisg ICAgICAgIGVsc2UgaWYgKCByYyA8IDAgKQorICAgICAgICB7CisgICAgICAgICAgICBwcmludGso WEVOTE9HX0dfRVJSICJJT01NVTogSU9NTVUgZmx1c2ggYWxsIGZhaWxlZC5cbiIpOworICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICB9CisKKyAgICByZXR1cm4gcmM7CiB9CiAKLXN0 YXRpYyB2b2lkIF9faW50ZWxfaW9tbXVfaW90bGJfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwgdW5z aWduZWQgbG9uZyBnZm4sCitzdGF0aWMgaW50IF9faW50ZWxfaW9tbXVfaW90bGJfZmx1c2goc3Ry dWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCiAgICAgICAgIGludCBkbWFfb2xkX3B0 ZV9wcmVzZW50LCB1bnNpZ25lZCBpbnQgcGFnZV9jb3VudCkKIHsKICAgICBzdHJ1Y3QgaHZtX2lv bW11ICpoZCA9IGRvbWFpbl9odm1faW9tbXUoZCk7CkBAIC01NjYsNiArNTgwLDcgQEAgc3RhdGlj IHZvaWQgX19pbnRlbF9pb21tdV9pb3RsYl9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25l ZCBsb25nIGdmbiwKICAgICBzdHJ1Y3QgaW9tbXUgKmlvbW11OwogICAgIGludCBmbHVzaF9kZXZf aW90bGI7CiAgICAgaW50IGlvbW11X2RvbWlkOworICAgIGludCByYyA9IDA7CiAKICAgICAvKgog ICAgICAqIE5vIG5lZWQgcGNpZGV2ZXNfbG9jayBoZXJlIGJlY2F1c2Ugd2UgaGF2ZSBmbHVzaApA QCAtNTg0LDM3ICs1OTksNDAgQEAgc3RhdGljIHZvaWQgX19pbnRlbF9pb21tdV9pb3RsYl9mbHVz aChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwKICAgICAgICAgICAgIGNvbnRp bnVlOwogCiAgICAgICAgIGlmICggcGFnZV9jb3VudCA+IDEgfHwgZ2ZuID09IC0xICkKLSAgICAg ICAgewotICAgICAgICAgICAgaWYgKCBpb21tdV9mbHVzaF9pb3RsYl9kc2koaW9tbXUsIGlvbW11 X2RvbWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgMCwgZmx1c2hfZGV2X2lvdGxiKSApCi0g ICAgICAgICAgICAgICAgaW9tbXVfZmx1c2hfd3JpdGVfYnVmZmVyKGlvbW11KTsKLSAgICAgICAg fQorICAgICAgICAgICAgcmMgPSBpb21tdV9mbHVzaF9pb3RsYl9kc2koaW9tbXUsIGlvbW11X2Rv bWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgMCwgZmx1c2hfZGV2X2lvdGxiKTsKICAgICAg ICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIGlvbW11X2ZsdXNoX2lvdGxiX3Bz aShpb21tdSwgaW9tbXVfZG9taWQsCisgICAgICAgICAgICByYyA9IGlvbW11X2ZsdXNoX2lvdGxi X3BzaShpb21tdSwgaW9tbXVfZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAocGFkZHJf dClnZm4gPDwgUEFHRV9TSElGVF80SywgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICFkbWFf b2xkX3B0ZV9wcmVzZW50LCBmbHVzaF9kZXZfaW90bGIpICkKLSAgICAgICAgICAgICAgICBpb21t dV9mbHVzaF93cml0ZV9idWZmZXIoaW9tbXUpOworICAgICAgICAgICAgICAgICAgICAgICAgIWRt YV9vbGRfcHRlX3ByZXNlbnQsIGZsdXNoX2Rldl9pb3RsYik7CisKKyAgICAgICAgaWYgKCByYyA+ IDAgKQorICAgICAgICB7CisgICAgICAgICAgICBpb21tdV9mbHVzaF93cml0ZV9idWZmZXIoaW9t bXUpOworICAgICAgICAgICAgcmMgPSAwOwogICAgICAgICB9CiAgICAgfQorCisgICAgcmV0dXJu IHJjOwogfQogCi1zdGF0aWMgdm9pZCBpbnRlbF9pb21tdV9pb3RsYl9mbHVzaChzdHJ1Y3QgZG9t YWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQgaW50IHBhZ2VfY291bnQpCitzdGF0 aWMgaW50IGludGVsX2lvbW11X2lvdGxiX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVk IGxvbmcgZ2ZuLCB1bnNpZ25lZCBpbnQgcGFnZV9jb3VudCkKIHsKLSAgICBfX2ludGVsX2lvbW11 X2lvdGxiX2ZsdXNoKGQsIGdmbiwgMSwgcGFnZV9jb3VudCk7CisgICAgcmV0dXJuIF9faW50ZWxf aW9tbXVfaW90bGJfZmx1c2goZCwgZ2ZuLCAxLCBwYWdlX2NvdW50KTsKIH0KIAotc3RhdGljIHZv aWQgaW50ZWxfaW9tbXVfaW90bGJfZmx1c2hfYWxsKHN0cnVjdCBkb21haW4gKmQpCitzdGF0aWMg aW50IGludGVsX2lvbW11X2lvdGxiX2ZsdXNoX2FsbChzdHJ1Y3QgZG9tYWluICpkKQogewotICAg IF9faW50ZWxfaW9tbXVfaW90bGJfZmx1c2goZCwgMCwgMCwgMCk7CisgICAgcmV0dXJuIF9faW50 ZWxfaW9tbXVfaW90bGJfZmx1c2goZCwgMCwgMCwgMCk7CiB9CiAKIC8qIGNsZWFyIG9uZSBwYWdl J3MgcGFnZSB0YWJsZSAqLwotc3RhdGljIHZvaWQgZG1hX3B0ZV9jbGVhcl9vbmUoc3RydWN0IGRv bWFpbiAqZG9tYWluLCB1NjQgYWRkcikKK3N0YXRpYyBpbnQgZG1hX3B0ZV9jbGVhcl9vbmUoc3Ry dWN0IGRvbWFpbiAqZG9tYWluLCB1NjQgYWRkcikKIHsKICAgICBzdHJ1Y3QgaHZtX2lvbW11ICpo ZCA9IGRvbWFpbl9odm1faW9tbXUoZG9tYWluKTsKICAgICBzdHJ1Y3QgZG1hX3B0ZSAqcGFnZSA9 IE5VTEwsICpwdGUgPSBOVUxMOwogICAgIHU2NCBwZ19tYWRkcjsKKyAgICBpbnQgcmMgPSAwOwog CiAgICAgc3Bpbl9sb2NrKCZoZC0+YXJjaC5tYXBwaW5nX2xvY2spOwogICAgIC8qIGdldCBsYXN0 IGxldmVsIHB0ZSAqLwpAQCAtNjIyLDcgKzY0MCw3IEBAIHN0YXRpYyB2b2lkIGRtYV9wdGVfY2xl YXJfb25lKHN0cnVjdCBkb21haW4gKmRvbWFpbiwgdTY0IGFkZHIpCiAgICAgaWYgKCBwZ19tYWRk ciA9PSAwICkKICAgICB7CiAgICAgICAgIHNwaW5fdW5sb2NrKCZoZC0+YXJjaC5tYXBwaW5nX2xv Y2spOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiAtRU5PTUVNOwogICAgIH0KIAog ICAgIHBhZ2UgPSAoc3RydWN0IGRtYV9wdGUgKiltYXBfdnRkX2RvbWFpbl9wYWdlKHBnX21hZGRy KTsKQEAgLTYzMiw3ICs2NTAsNyBAQCBzdGF0aWMgdm9pZCBkbWFfcHRlX2NsZWFyX29uZShzdHJ1 Y3QgZG9tYWluICpkb21haW4sIHU2NCBhZGRyKQogICAgIHsKICAgICAgICAgc3Bpbl91bmxvY2so JmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7CiAgICAgICAgIHVubWFwX3Z0ZF9kb21haW5fcGFnZShw YWdlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICBk bWFfY2xlYXJfcHRlKCpwdGUpOwpAQCAtNjQwLDkgKzY1OCwxMSBAQCBzdGF0aWMgdm9pZCBkbWFf cHRlX2NsZWFyX29uZShzdHJ1Y3QgZG9tYWluICpkb21haW4sIHU2NCBhZGRyKQogICAgIGlvbW11 X2ZsdXNoX2NhY2hlX2VudHJ5KHB0ZSwgc2l6ZW9mKHN0cnVjdCBkbWFfcHRlKSk7CiAKICAgICBp ZiAoICF0aGlzX2NwdShpb21tdV9kb250X2ZsdXNoX2lvdGxiKSApCi0gICAgICAgIF9faW50ZWxf aW9tbXVfaW90bGJfZmx1c2goZG9tYWluLCBhZGRyID4+IFBBR0VfU0hJRlRfNEssIDEsIDEpOwor ICAgICAgICByYyA9IF9faW50ZWxfaW9tbXVfaW90bGJfZmx1c2goZG9tYWluLCBhZGRyID4+IFBB R0VfU0hJRlRfNEssIDEsIDEpOwogCiAgICAgdW5tYXBfdnRkX2RvbWFpbl9wYWdlKHBhZ2UpOwor CisgICAgcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgdm9pZCBpb21tdV9mcmVlX3BhZ2V0YWJsZSh1 NjQgcHRfbWFkZHIsIGludCBsZXZlbCkKQEAgLTEyODUsNiArMTMwNSw3IEBAIGludCBkb21haW5f Y29udGV4dF9tYXBwaW5nX29uZSgKICAgICB1NjQgbWFkZHIsIHBnZF9tYWRkcjsKICAgICB1MTYg c2VnID0gaW9tbXUtPmludGVsLT5kcmhkLT5zZWdtZW50OwogICAgIGludCBhZ2F3OworICAgIGlu dCByYyA9IDA7CiAKICAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJnBjaWRldnNfbG9jaykpOwog ICAgIHNwaW5fbG9jaygmaW9tbXUtPmxvY2spOwpAQCAtMTQwNCw3ICsxNDI1LDE0IEBAIGludCBk b21haW5fY29udGV4dF9tYXBwaW5nX29uZSgKICAgICBlbHNlCiAgICAgewogICAgICAgICBpbnQg Zmx1c2hfZGV2X2lvdGxiID0gZmluZF9hdHNfZGV2X2RyaGQoaW9tbXUpID8gMSA6IDA7Ci0gICAg ICAgIGlvbW11X2ZsdXNoX2lvdGxiX2RzaShpb21tdSwgMCwgMSwgZmx1c2hfZGV2X2lvdGxiKTsK KworICAgICAgICByYyA9IGlvbW11X2ZsdXNoX2lvdGxiX2RzaShpb21tdSwgMCwgMSwgZmx1c2hf ZGV2X2lvdGxiKTsKKworICAgICAgICBpZiAoIHJjID4gMCApCisgICAgICAgIHsKKyAgICAgICAg ICAgIGlvbW11X2ZsdXNoX3dyaXRlX2J1ZmZlcihpb21tdSk7CisgICAgICAgICAgICByYyA9IDA7 CisgICAgICAgIH0KICAgICB9CiAKICAgICBzZXRfYml0KGlvbW11LT5pbmRleCwgJmhkLT5hcmNo LmlvbW11X2JpdG1hcCk7CkBAIC0xNDE0LDcgKzE0NDIsNyBAQCBpbnQgZG9tYWluX2NvbnRleHRf bWFwcGluZ19vbmUoCiAgICAgaWYgKCAhc2VnICkKICAgICAgICAgbWVfd2lmaV9xdWlyayhkb21h aW4sIGJ1cywgZGV2Zm4sIE1BUF9NRV9QSEFOVE9NX0ZVTkMpOwogCi0gICAgcmV0dXJuIDA7Cisg ICAgcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgaW50IGRvbWFpbl9jb250ZXh0X21hcHBpbmcoCkBA IC0xNTA5LDYgKzE1MzcsNyBAQCBpbnQgZG9tYWluX2NvbnRleHRfdW5tYXBfb25lKAogICAgIHN0 cnVjdCBjb250ZXh0X2VudHJ5ICpjb250ZXh0LCAqY29udGV4dF9lbnRyaWVzOwogICAgIHU2NCBt YWRkcjsKICAgICBpbnQgaW9tbXVfZG9taWQ7CisgICAgaW50IHJjID0gMDsKIAogICAgIEFTU0VS VChzcGluX2lzX2xvY2tlZCgmcGNpZGV2c19sb2NrKSk7CiAgICAgc3Bpbl9sb2NrKCZpb21tdS0+ bG9jayk7CkBAIC0xNTQzLDcgKzE1NzIsMTQgQEAgaW50IGRvbWFpbl9jb250ZXh0X3VubWFwX29u ZSgKICAgICBlbHNlCiAgICAgewogICAgICAgICBpbnQgZmx1c2hfZGV2X2lvdGxiID0gZmluZF9h dHNfZGV2X2RyaGQoaW9tbXUpID8gMSA6IDA7Ci0gICAgICAgIGlvbW11X2ZsdXNoX2lvdGxiX2Rz aShpb21tdSwgaW9tbXVfZG9taWQsIDAsIGZsdXNoX2Rldl9pb3RsYik7CisKKyAgICAgICAgcmMg PSBpb21tdV9mbHVzaF9pb3RsYl9kc2koaW9tbXUsIGlvbW11X2RvbWlkLCAwLCBmbHVzaF9kZXZf aW90bGIpOworCisgICAgICAgIGlmICggcmMgPiAwICkKKyAgICAgICAgeworICAgICAgICAgICAg aW9tbXVfZmx1c2hfd3JpdGVfYnVmZmVyKGlvbW11KTsKKyAgICAgICAgICAgIHJjID0gMDsKKyAg ICAgICAgfQogICAgIH0KIAogICAgIHNwaW5fdW5sb2NrKCZpb21tdS0+bG9jayk7CkBAIC0xNTUy LDcgKzE1ODgsNyBAQCBpbnQgZG9tYWluX2NvbnRleHRfdW5tYXBfb25lKAogICAgIGlmICggIWlv bW11LT5pbnRlbC0+ZHJoZC0+c2VnbWVudCApCiAgICAgICAgIG1lX3dpZmlfcXVpcmsoZG9tYWlu LCBidXMsIGRldmZuLCBVTk1BUF9NRV9QSEFOVE9NX0ZVTkMpOwogCi0gICAgcmV0dXJuIDA7Cisg ICAgcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgaW50IGRvbWFpbl9jb250ZXh0X3VubWFwKApAQCAt MTc0Miw3ICsxNzc4LDcgQEAgc3RhdGljIGludCBpbnRlbF9pb21tdV9tYXBfcGFnZSgKICAgICB1 bm1hcF92dGRfZG9tYWluX3BhZ2UocGFnZSk7CiAKICAgICBpZiAoICF0aGlzX2NwdShpb21tdV9k b250X2ZsdXNoX2lvdGxiKSApCi0gICAgICAgIF9faW50ZWxfaW9tbXVfaW90bGJfZmx1c2goZCwg Z2ZuLCBkbWFfcHRlX3ByZXNlbnQob2xkKSwgMSk7CisgICAgICAgIHJldHVybiBfX2ludGVsX2lv bW11X2lvdGxiX2ZsdXNoKGQsIGdmbiwgZG1hX3B0ZV9wcmVzZW50KG9sZCksIDEpOwogCiAgICAg cmV0dXJuIDA7CiB9CkBAIC0xNzUzLDE5ICsxNzg5LDE4IEBAIHN0YXRpYyBpbnQgaW50ZWxfaW9t bXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbikKICAgICBp ZiAoIGlvbW11X3Bhc3N0aHJvdWdoICYmIGlzX2hhcmR3YXJlX2RvbWFpbihkKSApCiAgICAgICAg IHJldHVybiAwOwogCi0gICAgZG1hX3B0ZV9jbGVhcl9vbmUoZCwgKHBhZGRyX3QpZ2ZuIDw8IFBB R0VfU0hJRlRfNEspOwotCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGRtYV9wdGVfY2xlYXJf b25lKGQsIChwYWRkcl90KWdmbiA8PCBQQUdFX1NISUZUXzRLKTsKIH0KIAotdm9pZCBpb21tdV9w dGVfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwgdTY0IGdmbiwgdTY0ICpwdGUsCi0gICAgICAgICAg ICAgICAgICAgICBpbnQgb3JkZXIsIGludCBwcmVzZW50KQoraW50IGlvbW11X3B0ZV9mbHVzaChz dHJ1Y3QgZG9tYWluICpkLCB1NjQgZ2ZuLCB1NjQgKnB0ZSwKKyAgICAgICAgICAgICAgICAgICAg aW50IG9yZGVyLCBpbnQgcHJlc2VudCkKIHsKICAgICBzdHJ1Y3QgYWNwaV9kcmhkX3VuaXQgKmRy aGQ7CiAgICAgc3RydWN0IGlvbW11ICppb21tdSA9IE5VTEw7CiAgICAgc3RydWN0IGh2bV9pb21t dSAqaGQgPSBkb21haW5faHZtX2lvbW11KGQpOwogICAgIGludCBmbHVzaF9kZXZfaW90bGI7CiAg ICAgaW50IGlvbW11X2RvbWlkOworICAgIGludCByYyA9IDA7CiAKICAgICBpb21tdV9mbHVzaF9j YWNoZV9lbnRyeShwdGUsIHNpemVvZihzdHJ1Y3QgZG1hX3B0ZSkpOwogCkBAIC0xNzc5LDExICsx ODE0LDE3IEBAIHZvaWQgaW9tbXVfcHRlX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHU2NCBnZm4s IHU2NCAqcHRlLAogICAgICAgICBpb21tdV9kb21pZD0gZG9tYWluX2lvbW11X2RvbWlkKGQsIGlv bW11KTsKICAgICAgICAgaWYgKCBpb21tdV9kb21pZCA9PSAtMSApCiAgICAgICAgICAgICBjb250 aW51ZTsKLSAgICAgICAgaWYgKCBpb21tdV9mbHVzaF9pb3RsYl9wc2koaW9tbXUsIGlvbW11X2Rv bWlkLAorICAgICAgICByYyA9IGlvbW11X2ZsdXNoX2lvdGxiX3BzaShpb21tdSwgaW9tbXVfZG9t aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWRkcl90KWdmbiA8PCBQ QUdFX1NISUZUXzRLLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlciwg IXByZXNlbnQsIGZsdXNoX2Rldl9pb3RsYikgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvcmRlciwgIXByZXNlbnQsIGZsdXNoX2Rldl9pb3RsYik7CisgICAgICAgIGlmICgg cmMgPiAwICkKKyAgICAgICAgewogICAgICAgICAgICAgaW9tbXVfZmx1c2hfd3JpdGVfYnVmZmVy KGlvbW11KTsKKyAgICAgICAgICAgIHJjID0gMDsKKyAgICAgICAgfQogICAgIH0KKworICAgIHJl dHVybiByYzsKIH0KIAogc3RhdGljIGludCBfX2luaXQgdnRkX2VwdF9wYWdlX2NvbXBhdGlibGUo c3RydWN0IGlvbW11ICppb21tdSkKQEAgLTIxMDMsOCArMjE0NCw4IEBAIHN0YXRpYyBpbnQgaW5p dF92dGRfaHcodm9pZCkKICAgICAgICAgICAgIHJldHVybiAtRUlPOwogICAgICAgICB9CiAgICAg fQotICAgIGlvbW11X2ZsdXNoX2FsbCgpOwotICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGlv bW11X2ZsdXNoX2FsbCgpOwogfQogCiBzdGF0aWMgdm9pZCBfX2h3ZG9tX2luaXQgc2V0dXBfaHdk b21fcm1ycihzdHJ1Y3QgZG9tYWluICpkKQpAQCAtMjM3MiwxNiArMjQxMywxOSBAQCBzdGF0aWMg aW50IGludGVsX2lvbW11X2dyb3VwX2lkKHUxNiBzZWcsIHU4IGJ1cywgdTggZGV2Zm4pCiB9CiAK IHN0YXRpYyB1MzIgaW9tbXVfc3RhdGVbTUFYX0lPTU1VU11bTUFYX0lPTU1VX1JFR1NdOwotc3Rh dGljIHZvaWQgdnRkX3N1c3BlbmQodm9pZCkKK3N0YXRpYyBpbnQgdnRkX3N1c3BlbmQodm9pZCkK IHsKICAgICBzdHJ1Y3QgYWNwaV9kcmhkX3VuaXQgKmRyaGQ7CiAgICAgc3RydWN0IGlvbW11ICpp b21tdTsKICAgICB1MzIgICAgaTsKKyAgICBpbnQgcmM7CiAKICAgICBpZiAoICFpb21tdV9lbmFi bGVkICkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKIAotICAgIGlvbW11X2Zs dXNoX2FsbCgpOworICAgIHJjID0gaW9tbXVfZmx1c2hfYWxsKCk7CisgICAgaWYgKCByYyApCisg ICAgICAgIHJldHVybiByYzsKIAogICAgIGZvcl9lYWNoX2RyaGRfdW5pdCAoIGRyaGQgKQogICAg IHsKQEAgLTI0MTAsNiArMjQ1NCw4IEBAIHN0YXRpYyB2b2lkIHZ0ZF9zdXNwZW5kKHZvaWQpCiAg ICAgICAgIGlmICggIWlvbW11X2ludHJlbWFwICYmIGlvbW11X3FpbnZhbCApCiAgICAgICAgICAg ICBkaXNhYmxlX3FpbnZhbChpb21tdSk7CiAgICAgfQorCisgICAgcmV0dXJuIDA7CiB9CiAKIHN0 YXRpYyB2b2lkIHZ0ZF9jcmFzaF9zaHV0ZG93bih2b2lkKQpkaWZmIC0tZ2l0IGEveGVuL2RyaXZl cnMvcGFzc3Rocm91Z2gvdnRkL3F1aXJrcy5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRk L3F1aXJrcy5jCmluZGV4IDE4ODg4NDMuLjZhNWZkODcgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL3Z0ZC9xdWlya3MuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92 dGQvcXVpcmtzLmMKQEAgLTMzMiwxMCArMzMyLDExIEBAIHZvaWQgX19pbml0IHBsYXRmb3JtX3F1 aXJrc19pbml0KHZvaWQpCiAgKiBhc3NpZ25pbmcgSW50ZWwgaW50ZWdyYXRlZCB3aWZpIGRldmlj ZSB0byBhIGd1ZXN0LgogICovCiAKLXN0YXRpYyB2b2lkIG1hcF9tZV9waGFudG9tX2Z1bmN0aW9u KHN0cnVjdCBkb21haW4gKmRvbWFpbiwgdTMyIGRldiwgaW50IG1hcCkKK3N0YXRpYyBpbnQgbWFw X21lX3BoYW50b21fZnVuY3Rpb24oc3RydWN0IGRvbWFpbiAqZG9tYWluLCB1MzIgZGV2LCBpbnQg bWFwKQogewogICAgIHN0cnVjdCBhY3BpX2RyaGRfdW5pdCAqZHJoZDsKICAgICBzdHJ1Y3QgcGNp X2RldiAqcGRldjsKKyAgICBpbnQgcmM7CiAKICAgICAvKiBmaW5kIE1FIFZULWQgZW5naW5lIGJh c2Ugb24gYSByZWFsIE1FIGRldmljZSAqLwogICAgIHBkZXYgPSBwY2lfZ2V0X3BkZXYoMCwgMCwg UENJX0RFVkZOKGRldiwgMCkpOwpAQCAtMzQzLDIzICszNDQsMjYgQEAgc3RhdGljIHZvaWQgbWFw X21lX3BoYW50b21fZnVuY3Rpb24oc3RydWN0IGRvbWFpbiAqZG9tYWluLCB1MzIgZGV2LCBpbnQg bWFwKQogCiAgICAgLyogbWFwIG9yIHVubWFwIE1FIHBoYW50b20gZnVuY3Rpb24gKi8KICAgICBp ZiAoIG1hcCApCi0gICAgICAgIGRvbWFpbl9jb250ZXh0X21hcHBpbmdfb25lKGRvbWFpbiwgZHJo ZC0+aW9tbXUsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9ERVZG TihkZXYsIDcpLCBOVUxMKTsKKyAgICAgICAgcmMgPSBkb21haW5fY29udGV4dF9tYXBwaW5nX29u ZShkb21haW4sIGRyaGQtPmlvbW11LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFBDSV9ERVZGTihkZXYsIDcpLCBOVUxMKTsKICAgICBlbHNlCi0gICAgICAgIGRv bWFpbl9jb250ZXh0X3VubWFwX29uZShkb21haW4sIGRyaGQtPmlvbW11LCAwLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUENJX0RFVkZOKGRldiwgNykpOworICAgICAgICByYyA9 IGRvbWFpbl9jb250ZXh0X3VubWFwX29uZShkb21haW4sIGRyaGQtPmlvbW11LCAwLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfREVWRk4oZGV2LCA3KSk7CisKKyAg ICByZXR1cm4gcmM7CiB9CiAKLXZvaWQgbWVfd2lmaV9xdWlyayhzdHJ1Y3QgZG9tYWluICpkb21h aW4sIHU4IGJ1cywgdTggZGV2Zm4sIGludCBtYXApCitpbnQgbWVfd2lmaV9xdWlyayhzdHJ1Y3Qg ZG9tYWluICpkb21haW4sIHU4IGJ1cywgdTggZGV2Zm4sIGludCBtYXApCiB7CiAgICAgdTMyIGlk OworICAgIGludCByYyA9IDA7CiAKICAgICBpZCA9IHBjaV9jb25mX3JlYWQzMigwLCAwLCAwLCAw LCAwKTsKICAgICBpZiAoIElTX0NURyhpZCkgKQogICAgIHsKICAgICAgICAgLyogcXVpdCBpZiBN RSBkb2VzIG5vdCBleGlzdCAqLwogICAgICAgICBpZiAoIHBjaV9jb25mX3JlYWQzMigwLCAwLCAz LCAwLCAwKSA9PSAweGZmZmZmZmZmICkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg IHJldHVybiAtRU5PRU5UOwogCiAgICAgICAgIC8qIGlmIGRldmljZSBpcyBXTEFOIGRldmljZSwg bWFwIE1FIHBoYW50b20gZGV2aWNlIDA6My43ICovCiAgICAgICAgIGlkID0gcGNpX2NvbmZfcmVh ZDMyKDAsIGJ1cywgUENJX1NMT1QoZGV2Zm4pLCBQQ0lfRlVOQyhkZXZmbiksIDApOwpAQCAtMzcz LDcgKzM3Nyw3IEBAIHZvaWQgbWVfd2lmaV9xdWlyayhzdHJ1Y3QgZG9tYWluICpkb21haW4sIHU4 IGJ1cywgdTggZGV2Zm4sIGludCBtYXApCiAgICAgICAgICAgICBjYXNlIDB4NDIzYjgwODY6CiAg ICAgICAgICAgICBjYXNlIDB4NDIzYzgwODY6CiAgICAgICAgICAgICBjYXNlIDB4NDIzZDgwODY6 Ci0gICAgICAgICAgICAgICAgbWFwX21lX3BoYW50b21fZnVuY3Rpb24oZG9tYWluLCAzLCBtYXAp OworICAgICAgICAgICAgICAgIHJjID0gbWFwX21lX3BoYW50b21fZnVuY3Rpb24oZG9tYWluLCAz LCBtYXApOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAg ICAgICAgICAgICAgICBicmVhazsKQEAgLTM4Myw3ICszODcsNyBAQCB2b2lkIG1lX3dpZmlfcXVp cmsoc3RydWN0IGRvbWFpbiAqZG9tYWluLCB1OCBidXMsIHU4IGRldmZuLCBpbnQgbWFwKQogICAg IHsKICAgICAgICAgLyogcXVpdCBpZiBNRSBkb2VzIG5vdCBleGlzdCAqLwogICAgICAgICBpZiAo IHBjaV9jb25mX3JlYWQzMigwLCAwLCAyMiwgMCwgMCkgPT0gMHhmZmZmZmZmZiApCi0gICAgICAg ICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gLUVOT0VOVDsKIAogICAgICAgICAvKiBp ZiBkZXZpY2UgaXMgV0xBTiBkZXZpY2UsIG1hcCBNRSBwaGFudG9tIGRldmljZSAwOjIyLjcgKi8K ICAgICAgICAgaWQgPSBwY2lfY29uZl9yZWFkMzIoMCwgYnVzLCBQQ0lfU0xPVChkZXZmbiksIFBD SV9GVU5DKGRldmZuKSwgMCk7CkBAIC0zOTksMTIgKzQwMywxNCBAQCB2b2lkIG1lX3dpZmlfcXVp cmsoc3RydWN0IGRvbWFpbiAqZG9tYWluLCB1OCBidXMsIHU4IGRldmZuLCBpbnQgbWFwKQogICAg ICAgICAgICAgY2FzZSAweDQyMzg4MDg2OiAgICAgICAgLyogUHVtYSBQZWFrICovCiAgICAgICAg ICAgICBjYXNlIDB4NDIyYjgwODY6CiAgICAgICAgICAgICBjYXNlIDB4NDIyYzgwODY6Ci0gICAg ICAgICAgICAgICAgbWFwX21lX3BoYW50b21fZnVuY3Rpb24oZG9tYWluLCAyMiwgbWFwKTsKKyAg ICAgICAgICAgICAgICByYyA9IG1hcF9tZV9waGFudG9tX2Z1bmN0aW9uKGRvbWFpbiwgMjIsIG1h cCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAg ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQorCisgICAgcmV0dXJuIHJjOwogfQog CiB2b2lkIHBjaV92dGRfcXVpcmsoY29uc3Qgc3RydWN0IHBjaV9kZXYgKnBkZXYpCmRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9zdm0vYW1kLWlvbW11LXByb3RvLmggYi94ZW4v aW5jbHVkZS9hc20teDg2L2h2bS9zdm0vYW1kLWlvbW11LXByb3RvLmgKaW5kZXggOWM1MTE3Mi4u ZjU0MGZjOCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vc3ZtL2FtZC1pb21t dS1wcm90by5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3N2bS9hbWQtaW9tbXUtcHJv dG8uaApAQCAtMTE5LDcgKzExOSw3IEBAIGV4dGVybiB1bnNpZ25lZCBsb25nICpzaGFyZWRfaW50 cmVtYXBfaW51c2U7CiAKIC8qIHBvd2VyIG1hbmFnZW1lbnQgc3VwcG9ydCAqLwogdm9pZCBhbWRf aW9tbXVfcmVzdW1lKHZvaWQpOwotdm9pZCBhbWRfaW9tbXVfc3VzcGVuZCh2b2lkKTsKK2ludCBh bWRfaW9tbXVfc3VzcGVuZCh2b2lkKTsKIHZvaWQgYW1kX2lvbW11X2NyYXNoX3NodXRkb3duKHZv aWQpOwogCiAvKiBndWVzdCBpb21tdSBzdXBwb3J0ICovCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVk ZS9hc20teDg2L2lvbW11LmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2lvbW11LmgKaW5kZXggMjky MDNkNy4uY2YyYTI2OSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9pb21tdS5oCisr KyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaW9tbXUuaApAQCAtMjYsNyArMjYsNyBAQCBpbnQgaW9t bXVfc2V0dXBfaHBldF9tc2koc3RydWN0IG1zaV9kZXNjICopOwogCiAvKiBXaGlsZSBWVC1kIHNw ZWNpZmljLCB0aGlzIG11c3QgZ2V0IGRlY2xhcmVkIGluIGEgZ2VuZXJpYyBoZWFkZXIuICovCiBp bnQgYWRqdXN0X3Z0ZF9pcnFfYWZmaW5pdGllcyh2b2lkKTsKLXZvaWQgaW9tbXVfcHRlX2ZsdXNo KHN0cnVjdCBkb21haW4gKmQsIHU2NCBnZm4sIHU2NCAqcHRlLCBpbnQgb3JkZXIsIGludCBwcmVz ZW50KTsKK2ludCBpb21tdV9wdGVfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwgdTY0IGdmbiwgdTY0 ICpwdGUsIGludCBvcmRlciwgaW50IHByZXNlbnQpOwogaW50IGlvbW11X3N1cHBvcnRzX2VpbSh2 b2lkKTsKIGludCBpb21tdV9lbmFibGVfeDJhcGljX0lSKHZvaWQpOwogdm9pZCBpb21tdV9kaXNh YmxlX3gyYXBpY19JUih2b2lkKTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9pb21tdS5o IGIveGVuL2luY2x1ZGUveGVuL2lvbW11LmgKaW5kZXggMTM0MTM1NS4uY2M0ODdmYSAxMDA2NDQK LS0tIGEveGVuL2luY2x1ZGUveGVuL2lvbW11LmgKKysrIGIveGVuL2luY2x1ZGUveGVuL2lvbW11 LmgKQEAgLTE1NywxMiArMTU3LDEyIEBAIHN0cnVjdCBpb21tdV9vcHMgewogICAgIHVuc2lnbmVk IGludCAoKnJlYWRfYXBpY19mcm9tX2lyZSkodW5zaWduZWQgaW50IGFwaWMsIHVuc2lnbmVkIGlu dCByZWcpOwogICAgIGludCAoKnNldHVwX2hwZXRfbXNpKShzdHJ1Y3QgbXNpX2Rlc2MgKik7CiAj ZW5kaWYgLyogQ09ORklHX1g4NiAqLwotICAgIHZvaWQgKCpzdXNwZW5kKSh2b2lkKTsKKyAgICBp bnQgKCpzdXNwZW5kKSh2b2lkKTsKICAgICB2b2lkICgqcmVzdW1lKSh2b2lkKTsKICAgICB2b2lk ICgqc2hhcmVfcDJtKShzdHJ1Y3QgZG9tYWluICpkKTsKICAgICB2b2lkICgqY3Jhc2hfc2h1dGRv d24pKHZvaWQpOwotICAgIHZvaWQgKCppb3RsYl9mbHVzaCkoc3RydWN0IGRvbWFpbiAqZCwgdW5z aWduZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGludCBwYWdlX2NvdW50KTsKLSAgICB2b2lkICgqaW90 bGJfZmx1c2hfYWxsKShzdHJ1Y3QgZG9tYWluICpkKTsKKyAgICBpbnQgKCppb3RsYl9mbHVzaCko c3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGludCBwYWdlX2Nv dW50KTsKKyAgICBpbnQgKCppb3RsYl9mbHVzaF9hbGwpKHN0cnVjdCBkb21haW4gKmQpOwogICAg IGludCAoKmdldF9yZXNlcnZlZF9kZXZpY2VfbWVtb3J5KShpb21tdV9ncmRtX3QgKiwgdm9pZCAq KTsKICAgICB2b2lkICgqZHVtcF9wMm1fdGFibGUpKHN0cnVjdCBkb21haW4gKmQpOwogfTsKLS0g CjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlz dHMueGVuLm9yZy94ZW4tZGV2ZWwK