From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v3 02/13] iommu: introduce the concept of BFN... Date: Tue, 17 Jul 2018 14:38:05 +0100 Message-ID: <20180717133816.37958-3-paul.durrant@citrix.com> References: <20180717133816.37958-1-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ffQBN-0005lW-93 for xen-devel@lists.xenproject.org; Tue, 17 Jul 2018 13:38:25 +0000 In-Reply-To: <20180717133816.37958-1-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Kevin Tian , Stefano Stabellini , Suravee Suthikulpanit , Julien Grall , Paul Durrant , Jan Beulich List-Id: xen-devel@lists.xenproject.org Li4ubWVhbmluZyAnYnVzIGZyYW1lIG51bWJlcicgaS5lLiBhIGZyYW1lIG51bWJlciBtYXBwZWQg aW4gdGhlIElPTU1VCnJhdGhlciB0aGFuIHRoZSBNTVUuCgpUaGlzIHBhdGNoIGlzIGEgbGFyZ2Vs eSBjb3NtZXRpYyBjaGFuZ2UgdGhhdCBzdWJzdGl0dXRlcyB0aGUgdGVybXMgJ2dmbicKYW5kICdn YWRkcicgZm9yICdiZm4nIGFuZCAnYmFkZHInIGluIGFsbCB0aGUgcGxhY2VzIHdoZXJlIHRoZSBm cmFtZSBudW1iZXIKb3IgYWRkcmVzcyByZWxhdGUgdG8gdGhlIElPTU1VIHJhdGhlciB0aGFuIHRo ZSBNTVUuCgpUaGUgcGFydHMgdGhhdCBhcmUgbm90IHB1cmVseSBjb3NtZXRpYyBhcmU6CgogLSB0 aGUgaW50cm9kdWN0aW9uIG9mIGEgdHlwZS1zYWZlIGRlY2xhcmF0aW9uIG9mIGJmbl90IGFuZCBk ZWZpbml0aW9uIG9mCiAgIElOVkFMSURfQkZOIHRvIG1ha2UgdGhlIHN1YnN0aXR1dGlvbiBvZiBn Zm5feChJTlZBTElEX0dGTikgbWVjaGFuaWNhbC4KIC0gdGhlIGludHJvZHVjdGlvbiBvZiBfX2Jm bl90b19iYWRkciBhbmQgX19iYWRkcl90b19iZm4gKGFuZCB0eXBlLXNhZmUKICAgdmFyaWFudHMg d2l0aG91dCB0aGUgbGVhZGluZyBfXykgd2l0aCBzb21lIHVzZSBvZiB0aGUgZm9ybWVyLgoKU3Vi c2VxdWVudCBwYXRjaGVzIHdpbGwgY29udmVydCBjb2RlIHRvIG1ha2UgdXNlIG9mIHR5cGUtc2Fm ZSBCRk5zLgoKU2lnbmVkLW9mZi1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4 LmNvbT4KLS0tCkNjOiBTdXJhdmVlIFN1dGhpa3VscGFuaXQgPHN1cmF2ZWUuc3V0aGlrdWxwYW5p dEBhbWQuY29tPgpDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3Jn PgpDYzogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KQ2M6IEphbiBCZXVsaWNo IDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29t PgoKdjM6CiAtIEdldCByaWQgb2YgaW50ZXJtZWRpYXRlICdmcmFtZScgdmFyaWFibGVzIGFnYWlu LgoKdjI6CiAtIEFkZHJlc3NlZCBjb21tZW50cyBmcm9tIEphbi4KLS0tCiB4ZW4vZHJpdmVycy9w YXNzdGhyb3VnaC9hbWQvaW9tbXVfY21kLmMgICAgIHwgMTggKysrLS0tLQogeGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvYW1kL2lvbW11X21hcC5jICAgICB8IDc2ICsrKysrKysrKysrKysrLS0tLS0t LS0tLS0tLS0tCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvcGNpX2FtZF9pb21tdS5jIHwg IDIgKy0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMgICAgICAgICAgfCAxNiAr KystLS0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMgICAgICAgICAgICAgfCAyOCAr KysrKy0tLS0tLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMgICAgICAgICB8 IDMwICsrKysrKy0tLS0tLQogeGVuL2luY2x1ZGUveGVuL2lvbW11LmggICAgICAgICAgICAgICAg ICAgICB8IDM4ICsrKysrKysrKysrKy0tLQogeGVuL2luY2x1ZGUveGVuL21tLmggICAgICAgICAg ICAgICAgICAgICAgICB8IDEwICsrKy0KIDggZmlsZXMgY2hhbmdlZCwgMTI1IGluc2VydGlvbnMo KyksIDkzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdo L2FtZC9pb21tdV9jbWQuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9jbWQu YwppbmRleCAwODI0N2ZhMzU0Li5mOTNiZWNkNmUxIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9w YXNzdGhyb3VnaC9hbWQvaW9tbXVfY21kLmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv YW1kL2lvbW11X2NtZC5jCkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBpbnZhbGlkYXRlX2lvbW11 X2FsbChzdHJ1Y3QgYW1kX2lvbW11ICppb21tdSkKIH0KIAogdm9pZCBhbWRfaW9tbXVfZmx1c2hf aW90bGIodTggZGV2Zm4sIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2LAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDY0X3QgZ2FkZHIsIHVuc2lnbmVkIGludCBvcmRlcikKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJhZGRyX3QgYmFkZHIsIHVuc2lnbmVkIGludCBvcmRlcikK IHsKICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgIHN0cnVjdCBhbWRfaW9tbXUgKmlvbW11 OwpAQCAtMzE1LDEyICszMTUsMTIgQEAgdm9pZCBhbWRfaW9tbXVfZmx1c2hfaW90bGIodTggZGV2 Zm4sIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2LAogCiAgICAgLyogc2VuZCBJTlZBTElEQVRF X0lPVExCX1BBR0VTIGNvbW1hbmQgKi8KICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmaW9tbXUtPmxv Y2ssIGZsYWdzKTsKLSAgICBpbnZhbGlkYXRlX2lvdGxiX3BhZ2VzKGlvbW11LCBtYXhwZW5kLCAw LCBxdWV1ZWlkLCBnYWRkciwgcmVxX2lkLCBvcmRlcik7CisgICAgaW52YWxpZGF0ZV9pb3RsYl9w YWdlcyhpb21tdSwgbWF4cGVuZCwgMCwgcXVldWVpZCwgYmFkZHIsIHJlcV9pZCwgb3JkZXIpOwog ICAgIGZsdXNoX2NvbW1hbmRfYnVmZmVyKGlvbW11KTsKICAgICBzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZpb21tdS0+bG9jaywgZmxhZ3MpOwogfQogCi1zdGF0aWMgdm9pZCBhbWRfaW9tbXVfZmx1 c2hfYWxsX2lvdGxicyhzdHJ1Y3QgZG9tYWluICpkLCB1aW50NjRfdCBnYWRkciwKK3N0YXRpYyB2 b2lkIGFtZF9pb21tdV9mbHVzaF9hbGxfaW90bGJzKHN0cnVjdCBkb21haW4gKmQsIGJhZGRyX3Qg YmFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgb3JkZXIpCiB7CiAgICAgc3RydWN0IHBjaV9kZXYgKnBkZXY7CkBAIC0zMzMsNyArMzMzLDcg QEAgc3RhdGljIHZvaWQgYW1kX2lvbW11X2ZsdXNoX2FsbF9pb3RsYnMoc3RydWN0IGRvbWFpbiAq ZCwgdWludDY0X3QgZ2FkZHIsCiAgICAgICAgIHU4IGRldmZuID0gcGRldi0+ZGV2Zm47CiAKICAg ICAgICAgZG8gewotICAgICAgICAgICAgYW1kX2lvbW11X2ZsdXNoX2lvdGxiKGRldmZuLCBwZGV2 LCBnYWRkciwgb3JkZXIpOworICAgICAgICAgICAgYW1kX2lvbW11X2ZsdXNoX2lvdGxiKGRldmZu LCBwZGV2LCBiYWRkciwgb3JkZXIpOwogICAgICAgICAgICAgZGV2Zm4gKz0gcGRldi0+cGhhbnRv bV9zdHJpZGU7CiAgICAgICAgIH0gd2hpbGUgKCBkZXZmbiAhPSBwZGV2LT5kZXZmbiAmJgogICAg ICAgICAgICAgICAgICAgUENJX1NMT1QoZGV2Zm4pID09IFBDSV9TTE9UKHBkZXYtPmRldmZuKSAp OwpAQCAtMzQyLDcgKzM0Miw3IEBAIHN0YXRpYyB2b2lkIGFtZF9pb21tdV9mbHVzaF9hbGxfaW90 bGJzKHN0cnVjdCBkb21haW4gKmQsIHVpbnQ2NF90IGdhZGRyLAogCiAvKiBGbHVzaCBpb21tdSBj YWNoZSBhZnRlciBwMm0gY2hhbmdlcy4gKi8KIHN0YXRpYyB2b2lkIF9hbWRfaW9tbXVfZmx1c2hf cGFnZXMoc3RydWN0IGRvbWFpbiAqZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdWludDY0X3QgZ2FkZHIsIHVuc2lnbmVkIGludCBvcmRlcikKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYmFkZHJfdCBiYWRkciwgdW5zaWduZWQgaW50IG9yZGVyKQogewog ICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgc3RydWN0IGFtZF9pb21tdSAqaW9tbXU7CkBA IC0zNTIsMTMgKzM1MiwxMyBAQCBzdGF0aWMgdm9pZCBfYW1kX2lvbW11X2ZsdXNoX3BhZ2VzKHN0 cnVjdCBkb21haW4gKmQsCiAgICAgZm9yX2VhY2hfYW1kX2lvbW11ICggaW9tbXUgKQogICAgIHsK ICAgICAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJmlvbW11LT5sb2NrLCBmbGFncyk7Ci0gICAgICAg IGludmFsaWRhdGVfaW9tbXVfcGFnZXMoaW9tbXUsIGdhZGRyLCBkb21faWQsIG9yZGVyKTsKKyAg ICAgICAgaW52YWxpZGF0ZV9pb21tdV9wYWdlcyhpb21tdSwgYmFkZHIsIGRvbV9pZCwgb3JkZXIp OwogICAgICAgICBmbHVzaF9jb21tYW5kX2J1ZmZlcihpb21tdSk7CiAgICAgICAgIHNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJmlvbW11LT5sb2NrLCBmbGFncyk7CiAgICAgfQogCiAgICAgaWYgKCBh dHNfZW5hYmxlZCApCi0gICAgICAgIGFtZF9pb21tdV9mbHVzaF9hbGxfaW90bGJzKGQsIGdhZGRy LCBvcmRlcik7CisgICAgICAgIGFtZF9pb21tdV9mbHVzaF9hbGxfaW90bGJzKGQsIGJhZGRyLCBv cmRlcik7CiB9CiAKIHZvaWQgYW1kX2lvbW11X2ZsdXNoX2FsbF9wYWdlcyhzdHJ1Y3QgZG9tYWlu ICpkKQpAQCAtMzY3LDkgKzM2Nyw5IEBAIHZvaWQgYW1kX2lvbW11X2ZsdXNoX2FsbF9wYWdlcyhz dHJ1Y3QgZG9tYWluICpkKQogfQogCiB2b2lkIGFtZF9pb21tdV9mbHVzaF9wYWdlcyhzdHJ1Y3Qg ZG9tYWluICpkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBnZm4s IHVuc2lnbmVkIGludCBvcmRlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGxvbmcgYmZuLCB1bnNpZ25lZCBpbnQgb3JkZXIpCiB7Ci0gICAgX2FtZF9pb21tdV9mbHVzaF9w YWdlcyhkLCAodWludDY0X3QpIGdmbiA8PCBQQUdFX1NISUZULCBvcmRlcik7CisgICAgX2FtZF9p b21tdV9mbHVzaF9wYWdlcyhkLCBfX2Jmbl90b19iYWRkcihiZm4pLCBvcmRlcik7CiB9CiAKIHZv aWQgYW1kX2lvbW11X2ZsdXNoX2RldmljZShzdHJ1Y3QgYW1kX2lvbW11ICppb21tdSwgdWludDE2 X3QgYmRmKQpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X21h cC5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X21hcC5jCmluZGV4IDcwYjQz NDViMzcuLjRkZWFiOWNkMmYgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2Ft ZC9pb21tdV9tYXAuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfbWFw LmMKQEAgLTM1LDEyICszNSwxMiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IHBmbl90b19wZGVfaWR4 KHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBpbnQgbGV2ZWwpCiAgICAgcmV0dXJuIGlkeDsK IH0KIAotdm9pZCBjbGVhcl9pb21tdV9wdGVfcHJlc2VudCh1bnNpZ25lZCBsb25nIGwxX21mbiwg dW5zaWduZWQgbG9uZyBnZm4pCit2b2lkIGNsZWFyX2lvbW11X3B0ZV9wcmVzZW50KHVuc2lnbmVk IGxvbmcgbDFfbWZuLCB1bnNpZ25lZCBsb25nIGJmbikKIHsKICAgICB1NjQgKnRhYmxlLCAqcHRl OwogCiAgICAgdGFibGUgPSBtYXBfZG9tYWluX3BhZ2UoX21mbihsMV9tZm4pKTsKLSAgICBwdGUg PSB0YWJsZSArIHBmbl90b19wZGVfaWR4KGdmbiwgSU9NTVVfUEFHSU5HX01PREVfTEVWRUxfMSk7 CisgICAgcHRlID0gdGFibGUgKyBwZm5fdG9fcGRlX2lkeChiZm4sIElPTU1VX1BBR0lOR19NT0RF X0xFVkVMXzEpOwogICAgICpwdGUgPSAwOwogICAgIHVubWFwX2RvbWFpbl9wYWdlKHRhYmxlKTsK IH0KQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgYm9vbF90IHNldF9pb21tdV9wZGVfcHJlc2Vu dCh1MzIgKnBkZSwgdW5zaWduZWQgbG9uZyBuZXh0X21mbiwKICAgICByZXR1cm4gbmVlZF9mbHVz aDsKIH0KIAotc3RhdGljIGJvb2xfdCBzZXRfaW9tbXVfcHRlX3ByZXNlbnQodW5zaWduZWQgbG9u ZyBwdF9tZm4sIHVuc2lnbmVkIGxvbmcgZ2ZuLCAKK3N0YXRpYyBib29sX3Qgc2V0X2lvbW11X3B0 ZV9wcmVzZW50KHVuc2lnbmVkIGxvbmcgcHRfbWZuLCB1bnNpZ25lZCBsb25nIGJmbiwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbmV4dF9tZm4sIGlu dCBwZGVfbGV2ZWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbF90 IGl3LCBib29sX3QgaXIpCiB7CkBAIC0xMTQsNyArMTE0LDcgQEAgc3RhdGljIGJvb2xfdCBzZXRf aW9tbXVfcHRlX3ByZXNlbnQodW5zaWduZWQgbG9uZyBwdF9tZm4sIHVuc2lnbmVkIGxvbmcgZ2Zu LAogCiAgICAgdGFibGUgPSBtYXBfZG9tYWluX3BhZ2UoX21mbihwdF9tZm4pKTsKIAotICAgIHBk ZSA9ICh1MzIqKSh0YWJsZSArIHBmbl90b19wZGVfaWR4KGdmbiwgcGRlX2xldmVsKSk7CisgICAg cGRlID0gKHUzMiopKHRhYmxlICsgcGZuX3RvX3BkZV9pZHgoYmZuLCBwZGVfbGV2ZWwpKTsKIAog ICAgIG5lZWRfZmx1c2ggPSBzZXRfaW9tbXVfcGRlX3ByZXNlbnQocGRlLCBuZXh0X21mbiwgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT01NVV9QQUdJTkdfTU9ERV9M RVZFTF8wLCBpdywgaXIpOwpAQCAtMzMxLDcgKzMzMSw3IEBAIHN0YXRpYyB2b2lkIHNldF9wZGVf Y291bnQodTY0ICpwZGUsIHVuc2lnbmVkIGludCBjb3VudCkKICAqIG90aGVyd2lzZSBpbmNyZWFz ZSBwZGUgY291bnQgaWYgbWZuIGlzIGNvbnRpZ291cyB3aXRoIG1mbiAtIDEKICAqLwogc3RhdGlj IGludCBpb21tdV91cGRhdGVfcGRlX2NvdW50KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxv bmcgcHRfbWZuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv bmcgZ2ZuLCB1bnNpZ25lZCBsb25nIG1mbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBsb25nIGJmbiwgdW5zaWduZWQgbG9uZyBtZm4sCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1lcmdlX2xldmVsKQogewogICAgIHVu c2lnbmVkIGludCBwZGVfY291bnQsIG5leHRfbGV2ZWw7CkBAIC0zNDcsNyArMzQ3LDcgQEAgc3Rh dGljIGludCBpb21tdV91cGRhdGVfcGRlX2NvdW50KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVk IGxvbmcgcHRfbWZuLAogCiAgICAgLyogZ2V0IHBkZSBhdCBtZXJnZSBsZXZlbCAqLwogICAgIHRh YmxlID0gbWFwX2RvbWFpbl9wYWdlKF9tZm4ocHRfbWZuKSk7Ci0gICAgcGRlID0gdGFibGUgKyBw Zm5fdG9fcGRlX2lkeChnZm4sIG1lcmdlX2xldmVsKTsKKyAgICBwZGUgPSB0YWJsZSArIHBmbl90 b19wZGVfaWR4KGJmbiwgbWVyZ2VfbGV2ZWwpOwogCiAgICAgLyogZ2V0IHBhZ2UgdGFibGUgb2Yg bmV4dCBsZXZlbCAqLwogICAgIG50YWJsZV9tYWRkciA9IGFtZF9pb21tdV9nZXRfbmV4dF90YWJs ZV9mcm9tX3B0ZSgodTMyKilwZGUpOwpAQCAtMzYyLDcgKzM2Miw3IEBAIHN0YXRpYyBpbnQgaW9t bXVfdXBkYXRlX3BkZV9jb3VudChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIHB0X21m biwKICAgICBtYXNrID0gKDFVTEw8PCAoUFRFX1BFUl9UQUJMRV9TSElGVCAqIG5leHRfbGV2ZWwp KSAtIDE7CiAKICAgICBpZiAoICgoZmlyc3RfbWZuICYgbWFzaykgPT0gMCkgJiYKLSAgICAgICAg ICgoKGdmbiAmIG1hc2spIHwgZmlyc3RfbWZuKSA9PSBtZm4pICkKKyAgICAgICAgICgoKGJmbiAm IG1hc2spIHwgZmlyc3RfbWZuKSA9PSBtZm4pICkKICAgICB7CiAgICAgICAgIHBkZV9jb3VudCA9 IGdldF9wZGVfY291bnQoKnBkZSk7CiAKQEAgLTM4Nyw3ICszODcsNyBAQCBvdXQ6CiB9CiAKIHN0 YXRpYyBpbnQgaW9tbXVfbWVyZ2VfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9u ZyBwdF9tZm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2Zu LCB1bnNpZ25lZCBpbnQgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgYmZuLCB1bnNpZ25lZCBpbnQgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGludCBtZXJnZV9sZXZlbCkKIHsKICAgICB1NjQgKnRhYmxlLCAqcGRl LCAqbnRhYmxlOwpAQCAtMzk4LDcgKzM5OCw3IEBAIHN0YXRpYyBpbnQgaW9tbXVfbWVyZ2VfcGFn ZXMoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBwdF9tZm4sCiAgICAgQVNTRVJUKCBz cGluX2lzX2xvY2tlZCgmaGQtPmFyY2gubWFwcGluZ19sb2NrKSAmJiBwdF9tZm4gKTsKIAogICAg IHRhYmxlID0gbWFwX2RvbWFpbl9wYWdlKF9tZm4ocHRfbWZuKSk7Ci0gICAgcGRlID0gdGFibGUg KyBwZm5fdG9fcGRlX2lkeChnZm4sIG1lcmdlX2xldmVsKTsKKyAgICBwZGUgPSB0YWJsZSArIHBm bl90b19wZGVfaWR4KGJmbiwgbWVyZ2VfbGV2ZWwpOwogCiAgICAgLyogZ2V0IGZpcnN0IG1mbiAq LwogICAgIG50YWJsZV9tZm4gPSBhbWRfaW9tbXVfZ2V0X25leHRfdGFibGVfZnJvbV9wdGUoKHUz MiopcGRlKSA+PiBQQUdFX1NISUZUOwpAQCAtNDM2LDcgKzQzNiw3IEBAIHN0YXRpYyBpbnQgaW9t bXVfbWVyZ2VfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBwdF9tZm4sCiAg KiB7UmUsIHVufW1hcHBpbmcgc3VwZXIgcGFnZSBmcmFtZXMgY2F1c2VzIHJlLWFsbG9jYXRpb24g b2YgaW8KICAqIHBhZ2UgdGFibGVzLgogICovCi1zdGF0aWMgaW50IGlvbW11X3BkZV9mcm9tX2dm bihzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIHBmbiwgCitzdGF0aWMgaW50IGlvbW11 X3BkZV9mcm9tX2JmbihzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIHBmbiwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcHRfbWZuW10pCiB7CiAgICAg dTY0ICpwZGUsICpuZXh0X3RhYmxlX3ZhZGRyOwpAQCAtNDc3LDExICs0NzcsMTEgQEAgc3RhdGlj IGludCBpb21tdV9wZGVfZnJvbV9nZm4oc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBw Zm4sCiAgICAgICAgICAgICAgbmV4dF90YWJsZV9tZm4gIT0gMCApCiAgICAgICAgIHsKICAgICAg ICAgICAgIGludCBpOwotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4sIGdmbjsKKyAgICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuLCBiZm47CiAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg cGFnZV9zejsKIAogICAgICAgICAgICAgcGFnZV9zeiA9IDEgPDwgKFBURV9QRVJfVEFCTEVfU0hJ RlQgKiAobmV4dF9sZXZlbCAtIDEpKTsKLSAgICAgICAgICAgIGdmbiA9ICBwZm4gJiB+KCgxIDw8 IChQVEVfUEVSX1RBQkxFX1NISUZUICogbmV4dF9sZXZlbCkpIC0gMSk7CisgICAgICAgICAgICBi Zm4gPSAgcGZuICYgfigoMSA8PCAoUFRFX1BFUl9UQUJMRV9TSElGVCAqIG5leHRfbGV2ZWwpKSAt IDEpOwogICAgICAgICAgICAgbWZuID0gbmV4dF90YWJsZV9tZm47CiAKICAgICAgICAgICAgIC8q IGFsbG9jYXRlIGxvd2VyIGxldmVsIHBhZ2UgdGFibGUgKi8KQEAgLTQ5OSwxMCArNDk5LDEwIEBA IHN0YXRpYyBpbnQgaW9tbXVfcGRlX2Zyb21fZ2ZuKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVk IGxvbmcgcGZuLAogCiAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IFBURV9QRVJfVEFCTEVf U0laRTsgaSsrICkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzZXRfaW9tbXVfcHRl X3ByZXNlbnQobmV4dF90YWJsZV9tZm4sIGdmbiwgbWZuLCBuZXh0X2xldmVsLAorICAgICAgICAg ICAgICAgIHNldF9pb21tdV9wdGVfcHJlc2VudChuZXh0X3RhYmxlX21mbiwgYmZuLCBtZm4sIG5l eHRfbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhSU9NTVVG X3dyaXRhYmxlLCAhIUlPTU1VRl9yZWFkYWJsZSk7CiAgICAgICAgICAgICAgICAgbWZuICs9IHBh Z2Vfc3o7Ci0gICAgICAgICAgICAgICAgZ2ZuICs9IHBhZ2Vfc3o7CisgICAgICAgICAgICAgICAg YmZuICs9IHBhZ2Vfc3o7CiAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBhbWRfaW9tbXVf Zmx1c2hfYWxsX3BhZ2VzKGQpOwpAQCAtNTQwLDcgKzU0MCw3IEBAIHN0YXRpYyBpbnQgaW9tbXVf cGRlX2Zyb21fZ2ZuKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgcGZuLAogICAgIHJl dHVybiAwOwogfQogCi1zdGF0aWMgaW50IHVwZGF0ZV9wYWdpbmdfbW9kZShzdHJ1Y3QgZG9tYWlu ICpkLCB1bnNpZ25lZCBsb25nIGdmbikKK3N0YXRpYyBpbnQgdXBkYXRlX3BhZ2luZ19tb2RlKHN0 cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgYmZuKQogewogICAgIHUxNiBiZGY7CiAgICAg dm9pZCAqZGV2aWNlX2VudHJ5OwpAQCAtNTU0LDEzICs1NTQsMTMgQEAgc3RhdGljIGludCB1cGRh dGVfcGFnaW5nX21vZGUoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4pCiAgICAg dW5zaWduZWQgbG9uZyBvbGRfcm9vdF9tZm47CiAgICAgc3RydWN0IGRvbWFpbl9pb21tdSAqaGQg PSBkb21faW9tbXUoZCk7CiAKLSAgICBpZiAoIGdmbiA9PSBnZm5feChJTlZBTElEX0dGTikgKQor ICAgIGlmICggYmZuID09IGJmbl94KElOVkFMSURfQkZOKSApCiAgICAgICAgIHJldHVybiAtRUFE RFJOT1RBVkFJTDsKLSAgICBBU1NFUlQoIShnZm4gPj4gREVGQVVMVF9ET01BSU5fQUREUkVTU19X SURUSCkpOworICAgIEFTU0VSVCghKGJmbiA+PiBERUZBVUxUX0RPTUFJTl9BRERSRVNTX1dJRFRI KSk7CiAKICAgICBsZXZlbCA9IGhkLT5hcmNoLnBhZ2luZ19tb2RlOwogICAgIG9sZF9yb290ID0g aGQtPmFyY2gucm9vdF90YWJsZTsKLSAgICBvZmZzZXQgPSBnZm4gPj4gKFBURV9QRVJfVEFCTEVf U0hJRlQgKiAobGV2ZWwgLSAxKSk7CisgICAgb2Zmc2V0ID0gYmZuID4+IChQVEVfUEVSX1RBQkxF X1NISUZUICogKGxldmVsIC0gMSkpOwogCiAgICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZoZC0+ YXJjaC5tYXBwaW5nX2xvY2spICYmIGlzX2h2bV9kb21haW4oZCkpOwogCkBAIC02MzEsNyArNjMx LDcgQEAgc3RhdGljIGludCB1cGRhdGVfcGFnaW5nX21vZGUoc3RydWN0IGRvbWFpbiAqZCwgdW5z aWduZWQgbG9uZyBnZm4pCiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBhbWRfaW9tbXVfbWFwX3Bh Z2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGxvbmcgbWZu LAoraW50IGFtZF9pb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25n IGJmbiwgdW5zaWduZWQgbG9uZyBtZm4sCiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBmbGFncykKIHsKICAgICBib29sX3QgbmVlZF9mbHVzaCA9IDA7CkBAIC02NTEsMzQgKzY1 MSwzNCBAQCBpbnQgYW1kX2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVk IGxvbmcgZ2ZuLCB1bnNpZ25lZCBsb25nIG1mbiwKICAgICBpZiAoIHJjICkKICAgICB7CiAgICAg ICAgIHNwaW5fdW5sb2NrKCZoZC0+YXJjaC5tYXBwaW5nX2xvY2spOwotICAgICAgICBBTURfSU9N TVVfREVCVUcoIlJvb3QgdGFibGUgYWxsb2MgZmFpbGVkLCBnZm4gPSAlbHhcbiIsIGdmbik7Cisg ICAgICAgIEFNRF9JT01NVV9ERUJVRygiUm9vdCB0YWJsZSBhbGxvYyBmYWlsZWQsIGJmbiA9ICVs eFxuIiwgYmZuKTsKICAgICAgICAgZG9tYWluX2NyYXNoKGQpOwogICAgICAgICByZXR1cm4gcmM7 CiAgICAgfQogCiAgICAgLyogU2luY2UgSFZNIGRvbWFpbiBpcyBpbml0aWFsaXplZCB3aXRoIDIg bGV2ZWwgSU8gcGFnZSB0YWJsZSwKLSAgICAgKiB3ZSBtaWdodCBuZWVkIGEgZGVlcGVyIHBhZ2Ug dGFibGUgZm9yIGxhZ2VyIGdmbiBub3cgKi8KKyAgICAgKiB3ZSBtaWdodCBuZWVkIGEgZGVlcGVy IHBhZ2UgdGFibGUgZm9yIHdpZGVyIGJmbiBub3cgKi8KICAgICBpZiAoIGlzX2h2bV9kb21haW4o ZCkgKQogICAgIHsKLSAgICAgICAgaWYgKCB1cGRhdGVfcGFnaW5nX21vZGUoZCwgZ2ZuKSApCisg ICAgICAgIGlmICggdXBkYXRlX3BhZ2luZ19tb2RlKGQsIGJmbikgKQogICAgICAgICB7CiAgICAg ICAgICAgICBzcGluX3VubG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsKLSAgICAgICAgICAg IEFNRF9JT01NVV9ERUJVRygiVXBkYXRlIHBhZ2UgbW9kZSBmYWlsZWQgZ2ZuID0gJWx4XG4iLCBn Zm4pOworICAgICAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJVcGRhdGUgcGFnZSBtb2RlIGZhaWxl ZCBiZm4gPSAlbHhcbiIsIGJmbik7CiAgICAgICAgICAgICBkb21haW5fY3Jhc2goZCk7CiAgICAg ICAgICAgICByZXR1cm4gLUVGQVVMVDsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICggaW9t bXVfcGRlX2Zyb21fZ2ZuKGQsIGdmbiwgcHRfbWZuKSB8fCAocHRfbWZuWzFdID09IDApICkKKyAg ICBpZiAoIGlvbW11X3BkZV9mcm9tX2JmbihkLCBiZm4sIHB0X21mbikgfHwgKHB0X21mblsxXSA9 PSAwKSApCiAgICAgewogICAgICAgICBzcGluX3VubG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2Nr KTsKLSAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJJbnZhbGlkIElPIHBhZ2V0YWJsZSBlbnRyeSBn Zm4gPSAlbHhcbiIsIGdmbik7CisgICAgICAgIEFNRF9JT01NVV9ERUJVRygiSW52YWxpZCBJTyBw YWdldGFibGUgZW50cnkgYmZuID0gJWx4XG4iLCBiZm4pOwogICAgICAgICBkb21haW5fY3Jhc2go ZCk7CiAgICAgICAgIHJldHVybiAtRUZBVUxUOwogICAgIH0KIAogICAgIC8qIEluc3RhbGwgNGsg bWFwcGluZyBmaXJzdCAqLwotICAgIG5lZWRfZmx1c2ggPSBzZXRfaW9tbXVfcHRlX3ByZXNlbnQo cHRfbWZuWzFdLCBnZm4sIG1mbiwgCisgICAgbmVlZF9mbHVzaCA9IHNldF9pb21tdV9wdGVfcHJl c2VudChwdF9tZm5bMV0sIGJmbiwgbWZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSU9NTVVfUEFHSU5HX01PREVfTEVWRUxfMSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICEhKGZsYWdzICYgSU9NTVVGX3dyaXRhYmxlKSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhKGZsYWdzICYgSU9NTVVGX3JlYWRhYmxl KSk7CkBAIC02OTAsNyArNjkwLDcgQEAgaW50IGFtZF9pb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9t YWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQgbG9uZyBtZm4sCiAgICAgLyogNEsg bWFwcGluZyBmb3IgUFYgZ3Vlc3RzIG5ldmVyIGNoYW5nZXMsIAogICAgICAqIG5vIG5lZWQgdG8g Zmx1c2ggaWYgd2UgdHJ1c3Qgbm9uLXByZXNlbnQgYml0cyAqLwogICAgIGlmICggaXNfaHZtX2Rv bWFpbihkKSApCi0gICAgICAgIGFtZF9pb21tdV9mbHVzaF9wYWdlcyhkLCBnZm4sIDApOworICAg ICAgICBhbWRfaW9tbXVfZmx1c2hfcGFnZXMoZCwgYmZuLCAwKTsKIAogICAgIGZvciAoIG1lcmdl X2xldmVsID0gSU9NTVVfUEFHSU5HX01PREVfTEVWRUxfMjsKICAgICAgICAgICBtZXJnZV9sZXZl bCA8PSBoZC0+YXJjaC5wYWdpbmdfbW9kZTsgbWVyZ2VfbGV2ZWwrKyApCkBAIC02OTgsMTUgKzY5 OCwxNSBAQCBpbnQgYW1kX2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVk IGxvbmcgZ2ZuLCB1bnNpZ25lZCBsb25nIG1mbiwKICAgICAgICAgaWYgKCBwdF9tZm5bbWVyZ2Vf bGV2ZWxdID09IDAgKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmICggIWlvbW11X3Vw ZGF0ZV9wZGVfY291bnQoZCwgcHRfbWZuW21lcmdlX2xldmVsXSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnZm4sIG1mbiwgbWVyZ2VfbGV2ZWwpICkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBiZm4sIG1mbiwgbWVyZ2VfbGV2ZWwpICkKICAgICAg ICAgICAgIGJyZWFrOwogCi0gICAgICAgIGlmICggaW9tbXVfbWVyZ2VfcGFnZXMoZCwgcHRfbWZu W21lcmdlX2xldmVsXSwgZ2ZuLCAKKyAgICAgICAgaWYgKCBpb21tdV9tZXJnZV9wYWdlcyhkLCBw dF9tZm5bbWVyZ2VfbGV2ZWxdLCBiZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZmxhZ3MsIG1lcmdlX2xldmVsKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIHNwaW5fdW5sb2Nr KCZoZC0+YXJjaC5tYXBwaW5nX2xvY2spOwogICAgICAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJN ZXJnZSBpb21tdSBwYWdlIGZhaWxlZCBhdCBsZXZlbCAlZCwgIgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJnZm4gPSAlbHggbWZuID0gJWx4XG4iLCBtZXJnZV9sZXZlbCwgZ2ZuLCBtZm4p OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZm4gPSAlbHggbWZuID0gJWx4XG4iLCBt ZXJnZV9sZXZlbCwgYmZuLCBtZm4pOwogICAgICAgICAgICAgZG9tYWluX2NyYXNoKGQpOwogICAg ICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CiAgICAgICAgIH0KQEAgLTcyMCw3ICs3MjAsNyBAQCBv dXQ6CiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBhbWRfaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbikKK2ludCBhbWRfaW9tbXVfdW5tYXBfcGFnZShz dHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGJmbikKIHsKICAgICB1bnNpZ25lZCBsb25n IHB0X21mbls3XTsKICAgICBzdHJ1Y3QgZG9tYWluX2lvbW11ICpoZCA9IGRvbV9pb21tdShkKTsK QEAgLTczOSwzNCArNzM5LDM0IEBAIGludCBhbWRfaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9t YWluICpkLCB1bnNpZ25lZCBsb25nIGdmbikKICAgICB9CiAKICAgICAvKiBTaW5jZSBIVk0gZG9t YWluIGlzIGluaXRpYWxpemVkIHdpdGggMiBsZXZlbCBJTyBwYWdlIHRhYmxlLAotICAgICAqIHdl IG1pZ2h0IG5lZWQgYSBkZWVwZXIgcGFnZSB0YWJsZSBmb3IgbGFnZXIgZ2ZuIG5vdyAqLworICAg ICAqIHdlIG1pZ2h0IG5lZWQgYSBkZWVwZXIgcGFnZSB0YWJsZSBmb3IgbGFnZXIgYmZuIG5vdyAq LwogICAgIGlmICggaXNfaHZtX2RvbWFpbihkKSApCiAgICAgewotICAgICAgICBpbnQgcmMgPSB1 cGRhdGVfcGFnaW5nX21vZGUoZCwgZ2ZuKTsKKyAgICAgICAgaW50IHJjID0gdXBkYXRlX3BhZ2lu Z19tb2RlKGQsIGJmbik7CiAKICAgICAgICAgaWYgKCByYyApCiAgICAgICAgIHsKICAgICAgICAg ICAgIHNwaW5fdW5sb2NrKCZoZC0+YXJjaC5tYXBwaW5nX2xvY2spOwotICAgICAgICAgICAgQU1E X0lPTU1VX0RFQlVHKCJVcGRhdGUgcGFnZSBtb2RlIGZhaWxlZCBnZm4gPSAlbHhcbiIsIGdmbik7 CisgICAgICAgICAgICBBTURfSU9NTVVfREVCVUcoIlVwZGF0ZSBwYWdlIG1vZGUgZmFpbGVkIGJm biA9ICVseFxuIiwgYmZuKTsKICAgICAgICAgICAgIGlmICggcmMgIT0gLUVBRERSTk9UQVZBSUwg KQogICAgICAgICAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsKICAgICAgICAgICAgIHJldHVybiBy YzsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICggaW9tbXVfcGRlX2Zyb21fZ2ZuKGQsIGdm biwgcHRfbWZuKSB8fCAocHRfbWZuWzFdID09IDApICkKKyAgICBpZiAoIGlvbW11X3BkZV9mcm9t X2JmbihkLCBiZm4sIHB0X21mbikgfHwgKHB0X21mblsxXSA9PSAwKSApCiAgICAgewogICAgICAg ICBzcGluX3VubG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsKLSAgICAgICAgQU1EX0lPTU1V X0RFQlVHKCJJbnZhbGlkIElPIHBhZ2V0YWJsZSBlbnRyeSBnZm4gPSAlbHhcbiIsIGdmbik7Cisg ICAgICAgIEFNRF9JT01NVV9ERUJVRygiSW52YWxpZCBJTyBwYWdldGFibGUgZW50cnkgYmZuID0g JWx4XG4iLCBiZm4pOwogICAgICAgICBkb21haW5fY3Jhc2goZCk7CiAgICAgICAgIHJldHVybiAt RUZBVUxUOwogICAgIH0KIAogICAgIC8qIG1hcmsgUFRFIGFzICdwYWdlIG5vdCBwcmVzZW50JyAq LwotICAgIGNsZWFyX2lvbW11X3B0ZV9wcmVzZW50KHB0X21mblsxXSwgZ2ZuKTsKKyAgICBjbGVh cl9pb21tdV9wdGVfcHJlc2VudChwdF9tZm5bMV0sIGJmbik7CiAgICAgc3Bpbl91bmxvY2soJmhk LT5hcmNoLm1hcHBpbmdfbG9jayk7CiAKLSAgICBhbWRfaW9tbXVfZmx1c2hfcGFnZXMoZCwgZ2Zu LCAwKTsKKyAgICBhbWRfaW9tbXVfZmx1c2hfcGFnZXMoZCwgYmZuLCAwKTsKIAogICAgIHJldHVy biAwOwogfQpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL3BjaV9hbWRf aW9tbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9wY2lfYW1kX2lvbW11LmMKaW5k ZXggMTJkMjY5NWI4OS4uZDYwODYzMWU2ZSAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Ro cm91Z2gvYW1kL3BjaV9hbWRfaW9tbXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9h bWQvcGNpX2FtZF9pb21tdS5jCkBAIC01NzgsNyArNTc4LDcgQEAgc3RhdGljIHZvaWQgYW1kX2R1 bXBfcDJtX3RhYmxlX2xldmVsKHN0cnVjdCBwYWdlX2luZm8qIHBnLCBpbnQgbGV2ZWwsCiAgICAg ICAgICAgICAgICAgbWFkZHJfdG9fcGFnZShuZXh0X3RhYmxlX21hZGRyKSwgbmV4dF9sZXZlbCwK ICAgICAgICAgICAgICAgICBhZGRyZXNzLCBpbmRlbnQgKyAxKTsKICAgICAgICAgZWxzZQotICAg ICAgICAgICAgcHJpbnRrKCIlKnNnZm46ICUwOGx4ICBtZm46ICUwOGx4XG4iLAorICAgICAgICAg ICAgcHJpbnRrKCIlKnNiZm46ICUwOGx4ICBtZm46ICUwOGx4XG4iLAogICAgICAgICAgICAgICAg ICAgIGluZGVudCwgIiIsCiAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpUEZOX0RP V04oYWRkcmVzcyksCiAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpUEZOX0RPV04o bmV4dF90YWJsZV9tYWRkcikpOwpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv YXJtL3NtbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMKaW5kZXggNzRj MDliMDk5MS4uMWU0ZDU2MWI0NyAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv YXJtL3NtbXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jCkBAIC0y NTUxLDcgKzI1NTEsNyBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1fc21tdV9pb3RsYl9m bHVzaF9hbGwoc3RydWN0IGRvbWFpbiAqZCkKIH0KIAogc3RhdGljIGludCBfX211c3RfY2hlY2sg YXJtX3NtbXVfaW90bGJfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2ZuLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBiZm4sCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg cGFnZV9jb3VudCkKIHsKIAkvKiBBUk0gU01NVSB2MSBkb2Vzbid0IGhhdmUgZmx1c2ggYnkgVk1B IGFuZCBWTUlEICovCkBAIC0yNzM3LDcgKzI3MzcsNyBAQCBzdGF0aWMgdm9pZCBhcm1fc21tdV9p b21tdV9kb21haW5fdGVhcmRvd24oc3RydWN0IGRvbWFpbiAqZCkKIAl4ZnJlZSh4ZW5fZG9tYWlu KTsKIH0KIAotc3RhdGljIGludCBfX211c3RfY2hlY2sgYXJtX3NtbXVfbWFwX3BhZ2Uoc3RydWN0 IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCitzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBh cm1fc21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGJmbiwKIAkJ CXVuc2lnbmVkIGxvbmcgbWZuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CiAJcDJtX3R5cGVfdCB0 OwpAQCAtMjc0OCwxMCArMjc0OCwxMCBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1fc21t dV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwKIAkgKiBwcm90 ZWN0ZWQgYnkgYW4gSU9NTVUsIFhlbiBuZWVkcyB0byBhZGQgYSAxOjEgbWFwcGluZyBpbiB0aGUg ZG9tYWluCiAJICogcDJtIHRvIGFsbG93IERNQSByZXF1ZXN0IHRvIHdvcmsuCiAJICogVGhpcyBp cyBvbmx5IHZhbGlkIHdoZW4gdGhlIGRvbWFpbiBpcyBkaXJlY3RlZCBtYXBwZWQuIEhlbmNlIHRo aXMKLQkgKiBmdW5jdGlvbiBzaG91bGQgb25seSBiZSB1c2VkIGJ5IGdudHRhYiBjb2RlIHdpdGgg Z2ZuID09IG1mbi4KKwkgKiBmdW5jdGlvbiBzaG91bGQgb25seSBiZSB1c2VkIGJ5IGdudHRhYiBj b2RlIHdpdGggZ2ZuID09IG1mbiA9PSBiZm4uCiAJICovCiAJQlVHX09OKCFpc19kb21haW5fZGly ZWN0X21hcHBlZChkKSk7Ci0JQlVHX09OKG1mbiAhPSBnZm4pOworCUJVR19PTihtZm4gIT0gYmZu KTsKIAogCS8qIFdlIG9ubHkgc3VwcG9ydCByZWFkYWJsZSBhbmQgd3JpdGFibGUgZmxhZ3MgKi8K IAlpZiAoIShmbGFncyAmIChJT01NVUZfcmVhZGFibGUgfCBJT01NVUZfd3JpdGFibGUpKSkKQEAg LTI3NjMsMTkgKzI3NjMsMTkgQEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgYXJtX3NtbXVfbWFw X3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCiAJICogVGhlIGZ1bmN0 aW9uIGd1ZXN0X3BoeXNtYXBfYWRkX2VudHJ5IHJlcGxhY2VzIHRoZSBjdXJyZW50IG1hcHBpbmcK IAkgKiBpZiB0aGVyZSBpcyBhbHJlYWR5IG9uZS4uLgogCSAqLwotCXJldHVybiBndWVzdF9waHlz bWFwX2FkZF9lbnRyeShkLCBfZ2ZuKGdmbiksIF9tZm4obWZuKSwgMCwgdCk7CisJcmV0dXJuIGd1 ZXN0X3BoeXNtYXBfYWRkX2VudHJ5KGQsIF9nZm4oYmZuKSwgX21mbihiZm4pLCAwLCB0KTsKIH0K IAotc3RhdGljIGludCBfX211c3RfY2hlY2sgYXJtX3NtbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9t YWluICpkLCB1bnNpZ25lZCBsb25nIGdmbikKK3N0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGFybV9z bW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBiZm4pCiB7CiAJ LyoKIAkgKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgZ250dGFiIGNvZGUg d2hlbiB0aGUgZG9tYWluCi0JICogaXMgZGlyZWN0IG1hcHBlZAorCSAqIGlzIGRpcmVjdCBtYXBw ZWQgKGkuZS4gZ2ZuID09IG1mbiA9PSBiZm4pLgogCSAqLwogCWlmICggIWlzX2RvbWFpbl9kaXJl Y3RfbWFwcGVkKGQpICkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlyZXR1cm4gZ3Vlc3RfcGh5c21h cF9yZW1vdmVfcGFnZShkLCBfZ2ZuKGdmbiksIF9tZm4oZ2ZuKSwgMCk7CisJcmV0dXJuIGd1ZXN0 X3BoeXNtYXBfcmVtb3ZlX3BhZ2UoZCwgX2dmbihiZm4pLCBfbWZuKGJmbiksIDApOwogfQogCiBz dGF0aWMgY29uc3Qgc3RydWN0IGlvbW11X29wcyBhcm1fc21tdV9pb21tdV9vcHMgPSB7CmRpZmYg LS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jIGIveGVuL2RyaXZlcnMvcGFz c3Rocm91Z2gvaW9tbXUuYwppbmRleCAyYzQ0ZmFiZjk5Li40NmRiOWQwZDA0IDEwMDY0NAotLS0g YS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0 aHJvdWdoL2lvbW11LmMKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIF9faHdkb21faW5pdCBpb21t dV9od2RvbV9pbml0KHN0cnVjdCBkb21haW4gKmQpCiAgICAgICAgIHBhZ2VfbGlzdF9mb3JfZWFj aCAoIHBhZ2UsICZkLT5wYWdlX2xpc3QgKQogICAgICAgICB7CiAgICAgICAgICAgICB1bnNpZ25l ZCBsb25nIG1mbiA9IG1mbl94KHBhZ2VfdG9fbWZuKHBhZ2UpKTsKLSAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgZ2ZuID0gbWZuX3RvX2dtZm4oZCwgbWZuKTsKKyAgICAgICAgICAgIHVuc2lnbmVk IGxvbmcgYmZuID0gbWZuX3RvX2dtZm4oZCwgbWZuKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlu dCBtYXBwaW5nID0gSU9NTVVGX3JlYWRhYmxlOwogICAgICAgICAgICAgaW50IHJldDsKIApAQCAt MTk0LDcgKzE5NCw3IEBAIHZvaWQgX19od2RvbV9pbml0IGlvbW11X2h3ZG9tX2luaXQoc3RydWN0 IGRvbWFpbiAqZCkKICAgICAgICAgICAgICAgICAgID09IFBHVF93cml0YWJsZV9wYWdlKSApCiAg ICAgICAgICAgICAgICAgbWFwcGluZyB8PSBJT01NVUZfd3JpdGFibGU7CiAKLSAgICAgICAgICAg IHJldCA9IGhkLT5wbGF0Zm9ybV9vcHMtPm1hcF9wYWdlKGQsIGdmbiwgbWZuLCBtYXBwaW5nKTsK KyAgICAgICAgICAgIHJldCA9IGhkLT5wbGF0Zm9ybV9vcHMtPm1hcF9wYWdlKGQsIGJmbiwgbWZu LCBtYXBwaW5nKTsKICAgICAgICAgICAgIGlmICggIXJjICkKICAgICAgICAgICAgICAgICByYyA9 IHJldDsKIApAQCAtMjU1LDcgKzI1NSw3IEBAIHZvaWQgaW9tbXVfZG9tYWluX2Rlc3Ryb3koc3Ry dWN0IGRvbWFpbiAqZCkKICAgICBhcmNoX2lvbW11X2RvbWFpbl9kZXN0cm95KGQpOwogfQogCi1p bnQgaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sIHVu c2lnbmVkIGxvbmcgbWZuLAoraW50IGlvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVu c2lnbmVkIGxvbmcgYmZuLCB1bnNpZ25lZCBsb25nIG1mbiwKICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CiAgICAgY29uc3Qgc3RydWN0IGRvbWFpbl9pb21tdSAqaGQg PSBkb21faW9tbXUoZCk7CkBAIC0yNjQsMTMgKzI2NCwxMyBAQCBpbnQgaW9tbXVfbWFwX3BhZ2Uo c3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAog ICAgIGlmICggIWlvbW11X2VuYWJsZWQgfHwgIWhkLT5wbGF0Zm9ybV9vcHMgKQogICAgICAgICBy ZXR1cm4gMDsKIAotICAgIHJjID0gaGQtPnBsYXRmb3JtX29wcy0+bWFwX3BhZ2UoZCwgZ2ZuLCBt Zm4sIGZsYWdzKTsKKyAgICByYyA9IGhkLT5wbGF0Zm9ybV9vcHMtPm1hcF9wYWdlKGQsIGJmbiwg bWZuLCBmbGFncyk7CiAgICAgaWYgKCB1bmxpa2VseShyYykgKQogICAgIHsKICAgICAgICAgaWYg KCAhZC0+aXNfc2h1dHRpbmdfZG93biAmJiBwcmludGtfcmF0ZWxpbWl0KCkgKQogICAgICAgICAg ICAgcHJpbnRrKFhFTkxPR19FUlIKLSAgICAgICAgICAgICAgICAgICAiZCVkOiBJT01NVSBtYXBw aW5nIGdmbiAlI2x4IHRvIG1mbiAlI2x4IGZhaWxlZDogJWRcbiIsCi0gICAgICAgICAgICAgICAg ICAgZC0+ZG9tYWluX2lkLCBnZm4sIG1mbiwgcmMpOworICAgICAgICAgICAgICAgICAgICJkJWQ6 IElPTU1VIG1hcHBpbmcgYmZuICUjbHggdG8gbWZuICUjbHggZmFpbGVkOiAlZFxuIiwKKyAgICAg ICAgICAgICAgICAgICBkLT5kb21haW5faWQsIGJmbiwgbWZuLCByYyk7CiAKICAgICAgICAgaWYg KCAhaXNfaGFyZHdhcmVfZG9tYWluKGQpICkKICAgICAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsK QEAgLTI3OSw3ICsyNzksNyBAQCBpbnQgaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwg dW5zaWduZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAogICAgIHJldHVybiByYzsKIH0K IAotaW50IGlvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBn Zm4pCitpbnQgaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25n IGJmbikKIHsKICAgICBjb25zdCBzdHJ1Y3QgZG9tYWluX2lvbW11ICpoZCA9IGRvbV9pb21tdShk KTsKICAgICBpbnQgcmM7CkBAIC0yODcsMTMgKzI4NywxMyBAQCBpbnQgaW9tbXVfdW5tYXBfcGFn ZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbikKICAgICBpZiAoICFpb21tdV9l bmFibGVkIHx8ICFoZC0+cGxhdGZvcm1fb3BzICkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBy YyA9IGhkLT5wbGF0Zm9ybV9vcHMtPnVubWFwX3BhZ2UoZCwgZ2ZuKTsKKyAgICByYyA9IGhkLT5w bGF0Zm9ybV9vcHMtPnVubWFwX3BhZ2UoZCwgYmZuKTsKICAgICBpZiAoIHVubGlrZWx5KHJjKSAp CiAgICAgewogICAgICAgICBpZiAoICFkLT5pc19zaHV0dGluZ19kb3duICYmIHByaW50a19yYXRl bGltaXQoKSApCiAgICAgICAgICAgICBwcmludGsoWEVOTE9HX0VSUgotICAgICAgICAgICAgICAg ICAgICJkJWQ6IElPTU1VIHVubWFwcGluZyBnZm4gJSNseCBmYWlsZWQ6ICVkXG4iLAotICAgICAg ICAgICAgICAgICAgIGQtPmRvbWFpbl9pZCwgZ2ZuLCByYyk7CisgICAgICAgICAgICAgICAgICAg ImQlZDogSU9NTVUgdW5tYXBwaW5nIGJmbiAlI2x4IGZhaWxlZDogJWRcbiIsCisgICAgICAgICAg ICAgICAgICAgZC0+ZG9tYWluX2lkLCBiZm4sIHJjKTsKIAogICAgICAgICBpZiAoICFpc19oYXJk d2FyZV9kb21haW4oZCkgKQogICAgICAgICAgICAgZG9tYWluX2NyYXNoKGQpOwpAQCAtMzE5LDcg KzMxOSw3IEBAIHN0YXRpYyB2b2lkIGlvbW11X2ZyZWVfcGFnZXRhYmxlcyh1bnNpZ25lZCBsb25n IHVudXNlZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVtYXNrX2N5Y2xlKHNtcF9w cm9jZXNzb3JfaWQoKSwgJmNwdV9vbmxpbmVfbWFwKSk7CiB9CiAKLWludCBpb21tdV9pb3RsYl9m bHVzaChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwKK2ludCBpb21tdV9pb3Rs Yl9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGJmbiwKICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgcGFnZV9jb3VudCkKIHsKICAgICBjb25zdCBzdHJ1Y3Qg ZG9tYWluX2lvbW11ICpoZCA9IGRvbV9pb21tdShkKTsKQEAgLTMyOCwxMyArMzI4LDEzIEBAIGlu dCBpb21tdV9pb3RsYl9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwK ICAgICBpZiAoICFpb21tdV9lbmFibGVkIHx8ICFoZC0+cGxhdGZvcm1fb3BzIHx8ICFoZC0+cGxh dGZvcm1fb3BzLT5pb3RsYl9mbHVzaCApCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmMgPSBo ZC0+cGxhdGZvcm1fb3BzLT5pb3RsYl9mbHVzaChkLCBnZm4sIHBhZ2VfY291bnQpOworICAgIHJj ID0gaGQtPnBsYXRmb3JtX29wcy0+aW90bGJfZmx1c2goZCwgYmZuLCBwYWdlX2NvdW50KTsKICAg ICBpZiAoIHVubGlrZWx5KHJjKSApCiAgICAgewogICAgICAgICBpZiAoICFkLT5pc19zaHV0dGlu Z19kb3duICYmIHByaW50a19yYXRlbGltaXQoKSApCiAgICAgICAgICAgICBwcmludGsoWEVOTE9H X0VSUgotICAgICAgICAgICAgICAgICAgICJkJWQ6IElPTU1VIElPVExCIGZsdXNoIGZhaWxlZDog JWQsIGdmbiAlI2x4LCBwYWdlIGNvdW50ICV1XG4iLAotICAgICAgICAgICAgICAgICAgIGQtPmRv bWFpbl9pZCwgcmMsIGdmbiwgcGFnZV9jb3VudCk7CisgICAgICAgICAgICAgICAgICAgImQlZDog SU9NTVUgSU9UTEIgZmx1c2ggZmFpbGVkOiAlZCwgYmZuICUjbHgsIHBhZ2UgY291bnQgJXVcbiIs CisgICAgICAgICAgICAgICAgICAgZC0+ZG9tYWluX2lkLCByYywgYmZuLCBwYWdlX2NvdW50KTsK IAogICAgICAgICBpZiAoICFpc19oYXJkd2FyZV9kb21haW4oZCkgKQogICAgICAgICAgICAgZG9t YWluX2NyYXNoKGQpOwpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lv bW11LmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYwppbmRleCAxNzEwMjU2 ODIzLi40OGY2MmUwZThkIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQv aW9tbXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYwpAQCAtNTg1 LDcgKzU4NSw3IEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2ZsdXNoX2FsbCh2b2lk KQogfQogCiBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYihzdHJ1Y3Qg ZG9tYWluICpkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgbG9uZyBnZm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBsb25nIGJmbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJvb2xfdCBkbWFfb2xkX3B0ZV9wcmVzZW50LAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBhZ2VfY291bnQpCiB7CkBAIC02MTIs MTIgKzYxMiwxMiBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYihz dHJ1Y3QgZG9tYWluICpkLAogICAgICAgICBpZiAoIGlvbW11X2RvbWlkID09IC0xICkKICAgICAg ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmICggcGFnZV9jb3VudCAhPSAxIHx8IGdmbiA9 PSBnZm5feChJTlZBTElEX0dGTikgKQorICAgICAgICBpZiAoIHBhZ2VfY291bnQgIT0gMSB8fCBi Zm4gPT0gYmZuX3goSU5WQUxJRF9CRk4pICkKICAgICAgICAgICAgIHJjID0gaW9tbXVfZmx1c2hf aW90bGJfZHNpKGlvbW11LCBpb21tdV9kb21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDAsIGZsdXNoX2Rldl9pb3RsYik7CiAgICAgICAgIGVsc2UKICAgICAgICAg ICAgIHJjID0gaW9tbXVfZmx1c2hfaW90bGJfcHNpKGlvbW11LCBpb21tdV9kb21pZCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWRkcl90KWdmbiA8PCBQQUdFX1NI SUZUXzRLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19iZm5fdG9f YmFkZHIoYmZuKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBR0Vf T1JERVJfNEssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhZG1hX29s ZF9wdGVfcHJlc2VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs dXNoX2Rldl9pb3RsYik7CkBAIC02MzMsMTUgKzYzMywxNSBAQCBzdGF0aWMgaW50IF9fbXVzdF9j aGVjayBpb21tdV9mbHVzaF9pb3RsYihzdHJ1Y3QgZG9tYWluICpkLAogfQogCiBzdGF0aWMgaW50 IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYl9wYWdlcyhzdHJ1Y3QgZG9tYWluICpkLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg bG9uZyBnZm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBsb25nIGJmbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX2NvdW50KQogewotICAgIHJldHVybiBpb21t dV9mbHVzaF9pb3RsYihkLCBnZm4sIDEsIHBhZ2VfY291bnQpOworICAgIHJldHVybiBpb21tdV9m bHVzaF9pb3RsYihkLCBiZm4sIDEsIHBhZ2VfY291bnQpOwogfQogCiBzdGF0aWMgaW50IF9fbXVz dF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYl9hbGwoc3RydWN0IGRvbWFpbiAqZCkKIHsKLSAgICBy ZXR1cm4gaW9tbXVfZmx1c2hfaW90bGIoZCwgZ2ZuX3goSU5WQUxJRF9HRk4pLCAwLCAwKTsKKyAg ICByZXR1cm4gaW9tbXVfZmx1c2hfaW90bGIoZCwgYmZuX3goSU5WQUxJRF9CRk4pLCAwLCAwKTsK IH0KIAogLyogY2xlYXIgb25lIHBhZ2UncyBwYWdlIHRhYmxlICovCkBAIC0xNzY3LDcgKzE3Njcs NyBAQCBzdGF0aWMgdm9pZCBpb21tdV9kb21haW5fdGVhcmRvd24oc3RydWN0IGRvbWFpbiAqZCkK IH0KIAogc3RhdGljIGludCBfX211c3RfY2hlY2sgaW50ZWxfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0 IGRvbWFpbiAqZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGxvbmcgZ2ZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgbG9uZyBiZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBmbGFncykKIHsKQEAgLTE3ODYs MTQgKzE3ODYsMTQgQEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgaW50ZWxfaW9tbXVfbWFwX3Bh Z2Uoc3RydWN0IGRvbWFpbiAqZCwKIAogICAgIHNwaW5fbG9jaygmaGQtPmFyY2gubWFwcGluZ19s b2NrKTsKIAotICAgIHBnX21hZGRyID0gYWRkcl90b19kbWFfcGFnZV9tYWRkcihkLCAocGFkZHJf dClnZm4gPDwgUEFHRV9TSElGVF80SywgMSk7CisgICAgcGdfbWFkZHIgPSBhZGRyX3RvX2RtYV9w YWdlX21hZGRyKGQsIF9fYmZuX3RvX2JhZGRyKGJmbiksIDEpOwogICAgIGlmICggcGdfbWFkZHIg PT0gMCApCiAgICAgewogICAgICAgICBzcGluX3VubG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2Nr KTsKICAgICAgICAgcmV0dXJuIC1FTk9NRU07CiAgICAgfQogICAgIHBhZ2UgPSAoc3RydWN0IGRt YV9wdGUgKiltYXBfdnRkX2RvbWFpbl9wYWdlKHBnX21hZGRyKTsKLSAgICBwdGUgPSBwYWdlICsg KGdmbiAmIExFVkVMX01BU0spOworICAgIHB0ZSA9IHBhZ2UgKyAoYmZuICYgTEVWRUxfTUFTSyk7 CiAgICAgb2xkID0gKnB0ZTsKICAgICBkbWFfc2V0X3B0ZV9hZGRyKG5ldywgKHBhZGRyX3QpbWZu IDw8IFBBR0VfU0hJRlRfNEspOwogICAgIGRtYV9zZXRfcHRlX3Byb3QobmV3LApAQCAtMTgxNywy MiArMTgxNywyMiBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpbnRlbF9pb21tdV9tYXBfcGFn ZShzdHJ1Y3QgZG9tYWluICpkLAogICAgIHVubWFwX3Z0ZF9kb21haW5fcGFnZShwYWdlKTsKIAog ICAgIGlmICggIXRoaXNfY3B1KGlvbW11X2RvbnRfZmx1c2hfaW90bGIpICkKLSAgICAgICAgcmMg PSBpb21tdV9mbHVzaF9pb3RsYihkLCBnZm4sIGRtYV9wdGVfcHJlc2VudChvbGQpLCAxKTsKKyAg ICAgICAgcmMgPSBpb21tdV9mbHVzaF9pb3RsYihkLCBiZm4sIGRtYV9wdGVfcHJlc2VudChvbGQp LCAxKTsKIAogICAgIHJldHVybiByYzsKIH0KIAogc3RhdGljIGludCBfX211c3RfY2hlY2sgaW50 ZWxfaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdmbikKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBiZm4p CiB7CiAgICAgLyogRG8gbm90aGluZyBpZiBoYXJkd2FyZSBkb21haW4gYW5kIGlvbW11IHN1cHBv cnRzIHBhc3MgdGhydS4gKi8KICAgICBpZiAoIGlvbW11X3Bhc3N0aHJvdWdoICYmIGlzX2hhcmR3 YXJlX2RvbWFpbihkKSApCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIGRtYV9wdGVf Y2xlYXJfb25lKGQsIChwYWRkcl90KWdmbiA8PCBQQUdFX1NISUZUXzRLKTsKKyAgICByZXR1cm4g ZG1hX3B0ZV9jbGVhcl9vbmUoZCwgX19iZm5fdG9fYmFkZHIoYmZuKSk7CiB9CiAKLWludCBpb21t dV9wdGVfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwgdTY0IGdmbiwgdTY0ICpwdGUsCitpbnQgaW9t bXVfcHRlX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHVpbnQ2NF90IGJmbiwgdWludDY0X3QgKnB0 ZSwKICAgICAgICAgICAgICAgICAgICAgaW50IG9yZGVyLCBpbnQgcHJlc2VudCkKIHsKICAgICBz dHJ1Y3QgYWNwaV9kcmhkX3VuaXQgKmRyaGQ7CkBAIC0xODU2LDcgKzE4NTYsNyBAQCBpbnQgaW9t bXVfcHRlX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHU2NCBnZm4sIHU2NCAqcHRlLAogICAgICAg ICAgICAgY29udGludWU7CiAKICAgICAgICAgcmMgPSBpb21tdV9mbHVzaF9pb3RsYl9wc2koaW9t bXUsIGlvbW11X2RvbWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFk ZHJfdClnZm4gPDwgUEFHRV9TSElGVF80SywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgX19iZm5fdG9fYmFkZHIoYmZuKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb3JkZXIsICFwcmVzZW50LCBmbHVzaF9kZXZfaW90bGIpOwogICAgICAgICBpZiAoIHJj ID4gMCApCiAgICAgICAgIHsKQEAgLTI2MjYsNyArMjYyNiw3IEBAIHN0YXRpYyB2b2lkIHZ0ZF9k dW1wX3AybV90YWJsZV9sZXZlbChwYWRkcl90IHB0X21hZGRyLCBpbnQgbGV2ZWwsIHBhZGRyX3Qg Z3BhLAogICAgICAgICAgICAgdnRkX2R1bXBfcDJtX3RhYmxlX2xldmVsKGRtYV9wdGVfYWRkcigq cHRlKSwgbmV4dF9sZXZlbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YWRkcmVzcywgaW5kZW50ICsgMSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByaW50aygi JSpzZ2ZuOiAlMDhseCBtZm46ICUwOGx4XG4iLAorICAgICAgICAgICAgcHJpbnRrKCIlKnNiZm46 ICUwOGx4IG1mbjogJTA4bHhcbiIsCiAgICAgICAgICAgICAgICAgICAgaW5kZW50LCAiIiwKICAg ICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykoYWRkcmVzcyA+PiBQQUdFX1NISUZUXzRL KSwKICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykoZG1hX3B0ZV9hZGRyKCpwdGUp ID4+IFBBR0VfU0hJRlRfNEspKTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9pb21tdS5o IGIveGVuL2luY2x1ZGUveGVuL2lvbW11LmgKaW5kZXggNmI0MmUzYjg3Ni4uMTRhZGEwYzE0ZSAx MDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL2lvbW11LmgKKysrIGIveGVuL2luY2x1ZGUveGVu L2lvbW11LmgKQEAgLTIzLDExICsyMywzNyBAQAogI2luY2x1ZGUgPHhlbi9wYWdlLWRlZnMuaD4K ICNpbmNsdWRlIDx4ZW4vc3BpbmxvY2suaD4KICNpbmNsdWRlIDx4ZW4vcGNpLmg+CisjaW5jbHVk ZSA8eGVuL3R5cGVzYWZlLmg+CiAjaW5jbHVkZSA8cHVibGljL2h2bS9pb3JlcS5oPgogI2luY2x1 ZGUgPHB1YmxpYy9kb21jdGwuaD4KICNpbmNsdWRlIDxhc20vZGV2aWNlLmg+CiAjaW5jbHVkZSA8 YXNtL2lvbW11Lmg+CiAKK1RZUEVfU0FGRSh1aW50NjRfdCwgYmZuKTsKKyNkZWZpbmUgUFJJX2Jm biAgICAgUFJJeDY0CisjZGVmaW5lIElOVkFMSURfQkZOIF9iZm4ofjBVTCkKKworI2lmbmRlZiBi Zm5fdAorI2RlZmluZSBiZm5fdCAvKiBHcmVwIGZvZGRlcjogYmZuX3QsIF9iZm4oKSBhbmQgYmZu X3goKSBhcmUgZGVmaW5lZCBhYm92ZSAqLworI2RlZmluZSBfYmZuCisjZGVmaW5lIGJmbl94Cisj dW5kZWYgYmZuX3QKKyN1bmRlZiBfYmZuCisjdW5kZWYgYmZuX3gKKyNlbmRpZgorCisjZGVmaW5l IElPTU1VX1BBR0VfU0hJRlQgMTIKKyNkZWZpbmUgSU9NTVVfUEFHRV9TSVpFICAoX0FDKDEsTCkg PDwgSU9NTVVfUEFHRV9TSElGVCkKKyNkZWZpbmUgSU9NTVVfUEFHRV9NQVNLICAofihJT01NVV9Q QUdFX1NJWkUgLSAxKSkKKwordHlwZWRlZiB1aW50NjRfdCBiYWRkcl90OworCisjZGVmaW5lIF9f YmZuX3RvX2JhZGRyKGJmbikgKChiYWRkcl90KShiZm4pIDw8IElPTU1VX1BBR0VfU0hJRlQpCisj ZGVmaW5lIF9fYmFkZHJfdG9fYmZuKGJhZGRyKSAoKHVpbnQ2NF90KShiYWRkciA+PiBJT01NVV9Q QUdFX1NISUZUKSkKKworI2RlZmluZSBiZm5fdG9fYmFkZHIoYmZuKSBfX2Jmbl90b19iYWRkcihi Zm5feChiZm4pKQorI2RlZmluZSBiYWRkcl90b19iZm4oYmFkZHIpIF9iZm4oX19iYWRkcl90b19i Zm4oYmFkZHIpKQorCiBleHRlcm4gYm9vbF90IGlvbW11X2VuYWJsZSwgaW9tbXVfZW5hYmxlZDsK IGV4dGVybiBib29sX3QgZm9yY2VfaW9tbXUsIGlvbW11X2RvbTBfc3RyaWN0LCBpb21tdV92ZXJi b3NlOwogZXh0ZXJuIGJvb2xfdCBpb21tdV93b3JrYXJvdW5kX2Jpb3NfYnVnLCBpb21tdV9pZ2Z4 LCBpb21tdV9wYXNzdGhyb3VnaDsKQEAgLTYwLDkgKzg2LDkgQEAgdm9pZCBpb21tdV90ZWFyZG93 bihzdHJ1Y3QgZG9tYWluICpkKTsKICNkZWZpbmUgSU9NTVVGX3JlYWRhYmxlICAoMXU8PF9JT01N VUZfcmVhZGFibGUpCiAjZGVmaW5lIF9JT01NVUZfd3JpdGFibGUgMQogI2RlZmluZSBJT01NVUZf d3JpdGFibGUgICgxdTw8X0lPTU1VRl93cml0YWJsZSkKLWludCBfX211c3RfY2hlY2sgaW9tbXVf bWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCitpbnQgX19tdXN0 X2NoZWNrIGlvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgYmZu LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiwgdW5z aWduZWQgaW50IGZsYWdzKTsKLWludCBfX211c3RfY2hlY2sgaW9tbXVfdW5tYXBfcGFnZShzdHJ1 Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbik7CitpbnQgX19tdXN0X2NoZWNrIGlvbW11 X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBiZm4pOwogCiBlbnVt IGlvbW11X2ZlYXR1cmUKIHsKQEAgLTE1Miw5ICsxNzgsOSBAQCBzdHJ1Y3QgaW9tbXVfb3BzIHsK ICNlbmRpZiAvKiBIQVNfUENJICovCiAKICAgICB2b2lkICgqdGVhcmRvd24pKHN0cnVjdCBkb21h aW4gKmQpOwotICAgIGludCBfX211c3RfY2hlY2sgKCptYXBfcGFnZSkoc3RydWN0IGRvbWFpbiAq ZCwgdW5zaWduZWQgbG9uZyBnZm4sCisgICAgaW50IF9fbXVzdF9jaGVjayAoKm1hcF9wYWdlKShz dHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGJmbiwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwotICAg IGludCBfX211c3RfY2hlY2sgKCp1bm1hcF9wYWdlKShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25l ZCBsb25nIGdmbik7CisgICAgaW50IF9fbXVzdF9jaGVjayAoKnVubWFwX3BhZ2UpKHN0cnVjdCBk b21haW4gKmQsIHVuc2lnbmVkIGxvbmcgYmZuKTsKICAgICB2b2lkICgqZnJlZV9wYWdlX3RhYmxl KShzdHJ1Y3QgcGFnZV9pbmZvICopOwogI2lmZGVmIENPTkZJR19YODYKICAgICB2b2lkICgqdXBk YXRlX2lyZV9mcm9tX2FwaWMpKHVuc2lnbmVkIGludCBhcGljLCB1bnNpZ25lZCBpbnQgcmVnLCB1 bnNpZ25lZCBpbnQgdmFsdWUpOwpAQCAtMTY1LDcgKzE5MSw3IEBAIHN0cnVjdCBpb21tdV9vcHMg ewogICAgIHZvaWQgKCpyZXN1bWUpKHZvaWQpOwogICAgIHZvaWQgKCpzaGFyZV9wMm0pKHN0cnVj dCBkb21haW4gKmQpOwogICAgIHZvaWQgKCpjcmFzaF9zaHV0ZG93bikodm9pZCk7Ci0gICAgaW50 IF9fbXVzdF9jaGVjayAoKmlvdGxiX2ZsdXNoKShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBs b25nIGdmbiwKKyAgICBpbnQgX19tdXN0X2NoZWNrICgqaW90bGJfZmx1c2gpKHN0cnVjdCBkb21h aW4gKmQsIHVuc2lnbmVkIGxvbmcgYmZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgaW50IHBhZ2VfY291bnQpOwogICAgIGludCBfX211c3RfY2hlY2sgKCpp b3RsYl9mbHVzaF9hbGwpKHN0cnVjdCBkb21haW4gKmQpOwogICAgIGludCAoKmdldF9yZXNlcnZl ZF9kZXZpY2VfbWVtb3J5KShpb21tdV9ncmRtX3QgKiwgdm9pZCAqKTsKQEAgLTE4Nyw3ICsyMTMs NyBAQCBpbnQgaW9tbXVfZG9fcGNpX2RvbWN0bChzdHJ1Y3QgeGVuX2RvbWN0bCAqLCBzdHJ1Y3Qg ZG9tYWluICpkLAogaW50IGlvbW11X2RvX2RvbWN0bChzdHJ1Y3QgeGVuX2RvbWN0bCAqLCBzdHJ1 Y3QgZG9tYWluICpkLAogICAgICAgICAgICAgICAgICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFN KHhlbl9kb21jdGxfdCkpOwogCi1pbnQgX19tdXN0X2NoZWNrIGlvbW11X2lvdGxiX2ZsdXNoKHN0 cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLAoraW50IF9fbXVzdF9jaGVjayBpb21t dV9pb3RsYl9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGJmbiwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBhZ2VfY291bnQpOwog aW50IF9fbXVzdF9jaGVjayBpb21tdV9pb3RsYl9mbHVzaF9hbGwoc3RydWN0IGRvbWFpbiAqZCk7 CiAKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9tbS5oIGIveGVuL2luY2x1ZGUveGVuL21t LmgKaW5kZXggZTkyODU1MWM5MS4uZTAzODdmZjE3NSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUv eGVuL21tLmgKKysrIGIveGVuL2luY2x1ZGUveGVuL21tLmgKQEAgLTE0LDggKzE0LDkgQEAKICAq IHNob3VsZCBiZSBhZGhlcmVkIHRvLgogICoKICAqIG1mbjogTWFjaGluZSBGcmFtZSBOdW1iZXIK LSAqICAgVGhlIHZhbHVlcyBYZW4gcHV0cyBpbnRvIGl0cyBvd24gcGFnZXRhYmxlcy4gIFRoaXMg aXMgdGhlIGhvc3QgcGh5c2ljYWwKLSAqICAgbWVtb3J5IGFkZHJlc3Mgc3BhY2Ugd2l0aCBSQU0s IE1NSU8gZXRjLgorICogICBUaGUgdmFsdWVzIFhlbiBwdXRzIGludG8gaXRzIG93biBwYWdldGFi bGVzLCAybmQgc3RhZ2UgcGFnZXRhYmxlcyAod2hlcmUKKyAqICAgaGFyZHdhcmUgYXNzaXN0ZWQg Mm5kIHN0YWdlIHRyYW5zbGF0aW9uIGlzIHVzZWQpIG9yIElPTU1VIHBhZ2UgdGFibGVzLgorICog ICBUaGlzIGlzIHRoZSBob3N0IHBoeXNpY2FsIG1lbW9yeSBhZGRyZXNzIHNwYWNlIHdpdGggUkFN LCBNTUlPIGV0Yy4KICAqCiAgKiBnZm46IEd1ZXN0IEZyYW1lIE51bWJlcgogICogICBUaGUgdmFs dWVzIGEgZ3Vlc3QgcHV0cyBpbiBpdHMgb3duIHBhZ2V0YWJsZXMuICBGb3IgYW4gYXV0by10cmFu c2xhdGVkCkBAIC0yNiw2ICsyNywxMSBAQAogICogICBBIGxpbmVhciBpZGVhIG9mIGEgZ3Vlc3Qg cGh5c2ljYWwgYWRkcmVzcyBzcGFjZS4gRm9yIGFuIGF1dG8tdHJhbnNsYXRlZAogICogICBndWVz dCwgcGZuID09IGdmbiB3aGlsZSBmb3IgYSBub24tdHJhbnNsYXRlZCBndWVzdCwgcGZuICE9IGdm bi4KICAqCisgKiBiZm46IEJ1cyBGcmFtZSBOdW1iZXIgKGRlZmluaXRpb25zIGluIGluY2x1ZGUv eGVuL2lvbW11LmgpCisgKiAgIFRoZSBsaW5lYXIgZnJhbWUgbnVtYmVycyBvZiBJT01NVSBhZGRy ZXNzIHNwYWNlLiBBbGwgaW5pdGlhdG9ycyBmb3IgYQorICogICBnaXZlbiBkb21haW4gc2hhcmUg YSBzaW5nbGUgSU9NTVUgYWRkcmVzcyBzcGFjZSBhbmQsIGJ5IGRlZmF1bHQsIFhlbiB3aWxsCisg KiAgIGVuc3VyZSBiZm4gPT0gcGZuLgorICoKICAqIFdBUk5JTkc6IFNvbWUgb2YgdGhlc2UgdGVy bXMgaGF2ZSBjaGFuZ2VkIG92ZXIgdGltZSB3aGlsZSBvdGhlcnMgaGF2ZSBiZWVuCiAgKiB1c2Vk IGluY29uc2lzdGVudGx5LCBtZWFuaW5nIHRoYXQgYSBsb3Qgb2YgZXhpc3RpbmcgY29kZSBkb2Vz IG5vdCBtYXRjaCB0aGUKICAqIGRlZmluaXRpb25zIGFib3ZlLiAgTmV3IGNvZGUgc2hvdWxkIHVz ZSB0aGVzZSB0ZXJtcyBhcyBkZXNjcmliZWQgaGVyZSwgYW5kCi0tIAoyLjExLjAKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGlu ZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnBy b2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs