From mboxrd@z Thu Jan 1 00:00:00 1970 From: Quan Xu Subject: [PATCH 2/2] IOMMU/MMU: Adjust low level functions for VT-d Device-TLB flush error. Date: Thu, 17 Mar 2016 14:54:36 +0800 Message-ID: <1458197676-60696-3-git-send-email-quan.xu@intel.com> References: <1458197676-60696-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: <1458197676-60696-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 , Jun Nakajima , George Dunlap , Andrew Cooper , Dario Faggioli , Julien Grall , Stefano Stabellini , Jan Beulich , Quan Xu , Feng Wu , Suravee Suthikulpanit List-Id: xen-devel@lists.xenproject.org Q3VycmVudCBjb2RlIHdvdWxkIGJlIHBhbmljKCksIHdoZW4gVlQtZCBEZXZpY2UtVExCIGZsdXNo IHRpbWVkIG91dC4KdGhlIHBhbmljKCkgaXMgZ29pbmcgdG8gYmUgZWxpbWluYXRlZCwgc28gd2Ug bXVzdCBjaGVjayBhbGwga2luZHMgb2YKZXJyb3IgYW5kIGFsbCB0aGUgd2F5IHVwIHRoZSBjYWxs IHRyZWVzLgoKU2lnbmVkLW9mZi1ieTogUXVhbiBYdSA8cXVhbi54dUBpbnRlbC5jb20+CgpDQzog SnVuIE5ha2FqaW1hIDxqdW4ubmFrYWppbWFAaW50ZWwuY29tPgpDQzogS2V2aW4gVGlhbiA8a2V2 aW4udGlhbkBpbnRlbC5jb20+CkNDOiBHZW9yZ2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGV1LmNp dHJpeC5jb20+CkNDOiBLZWlyIEZyYXNlciA8a2VpckB4ZW4ub3JnPgpDQzogSmFuIEJldWxpY2gg PGpiZXVsaWNoQHN1c2UuY29tPgpDQzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0 cml4LmNvbT4KQ0M6IFN1cmF2ZWUgU3V0aGlrdWxwYW5pdCA8c3VyYXZlZS5zdXRoaWt1bHBhbml0 QGFtZC5jb20+CkNDOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHN0ZWZhbm8uc3RhYmVsbGluaUBjaXRy aXguY29tPgpDQzogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KQ0M6IEZlbmcg V3UgPGZlbmcud3VAaW50ZWwuY29tPgpDQzogRGFyaW8gRmFnZ2lvbGkgPGRhcmlvLmZhZ2dpb2xp QGNpdHJpeC5jb20+Ci0tLQogeGVuL2FyY2gveDg2L21tL3AybS1lcHQuYyAgICAgICAgICAgICAg ICAgICAgIHwgICAyICstCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfaW5pdC5j ICAgICAgfCAgMTIgKystCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvcGNpX2FtZF9pb21t dS5jICAgfCAgIDIgKy0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMgICAgICAg ICAgICB8ICAxMCArKy0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMgICAgICAgICAg ICAgICB8ICAxNyArKy0tCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvZXh0ZXJuLmggICAg ICAgICAgfCAgIDIgKy0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jICAgICAg ICAgICB8IDEyMCArKysrKysrKysrKysrKysrKystLS0tLS0tLQogeGVuL2RyaXZlcnMvcGFzc3Ro cm91Z2gvdnRkL3F1aXJrcy5jICAgICAgICAgIHwgIDI2ICsrKy0tLQogeGVuL2luY2x1ZGUvYXNt LXg4Ni9odm0vc3ZtL2FtZC1pb21tdS1wcm90by5oIHwgICAyICstCiB4ZW4vaW5jbHVkZS9hc20t eDg2L2lvbW11LmggICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHhlbi9pbmNsdWRlL3hlbi9p b21tdS5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArLQogMTEgZmlsZXMgY2hhbmdlZCwg MTMzIGluc2VydGlvbnMoKyksIDY4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9tbS9wMm0tZXB0LmMgYi94ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jCmluZGV4IGY5YmNj ZTcuLmZhNmM3MTAgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMKKysrIGIv eGVuL2FyY2gveDg2L21tL3AybS1lcHQuYwpAQCAtODI1LDcgKzgyNSw3IEBAIG91dDoKICAgICAg ICAgIG5lZWRfbW9kaWZ5X3Z0ZF90YWJsZSApCiAgICAgewogICAgICAgICBpZiAoIGlvbW11X2hh cF9wdF9zaGFyZSApCi0gICAgICAgICAgICBpb21tdV9wdGVfZmx1c2goZCwgZ2ZuLCAmZXB0X2Vu dHJ5LT5lcHRlLCBvcmRlciwgdnRkX3B0ZV9wcmVzZW50KTsKKyAgICAgICAgICAgIHJjID0gaW9t bXVfcHRlX2ZsdXNoKGQsIGdmbiwgJmVwdF9lbnRyeS0+ZXB0ZSwgb3JkZXIsIHZ0ZF9wdGVfcHJl c2VudCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCBpb21tdV9m bGFncyApCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfaW5p dC5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X2luaXQuYwppbmRleCA0NTM2 MTA2Li44YmI0N2IyIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9t bXVfaW5pdC5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9pbml0LmMK QEAgLTEzMzksMTIgKzEzMzksMTQgQEAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZV9hbGxfZGV2aWNl cyh2b2lkKQogICAgIGl0ZXJhdGVfaXZyc19tYXBwaW5ncyhfaW52YWxpZGF0ZV9hbGxfZGV2aWNl cyk7CiB9CiAKLXZvaWQgYW1kX2lvbW11X3N1c3BlbmQodm9pZCkKK2ludCBhbWRfaW9tbXVfc3Vz cGVuZCh2b2lkKQogewogICAgIHN0cnVjdCBhbWRfaW9tbXUgKmlvbW11OwogCiAgICAgZm9yX2Vh Y2hfYW1kX2lvbW11ICggaW9tbXUgKQogICAgICAgICBkaXNhYmxlX2lvbW11KGlvbW11KTsKKwor ICAgIHJldHVybiAwOwogfQogCiB2b2lkIGFtZF9pb21tdV9yZXN1bWUodm9pZCkKQEAgLTEzNjgs MyArMTM3MCwxMSBAQCB2b2lkIGFtZF9pb21tdV9yZXN1bWUodm9pZCkKICAgICAgICAgaW52YWxp ZGF0ZV9hbGxfZG9tYWluX3BhZ2VzKCk7CiAgICAgfQogfQorCit2b2lkIGFtZF9pb21tdV9jcmFz aF9zaHV0ZG93bih2b2lkKQoreworICAgIHN0cnVjdCBhbWRfaW9tbXUgKmlvbW11OworCisgICAg Zm9yX2VhY2hfYW1kX2lvbW11ICggaW9tbXUgKQorICAgICAgICBkaXNhYmxlX2lvbW11KGlvbW11 KTsKK30KZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9wY2lfYW1kX2lv bW11LmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvcGNpX2FtZF9pb21tdS5jCmluZGV4 IGM4ZWU4ZGMuLmZiOGU4MTYgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2Ft ZC9wY2lfYW1kX2lvbW11LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL3BjaV9h bWRfaW9tbXUuYwpAQCAtNjI4LDYgKzYyOCw2IEBAIGNvbnN0IHN0cnVjdCBpb21tdV9vcHMgYW1k X2lvbW11X29wcyA9IHsKICAgICAuc3VzcGVuZCA9IGFtZF9pb21tdV9zdXNwZW5kLAogICAgIC5y ZXN1bWUgPSBhbWRfaW9tbXVfcmVzdW1lLAogICAgIC5zaGFyZV9wMm0gPSBhbWRfaW9tbXVfc2hh cmVfcDJtLAotICAgIC5jcmFzaF9zaHV0ZG93biA9IGFtZF9pb21tdV9zdXNwZW5kLAorICAgIC5j cmFzaF9zaHV0ZG93biA9IGFtZF9pb21tdV9jcmFzaF9zaHV0ZG93biwKICAgICAuZHVtcF9wMm1f dGFibGUgPSBhbWRfZHVtcF9wMm1fdGFibGUsCiB9OwpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvYXJtL3NtbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11 LmMKaW5kZXggNjJkYTA4Ny4uMzZjMmM4MyAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Ro cm91Z2gvYXJtL3NtbXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS5j CkBAIC0yNTQwLDcgKzI1NDAsNyBAQCBzdGF0aWMgaW50IGZvcmNlX3N0YWdlID0gMjsKICAqLwog c3RhdGljIHUzMiBwbGF0Zm9ybV9mZWF0dXJlcyA9IEFSTV9TTU1VX0ZFQVRfQ09IRVJFTlRfV0FM SzsKIAotc3RhdGljIHZvaWQgYXJtX3NtbXVfaW90bGJfZmx1c2hfYWxsKHN0cnVjdCBkb21haW4g KmQpCitzdGF0aWMgaW50IGFybV9zbW11X2lvdGxiX2ZsdXNoX2FsbChzdHJ1Y3QgZG9tYWluICpk KQogewogCXN0cnVjdCBhcm1fc21tdV94ZW5fZG9tYWluICpzbW11X2RvbWFpbiA9IGRvbWFpbl9o dm1faW9tbXUoZCktPmFyY2gucHJpdjsKIAlzdHJ1Y3QgaW9tbXVfZG9tYWluICpjZmc7CkBAIC0y NTU3LDEzICsyNTU3LDE1IEBAIHN0YXRpYyB2b2lkIGFybV9zbW11X2lvdGxiX2ZsdXNoX2FsbChz dHJ1Y3QgZG9tYWluICpkKQogCQlhcm1fc21tdV90bGJfaW52X2NvbnRleHQoY2ZnLT5wcml2KTsK IAl9CiAJc3Bpbl91bmxvY2soJnNtbXVfZG9tYWluLT5sb2NrKTsKKworICAgIHJldHVybiAwOwog fQogCi1zdGF0aWMgdm9pZCBhcm1fc21tdV9pb3RsYl9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLCB1 bnNpZ25lZCBsb25nIGdmbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGludCBwYWdlX2NvdW50KQorc3RhdGljIGludCBhcm1fc21tdV9pb3RsYl9mbHVzaChzdHJ1 Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IHBhZ2VfY291bnQpCiB7CiAgICAgLyogQVJNIFNNTVUgdjEg ZG9lc24ndCBoYXZlIGZsdXNoIGJ5IFZNQSBhbmQgVk1JRCAqLwotICAgIGFybV9zbW11X2lvdGxi X2ZsdXNoX2FsbChkKTsKKyAgICByZXR1cm4gYXJtX3NtbXVfaW90bGJfZmx1c2hfYWxsKGQpOwog fQogCiBzdGF0aWMgc3RydWN0IGlvbW11X2RvbWFpbiAqYXJtX3NtbXVfZ2V0X2RvbWFpbihzdHJ1 Y3QgZG9tYWluICpkLApkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUu YyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMKaW5kZXggMjllZmJmZS4uMDhiYjZm NyAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYworKysgYi94ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jCkBAIC0xODIsNyArMTgyLDExIEBAIHZvaWQgX19o d2RvbV9pbml0IGlvbW11X2h3ZG9tX2luaXQoc3RydWN0IGRvbWFpbiAqZCkKICAgICAgICAgICAg ICAgICAgKChwYWdlLT51LmludXNlLnR5cGVfaW5mbyAmIFBHVF90eXBlX21hc2spCiAgICAgICAg ICAgICAgICAgICA9PSBQR1Rfd3JpdGFibGVfcGFnZSkgKQogICAgICAgICAgICAgICAgIG1hcHBp bmcgfD0gSU9NTVVGX3dyaXRhYmxlOwotICAgICAgICAgICAgaGQtPnBsYXRmb3JtX29wcy0+bWFw X3BhZ2UoZCwgZ2ZuLCBtZm4sIG1hcHBpbmcpOworICAgICAgICAgICAgaWYgKCBoZC0+cGxhdGZv cm1fb3BzLT5tYXBfcGFnZShkLCBnZm4sIG1mbiwgbWFwcGluZykgKQorICAgICAgICAgICAgICAg IHByaW50ayhYRU5MT0dfR19FUlIKKyAgICAgICAgICAgICAgICAgICAgICAgIklPTU1VOiBNYXAg cGFnZSBnZm46IDB4JWx4KG1mbjogMHglbHgpIGZhaWxlZC5cbiIsCisgICAgICAgICAgICAgICAg ICAgICAgIGdmbiwgbWZuKTsKKwogICAgICAgICAgICAgaWYgKCAhKGkrKyAmIDB4ZmZmZmYpICkK ICAgICAgICAgICAgICAgICBwcm9jZXNzX3BlbmRpbmdfc29mdGlycXMoKTsKICAgICAgICAgfQpA QCAtMjg0LDkgKzI4OCw3IEBAIGludCBpb21tdV9pb3RsYl9mbHVzaChzdHJ1Y3QgZG9tYWluICpk LCB1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQgaW50IHBhZ2VfY291CiAgICAgaWYgKCAhaW9t bXVfZW5hYmxlZCB8fCAhaGQtPnBsYXRmb3JtX29wcyB8fCAhaGQtPnBsYXRmb3JtX29wcy0+aW90 bGJfZmx1c2ggKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGhkLT5wbGF0Zm9ybV9vcHMtPmlv dGxiX2ZsdXNoKGQsIGdmbiwgcGFnZV9jb3VudCk7Ci0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1 cm4gaGQtPnBsYXRmb3JtX29wcy0+aW90bGJfZmx1c2goZCwgZ2ZuLCBwYWdlX2NvdW50KTsKIH0K IAogaW50IGlvbW11X2lvdGxiX2ZsdXNoX2FsbChzdHJ1Y3QgZG9tYWluICpkKQpAQCAtMjk2LDkg KzI5OCw3IEBAIGludCBpb21tdV9pb3RsYl9mbHVzaF9hbGwoc3RydWN0IGRvbWFpbiAqZCkKICAg ICBpZiAoICFpb21tdV9lbmFibGVkIHx8ICFoZC0+cGxhdGZvcm1fb3BzIHx8ICFoZC0+cGxhdGZv cm1fb3BzLT5pb3RsYl9mbHVzaF9hbGwgKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGhkLT5w bGF0Zm9ybV9vcHMtPmlvdGxiX2ZsdXNoX2FsbChkKTsKLQotICAgIHJldHVybiAwOworICAgIHJl dHVybiBoZC0+cGxhdGZvcm1fb3BzLT5pb3RsYl9mbHVzaF9hbGwoZCk7CiB9CiAKIGludCBfX2lu aXQgaW9tbXVfc2V0dXAodm9pZCkKQEAgLTM3NSw4ICszNzUsOSBAQCBpbnQgaW9tbXVfZG9fZG9t Y3RsKAogaW50IGlvbW11X3N1c3BlbmQoKQogewogICAgIGNvbnN0IHN0cnVjdCBpb21tdV9vcHMg Km9wcyA9IGlvbW11X2dldF9vcHMoKTsKKwogICAgIGlmICggaW9tbXVfZW5hYmxlZCApCi0gICAg ICAgIG9wcy0+c3VzcGVuZCgpOworICAgICAgICByZXR1cm4gb3BzLT5zdXNwZW5kKCk7CiAKICAg ICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9l eHRlcm4uaCBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9leHRlcm4uaAppbmRleCBjYmUw Mjg2Li5kNGQzN2MzIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvZXh0 ZXJuLmgKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2V4dGVybi5oCkBAIC05MSw3 ICs5MSw3IEBAIGludCBpc19pZ2RfdnRfZW5hYmxlZF9xdWlyayh2b2lkKTsKIHZvaWQgcGxhdGZv cm1fcXVpcmtzX2luaXQodm9pZCk7CiB2b2lkIHZ0ZF9vcHNfcHJlYW1ibGVfcXVpcmsoc3RydWN0 IGlvbW11KiBpb21tdSk7CiB2b2lkIHZ0ZF9vcHNfcG9zdGFtYmxlX3F1aXJrKHN0cnVjdCBpb21t dSogaW9tbXUpOwotdm9pZCBtZV93aWZpX3F1aXJrKHN0cnVjdCBkb21haW4gKmRvbWFpbiwgdTgg YnVzLCB1OCBkZXZmbiwgaW50IG1hcCk7CitpbnQgbWVfd2lmaV9xdWlyayhzdHJ1Y3QgZG9tYWlu ICpkb21haW4sIHU4IGJ1cywgdTggZGV2Zm4sIGludCBtYXApOwogdm9pZCBwY2lfdnRkX3F1aXJr KGNvbnN0IHN0cnVjdCBwY2lfZGV2ICopOwogYm9vbF90IHBsYXRmb3JtX3N1cHBvcnRzX2ludHJl bWFwKHZvaWQpOwogYm9vbF90IHBsYXRmb3JtX3N1cHBvcnRzX3gyYXBpYyh2b2lkKTsKZGlmZiAt LWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jIGIveGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKaW5kZXggNWFkMjVkYy4uNGY4YjYzYSAxMDA2NDQKLS0t IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKKysrIGIveGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKQEAgLTU0MiwxMSArNTQyLDEyIEBAIHN0YXRpYyBpbnQg aW9tbXVfZmx1c2hfaW90bGJfcHNpKAogICAgIHJldHVybiBzdGF0dXM7CiB9CiAKLXN0YXRpYyB2 b2lkIGlvbW11X2ZsdXNoX2FsbCh2b2lkKQorc3RhdGljIGludCBpb21tdV9mbHVzaF9hbGwodm9p ZCkKIHsKICAgICBzdHJ1Y3QgYWNwaV9kcmhkX3VuaXQgKmRyaGQ7CiAgICAgc3RydWN0IGlvbW11 ICppb21tdTsKICAgICBpbnQgZmx1c2hfZGV2X2lvdGxiOworICAgIGludCByYyA9IDA7CiAKICAg ICBmbHVzaF9hbGxfY2FjaGUoKTsKICAgICBmb3JfZWFjaF9kcmhkX3VuaXQgKCBkcmhkICkKQEAg LTU1NCwxMSArNTU1LDI0IEBAIHN0YXRpYyB2b2lkIGlvbW11X2ZsdXNoX2FsbCh2b2lkKQogICAg ICAgICBpb21tdSA9IGRyaGQtPmlvbW11OwogICAgICAgICBpb21tdV9mbHVzaF9jb250ZXh0X2ds b2JhbChpb21tdSwgMCk7CiAgICAgICAgIGZsdXNoX2Rldl9pb3RsYiA9IGZpbmRfYXRzX2Rldl9k cmhkKGlvbW11KSA/IDEgOiAwOwotICAgICAgICBpb21tdV9mbHVzaF9pb3RsYl9nbG9iYWwoaW9t bXUsIDAsIGZsdXNoX2Rldl9pb3RsYik7CisgICAgICAgIHJjID0gaW9tbXVfZmx1c2hfaW90bGJf Z2xvYmFsKGlvbW11LCAwLCBmbHVzaF9kZXZfaW90bGIpOworCisgICAgICAgIGlmICggcmMgPiAw ICkKKyAgICAgICAgeworICAgICAgICAgICAgaW9tbXVfZmx1c2hfd3JpdGVfYnVmZmVyKGlvbW11 KTsKKyAgICAgICAgICAgIHJjID0gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICggcmMg PCAwICkKKyAgICAgICAgeworICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19HX0VSUiAiSU9NTVU6 IElPTU1VIGZsdXNoIGFsbCBmYWlsZWQuXG4iKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg ICB9CiAgICAgfQorCisgICAgcmV0dXJuIHJjOwogfQogCi1zdGF0aWMgdm9pZCBfX2ludGVsX2lv bW11X2lvdGxiX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLAorc3Rh dGljIGludCBfX2ludGVsX2lvbW11X2lvdGxiX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHVuc2ln bmVkIGxvbmcgZ2ZuLAogICAgICAgICBpbnQgZG1hX29sZF9wdGVfcHJlc2VudCwgdW5zaWduZWQg aW50IHBhZ2VfY291bnQpCiB7CiAgICAgc3RydWN0IGh2bV9pb21tdSAqaGQgPSBkb21haW5faHZt X2lvbW11KGQpOwpAQCAtNTY2LDYgKzU4MCw3IEBAIHN0YXRpYyB2b2lkIF9faW50ZWxfaW9tbXVf aW90bGJfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCiAgICAgc3Ry dWN0IGlvbW11ICppb21tdTsKICAgICBpbnQgZmx1c2hfZGV2X2lvdGxiOwogICAgIGludCBpb21t dV9kb21pZDsKKyAgICBpbnQgcmMgPSAwOwogCiAgICAgLyoKICAgICAgKiBObyBuZWVkIHBjaWRl dmVzX2xvY2sgaGVyZSBiZWNhdXNlIHdlIGhhdmUgZmx1c2gKQEAgLTU4NCwzNyArNTk5LDQwIEBA IHN0YXRpYyB2b2lkIF9faW50ZWxfaW9tbXVfaW90bGJfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwg dW5zaWduZWQgbG9uZyBnZm4sCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAo IHBhZ2VfY291bnQgIT0gMSB8fCBnZm4gPT0gSU5WQUxJRF9HRk4gKQotICAgICAgICB7Ci0gICAg ICAgICAgICBpZiAoIGlvbW11X2ZsdXNoX2lvdGxiX2RzaShpb21tdSwgaW9tbXVfZG9taWQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAwLCBmbHVzaF9kZXZfaW90bGIpICkKLSAgICAgICAgICAg ICAgICBpb21tdV9mbHVzaF93cml0ZV9idWZmZXIoaW9tbXUpOwotICAgICAgICB9CisgICAgICAg ICAgICByYyA9IGlvbW11X2ZsdXNoX2lvdGxiX2RzaShpb21tdSwgaW9tbXVfZG9taWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBmbHVzaF9kZXZfaW90bGIpOwog ICAgICAgICBlbHNlCisgICAgICAgICAgICByYyA9IGlvbW11X2ZsdXNoX2lvdGxiX3BzaShpb21t dSwgaW9tbXVfZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo cGFkZHJfdClnZm4gPDwgUEFHRV9TSElGVF80SywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICFkbWFfb2xkX3B0ZV9wcmVzZW50LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZmx1c2hfZGV2X2lvdGxiKTsKKyAgICAgICAgaWYgKCByYyA+ IDAgKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIGlvbW11X2ZsdXNoX2lvdGxiX3BzaShp b21tdSwgaW9tbXVfZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAocGFkZHJfdClnZm4g PDwgUEFHRV9TSElGVF80SywgUEFHRV9PUkRFUl80SywKLSAgICAgICAgICAgICAgICAgICAgICAg ICFkbWFfb2xkX3B0ZV9wcmVzZW50LCBmbHVzaF9kZXZfaW90bGIpICkKLSAgICAgICAgICAgICAg ICBpb21tdV9mbHVzaF93cml0ZV9idWZmZXIoaW9tbXUpOworICAgICAgICAgICAgaW9tbXVfZmx1 c2hfd3JpdGVfYnVmZmVyKGlvbW11KTsKKyAgICAgICAgICAgIHJjID0gMDsKICAgICAgICAgfQog ICAgIH0KKworICAgIHJldHVybiByYzsKIH0KIAotc3RhdGljIHZvaWQgaW50ZWxfaW9tbXVfaW90 bGJfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGlu dCBwYWdlX2NvdW50KQorc3RhdGljIGludCBpbnRlbF9pb21tdV9pb3RsYl9mbHVzaChzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQgaW50IHBhZ2VfY291bnQpCiB7 Ci0gICAgX19pbnRlbF9pb21tdV9pb3RsYl9mbHVzaChkLCBnZm4sIDEsIHBhZ2VfY291bnQpOwor ICAgIHJldHVybiBfX2ludGVsX2lvbW11X2lvdGxiX2ZsdXNoKGQsIGdmbiwgMSwgcGFnZV9jb3Vu dCk7CiB9CiAKLXN0YXRpYyB2b2lkIGludGVsX2lvbW11X2lvdGxiX2ZsdXNoX2FsbChzdHJ1Y3Qg ZG9tYWluICpkKQorc3RhdGljIGludCBpbnRlbF9pb21tdV9pb3RsYl9mbHVzaF9hbGwoc3RydWN0 IGRvbWFpbiAqZCkKIHsKLSAgICBfX2ludGVsX2lvbW11X2lvdGxiX2ZsdXNoKGQsIElOVkFMSURf R0ZOLCAwLCAwKTsKKyAgICByZXR1cm4gX19pbnRlbF9pb21tdV9pb3RsYl9mbHVzaChkLCBJTlZB TElEX0dGTiwgMCwgMCk7CiB9CiAKIC8qIGNsZWFyIG9uZSBwYWdlJ3MgcGFnZSB0YWJsZSAqLwot c3RhdGljIHZvaWQgZG1hX3B0ZV9jbGVhcl9vbmUoc3RydWN0IGRvbWFpbiAqZG9tYWluLCB1NjQg YWRkcikKK3N0YXRpYyBpbnQgZG1hX3B0ZV9jbGVhcl9vbmUoc3RydWN0IGRvbWFpbiAqZG9tYWlu LCB1NjQgYWRkcikKIHsKICAgICBzdHJ1Y3QgaHZtX2lvbW11ICpoZCA9IGRvbWFpbl9odm1faW9t bXUoZG9tYWluKTsKICAgICBzdHJ1Y3QgZG1hX3B0ZSAqcGFnZSA9IE5VTEwsICpwdGUgPSBOVUxM OwogICAgIHU2NCBwZ19tYWRkcjsKKyAgICBpbnQgcmMgPSAwOwogCiAgICAgc3Bpbl9sb2NrKCZo ZC0+YXJjaC5tYXBwaW5nX2xvY2spOwogICAgIC8qIGdldCBsYXN0IGxldmVsIHB0ZSAqLwpAQCAt NjIyLDcgKzY0MCw3IEBAIHN0YXRpYyB2b2lkIGRtYV9wdGVfY2xlYXJfb25lKHN0cnVjdCBkb21h aW4gKmRvbWFpbiwgdTY0IGFkZHIpCiAgICAgaWYgKCBwZ19tYWRkciA9PSAwICkKICAgICB7CiAg ICAgICAgIHNwaW5fdW5sb2NrKCZoZC0+YXJjaC5tYXBwaW5nX2xvY2spOwotICAgICAgICByZXR1 cm47CisgICAgICAgIHJldHVybiAtRU5PTUVNOwogICAgIH0KIAogICAgIHBhZ2UgPSAoc3RydWN0 IGRtYV9wdGUgKiltYXBfdnRkX2RvbWFpbl9wYWdlKHBnX21hZGRyKTsKQEAgLTYzMiw3ICs2NTAs NyBAQCBzdGF0aWMgdm9pZCBkbWFfcHRlX2NsZWFyX29uZShzdHJ1Y3QgZG9tYWluICpkb21haW4s IHU2NCBhZGRyKQogICAgIHsKICAgICAgICAgc3Bpbl91bmxvY2soJmhkLT5hcmNoLm1hcHBpbmdf bG9jayk7CiAgICAgICAgIHVubWFwX3Z0ZF9kb21haW5fcGFnZShwYWdlKTsKLSAgICAgICAgcmV0 dXJuOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICBkbWFfY2xlYXJfcHRlKCpwdGUp OwpAQCAtNjQwLDkgKzY1OCwxMSBAQCBzdGF0aWMgdm9pZCBkbWFfcHRlX2NsZWFyX29uZShzdHJ1 Y3QgZG9tYWluICpkb21haW4sIHU2NCBhZGRyKQogICAgIGlvbW11X2ZsdXNoX2NhY2hlX2VudHJ5 KHB0ZSwgc2l6ZW9mKHN0cnVjdCBkbWFfcHRlKSk7CiAKICAgICBpZiAoICF0aGlzX2NwdShpb21t dV9kb250X2ZsdXNoX2lvdGxiKSApCi0gICAgICAgIF9faW50ZWxfaW9tbXVfaW90bGJfZmx1c2go ZG9tYWluLCBhZGRyID4+IFBBR0VfU0hJRlRfNEssIDEsIDEpOworICAgICAgICByYyA9IF9faW50 ZWxfaW9tbXVfaW90bGJfZmx1c2goZG9tYWluLCBhZGRyID4+IFBBR0VfU0hJRlRfNEssIDEsIDEp OwogCiAgICAgdW5tYXBfdnRkX2RvbWFpbl9wYWdlKHBhZ2UpOworCisgICAgcmV0dXJuIHJjOwog fQogCiBzdGF0aWMgdm9pZCBpb21tdV9mcmVlX3BhZ2V0YWJsZSh1NjQgcHRfbWFkZHIsIGludCBs ZXZlbCkKQEAgLTEyODEsNiArMTMwMSw3IEBAIGludCBkb21haW5fY29udGV4dF9tYXBwaW5nX29u ZSgKICAgICB1NjQgbWFkZHIsIHBnZF9tYWRkcjsKICAgICB1MTYgc2VnID0gaW9tbXUtPmludGVs LT5kcmhkLT5zZWdtZW50OwogICAgIGludCBhZ2F3OworICAgIGludCByYyA9IDA7CiAKICAgICBB U1NFUlQocGNpZGV2c19sb2NrZWQoKSk7CiAgICAgc3Bpbl9sb2NrKCZpb21tdS0+bG9jayk7CkBA IC0xNDAwLDcgKzE0MjEsMTQgQEAgaW50IGRvbWFpbl9jb250ZXh0X21hcHBpbmdfb25lKAogICAg IGVsc2UKICAgICB7CiAgICAgICAgIGludCBmbHVzaF9kZXZfaW90bGIgPSBmaW5kX2F0c19kZXZf ZHJoZChpb21tdSkgPyAxIDogMDsKLSAgICAgICAgaW9tbXVfZmx1c2hfaW90bGJfZHNpKGlvbW11 LCAwLCAxLCBmbHVzaF9kZXZfaW90bGIpOworCisgICAgICAgIHJjID0gaW9tbXVfZmx1c2hfaW90 bGJfZHNpKGlvbW11LCAwLCAxLCBmbHVzaF9kZXZfaW90bGIpOworCisgICAgICAgIGlmICggcmMg PiAwICkKKyAgICAgICAgeworICAgICAgICAgICAgaW9tbXVfZmx1c2hfd3JpdGVfYnVmZmVyKGlv bW11KTsKKyAgICAgICAgICAgIHJjID0gMDsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHNldF9i aXQoaW9tbXUtPmluZGV4LCAmaGQtPmFyY2guaW9tbXVfYml0bWFwKTsKQEAgLTE0MTAsNyArMTQz OCw3IEBAIGludCBkb21haW5fY29udGV4dF9tYXBwaW5nX29uZSgKICAgICBpZiAoICFzZWcgKQog ICAgICAgICBtZV93aWZpX3F1aXJrKGRvbWFpbiwgYnVzLCBkZXZmbiwgTUFQX01FX1BIQU5UT01f RlVOQyk7CiAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcmM7CiB9CiAKIHN0YXRpYyBpbnQg ZG9tYWluX2NvbnRleHRfbWFwcGluZygKQEAgLTE1MDUsNiArMTUzMyw3IEBAIGludCBkb21haW5f Y29udGV4dF91bm1hcF9vbmUoCiAgICAgc3RydWN0IGNvbnRleHRfZW50cnkgKmNvbnRleHQsICpj b250ZXh0X2VudHJpZXM7CiAgICAgdTY0IG1hZGRyOwogICAgIGludCBpb21tdV9kb21pZDsKKyAg ICBpbnQgcmMgPSAwOwogCiAgICAgQVNTRVJUKHBjaWRldnNfbG9ja2VkKCkpOwogICAgIHNwaW5f bG9jaygmaW9tbXUtPmxvY2spOwpAQCAtMTUzOSw3ICsxNTY4LDE0IEBAIGludCBkb21haW5fY29u dGV4dF91bm1hcF9vbmUoCiAgICAgZWxzZQogICAgIHsKICAgICAgICAgaW50IGZsdXNoX2Rldl9p b3RsYiA9IGZpbmRfYXRzX2Rldl9kcmhkKGlvbW11KSA/IDEgOiAwOwotICAgICAgICBpb21tdV9m bHVzaF9pb3RsYl9kc2koaW9tbXUsIGlvbW11X2RvbWlkLCAwLCBmbHVzaF9kZXZfaW90bGIpOwor CisgICAgICAgIHJjID0gaW9tbXVfZmx1c2hfaW90bGJfZHNpKGlvbW11LCBpb21tdV9kb21pZCwg MCwgZmx1c2hfZGV2X2lvdGxiKTsKKworICAgICAgICBpZiAoIHJjID4gMCApCisgICAgICAgIHsK KyAgICAgICAgICAgIGlvbW11X2ZsdXNoX3dyaXRlX2J1ZmZlcihpb21tdSk7CisgICAgICAgICAg ICByYyA9IDA7CisgICAgICAgIH0KICAgICB9CiAKICAgICBzcGluX3VubG9jaygmaW9tbXUtPmxv Y2spOwpAQCAtMTU0OCw3ICsxNTg0LDcgQEAgaW50IGRvbWFpbl9jb250ZXh0X3VubWFwX29uZSgK ICAgICBpZiAoICFpb21tdS0+aW50ZWwtPmRyaGQtPnNlZ21lbnQgKQogICAgICAgICBtZV93aWZp X3F1aXJrKGRvbWFpbiwgYnVzLCBkZXZmbiwgVU5NQVBfTUVfUEhBTlRPTV9GVU5DKTsKIAotICAg IHJldHVybiAwOworICAgIHJldHVybiByYzsKIH0KIAogc3RhdGljIGludCBkb21haW5fY29udGV4 dF91bm1hcCgKQEAgLTE3MzgsNyArMTc3NCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfaW9tbXVfbWFw X3BhZ2UoCiAgICAgdW5tYXBfdnRkX2RvbWFpbl9wYWdlKHBhZ2UpOwogCiAgICAgaWYgKCAhdGhp c19jcHUoaW9tbXVfZG9udF9mbHVzaF9pb3RsYikgKQotICAgICAgICBfX2ludGVsX2lvbW11X2lv dGxiX2ZsdXNoKGQsIGdmbiwgZG1hX3B0ZV9wcmVzZW50KG9sZCksIDEpOworICAgICAgICByZXR1 cm4gX19pbnRlbF9pb21tdV9pb3RsYl9mbHVzaChkLCBnZm4sIGRtYV9wdGVfcHJlc2VudChvbGQp LCAxKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtMTc0OSwxOSArMTc4NSwxOCBAQCBzdGF0aWMg aW50IGludGVsX2lvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9u ZyBnZm4pCiAgICAgaWYgKCBpb21tdV9wYXNzdGhyb3VnaCAmJiBpc19oYXJkd2FyZV9kb21haW4o ZCkgKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGRtYV9wdGVfY2xlYXJfb25lKGQsIChwYWRk cl90KWdmbiA8PCBQQUdFX1NISUZUXzRLKTsKLQotICAgIHJldHVybiAwOworICAgIHJldHVybiBk bWFfcHRlX2NsZWFyX29uZShkLCAocGFkZHJfdClnZm4gPDwgUEFHRV9TSElGVF80Syk7CiB9CiAK LXZvaWQgaW9tbXVfcHRlX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHU2NCBnZm4sIHU2NCAqcHRl LAotICAgICAgICAgICAgICAgICAgICAgaW50IG9yZGVyLCBpbnQgcHJlc2VudCkKK2ludCBpb21t dV9wdGVfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwgdTY0IGdmbiwgdTY0ICpwdGUsCisgICAgICAg ICAgICAgICAgICAgIGludCBvcmRlciwgaW50IHByZXNlbnQpCiB7CiAgICAgc3RydWN0IGFjcGlf ZHJoZF91bml0ICpkcmhkOwogICAgIHN0cnVjdCBpb21tdSAqaW9tbXUgPSBOVUxMOwogICAgIHN0 cnVjdCBodm1faW9tbXUgKmhkID0gZG9tYWluX2h2bV9pb21tdShkKTsKICAgICBpbnQgZmx1c2hf ZGV2X2lvdGxiOwogICAgIGludCBpb21tdV9kb21pZDsKKyAgICBpbnQgcmMgPSAwOwogCiAgICAg aW9tbXVfZmx1c2hfY2FjaGVfZW50cnkocHRlLCBzaXplb2Yoc3RydWN0IGRtYV9wdGUpKTsKIApA QCAtMTc3NSwxMSArMTgxMCwxNyBAQCB2b2lkIGlvbW11X3B0ZV9mbHVzaChzdHJ1Y3QgZG9tYWlu ICpkLCB1NjQgZ2ZuLCB1NjQgKnB0ZSwKICAgICAgICAgaW9tbXVfZG9taWQ9IGRvbWFpbl9pb21t dV9kb21pZChkLCBpb21tdSk7CiAgICAgICAgIGlmICggaW9tbXVfZG9taWQgPT0gLTEgKQogICAg ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICggaW9tbXVfZmx1c2hfaW90bGJfcHNpKGlv bW11LCBpb21tdV9kb21pZCwKKyAgICAgICAgcmMgPSBpb21tdV9mbHVzaF9pb3RsYl9wc2koaW9t bXUsIGlvbW11X2RvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFk ZHJfdClnZm4gPDwgUEFHRV9TSElGVF80SywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb3JkZXIsICFwcmVzZW50LCBmbHVzaF9kZXZfaW90bGIpICkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb3JkZXIsICFwcmVzZW50LCBmbHVzaF9kZXZfaW90bGIpOwor ICAgICAgICBpZiAoIHJjID4gMCApCisgICAgICAgIHsKICAgICAgICAgICAgIGlvbW11X2ZsdXNo X3dyaXRlX2J1ZmZlcihpb21tdSk7CisgICAgICAgICAgICByYyA9IDA7CisgICAgICAgIH0KICAg ICB9CisKKyAgICByZXR1cm4gcmM7CiB9CiAKIHN0YXRpYyBpbnQgX19pbml0IHZ0ZF9lcHRfcGFn ZV9jb21wYXRpYmxlKHN0cnVjdCBpb21tdSAqaW9tbXUpCkBAIC0yMDk5LDggKzIxNDAsOCBAQCBz dGF0aWMgaW50IGluaXRfdnRkX2h3KHZvaWQpCiAgICAgICAgICAgICByZXR1cm4gLUVJTzsKICAg ICAgICAgfQogICAgIH0KLSAgICBpb21tdV9mbHVzaF9hbGwoKTsKLSAgICByZXR1cm4gMDsKKwor ICAgIHJldHVybiBpb21tdV9mbHVzaF9hbGwoKTsKIH0KIAogc3RhdGljIHZvaWQgX19od2RvbV9p bml0IHNldHVwX2h3ZG9tX3JtcnIoc3RydWN0IGRvbWFpbiAqZCkKQEAgLTIzODksMTYgKzI0MzAs MTkgQEAgc3RhdGljIGludCBpbnRlbF9pb21tdV9ncm91cF9pZCh1MTYgc2VnLCB1OCBidXMsIHU4 IGRldmZuKQogfQogCiBzdGF0aWMgdTMyIGlvbW11X3N0YXRlW01BWF9JT01NVVNdW01BWF9JT01N VV9SRUdTXTsKLXN0YXRpYyB2b2lkIHZ0ZF9zdXNwZW5kKHZvaWQpCitzdGF0aWMgaW50IHZ0ZF9z dXNwZW5kKHZvaWQpCiB7CiAgICAgc3RydWN0IGFjcGlfZHJoZF91bml0ICpkcmhkOwogICAgIHN0 cnVjdCBpb21tdSAqaW9tbXU7CiAgICAgdTMyICAgIGk7CisgICAgaW50IHJjOwogCiAgICAgaWYg KCAhaW9tbXVfZW5hYmxlZCApCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAK LSAgICBpb21tdV9mbHVzaF9hbGwoKTsKKyAgICByYyA9IGlvbW11X2ZsdXNoX2FsbCgpOworICAg IGlmICggcmMgKQorICAgICAgICByZXR1cm4gcmM7CiAKICAgICBmb3JfZWFjaF9kcmhkX3VuaXQg KCBkcmhkICkKICAgICB7CkBAIC0yNDI3LDYgKzI0NzEsOCBAQCBzdGF0aWMgdm9pZCB2dGRfc3Vz cGVuZCh2b2lkKQogICAgICAgICBpZiAoICFpb21tdV9pbnRyZW1hcCAmJiBpb21tdV9xaW52YWwg KQogICAgICAgICAgICAgZGlzYWJsZV9xaW52YWwoaW9tbXUpOwogICAgIH0KKworICAgIHJldHVy biAwOwogfQogCiBzdGF0aWMgdm9pZCB2dGRfY3Jhc2hfc2h1dGRvd24odm9pZCkKZGlmZiAtLWdp dCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9xdWlya3MuYyBiL3hlbi9kcml2ZXJzL3Bh c3N0aHJvdWdoL3Z0ZC9xdWlya3MuYwppbmRleCA0OWRmNDFkLi5hMjMwYjY4IDEwMDY0NAotLS0g YS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvcXVpcmtzLmMKKysrIGIveGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvdnRkL3F1aXJrcy5jCkBAIC0zMzIsMTAgKzMzMiwxMSBAQCB2b2lkIF9faW5p dCBwbGF0Zm9ybV9xdWlya3NfaW5pdCh2b2lkKQogICogYXNzaWduaW5nIEludGVsIGludGVncmF0 ZWQgd2lmaSBkZXZpY2UgdG8gYSBndWVzdC4KICAqLwogCi1zdGF0aWMgdm9pZCBtYXBfbWVfcGhh bnRvbV9mdW5jdGlvbihzdHJ1Y3QgZG9tYWluICpkb21haW4sIHUzMiBkZXYsIGludCBtYXApCitz dGF0aWMgaW50IG1hcF9tZV9waGFudG9tX2Z1bmN0aW9uKHN0cnVjdCBkb21haW4gKmRvbWFpbiwg dTMyIGRldiwgaW50IG1hcCkKIHsKICAgICBzdHJ1Y3QgYWNwaV9kcmhkX3VuaXQgKmRyaGQ7CiAg ICAgc3RydWN0IHBjaV9kZXYgKnBkZXY7CisgICAgaW50IHJjOwogCiAgICAgLyogZmluZCBNRSBW VC1kIGVuZ2luZSBiYXNlIG9uIGEgcmVhbCBNRSBkZXZpY2UgKi8KICAgICBwZGV2ID0gcGNpX2dl dF9wZGV2KDAsIDAsIFBDSV9ERVZGTihkZXYsIDApKTsKQEAgLTM0MywyMyArMzQ0LDI2IEBAIHN0 YXRpYyB2b2lkIG1hcF9tZV9waGFudG9tX2Z1bmN0aW9uKHN0cnVjdCBkb21haW4gKmRvbWFpbiwg dTMyIGRldiwgaW50IG1hcCkKIAogICAgIC8qIG1hcCBvciB1bm1hcCBNRSBwaGFudG9tIGZ1bmN0 aW9uICovCiAgICAgaWYgKCBtYXAgKQotICAgICAgICBkb21haW5fY29udGV4dF9tYXBwaW5nX29u ZShkb21haW4sIGRyaGQtPmlvbW11LCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQQ0lfREVWRk4oZGV2LCA3KSwgTlVMTCk7CisgICAgICAgIHJjID0gZG9tYWluX2NvbnRl eHRfbWFwcGluZ19vbmUoZG9tYWluLCBkcmhkLT5pb21tdSwgMCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQQ0lfREVWRk4oZGV2LCA3KSwgTlVMTCk7CiAgICAgZWxz ZQotICAgICAgICBkb21haW5fY29udGV4dF91bm1hcF9vbmUoZG9tYWluLCBkcmhkLT5pb21tdSwg MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9ERVZGTihkZXYsIDcpKTsK KyAgICAgICAgcmMgPSBkb21haW5fY29udGV4dF91bm1hcF9vbmUoZG9tYWluLCBkcmhkLT5pb21t dSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX0RFVkZOKGRl diwgNykpOworCisgICAgcmV0dXJuIHJjOwogfQogCi12b2lkIG1lX3dpZmlfcXVpcmsoc3RydWN0 IGRvbWFpbiAqZG9tYWluLCB1OCBidXMsIHU4IGRldmZuLCBpbnQgbWFwKQoraW50IG1lX3dpZmlf cXVpcmsoc3RydWN0IGRvbWFpbiAqZG9tYWluLCB1OCBidXMsIHU4IGRldmZuLCBpbnQgbWFwKQog ewogICAgIHUzMiBpZDsKKyAgICBpbnQgcmMgPSAwOwogCiAgICAgaWQgPSBwY2lfY29uZl9yZWFk MzIoMCwgMCwgMCwgMCwgMCk7CiAgICAgaWYgKCBJU19DVEcoaWQpICkKICAgICB7CiAgICAgICAg IC8qIHF1aXQgaWYgTUUgZG9lcyBub3QgZXhpc3QgKi8KICAgICAgICAgaWYgKCBwY2lfY29uZl9y ZWFkMzIoMCwgMCwgMywgMCwgMCkgPT0gMHhmZmZmZmZmZiApCi0gICAgICAgICAgICByZXR1cm47 CisgICAgICAgICAgICByZXR1cm4gLUVOT0VOVDsKIAogICAgICAgICAvKiBpZiBkZXZpY2UgaXMg V0xBTiBkZXZpY2UsIG1hcCBNRSBwaGFudG9tIGRldmljZSAwOjMuNyAqLwogICAgICAgICBpZCA9 IHBjaV9jb25mX3JlYWQzMigwLCBidXMsIFBDSV9TTE9UKGRldmZuKSwgUENJX0ZVTkMoZGV2Zm4p LCAwKTsKQEAgLTM3Myw3ICszNzcsNyBAQCB2b2lkIG1lX3dpZmlfcXVpcmsoc3RydWN0IGRvbWFp biAqZG9tYWluLCB1OCBidXMsIHU4IGRldmZuLCBpbnQgbWFwKQogICAgICAgICAgICAgY2FzZSAw eDQyM2I4MDg2OgogICAgICAgICAgICAgY2FzZSAweDQyM2M4MDg2OgogICAgICAgICAgICAgY2Fz ZSAweDQyM2Q4MDg2OgotICAgICAgICAgICAgICAgIG1hcF9tZV9waGFudG9tX2Z1bmN0aW9uKGRv bWFpbiwgMywgbWFwKTsKKyAgICAgICAgICAgICAgICByYyA9IG1hcF9tZV9waGFudG9tX2Z1bmN0 aW9uKGRvbWFpbiwgMywgbWFwKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg IGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0zODMsNyArMzg3LDcgQEAgdm9p ZCBtZV93aWZpX3F1aXJrKHN0cnVjdCBkb21haW4gKmRvbWFpbiwgdTggYnVzLCB1OCBkZXZmbiwg aW50IG1hcCkKICAgICB7CiAgICAgICAgIC8qIHF1aXQgaWYgTUUgZG9lcyBub3QgZXhpc3QgKi8K ICAgICAgICAgaWYgKCBwY2lfY29uZl9yZWFkMzIoMCwgMCwgMjIsIDAsIDApID09IDB4ZmZmZmZm ZmYgKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIC1FTk9FTlQ7CiAK ICAgICAgICAgLyogaWYgZGV2aWNlIGlzIFdMQU4gZGV2aWNlLCBtYXAgTUUgcGhhbnRvbSBkZXZp Y2UgMDoyMi43ICovCiAgICAgICAgIGlkID0gcGNpX2NvbmZfcmVhZDMyKDAsIGJ1cywgUENJX1NM T1QoZGV2Zm4pLCBQQ0lfRlVOQyhkZXZmbiksIDApOwpAQCAtMzk5LDEyICs0MDMsMTQgQEAgdm9p ZCBtZV93aWZpX3F1aXJrKHN0cnVjdCBkb21haW4gKmRvbWFpbiwgdTggYnVzLCB1OCBkZXZmbiwg aW50IG1hcCkKICAgICAgICAgICAgIGNhc2UgMHg0MjM4ODA4NjogICAgICAgIC8qIFB1bWEgUGVh ayAqLwogICAgICAgICAgICAgY2FzZSAweDQyMmI4MDg2OgogICAgICAgICAgICAgY2FzZSAweDQy MmM4MDg2OgotICAgICAgICAgICAgICAgIG1hcF9tZV9waGFudG9tX2Z1bmN0aW9uKGRvbWFpbiwg MjIsIG1hcCk7CisgICAgICAgICAgICAgICAgcmMgPSBtYXBfbWVfcGhhbnRvbV9mdW5jdGlvbihk b21haW4sIDIyLCBtYXApOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVm YXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KKworICAgIHJl dHVybiByYzsKIH0KIAogdm9pZCBwY2lfdnRkX3F1aXJrKGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpw ZGV2KQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vc3ZtL2FtZC1pb21tdS1w cm90by5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vc3ZtL2FtZC1pb21tdS1wcm90by5oCmlu ZGV4IDljNTExNzIuLmY1NDBmYzggMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZt L3N2bS9hbWQtaW9tbXUtcHJvdG8uaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9zdm0v YW1kLWlvbW11LXByb3RvLmgKQEAgLTExOSw3ICsxMTksNyBAQCBleHRlcm4gdW5zaWduZWQgbG9u ZyAqc2hhcmVkX2ludHJlbWFwX2ludXNlOwogCiAvKiBwb3dlciBtYW5hZ2VtZW50IHN1cHBvcnQg Ki8KIHZvaWQgYW1kX2lvbW11X3Jlc3VtZSh2b2lkKTsKLXZvaWQgYW1kX2lvbW11X3N1c3BlbmQo dm9pZCk7CitpbnQgYW1kX2lvbW11X3N1c3BlbmQodm9pZCk7CiB2b2lkIGFtZF9pb21tdV9jcmFz aF9zaHV0ZG93bih2b2lkKTsKIAogLyogZ3Vlc3QgaW9tbXUgc3VwcG9ydCAqLwpkaWZmIC0tZ2l0 IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9pb21tdS5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9pb21t dS5oCmluZGV4IGYyMmIzYTUuLjc5MDcwMWUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14 ODYvaW9tbXUuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2lvbW11LmgKQEAgLTI2LDcgKzI2 LDcgQEAgaW50IGlvbW11X3NldHVwX2hwZXRfbXNpKHN0cnVjdCBtc2lfZGVzYyAqKTsKIAogLyog V2hpbGUgVlQtZCBzcGVjaWZpYywgdGhpcyBtdXN0IGdldCBkZWNsYXJlZCBpbiBhIGdlbmVyaWMg aGVhZGVyLiAqLwogaW50IGFkanVzdF92dGRfaXJxX2FmZmluaXRpZXModm9pZCk7Ci12b2lkIGlv bW11X3B0ZV9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLCB1NjQgZ2ZuLCB1NjQgKnB0ZSwgaW50IG9y ZGVyLCBpbnQgcHJlc2VudCk7CitpbnQgaW9tbXVfcHRlX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQs IHU2NCBnZm4sIHU2NCAqcHRlLCBpbnQgb3JkZXIsIGludCBwcmVzZW50KTsKIGJvb2xfdCBpb21t dV9zdXBwb3J0c19laW0odm9pZCk7CiBpbnQgaW9tbXVfZW5hYmxlX3gyYXBpY19JUih2b2lkKTsK IHZvaWQgaW9tbXVfZGlzYWJsZV94MmFwaWNfSVIodm9pZCk7CmRpZmYgLS1naXQgYS94ZW4vaW5j bHVkZS94ZW4vaW9tbXUuaCBiL3hlbi9pbmNsdWRlL3hlbi9pb21tdS5oCmluZGV4IGQ2ZDQ4OWEu Ljg3MTBkZmUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9pb21tdS5oCisrKyBiL3hlbi9p bmNsdWRlL3hlbi9pb21tdS5oCkBAIC0xNTcsMTIgKzE1NywxMiBAQCBzdHJ1Y3QgaW9tbXVfb3Bz IHsKICAgICB1bnNpZ25lZCBpbnQgKCpyZWFkX2FwaWNfZnJvbV9pcmUpKHVuc2lnbmVkIGludCBh cGljLCB1bnNpZ25lZCBpbnQgcmVnKTsKICAgICBpbnQgKCpzZXR1cF9ocGV0X21zaSkoc3RydWN0 IG1zaV9kZXNjICopOwogI2VuZGlmIC8qIENPTkZJR19YODYgKi8KLSAgICB2b2lkICgqc3VzcGVu ZCkodm9pZCk7CisgICAgaW50ICgqc3VzcGVuZCkodm9pZCk7CiAgICAgdm9pZCAoKnJlc3VtZSko dm9pZCk7CiAgICAgdm9pZCAoKnNoYXJlX3AybSkoc3RydWN0IGRvbWFpbiAqZCk7CiAgICAgdm9p ZCAoKmNyYXNoX3NodXRkb3duKSh2b2lkKTsKLSAgICB2b2lkICgqaW90bGJfZmx1c2gpKHN0cnVj dCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLCB1bnNpZ25lZCBpbnQgcGFnZV9jb3VudCk7 Ci0gICAgdm9pZCAoKmlvdGxiX2ZsdXNoX2FsbCkoc3RydWN0IGRvbWFpbiAqZCk7CisgICAgaW50 ICgqaW90bGJfZmx1c2gpKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLCB1bnNp Z25lZCBpbnQgcGFnZV9jb3VudCk7CisgICAgaW50ICgqaW90bGJfZmx1c2hfYWxsKShzdHJ1Y3Qg ZG9tYWluICpkKTsKICAgICBpbnQgKCpnZXRfcmVzZXJ2ZWRfZGV2aWNlX21lbW9yeSkoaW9tbXVf Z3JkbV90ICosIHZvaWQgKik7CiAgICAgdm9pZCAoKmR1bXBfcDJtX3RhYmxlKShzdHJ1Y3QgZG9t YWluICpkKTsKIH07Ci0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhl bi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==