From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v8 1/7] iommu: introduce the concept of DFN... Date: Thu, 13 Sep 2018 11:31:46 +0100 Message-ID: <20180913103153.33377-2-paul.durrant@citrix.com> References: <20180913103153.33377-1-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1g0Ouq-0007jZ-VG for xen-devel@lists.xenproject.org; Thu, 13 Sep 2018 10:32:05 +0000 In-Reply-To: <20180913103153.33377-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 , Wei Liu , Suravee Suthikulpanit , Julien Grall , Paul Durrant , Jan Beulich List-Id: xen-devel@lists.xenproject.org Li4ubWVhbmluZyAnZGV2aWNlIERNQSBmcmFtZSBudW1iZXInIGkuZS4gYSBmcmFtZSBudW1iZXIg bWFwcGVkIGluIHRoZSBJT01NVQoocmF0aGVyIHRoYW4gdGhlIE1NVSkgYW5kIGhlbmNlIHVzZWQg Zm9yIERNQSBhZGRyZXNzIHRyYW5zbGF0aW9uLgoKVGhpcyBwYXRjaCBpcyBhIGxhcmdlbHkgY29z bWV0aWMgY2hhbmdlIHRoYXQgc3Vic3RpdHV0ZXMgdGhlIHRlcm1zICdnZm4nCmFuZCAnZ2FkZHIn IGZvciAnZGZuJyBhbmQgJ2RhZGRyJyBpbiBhbGwgdGhlIHBsYWNlcyB3aGVyZSB0aGUgZnJhbWUg bnVtYmVyCm9yIGFkZHJlc3MgcmVsYXRlIHRvIGEgZGV2aWNlIHJhdGhlciB0aGFuIHRoZSBDUFUu CgpUaGUgcGFydHMgdGhhdCBhcmUgbm90IHB1cmVseSBjb3NtZXRpYyBhcmU6CgogLSB0aGUgaW50 cm9kdWN0aW9uIG9mIGEgdHlwZS1zYWZlIGRlY2xhcmF0aW9uIG9mIGRmbl90IGFuZCBkZWZpbml0 aW9uIG9mCiAgIElOVkFMSURfREZOIHRvIG1ha2UgdGhlIHN1YnN0aXR1dGlvbiBvZiBnZm5feChJ TlZBTElEX0dGTikgbWVjaGFuaWNhbC4KIC0gdGhlIGludHJvZHVjdGlvbiBvZiBfX2Rmbl90b19k YWRkciBhbmQgX19kYWRkcl90b19kZm4gKGFuZCB0eXBlLXNhZmUKICAgdmFyaWFudHMgd2l0aG91 dCB0aGUgbGVhZGluZyBfXykgd2l0aCBzb21lIHVzZSBvZiB0aGUgZm9ybWVyLgoKU3Vic2VxdWVu dCBwYXRjaGVzIHdpbGwgY29udmVydCBjb2RlIHRvIG1ha2UgdXNlIG9mIHR5cGUtc2FmZSBERk5z LgoKU2lnbmVkLW9mZi1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4K LS0tCkNjOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgpDYzogU3VyYXZlZSBTdXRoaWt1 bHBhbml0IDxzdXJhdmVlLnN1dGhpa3VscGFuaXRAYW1kLmNvbT4KQ2M6IFN0ZWZhbm8gU3RhYmVs bGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KQ2M6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdy YWxsQGFybS5jb20+CkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBLZXZp biBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4KCnY4OgogLSBDb3JyZWN0IGRlZmluaXRpb24g b2YgSU5WQUxJRF9ERk4uCiAtIERvbid0IHVzZSBfQUMgaW4gZGVmaW5pdGlvbiBvZiBJT01NVV9Q QUdFX1NJWkUuCgp2NzoKIC0gUmUtbmFtZSBCRk4gLT4gREZOIGFzIHJlcXVlc3RlZCBieSBKYW4u CiAtIERyb3BwZWQgV2VpJ3MgUi1iIGJlY2F1c2Ugb2YgbmFtZSBjaGFuZ2UuCgp2NjoKIC0gRHJv cHBlZCBjaGFuZ2VzIHRvICdtZm4nIHNlY3Rpb24gaW4geGVuL21tLmggYXMgc3VnZ2VzdGVkIGJ5 IEtldmluLgoKdjM6CiAtIEdldCByaWQgb2YgaW50ZXJtZWRpYXRlICdmcmFtZScgdmFyaWFibGVz IGFnYWluLgoKdjI6CiAtIEFkZHJlc3NlZCBjb21tZW50cyBmcm9tIEphbi4KLS0tCiB4ZW4vZHJp dmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfY21kLmMgICAgIHwgMTggKysrLS0tLQogeGVuL2Ry aXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X21hcC5jICAgICB8IDc4ICsrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvcGNpX2FtZF9pb21t dS5jIHwgIDIgKy0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMgICAgICAgICAg fCAxNiArKystLS0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMgICAgICAgICAgICAg fCAyOCArKysrKy0tLS0tLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMgICAg ICAgICB8IDMwICsrKysrLS0tLS0tCiB4ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaCAgICAgICAgICAg ICAgICAgICAgIHwgMzggKysrKysrKysrKystLS0KIHhlbi9pbmNsdWRlL3hlbi9tbS5oICAgICAg ICAgICAgICAgICAgICAgICAgfCAgNSArKwogOCBmaWxlcyBjaGFuZ2VkLCAxMjMgaW5zZXJ0aW9u cygrKSwgOTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91 Z2gvYW1kL2lvbW11X2NtZC5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X2Nt ZC5jCmluZGV4IDA4MjQ3ZmEzNTQuLmQ0ZDA3MWU1M2UgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9jbWQuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC9hbWQvaW9tbXVfY21kLmMKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIGludmFsaWRhdGVfaW9t bXVfYWxsKHN0cnVjdCBhbWRfaW9tbXUgKmlvbW11KQogfQogCiB2b2lkIGFtZF9pb21tdV9mbHVz aF9pb3RsYih1OCBkZXZmbiwgY29uc3Qgc3RydWN0IHBjaV9kZXYgKnBkZXYsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50NjRfdCBnYWRkciwgdW5zaWduZWQgaW50IG9yZGVyKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGFkZHJfdCBkYWRkciwgdW5zaWduZWQgaW50IG9yZGVy KQogewogICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgc3RydWN0IGFtZF9pb21tdSAqaW9t bXU7CkBAIC0zMTUsMTIgKzMxNSwxMiBAQCB2b2lkIGFtZF9pb21tdV9mbHVzaF9pb3RsYih1OCBk ZXZmbiwgY29uc3Qgc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAKICAgICAvKiBzZW5kIElOVkFMSURB VEVfSU9UTEJfUEFHRVMgY29tbWFuZCAqLwogICAgIHNwaW5fbG9ja19pcnFzYXZlKCZpb21tdS0+ bG9jaywgZmxhZ3MpOwotICAgIGludmFsaWRhdGVfaW90bGJfcGFnZXMoaW9tbXUsIG1heHBlbmQs IDAsIHF1ZXVlaWQsIGdhZGRyLCByZXFfaWQsIG9yZGVyKTsKKyAgICBpbnZhbGlkYXRlX2lvdGxi X3BhZ2VzKGlvbW11LCBtYXhwZW5kLCAwLCBxdWV1ZWlkLCBkYWRkciwgcmVxX2lkLCBvcmRlcik7 CiAgICAgZmx1c2hfY29tbWFuZF9idWZmZXIoaW9tbXUpOwogICAgIHNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJmlvbW11LT5sb2NrLCBmbGFncyk7CiB9CiAKLXN0YXRpYyB2b2lkIGFtZF9pb21tdV9m bHVzaF9hbGxfaW90bGJzKHN0cnVjdCBkb21haW4gKmQsIHVpbnQ2NF90IGdhZGRyLAorc3RhdGlj IHZvaWQgYW1kX2lvbW11X2ZsdXNoX2FsbF9pb3RsYnMoc3RydWN0IGRvbWFpbiAqZCwgZGFkZHJf dCBkYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBvcmRlcikKIHsKICAgICBzdHJ1Y3QgcGNpX2RldiAqcGRldjsKQEAgLTMzMyw3ICszMzMs NyBAQCBzdGF0aWMgdm9pZCBhbWRfaW9tbXVfZmx1c2hfYWxsX2lvdGxicyhzdHJ1Y3QgZG9tYWlu ICpkLCB1aW50NjRfdCBnYWRkciwKICAgICAgICAgdTggZGV2Zm4gPSBwZGV2LT5kZXZmbjsKIAog ICAgICAgICBkbyB7Ci0gICAgICAgICAgICBhbWRfaW9tbXVfZmx1c2hfaW90bGIoZGV2Zm4sIHBk ZXYsIGdhZGRyLCBvcmRlcik7CisgICAgICAgICAgICBhbWRfaW9tbXVfZmx1c2hfaW90bGIoZGV2 Zm4sIHBkZXYsIGRhZGRyLCBvcmRlcik7CiAgICAgICAgICAgICBkZXZmbiArPSBwZGV2LT5waGFu dG9tX3N0cmlkZTsKICAgICAgICAgfSB3aGlsZSAoIGRldmZuICE9IHBkZXYtPmRldmZuICYmCiAg ICAgICAgICAgICAgICAgICBQQ0lfU0xPVChkZXZmbikgPT0gUENJX1NMT1QocGRldi0+ZGV2Zm4p ICk7CkBAIC0zNDIsNyArMzQyLDcgQEAgc3RhdGljIHZvaWQgYW1kX2lvbW11X2ZsdXNoX2FsbF9p b3RsYnMoc3RydWN0IGRvbWFpbiAqZCwgdWludDY0X3QgZ2FkZHIsCiAKIC8qIEZsdXNoIGlvbW11 IGNhY2hlIGFmdGVyIHAybSBjaGFuZ2VzLiAqLwogc3RhdGljIHZvaWQgX2FtZF9pb21tdV9mbHVz aF9wYWdlcyhzdHJ1Y3QgZG9tYWluICpkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50NjRfdCBnYWRkciwgdW5zaWduZWQgaW50IG9yZGVyKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkYWRkcl90IGRhZGRyLCB1bnNpZ25lZCBpbnQgb3JkZXIpCiB7 CiAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICBzdHJ1Y3QgYW1kX2lvbW11ICppb21tdTsK QEAgLTM1MiwxMyArMzUyLDEzIEBAIHN0YXRpYyB2b2lkIF9hbWRfaW9tbXVfZmx1c2hfcGFnZXMo c3RydWN0IGRvbWFpbiAqZCwKICAgICBmb3JfZWFjaF9hbWRfaW9tbXUgKCBpb21tdSApCiAgICAg ewogICAgICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmaW9tbXUtPmxvY2ssIGZsYWdzKTsKLSAgICAg ICAgaW52YWxpZGF0ZV9pb21tdV9wYWdlcyhpb21tdSwgZ2FkZHIsIGRvbV9pZCwgb3JkZXIpOwor ICAgICAgICBpbnZhbGlkYXRlX2lvbW11X3BhZ2VzKGlvbW11LCBkYWRkciwgZG9tX2lkLCBvcmRl cik7CiAgICAgICAgIGZsdXNoX2NvbW1hbmRfYnVmZmVyKGlvbW11KTsKICAgICAgICAgc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmaW9tbXUtPmxvY2ssIGZsYWdzKTsKICAgICB9CiAKICAgICBpZiAo IGF0c19lbmFibGVkICkKLSAgICAgICAgYW1kX2lvbW11X2ZsdXNoX2FsbF9pb3RsYnMoZCwgZ2Fk ZHIsIG9yZGVyKTsKKyAgICAgICAgYW1kX2lvbW11X2ZsdXNoX2FsbF9pb3RsYnMoZCwgZGFkZHIs IG9yZGVyKTsKIH0KIAogdm9pZCBhbWRfaW9tbXVfZmx1c2hfYWxsX3BhZ2VzKHN0cnVjdCBkb21h aW4gKmQpCkBAIC0zNjcsOSArMzY3LDkgQEAgdm9pZCBhbWRfaW9tbXVfZmx1c2hfYWxsX3BhZ2Vz KHN0cnVjdCBkb21haW4gKmQpCiB9CiAKIHZvaWQgYW1kX2lvbW11X2ZsdXNoX3BhZ2VzKHN0cnVj dCBkb21haW4gKmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdm biwgdW5zaWduZWQgaW50IG9yZGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgbG9uZyBkZm4sIHVuc2lnbmVkIGludCBvcmRlcikKIHsKLSAgICBfYW1kX2lvbW11X2ZsdXNo X3BhZ2VzKGQsICh1aW50NjRfdCkgZ2ZuIDw8IFBBR0VfU0hJRlQsIG9yZGVyKTsKKyAgICBfYW1k X2lvbW11X2ZsdXNoX3BhZ2VzKGQsIF9fZGZuX3RvX2RhZGRyKGRmbiksIG9yZGVyKTsKIH0KIAog dm9pZCBhbWRfaW9tbXVfZmx1c2hfZGV2aWNlKHN0cnVjdCBhbWRfaW9tbXUgKmlvbW11LCB1aW50 MTZfdCBiZGYpCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVf bWFwLmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfbWFwLmMKaW5kZXggNzBi NDM0NWIzNy4uNjFhZGU3MTg1MCAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv YW1kL2lvbW11X21hcC5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9t YXAuYwpAQCAtMzUsMTIgKzM1LDEyIEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgcGZuX3RvX3BkZV9p ZHgodW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGludCBsZXZlbCkKICAgICByZXR1cm4gaWR4 OwogfQogCi12b2lkIGNsZWFyX2lvbW11X3B0ZV9wcmVzZW50KHVuc2lnbmVkIGxvbmcgbDFfbWZu LCB1bnNpZ25lZCBsb25nIGdmbikKK3ZvaWQgY2xlYXJfaW9tbXVfcHRlX3ByZXNlbnQodW5zaWdu ZWQgbG9uZyBsMV9tZm4sIHVuc2lnbmVkIGxvbmcgZGZuKQogewogICAgIHU2NCAqdGFibGUsICpw dGU7CiAKICAgICB0YWJsZSA9IG1hcF9kb21haW5fcGFnZShfbWZuKGwxX21mbikpOwotICAgIHB0 ZSA9IHRhYmxlICsgcGZuX3RvX3BkZV9pZHgoZ2ZuLCBJT01NVV9QQUdJTkdfTU9ERV9MRVZFTF8x KTsKKyAgICBwdGUgPSB0YWJsZSArIHBmbl90b19wZGVfaWR4KGRmbiwgSU9NTVVfUEFHSU5HX01P REVfTEVWRUxfMSk7CiAgICAgKnB0ZSA9IDA7CiAgICAgdW5tYXBfZG9tYWluX3BhZ2UodGFibGUp OwogfQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBib29sX3Qgc2V0X2lvbW11X3BkZV9wcmVz ZW50KHUzMiAqcGRlLCB1bnNpZ25lZCBsb25nIG5leHRfbWZuLAogICAgIHJldHVybiBuZWVkX2Zs dXNoOwogfQogCi1zdGF0aWMgYm9vbF90IHNldF9pb21tdV9wdGVfcHJlc2VudCh1bnNpZ25lZCBs b25nIHB0X21mbiwgdW5zaWduZWQgbG9uZyBnZm4sIAorc3RhdGljIGJvb2xfdCBzZXRfaW9tbXVf cHRlX3ByZXNlbnQodW5zaWduZWQgbG9uZyBwdF9tZm4sIHVuc2lnbmVkIGxvbmcgZGZuLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBuZXh0X21mbiwg aW50IHBkZV9sZXZlbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s X3QgaXcsIGJvb2xfdCBpcikKIHsKQEAgLTExNCw3ICsxMTQsNyBAQCBzdGF0aWMgYm9vbF90IHNl dF9pb21tdV9wdGVfcHJlc2VudCh1bnNpZ25lZCBsb25nIHB0X21mbiwgdW5zaWduZWQgbG9uZyBn Zm4sCiAKICAgICB0YWJsZSA9IG1hcF9kb21haW5fcGFnZShfbWZuKHB0X21mbikpOwogCi0gICAg cGRlID0gKHUzMiopKHRhYmxlICsgcGZuX3RvX3BkZV9pZHgoZ2ZuLCBwZGVfbGV2ZWwpKTsKKyAg ICBwZGUgPSAodTMyKikodGFibGUgKyBwZm5fdG9fcGRlX2lkeChkZm4sIHBkZV9sZXZlbCkpOwog CiAgICAgbmVlZF9mbHVzaCA9IHNldF9pb21tdV9wZGVfcHJlc2VudChwZGUsIG5leHRfbWZuLCAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPTU1VX1BBR0lOR19NT0RF X0xFVkVMXzAsIGl3LCBpcik7CkBAIC0zMzEsNyArMzMxLDcgQEAgc3RhdGljIHZvaWQgc2V0X3Bk ZV9jb3VudCh1NjQgKnBkZSwgdW5zaWduZWQgaW50IGNvdW50KQogICogb3RoZXJ3aXNlIGluY3Jl YXNlIHBkZSBjb3VudCBpZiBtZm4gaXMgY29udGlnb3VzIHdpdGggbWZuIC0gMQogICovCiBzdGF0 aWMgaW50IGlvbW11X3VwZGF0ZV9wZGVfY291bnQoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQg bG9uZyBwdF9tZm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg bG9uZyBnZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgZGZuLCB1bnNpZ25lZCBsb25nIG1mbiwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWVyZ2VfbGV2ZWwpCiB7CiAgICAg dW5zaWduZWQgaW50IHBkZV9jb3VudCwgbmV4dF9sZXZlbDsKQEAgLTM0Nyw3ICszNDcsNyBAQCBz dGF0aWMgaW50IGlvbW11X3VwZGF0ZV9wZGVfY291bnQoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWdu ZWQgbG9uZyBwdF9tZm4sCiAKICAgICAvKiBnZXQgcGRlIGF0IG1lcmdlIGxldmVsICovCiAgICAg dGFibGUgPSBtYXBfZG9tYWluX3BhZ2UoX21mbihwdF9tZm4pKTsKLSAgICBwZGUgPSB0YWJsZSAr IHBmbl90b19wZGVfaWR4KGdmbiwgbWVyZ2VfbGV2ZWwpOworICAgIHBkZSA9IHRhYmxlICsgcGZu X3RvX3BkZV9pZHgoZGZuLCBtZXJnZV9sZXZlbCk7CiAKICAgICAvKiBnZXQgcGFnZSB0YWJsZSBv ZiBuZXh0IGxldmVsICovCiAgICAgbnRhYmxlX21hZGRyID0gYW1kX2lvbW11X2dldF9uZXh0X3Rh YmxlX2Zyb21fcHRlKCh1MzIqKXBkZSk7CkBAIC0zNjIsNyArMzYyLDcgQEAgc3RhdGljIGludCBp b21tdV91cGRhdGVfcGRlX2NvdW50KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgcHRf bWZuLAogICAgIG1hc2sgPSAoMVVMTDw8IChQVEVfUEVSX1RBQkxFX1NISUZUICogbmV4dF9sZXZl bCkpIC0gMTsKIAogICAgIGlmICggKChmaXJzdF9tZm4gJiBtYXNrKSA9PSAwKSAmJgotICAgICAg ICAgKCgoZ2ZuICYgbWFzaykgfCBmaXJzdF9tZm4pID09IG1mbikgKQorICAgICAgICAgKCgoZGZu ICYgbWFzaykgfCBmaXJzdF9tZm4pID09IG1mbikgKQogICAgIHsKICAgICAgICAgcGRlX2NvdW50 ID0gZ2V0X3BkZV9jb3VudCgqcGRlKTsKIApAQCAtMzg3LDcgKzM4Nyw3IEBAIG91dDoKIH0KIAog c3RhdGljIGludCBpb21tdV9tZXJnZV9wYWdlcyhzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBs b25nIHB0X21mbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBn Zm4sIHVuc2lnbmVkIGludCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgbG9uZyBkZm4sIHVuc2lnbmVkIGludCBmbGFncywKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IG1lcmdlX2xldmVsKQogewogICAgIHU2NCAqdGFibGUsICpw ZGUsICpudGFibGU7CkBAIC0zOTgsNyArMzk4LDcgQEAgc3RhdGljIGludCBpb21tdV9tZXJnZV9w YWdlcyhzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIHB0X21mbiwKICAgICBBU1NFUlQo IHNwaW5faXNfbG9ja2VkKCZoZC0+YXJjaC5tYXBwaW5nX2xvY2spICYmIHB0X21mbiApOwogCiAg ICAgdGFibGUgPSBtYXBfZG9tYWluX3BhZ2UoX21mbihwdF9tZm4pKTsKLSAgICBwZGUgPSB0YWJs ZSArIHBmbl90b19wZGVfaWR4KGdmbiwgbWVyZ2VfbGV2ZWwpOworICAgIHBkZSA9IHRhYmxlICsg cGZuX3RvX3BkZV9pZHgoZGZuLCBtZXJnZV9sZXZlbCk7CiAKICAgICAvKiBnZXQgZmlyc3QgbWZu ICovCiAgICAgbnRhYmxlX21mbiA9IGFtZF9pb21tdV9nZXRfbmV4dF90YWJsZV9mcm9tX3B0ZSgo dTMyKilwZGUpID4+IFBBR0VfU0hJRlQ7CkBAIC00MzYsNyArNDM2LDcgQEAgc3RhdGljIGludCBp b21tdV9tZXJnZV9wYWdlcyhzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIHB0X21mbiwK ICAqIHtSZSwgdW59bWFwcGluZyBzdXBlciBwYWdlIGZyYW1lcyBjYXVzZXMgcmUtYWxsb2NhdGlv biBvZiBpbwogICogcGFnZSB0YWJsZXMuCiAgKi8KLXN0YXRpYyBpbnQgaW9tbXVfcGRlX2Zyb21f Z2ZuKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgcGZuLCAKK3N0YXRpYyBpbnQgaW9t bXVfcGRlX2Zyb21fZGZuKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZGZuLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwdF9tZm5bXSkKIHsKICAg ICB1NjQgKnBkZSwgKm5leHRfdGFibGVfdmFkZHI7CkBAIC00NjUsNyArNDY1LDcgQEAgc3RhdGlj IGludCBpb21tdV9wZGVfZnJvbV9nZm4oc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBw Zm4sCiAgICAgICAgIHB0X21mbltsZXZlbF0gPSBuZXh0X3RhYmxlX21mbjsKIAogICAgICAgICBu ZXh0X3RhYmxlX3ZhZGRyID0gbWFwX2RvbWFpbl9wYWdlKF9tZm4obmV4dF90YWJsZV9tZm4pKTsK LSAgICAgICAgcGRlID0gbmV4dF90YWJsZV92YWRkciArIHBmbl90b19wZGVfaWR4KHBmbiwgbGV2 ZWwpOworICAgICAgICBwZGUgPSBuZXh0X3RhYmxlX3ZhZGRyICsgcGZuX3RvX3BkZV9pZHgoZGZu LCBsZXZlbCk7CiAKICAgICAgICAgLyogSGVyZSBtaWdodCBiZSBhIHN1cGVyIHBhZ2UgZnJhbWUg Ki8KICAgICAgICAgbmV4dF90YWJsZV9tZm4gPSBhbWRfaW9tbXVfZ2V0X25leHRfdGFibGVfZnJv bV9wdGUoKHVpbnQzMl90KilwZGUpIApAQCAtNDc3LDExICs0NzcsMTEgQEAgc3RhdGljIGludCBp b21tdV9wZGVfZnJvbV9nZm4oc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBwZm4sCiAg ICAgICAgICAgICAgbmV4dF90YWJsZV9tZm4gIT0gMCApCiAgICAgICAgIHsKICAgICAgICAgICAg IGludCBpOwotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4sIGdmbjsKKyAgICAgICAgICAg IHVuc2lnbmVkIGxvbmcgbWZuLCBwZm47CiAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcGFnZV9z ejsKIAogICAgICAgICAgICAgcGFnZV9zeiA9IDEgPDwgKFBURV9QRVJfVEFCTEVfU0hJRlQgKiAo bmV4dF9sZXZlbCAtIDEpKTsKLSAgICAgICAgICAgIGdmbiA9ICBwZm4gJiB+KCgxIDw8IChQVEVf UEVSX1RBQkxFX1NISUZUICogbmV4dF9sZXZlbCkpIC0gMSk7CisgICAgICAgICAgICBwZm4gPSAg ZGZuICYgfigoMSA8PCAoUFRFX1BFUl9UQUJMRV9TSElGVCAqIG5leHRfbGV2ZWwpKSAtIDEpOwog ICAgICAgICAgICAgbWZuID0gbmV4dF90YWJsZV9tZm47CiAKICAgICAgICAgICAgIC8qIGFsbG9j YXRlIGxvd2VyIGxldmVsIHBhZ2UgdGFibGUgKi8KQEAgLTQ5OSwxMCArNDk5LDEwIEBAIHN0YXRp YyBpbnQgaW9tbXVfcGRlX2Zyb21fZ2ZuKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcg cGZuLAogCiAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IFBURV9QRVJfVEFCTEVfU0laRTsg aSsrICkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzZXRfaW9tbXVfcHRlX3ByZXNl bnQobmV4dF90YWJsZV9tZm4sIGdmbiwgbWZuLCBuZXh0X2xldmVsLAorICAgICAgICAgICAgICAg IHNldF9pb21tdV9wdGVfcHJlc2VudChuZXh0X3RhYmxlX21mbiwgcGZuLCBtZm4sIG5leHRfbGV2 ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhSU9NTVVGX3dyaXRh YmxlLCAhIUlPTU1VRl9yZWFkYWJsZSk7CiAgICAgICAgICAgICAgICAgbWZuICs9IHBhZ2Vfc3o7 Ci0gICAgICAgICAgICAgICAgZ2ZuICs9IHBhZ2Vfc3o7CisgICAgICAgICAgICAgICAgcGZuICs9 IHBhZ2Vfc3o7CiAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBhbWRfaW9tbXVfZmx1c2hf YWxsX3BhZ2VzKGQpOwpAQCAtNTQwLDcgKzU0MCw3IEBAIHN0YXRpYyBpbnQgaW9tbXVfcGRlX2Zy b21fZ2ZuKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgcGZuLAogICAgIHJldHVybiAw OwogfQogCi1zdGF0aWMgaW50IHVwZGF0ZV9wYWdpbmdfbW9kZShzdHJ1Y3QgZG9tYWluICpkLCB1 bnNpZ25lZCBsb25nIGdmbikKK3N0YXRpYyBpbnQgdXBkYXRlX3BhZ2luZ19tb2RlKHN0cnVjdCBk b21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZGZuKQogewogICAgIHUxNiBiZGY7CiAgICAgdm9pZCAq ZGV2aWNlX2VudHJ5OwpAQCAtNTU0LDEzICs1NTQsMTMgQEAgc3RhdGljIGludCB1cGRhdGVfcGFn aW5nX21vZGUoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4pCiAgICAgdW5zaWdu ZWQgbG9uZyBvbGRfcm9vdF9tZm47CiAgICAgc3RydWN0IGRvbWFpbl9pb21tdSAqaGQgPSBkb21f aW9tbXUoZCk7CiAKLSAgICBpZiAoIGdmbiA9PSBnZm5feChJTlZBTElEX0dGTikgKQorICAgIGlm ICggZGZuID09IGRmbl94KElOVkFMSURfREZOKSApCiAgICAgICAgIHJldHVybiAtRUFERFJOT1RB VkFJTDsKLSAgICBBU1NFUlQoIShnZm4gPj4gREVGQVVMVF9ET01BSU5fQUREUkVTU19XSURUSCkp OworICAgIEFTU0VSVCghKGRmbiA+PiBERUZBVUxUX0RPTUFJTl9BRERSRVNTX1dJRFRIKSk7CiAK ICAgICBsZXZlbCA9IGhkLT5hcmNoLnBhZ2luZ19tb2RlOwogICAgIG9sZF9yb290ID0gaGQtPmFy Y2gucm9vdF90YWJsZTsKLSAgICBvZmZzZXQgPSBnZm4gPj4gKFBURV9QRVJfVEFCTEVfU0hJRlQg KiAobGV2ZWwgLSAxKSk7CisgICAgb2Zmc2V0ID0gZGZuID4+IChQVEVfUEVSX1RBQkxFX1NISUZU ICogKGxldmVsIC0gMSkpOwogCiAgICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZoZC0+YXJjaC5t YXBwaW5nX2xvY2spICYmIGlzX2h2bV9kb21haW4oZCkpOwogCkBAIC02MzEsNyArNjMxLDcgQEAg c3RhdGljIGludCB1cGRhdGVfcGFnaW5nX21vZGUoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQg bG9uZyBnZm4pCiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBhbWRfaW9tbXVfbWFwX3BhZ2Uoc3Ry dWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAoraW50 IGFtZF9pb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGRmbiwg dW5zaWduZWQgbG9uZyBtZm4sCiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBm bGFncykKIHsKICAgICBib29sX3QgbmVlZF9mbHVzaCA9IDA7CkBAIC02NTEsMzQgKzY1MSwzNCBA QCBpbnQgYW1kX2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcg Z2ZuLCB1bnNpZ25lZCBsb25nIG1mbiwKICAgICBpZiAoIHJjICkKICAgICB7CiAgICAgICAgIHNw aW5fdW5sb2NrKCZoZC0+YXJjaC5tYXBwaW5nX2xvY2spOwotICAgICAgICBBTURfSU9NTVVfREVC VUcoIlJvb3QgdGFibGUgYWxsb2MgZmFpbGVkLCBnZm4gPSAlbHhcbiIsIGdmbik7CisgICAgICAg IEFNRF9JT01NVV9ERUJVRygiUm9vdCB0YWJsZSBhbGxvYyBmYWlsZWQsIGRmbiA9ICVseFxuIiwg ZGZuKTsKICAgICAgICAgZG9tYWluX2NyYXNoKGQpOwogICAgICAgICByZXR1cm4gcmM7CiAgICAg fQogCiAgICAgLyogU2luY2UgSFZNIGRvbWFpbiBpcyBpbml0aWFsaXplZCB3aXRoIDIgbGV2ZWwg SU8gcGFnZSB0YWJsZSwKLSAgICAgKiB3ZSBtaWdodCBuZWVkIGEgZGVlcGVyIHBhZ2UgdGFibGUg Zm9yIGxhZ2VyIGdmbiBub3cgKi8KKyAgICAgKiB3ZSBtaWdodCBuZWVkIGEgZGVlcGVyIHBhZ2Ug dGFibGUgZm9yIHdpZGVyIGRmbiBub3cgKi8KICAgICBpZiAoIGlzX2h2bV9kb21haW4oZCkgKQog ICAgIHsKLSAgICAgICAgaWYgKCB1cGRhdGVfcGFnaW5nX21vZGUoZCwgZ2ZuKSApCisgICAgICAg IGlmICggdXBkYXRlX3BhZ2luZ19tb2RlKGQsIGRmbikgKQogICAgICAgICB7CiAgICAgICAgICAg ICBzcGluX3VubG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsKLSAgICAgICAgICAgIEFNRF9J T01NVV9ERUJVRygiVXBkYXRlIHBhZ2UgbW9kZSBmYWlsZWQgZ2ZuID0gJWx4XG4iLCBnZm4pOwor ICAgICAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJVcGRhdGUgcGFnZSBtb2RlIGZhaWxlZCBkZm4g PSAlbHhcbiIsIGRmbik7CiAgICAgICAgICAgICBkb21haW5fY3Jhc2goZCk7CiAgICAgICAgICAg ICByZXR1cm4gLUVGQVVMVDsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICggaW9tbXVfcGRl X2Zyb21fZ2ZuKGQsIGdmbiwgcHRfbWZuKSB8fCAocHRfbWZuWzFdID09IDApICkKKyAgICBpZiAo IGlvbW11X3BkZV9mcm9tX2RmbihkLCBkZm4sIHB0X21mbikgfHwgKHB0X21mblsxXSA9PSAwKSAp CiAgICAgewogICAgICAgICBzcGluX3VubG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsKLSAg ICAgICAgQU1EX0lPTU1VX0RFQlVHKCJJbnZhbGlkIElPIHBhZ2V0YWJsZSBlbnRyeSBnZm4gPSAl bHhcbiIsIGdmbik7CisgICAgICAgIEFNRF9JT01NVV9ERUJVRygiSW52YWxpZCBJTyBwYWdldGFi bGUgZW50cnkgZGZuID0gJWx4XG4iLCBkZm4pOwogICAgICAgICBkb21haW5fY3Jhc2goZCk7CiAg ICAgICAgIHJldHVybiAtRUZBVUxUOwogICAgIH0KIAogICAgIC8qIEluc3RhbGwgNGsgbWFwcGlu ZyBmaXJzdCAqLwotICAgIG5lZWRfZmx1c2ggPSBzZXRfaW9tbXVfcHRlX3ByZXNlbnQocHRfbWZu WzFdLCBnZm4sIG1mbiwgCisgICAgbmVlZF9mbHVzaCA9IHNldF9pb21tdV9wdGVfcHJlc2VudChw dF9tZm5bMV0sIGRmbiwgbWZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgSU9NTVVfUEFHSU5HX01PREVfTEVWRUxfMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICEhKGZsYWdzICYgSU9NTVVGX3dyaXRhYmxlKSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICEhKGZsYWdzICYgSU9NTVVGX3JlYWRhYmxlKSk7CkBA IC02OTAsNyArNjkwLDcgQEAgaW50IGFtZF9pb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpk LCB1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQgbG9uZyBtZm4sCiAgICAgLyogNEsgbWFwcGlu ZyBmb3IgUFYgZ3Vlc3RzIG5ldmVyIGNoYW5nZXMsIAogICAgICAqIG5vIG5lZWQgdG8gZmx1c2gg aWYgd2UgdHJ1c3Qgbm9uLXByZXNlbnQgYml0cyAqLwogICAgIGlmICggaXNfaHZtX2RvbWFpbihk KSApCi0gICAgICAgIGFtZF9pb21tdV9mbHVzaF9wYWdlcyhkLCBnZm4sIDApOworICAgICAgICBh bWRfaW9tbXVfZmx1c2hfcGFnZXMoZCwgZGZuLCAwKTsKIAogICAgIGZvciAoIG1lcmdlX2xldmVs ID0gSU9NTVVfUEFHSU5HX01PREVfTEVWRUxfMjsKICAgICAgICAgICBtZXJnZV9sZXZlbCA8PSBo ZC0+YXJjaC5wYWdpbmdfbW9kZTsgbWVyZ2VfbGV2ZWwrKyApCkBAIC02OTgsMTUgKzY5OCwxNSBA QCBpbnQgYW1kX2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcg Z2ZuLCB1bnNpZ25lZCBsb25nIG1mbiwKICAgICAgICAgaWYgKCBwdF9tZm5bbWVyZ2VfbGV2ZWxd ID09IDAgKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmICggIWlvbW11X3VwZGF0ZV9w ZGVfY291bnQoZCwgcHRfbWZuW21lcmdlX2xldmVsXSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBnZm4sIG1mbiwgbWVyZ2VfbGV2ZWwpICkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkZm4sIG1mbiwgbWVyZ2VfbGV2ZWwpICkKICAgICAgICAgICAg IGJyZWFrOwogCi0gICAgICAgIGlmICggaW9tbXVfbWVyZ2VfcGFnZXMoZCwgcHRfbWZuW21lcmdl X2xldmVsXSwgZ2ZuLCAKKyAgICAgICAgaWYgKCBpb21tdV9tZXJnZV9wYWdlcyhkLCBwdF9tZm5b bWVyZ2VfbGV2ZWxdLCBkZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3Ms IG1lcmdlX2xldmVsKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZoZC0+ YXJjaC5tYXBwaW5nX2xvY2spOwogICAgICAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJNZXJnZSBp b21tdSBwYWdlIGZhaWxlZCBhdCBsZXZlbCAlZCwgIgotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJnZm4gPSAlbHggbWZuID0gJWx4XG4iLCBtZXJnZV9sZXZlbCwgZ2ZuLCBtZm4pOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJkZm4gPSAlbHggbWZuID0gJWx4XG4iLCBtZXJnZV9s ZXZlbCwgZGZuLCBtZm4pOwogICAgICAgICAgICAgZG9tYWluX2NyYXNoKGQpOwogICAgICAgICAg ICAgcmV0dXJuIC1FRkFVTFQ7CiAgICAgICAgIH0KQEAgLTcyMCw3ICs3MjAsNyBAQCBvdXQ6CiAg ICAgcmV0dXJuIDA7CiB9CiAKLWludCBhbWRfaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWlu ICpkLCB1bnNpZ25lZCBsb25nIGdmbikKK2ludCBhbWRfaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGRmbikKIHsKICAgICB1bnNpZ25lZCBsb25nIHB0X21m bls3XTsKICAgICBzdHJ1Y3QgZG9tYWluX2lvbW11ICpoZCA9IGRvbV9pb21tdShkKTsKQEAgLTcz OSwzNCArNzM5LDM0IEBAIGludCBhbWRfaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpk LCB1bnNpZ25lZCBsb25nIGdmbikKICAgICB9CiAKICAgICAvKiBTaW5jZSBIVk0gZG9tYWluIGlz IGluaXRpYWxpemVkIHdpdGggMiBsZXZlbCBJTyBwYWdlIHRhYmxlLAotICAgICAqIHdlIG1pZ2h0 IG5lZWQgYSBkZWVwZXIgcGFnZSB0YWJsZSBmb3IgbGFnZXIgZ2ZuIG5vdyAqLworICAgICAqIHdl IG1pZ2h0IG5lZWQgYSBkZWVwZXIgcGFnZSB0YWJsZSBmb3IgbGFnZXIgZGZuIG5vdyAqLwogICAg IGlmICggaXNfaHZtX2RvbWFpbihkKSApCiAgICAgewotICAgICAgICBpbnQgcmMgPSB1cGRhdGVf cGFnaW5nX21vZGUoZCwgZ2ZuKTsKKyAgICAgICAgaW50IHJjID0gdXBkYXRlX3BhZ2luZ19tb2Rl KGQsIGRmbik7CiAKICAgICAgICAgaWYgKCByYyApCiAgICAgICAgIHsKICAgICAgICAgICAgIHNw aW5fdW5sb2NrKCZoZC0+YXJjaC5tYXBwaW5nX2xvY2spOwotICAgICAgICAgICAgQU1EX0lPTU1V X0RFQlVHKCJVcGRhdGUgcGFnZSBtb2RlIGZhaWxlZCBnZm4gPSAlbHhcbiIsIGdmbik7CisgICAg ICAgICAgICBBTURfSU9NTVVfREVCVUcoIlVwZGF0ZSBwYWdlIG1vZGUgZmFpbGVkIGRmbiA9ICVs eFxuIiwgZGZuKTsKICAgICAgICAgICAgIGlmICggcmMgIT0gLUVBRERSTk9UQVZBSUwgKQogICAg ICAgICAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsKICAgICAgICAgICAgIHJldHVybiByYzsKICAg ICAgICAgfQogICAgIH0KIAotICAgIGlmICggaW9tbXVfcGRlX2Zyb21fZ2ZuKGQsIGdmbiwgcHRf bWZuKSB8fCAocHRfbWZuWzFdID09IDApICkKKyAgICBpZiAoIGlvbW11X3BkZV9mcm9tX2Rmbihk LCBkZm4sIHB0X21mbikgfHwgKHB0X21mblsxXSA9PSAwKSApCiAgICAgewogICAgICAgICBzcGlu X3VubG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsKLSAgICAgICAgQU1EX0lPTU1VX0RFQlVH KCJJbnZhbGlkIElPIHBhZ2V0YWJsZSBlbnRyeSBnZm4gPSAlbHhcbiIsIGdmbik7CisgICAgICAg IEFNRF9JT01NVV9ERUJVRygiSW52YWxpZCBJTyBwYWdldGFibGUgZW50cnkgZGZuID0gJWx4XG4i LCBkZm4pOwogICAgICAgICBkb21haW5fY3Jhc2goZCk7CiAgICAgICAgIHJldHVybiAtRUZBVUxU OwogICAgIH0KIAogICAgIC8qIG1hcmsgUFRFIGFzICdwYWdlIG5vdCBwcmVzZW50JyAqLwotICAg IGNsZWFyX2lvbW11X3B0ZV9wcmVzZW50KHB0X21mblsxXSwgZ2ZuKTsKKyAgICBjbGVhcl9pb21t dV9wdGVfcHJlc2VudChwdF9tZm5bMV0sIGRmbik7CiAgICAgc3Bpbl91bmxvY2soJmhkLT5hcmNo Lm1hcHBpbmdfbG9jayk7CiAKLSAgICBhbWRfaW9tbXVfZmx1c2hfcGFnZXMoZCwgZ2ZuLCAwKTsK KyAgICBhbWRfaW9tbXVfZmx1c2hfcGFnZXMoZCwgZGZuLCAwKTsKIAogICAgIHJldHVybiAwOwog fQpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL3BjaV9hbWRfaW9tbXUu YyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9wY2lfYW1kX2lvbW11LmMKaW5kZXggMTJk MjY5NWI4OS4uNTY5OWFkYzBmNiAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv YW1kL3BjaV9hbWRfaW9tbXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvcGNp X2FtZF9pb21tdS5jCkBAIC01NzgsNyArNTc4LDcgQEAgc3RhdGljIHZvaWQgYW1kX2R1bXBfcDJt X3RhYmxlX2xldmVsKHN0cnVjdCBwYWdlX2luZm8qIHBnLCBpbnQgbGV2ZWwsCiAgICAgICAgICAg ICAgICAgbWFkZHJfdG9fcGFnZShuZXh0X3RhYmxlX21hZGRyKSwgbmV4dF9sZXZlbCwKICAgICAg ICAgICAgICAgICBhZGRyZXNzLCBpbmRlbnQgKyAxKTsKICAgICAgICAgZWxzZQotICAgICAgICAg ICAgcHJpbnRrKCIlKnNnZm46ICUwOGx4ICBtZm46ICUwOGx4XG4iLAorICAgICAgICAgICAgcHJp bnRrKCIlKnNkZm46ICUwOGx4ICBtZm46ICUwOGx4XG4iLAogICAgICAgICAgICAgICAgICAgIGlu ZGVudCwgIiIsCiAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpUEZOX0RPV04oYWRk cmVzcyksCiAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpUEZOX0RPV04obmV4dF90 YWJsZV9tYWRkcikpOwpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3Nt bXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMKaW5kZXggNzRjMDliMDk5 MS4uMDY2MjM5OGNjYyAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3Nt bXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jCkBAIC0yNTUxLDcg KzI1NTEsNyBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1fc21tdV9pb3RsYl9mbHVzaF9h bGwoc3RydWN0IGRvbWFpbiAqZCkKIH0KIAogc3RhdGljIGludCBfX211c3RfY2hlY2sgYXJtX3Nt bXVfaW90bGJfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2ZuLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBkZm4sCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcGFnZV9j b3VudCkKIHsKIAkvKiBBUk0gU01NVSB2MSBkb2Vzbid0IGhhdmUgZmx1c2ggYnkgVk1BIGFuZCBW TUlEICovCkBAIC0yNzM3LDcgKzI3MzcsNyBAQCBzdGF0aWMgdm9pZCBhcm1fc21tdV9pb21tdV9k b21haW5fdGVhcmRvd24oc3RydWN0IGRvbWFpbiAqZCkKIAl4ZnJlZSh4ZW5fZG9tYWluKTsKIH0K IAotc3RhdGljIGludCBfX211c3RfY2hlY2sgYXJtX3NtbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFp biAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCitzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1fc21t dV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGRmbiwKIAkJCXVuc2ln bmVkIGxvbmcgbWZuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CiAJcDJtX3R5cGVfdCB0OwpAQCAt Mjc0OCwxMCArMjc0OCwxMCBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1fc21tdV9tYXBf cGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwKIAkgKiBwcm90ZWN0ZWQg YnkgYW4gSU9NTVUsIFhlbiBuZWVkcyB0byBhZGQgYSAxOjEgbWFwcGluZyBpbiB0aGUgZG9tYWlu CiAJICogcDJtIHRvIGFsbG93IERNQSByZXF1ZXN0IHRvIHdvcmsuCiAJICogVGhpcyBpcyBvbmx5 IHZhbGlkIHdoZW4gdGhlIGRvbWFpbiBpcyBkaXJlY3RlZCBtYXBwZWQuIEhlbmNlIHRoaXMKLQkg KiBmdW5jdGlvbiBzaG91bGQgb25seSBiZSB1c2VkIGJ5IGdudHRhYiBjb2RlIHdpdGggZ2ZuID09 IG1mbi4KKwkgKiBmdW5jdGlvbiBzaG91bGQgb25seSBiZSB1c2VkIGJ5IGdudHRhYiBjb2RlIHdp dGggZ2ZuID09IG1mbiA9PSBkZm4uCiAJICovCiAJQlVHX09OKCFpc19kb21haW5fZGlyZWN0X21h cHBlZChkKSk7Ci0JQlVHX09OKG1mbiAhPSBnZm4pOworCUJVR19PTihtZm4gIT0gZGZuKTsKIAog CS8qIFdlIG9ubHkgc3VwcG9ydCByZWFkYWJsZSBhbmQgd3JpdGFibGUgZmxhZ3MgKi8KIAlpZiAo IShmbGFncyAmIChJT01NVUZfcmVhZGFibGUgfCBJT01NVUZfd3JpdGFibGUpKSkKQEAgLTI3NjMs MTkgKzI3NjMsMTkgQEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgYXJtX3NtbXVfbWFwX3BhZ2Uo c3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCiAJICogVGhlIGZ1bmN0aW9uIGd1 ZXN0X3BoeXNtYXBfYWRkX2VudHJ5IHJlcGxhY2VzIHRoZSBjdXJyZW50IG1hcHBpbmcKIAkgKiBp ZiB0aGVyZSBpcyBhbHJlYWR5IG9uZS4uLgogCSAqLwotCXJldHVybiBndWVzdF9waHlzbWFwX2Fk ZF9lbnRyeShkLCBfZ2ZuKGdmbiksIF9tZm4obWZuKSwgMCwgdCk7CisJcmV0dXJuIGd1ZXN0X3Bo eXNtYXBfYWRkX2VudHJ5KGQsIF9nZm4oZGZuKSwgX21mbihkZm4pLCAwLCB0KTsKIH0KIAotc3Rh dGljIGludCBfX211c3RfY2hlY2sgYXJtX3NtbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpk LCB1bnNpZ25lZCBsb25nIGdmbikKK3N0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGFybV9zbW11X3Vu bWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBkZm4pCiB7CiAJLyoKIAkg KiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgZ250dGFiIGNvZGUgd2hlbiB0 aGUgZG9tYWluCi0JICogaXMgZGlyZWN0IG1hcHBlZAorCSAqIGlzIGRpcmVjdCBtYXBwZWQgKGku ZS4gZ2ZuID09IG1mbiA9PSBkZm4pLgogCSAqLwogCWlmICggIWlzX2RvbWFpbl9kaXJlY3RfbWFw cGVkKGQpICkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlyZXR1cm4gZ3Vlc3RfcGh5c21hcF9yZW1v dmVfcGFnZShkLCBfZ2ZuKGdmbiksIF9tZm4oZ2ZuKSwgMCk7CisJcmV0dXJuIGd1ZXN0X3BoeXNt YXBfcmVtb3ZlX3BhZ2UoZCwgX2dmbihkZm4pLCBfbWZuKGRmbiksIDApOwogfQogCiBzdGF0aWMg Y29uc3Qgc3RydWN0IGlvbW11X29wcyBhcm1fc21tdV9pb21tdV9vcHMgPSB7CmRpZmYgLS1naXQg YS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91 Z2gvaW9tbXUuYwppbmRleCBlOTE3OTAxOTc2Li4xMGQxMjUyNTU0IDEwMDY0NAotLS0gYS94ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdo L2lvbW11LmMKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIF9faHdkb21faW5pdCBpb21tdV9od2Rv bV9pbml0KHN0cnVjdCBkb21haW4gKmQpCiAgICAgICAgIHBhZ2VfbGlzdF9mb3JfZWFjaCAoIHBh Z2UsICZkLT5wYWdlX2xpc3QgKQogICAgICAgICB7CiAgICAgICAgICAgICB1bnNpZ25lZCBsb25n IG1mbiA9IG1mbl94KHBhZ2VfdG9fbWZuKHBhZ2UpKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxv bmcgZ2ZuID0gbWZuX3RvX2dtZm4oZCwgbWZuKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg ZGZuID0gbWZuX3RvX2dtZm4oZCwgbWZuKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGludCBtYXBw aW5nID0gSU9NTVVGX3JlYWRhYmxlOwogICAgICAgICAgICAgaW50IHJldDsKIApAQCAtMTkzLDcg KzE5Myw3IEBAIHZvaWQgX19od2RvbV9pbml0IGlvbW11X2h3ZG9tX2luaXQoc3RydWN0IGRvbWFp biAqZCkKICAgICAgICAgICAgICAgICAgID09IFBHVF93cml0YWJsZV9wYWdlKSApCiAgICAgICAg ICAgICAgICAgbWFwcGluZyB8PSBJT01NVUZfd3JpdGFibGU7CiAKLSAgICAgICAgICAgIHJldCA9 IGhkLT5wbGF0Zm9ybV9vcHMtPm1hcF9wYWdlKGQsIGdmbiwgbWZuLCBtYXBwaW5nKTsKKyAgICAg ICAgICAgIHJldCA9IGhkLT5wbGF0Zm9ybV9vcHMtPm1hcF9wYWdlKGQsIGRmbiwgbWZuLCBtYXBw aW5nKTsKICAgICAgICAgICAgIGlmICggIXJjICkKICAgICAgICAgICAgICAgICByYyA9IHJldDsK IApAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgaW9tbXVfZG9tYWluX2Rlc3Ryb3koc3RydWN0IGRv bWFpbiAqZCkKICAgICBhcmNoX2lvbW11X2RvbWFpbl9kZXN0cm95KGQpOwogfQogCi1pbnQgaW9t bXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sIHVuc2lnbmVk IGxvbmcgbWZuLAoraW50IGlvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVk IGxvbmcgZGZuLCB1bnNpZ25lZCBsb25nIG1mbiwKICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgZmxhZ3MpCiB7CiAgICAgY29uc3Qgc3RydWN0IGRvbWFpbl9pb21tdSAqaGQgPSBkb21f aW9tbXUoZCk7CkBAIC0yNjMsMTMgKzI2MywxMyBAQCBpbnQgaW9tbXVfbWFwX3BhZ2Uoc3RydWN0 IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAogICAgIGlm ICggIWlvbW11X2VuYWJsZWQgfHwgIWhkLT5wbGF0Zm9ybV9vcHMgKQogICAgICAgICByZXR1cm4g MDsKIAotICAgIHJjID0gaGQtPnBsYXRmb3JtX29wcy0+bWFwX3BhZ2UoZCwgZ2ZuLCBtZm4sIGZs YWdzKTsKKyAgICByYyA9IGhkLT5wbGF0Zm9ybV9vcHMtPm1hcF9wYWdlKGQsIGRmbiwgbWZuLCBm bGFncyk7CiAgICAgaWYgKCB1bmxpa2VseShyYykgKQogICAgIHsKICAgICAgICAgaWYgKCAhZC0+ aXNfc2h1dHRpbmdfZG93biAmJiBwcmludGtfcmF0ZWxpbWl0KCkgKQogICAgICAgICAgICAgcHJp bnRrKFhFTkxPR19FUlIKLSAgICAgICAgICAgICAgICAgICAiZCVkOiBJT01NVSBtYXBwaW5nIGdm biAlI2x4IHRvIG1mbiAlI2x4IGZhaWxlZDogJWRcbiIsCi0gICAgICAgICAgICAgICAgICAgZC0+ ZG9tYWluX2lkLCBnZm4sIG1mbiwgcmMpOworICAgICAgICAgICAgICAgICAgICJkJWQ6IElPTU1V IG1hcHBpbmcgZGZuICUjbHggdG8gbWZuICUjbHggZmFpbGVkOiAlZFxuIiwKKyAgICAgICAgICAg ICAgICAgICBkLT5kb21haW5faWQsIGRmbiwgbWZuLCByYyk7CiAKICAgICAgICAgaWYgKCAhaXNf aGFyZHdhcmVfZG9tYWluKGQpICkKICAgICAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsKQEAgLTI3 OCw3ICsyNzgsNyBAQCBpbnQgaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWdu ZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAogICAgIHJldHVybiByYzsKIH0KIAotaW50 IGlvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4pCitp bnQgaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGRmbikK IHsKICAgICBjb25zdCBzdHJ1Y3QgZG9tYWluX2lvbW11ICpoZCA9IGRvbV9pb21tdShkKTsKICAg ICBpbnQgcmM7CkBAIC0yODYsMTMgKzI4NiwxMyBAQCBpbnQgaW9tbXVfdW5tYXBfcGFnZShzdHJ1 Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbikKICAgICBpZiAoICFpb21tdV9lbmFibGVk IHx8ICFoZC0+cGxhdGZvcm1fb3BzICkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByYyA9IGhk LT5wbGF0Zm9ybV9vcHMtPnVubWFwX3BhZ2UoZCwgZ2ZuKTsKKyAgICByYyA9IGhkLT5wbGF0Zm9y bV9vcHMtPnVubWFwX3BhZ2UoZCwgZGZuKTsKICAgICBpZiAoIHVubGlrZWx5KHJjKSApCiAgICAg ewogICAgICAgICBpZiAoICFkLT5pc19zaHV0dGluZ19kb3duICYmIHByaW50a19yYXRlbGltaXQo KSApCiAgICAgICAgICAgICBwcmludGsoWEVOTE9HX0VSUgotICAgICAgICAgICAgICAgICAgICJk JWQ6IElPTU1VIHVubWFwcGluZyBnZm4gJSNseCBmYWlsZWQ6ICVkXG4iLAotICAgICAgICAgICAg ICAgICAgIGQtPmRvbWFpbl9pZCwgZ2ZuLCByYyk7CisgICAgICAgICAgICAgICAgICAgImQlZDog SU9NTVUgdW5tYXBwaW5nIGRmbiAlI2x4IGZhaWxlZDogJWRcbiIsCisgICAgICAgICAgICAgICAg ICAgZC0+ZG9tYWluX2lkLCBkZm4sIHJjKTsKIAogICAgICAgICBpZiAoICFpc19oYXJkd2FyZV9k b21haW4oZCkgKQogICAgICAgICAgICAgZG9tYWluX2NyYXNoKGQpOwpAQCAtMzE4LDcgKzMxOCw3 IEBAIHN0YXRpYyB2b2lkIGlvbW11X2ZyZWVfcGFnZXRhYmxlcyh1bnNpZ25lZCBsb25nIHVudXNl ZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVtYXNrX2N5Y2xlKHNtcF9wcm9jZXNz b3JfaWQoKSwgJmNwdV9vbmxpbmVfbWFwKSk7CiB9CiAKLWludCBpb21tdV9pb3RsYl9mbHVzaChz dHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwKK2ludCBpb21tdV9pb3RsYl9mbHVz aChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGRmbiwKICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBpbnQgcGFnZV9jb3VudCkKIHsKICAgICBjb25zdCBzdHJ1Y3QgZG9tYWlu X2lvbW11ICpoZCA9IGRvbV9pb21tdShkKTsKQEAgLTMyNywxMyArMzI3LDEzIEBAIGludCBpb21t dV9pb3RsYl9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwKICAgICBp ZiAoICFpb21tdV9lbmFibGVkIHx8ICFoZC0+cGxhdGZvcm1fb3BzIHx8ICFoZC0+cGxhdGZvcm1f b3BzLT5pb3RsYl9mbHVzaCApCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmMgPSBoZC0+cGxh dGZvcm1fb3BzLT5pb3RsYl9mbHVzaChkLCBnZm4sIHBhZ2VfY291bnQpOworICAgIHJjID0gaGQt PnBsYXRmb3JtX29wcy0+aW90bGJfZmx1c2goZCwgZGZuLCBwYWdlX2NvdW50KTsKICAgICBpZiAo IHVubGlrZWx5KHJjKSApCiAgICAgewogICAgICAgICBpZiAoICFkLT5pc19zaHV0dGluZ19kb3du ICYmIHByaW50a19yYXRlbGltaXQoKSApCiAgICAgICAgICAgICBwcmludGsoWEVOTE9HX0VSUgot ICAgICAgICAgICAgICAgICAgICJkJWQ6IElPTU1VIElPVExCIGZsdXNoIGZhaWxlZDogJWQsIGdm biAlI2x4LCBwYWdlIGNvdW50ICV1XG4iLAotICAgICAgICAgICAgICAgICAgIGQtPmRvbWFpbl9p ZCwgcmMsIGdmbiwgcGFnZV9jb3VudCk7CisgICAgICAgICAgICAgICAgICAgImQlZDogSU9NTVUg SU9UTEIgZmx1c2ggZmFpbGVkOiAlZCwgZGZuICUjbHgsIHBhZ2UgY291bnQgJXVcbiIsCisgICAg ICAgICAgICAgICAgICAgZC0+ZG9tYWluX2lkLCByYywgZGZuLCBwYWdlX2NvdW50KTsKIAogICAg ICAgICBpZiAoICFpc19oYXJkd2FyZV9kb21haW4oZCkgKQogICAgICAgICAgICAgZG9tYWluX2Ny YXNoKGQpOwpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMg Yi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYwppbmRleCA4ZDc2OGE0NjkzLi5h YzBhNzhkOTE3IDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUu YworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYwpAQCAtNTg1LDcgKzU4 NSw3IEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2ZsdXNoX2FsbCh2b2lkKQogfQog CiBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYihzdHJ1Y3QgZG9tYWlu ICpkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg bG9uZyBnZm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBsb25nIGRmbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJvb2xfdCBkbWFfb2xkX3B0ZV9wcmVzZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBhZ2VfY291bnQpCiB7CkBAIC02MTIsMTIgKzYx MiwxMiBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYihzdHJ1Y3Qg ZG9tYWluICpkLAogICAgICAgICBpZiAoIGlvbW11X2RvbWlkID09IC0xICkKICAgICAgICAgICAg IGNvbnRpbnVlOwogCi0gICAgICAgIGlmICggcGFnZV9jb3VudCAhPSAxIHx8IGdmbiA9PSBnZm5f eChJTlZBTElEX0dGTikgKQorICAgICAgICBpZiAoIHBhZ2VfY291bnQgIT0gMSB8fCBkZm4gPT0g ZGZuX3goSU5WQUxJRF9ERk4pICkKICAgICAgICAgICAgIHJjID0gaW9tbXVfZmx1c2hfaW90bGJf ZHNpKGlvbW11LCBpb21tdV9kb21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDAsIGZsdXNoX2Rldl9pb3RsYik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJj ID0gaW9tbXVfZmx1c2hfaW90bGJfcHNpKGlvbW11LCBpb21tdV9kb21pZCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWRkcl90KWdmbiA8PCBQQUdFX1NISUZUXzRL LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZm5fdG9fZGFkZHIo ZGZuKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBR0VfT1JERVJf NEssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhZG1hX29sZF9wdGVf cHJlc2VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsdXNoX2Rl dl9pb3RsYik7CkBAIC02MzMsMTUgKzYzMywxNSBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBp b21tdV9mbHVzaF9pb3RsYihzdHJ1Y3QgZG9tYWluICpkLAogfQogCiBzdGF0aWMgaW50IF9fbXVz dF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYl9wYWdlcyhzdHJ1Y3QgZG9tYWluICpkLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBn Zm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBsb25nIGRmbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGludCBwYWdlX2NvdW50KQogewotICAgIHJldHVybiBpb21tdV9mbHVz aF9pb3RsYihkLCBnZm4sIDEsIHBhZ2VfY291bnQpOworICAgIHJldHVybiBpb21tdV9mbHVzaF9p b3RsYihkLCBkZm4sIDEsIHBhZ2VfY291bnQpOwogfQogCiBzdGF0aWMgaW50IF9fbXVzdF9jaGVj ayBpb21tdV9mbHVzaF9pb3RsYl9hbGwoc3RydWN0IGRvbWFpbiAqZCkKIHsKLSAgICByZXR1cm4g aW9tbXVfZmx1c2hfaW90bGIoZCwgZ2ZuX3goSU5WQUxJRF9HRk4pLCAwLCAwKTsKKyAgICByZXR1 cm4gaW9tbXVfZmx1c2hfaW90bGIoZCwgZGZuX3goSU5WQUxJRF9ERk4pLCAwLCAwKTsKIH0KIAog LyogY2xlYXIgb25lIHBhZ2UncyBwYWdlIHRhYmxlICovCkBAIC0xNzY3LDcgKzE3NjcsNyBAQCBz dGF0aWMgdm9pZCBpb21tdV9kb21haW5fdGVhcmRvd24oc3RydWN0IGRvbWFpbiAqZCkKIH0KIAog c3RhdGljIGludCBfX211c3RfY2hlY2sgaW50ZWxfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFp biAqZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgZ2ZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgbG9uZyBkZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBmbGFncykKIHsKQEAgLTE3ODYsMTQgKzE3 ODYsMTQgQEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgaW50ZWxfaW9tbXVfbWFwX3BhZ2Uoc3Ry dWN0IGRvbWFpbiAqZCwKIAogICAgIHNwaW5fbG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsK IAotICAgIHBnX21hZGRyID0gYWRkcl90b19kbWFfcGFnZV9tYWRkcihkLCAocGFkZHJfdClnZm4g PDwgUEFHRV9TSElGVF80SywgMSk7CisgICAgcGdfbWFkZHIgPSBhZGRyX3RvX2RtYV9wYWdlX21h ZGRyKGQsIF9fZGZuX3RvX2RhZGRyKGRmbiksIDEpOwogICAgIGlmICggcGdfbWFkZHIgPT0gMCAp CiAgICAgewogICAgICAgICBzcGluX3VubG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsKICAg ICAgICAgcmV0dXJuIC1FTk9NRU07CiAgICAgfQogICAgIHBhZ2UgPSAoc3RydWN0IGRtYV9wdGUg KiltYXBfdnRkX2RvbWFpbl9wYWdlKHBnX21hZGRyKTsKLSAgICBwdGUgPSBwYWdlICsgKGdmbiAm IExFVkVMX01BU0spOworICAgIHB0ZSA9IHBhZ2UgKyAoZGZuICYgTEVWRUxfTUFTSyk7CiAgICAg b2xkID0gKnB0ZTsKICAgICBkbWFfc2V0X3B0ZV9hZGRyKG5ldywgKHBhZGRyX3QpbWZuIDw8IFBB R0VfU0hJRlRfNEspOwogICAgIGRtYV9zZXRfcHRlX3Byb3QobmV3LApAQCAtMTgxNywyMiArMTgx NywyMiBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpbnRlbF9pb21tdV9tYXBfcGFnZShzdHJ1 Y3QgZG9tYWluICpkLAogICAgIHVubWFwX3Z0ZF9kb21haW5fcGFnZShwYWdlKTsKIAogICAgIGlm ICggIXRoaXNfY3B1KGlvbW11X2RvbnRfZmx1c2hfaW90bGIpICkKLSAgICAgICAgcmMgPSBpb21t dV9mbHVzaF9pb3RsYihkLCBnZm4sIGRtYV9wdGVfcHJlc2VudChvbGQpLCAxKTsKKyAgICAgICAg cmMgPSBpb21tdV9mbHVzaF9pb3RsYihkLCBkZm4sIGRtYV9wdGVfcHJlc2VudChvbGQpLCAxKTsK IAogICAgIHJldHVybiByYzsKIH0KIAogc3RhdGljIGludCBfX211c3RfY2hlY2sgaW50ZWxfaW9t bXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdmbikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBkZm4pCiB7CiAg ICAgLyogRG8gbm90aGluZyBpZiBoYXJkd2FyZSBkb21haW4gYW5kIGlvbW11IHN1cHBvcnRzIHBh c3MgdGhydS4gKi8KICAgICBpZiAoIGlvbW11X3Bhc3N0aHJvdWdoICYmIGlzX2hhcmR3YXJlX2Rv bWFpbihkKSApCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIGRtYV9wdGVfY2xlYXJf b25lKGQsIChwYWRkcl90KWdmbiA8PCBQQUdFX1NISUZUXzRLKTsKKyAgICByZXR1cm4gZG1hX3B0 ZV9jbGVhcl9vbmUoZCwgX19kZm5fdG9fZGFkZHIoZGZuKSk7CiB9CiAKLWludCBpb21tdV9wdGVf Zmx1c2goc3RydWN0IGRvbWFpbiAqZCwgdTY0IGdmbiwgdTY0ICpwdGUsCitpbnQgaW9tbXVfcHRl X2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHVpbnQ2NF90IGRmbiwgdWludDY0X3QgKnB0ZSwKICAg ICAgICAgICAgICAgICAgICAgaW50IG9yZGVyLCBpbnQgcHJlc2VudCkKIHsKICAgICBzdHJ1Y3Qg YWNwaV9kcmhkX3VuaXQgKmRyaGQ7CkBAIC0xODU2LDcgKzE4NTYsNyBAQCBpbnQgaW9tbXVfcHRl X2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHU2NCBnZm4sIHU2NCAqcHRlLAogICAgICAgICAgICAg Y29udGludWU7CiAKICAgICAgICAgcmMgPSBpb21tdV9mbHVzaF9pb3RsYl9wc2koaW9tbXUsIGlv bW11X2RvbWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFkZHJfdCln Zm4gPDwgUEFHRV9TSElGVF80SywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg X19kZm5fdG9fZGFkZHIoZGZuKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg b3JkZXIsICFwcmVzZW50LCBmbHVzaF9kZXZfaW90bGIpOwogICAgICAgICBpZiAoIHJjID4gMCAp CiAgICAgICAgIHsKQEAgLTI2MjYsNyArMjYyNiw3IEBAIHN0YXRpYyB2b2lkIHZ0ZF9kdW1wX3Ay bV90YWJsZV9sZXZlbChwYWRkcl90IHB0X21hZGRyLCBpbnQgbGV2ZWwsIHBhZGRyX3QgZ3BhLAog ICAgICAgICAgICAgdnRkX2R1bXBfcDJtX3RhYmxlX2xldmVsKGRtYV9wdGVfYWRkcigqcHRlKSwg bmV4dF9sZXZlbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVz cywgaW5kZW50ICsgMSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByaW50aygiJSpzZ2Zu OiAlMDhseCBtZm46ICUwOGx4XG4iLAorICAgICAgICAgICAgcHJpbnRrKCIlKnNkZm46ICUwOGx4 IG1mbjogJTA4bHhcbiIsCiAgICAgICAgICAgICAgICAgICAgaW5kZW50LCAiIiwKICAgICAgICAg ICAgICAgICAgICAodW5zaWduZWQgbG9uZykoYWRkcmVzcyA+PiBQQUdFX1NISUZUXzRLKSwKICAg ICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykoZG1hX3B0ZV9hZGRyKCpwdGUpID4+IFBB R0VfU0hJRlRfNEspKTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9pb21tdS5oIGIveGVu L2luY2x1ZGUveGVuL2lvbW11LmgKaW5kZXggZTM1ZDk0MWYzYy4uYWE1NDRiNTIyNSAxMDA2NDQK LS0tIGEveGVuL2luY2x1ZGUveGVuL2lvbW11LmgKKysrIGIveGVuL2luY2x1ZGUveGVuL2lvbW11 LmgKQEAgLTIzLDExICsyMywzNyBAQAogI2luY2x1ZGUgPHhlbi9wYWdlLWRlZnMuaD4KICNpbmNs dWRlIDx4ZW4vc3BpbmxvY2suaD4KICNpbmNsdWRlIDx4ZW4vcGNpLmg+CisjaW5jbHVkZSA8eGVu L3R5cGVzYWZlLmg+CiAjaW5jbHVkZSA8cHVibGljL2h2bS9pb3JlcS5oPgogI2luY2x1ZGUgPHB1 YmxpYy9kb21jdGwuaD4KICNpbmNsdWRlIDxhc20vZGV2aWNlLmg+CiAjaW5jbHVkZSA8YXNtL2lv bW11Lmg+CiAKK1RZUEVfU0FGRSh1aW50NjRfdCwgZGZuKTsKKyNkZWZpbmUgUFJJX2RmbiAgICAg UFJJeDY0CisjZGVmaW5lIElOVkFMSURfREZOIF9kZm4ofjBVTEwpCisKKyNpZm5kZWYgZGZuX3QK KyNkZWZpbmUgZGZuX3QgLyogR3JlcCBmb2RkZXI6IGRmbl90LCBfZGZuKCkgYW5kIGRmbl94KCkg YXJlIGRlZmluZWQgYWJvdmUgKi8KKyNkZWZpbmUgX2RmbgorI2RlZmluZSBkZm5feAorI3VuZGVm IGRmbl90CisjdW5kZWYgX2RmbgorI3VuZGVmIGRmbl94CisjZW5kaWYKKworI2RlZmluZSBJT01N VV9QQUdFX1NISUZUIDEyCisjZGVmaW5lIElPTU1VX1BBR0VfU0laRSAgKDEgPDwgSU9NTVVfUEFH RV9TSElGVCkKKyNkZWZpbmUgSU9NTVVfUEFHRV9NQVNLICAofihJT01NVV9QQUdFX1NJWkUgLSAx KSkKKwordHlwZWRlZiB1aW50NjRfdCBkYWRkcl90OworCisjZGVmaW5lIF9fZGZuX3RvX2RhZGRy KGRmbikgKChkYWRkcl90KShkZm4pIDw8IElPTU1VX1BBR0VfU0hJRlQpCisjZGVmaW5lIF9fZGFk ZHJfdG9fZGZuKGRhZGRyKSAoKHVpbnQ2NF90KShkYWRkciA+PiBJT01NVV9QQUdFX1NISUZUKSkK KworI2RlZmluZSBkZm5fdG9fZGFkZHIoZGZuKSBfX2Rmbl90b19kYWRkcihkZm5feChkZm4pKQor I2RlZmluZSBkYWRkcl90b19kZm4oZGFkZHIpIF9kZm4oX19kYWRkcl90b19kZm4oZGFkZHIpKQor CiBleHRlcm4gYm9vbF90IGlvbW11X2VuYWJsZSwgaW9tbXVfZW5hYmxlZDsKIGV4dGVybiBib29s X3QgZm9yY2VfaW9tbXUsIGlvbW11X2RvbTBfc3RyaWN0LCBpb21tdV92ZXJib3NlOwogZXh0ZXJu IGJvb2xfdCBpb21tdV93b3JrYXJvdW5kX2Jpb3NfYnVnLCBpb21tdV9pZ2Z4LCBpb21tdV9wYXNz dGhyb3VnaDsKQEAgLTYwLDkgKzg2LDkgQEAgdm9pZCBpb21tdV90ZWFyZG93bihzdHJ1Y3QgZG9t YWluICpkKTsKICNkZWZpbmUgSU9NTVVGX3JlYWRhYmxlICAoMXU8PF9JT01NVUZfcmVhZGFibGUp CiAjZGVmaW5lIF9JT01NVUZfd3JpdGFibGUgMQogI2RlZmluZSBJT01NVUZfd3JpdGFibGUgICgx dTw8X0lPTU1VRl93cml0YWJsZSkKLWludCBfX211c3RfY2hlY2sgaW9tbXVfbWFwX3BhZ2Uoc3Ry dWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCitpbnQgX19tdXN0X2NoZWNrIGlvbW11 X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZGZuLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiwgdW5zaWduZWQgaW50IGZs YWdzKTsKLWludCBfX211c3RfY2hlY2sgaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpk LCB1bnNpZ25lZCBsb25nIGdmbik7CitpbnQgX19tdXN0X2NoZWNrIGlvbW11X3VubWFwX3BhZ2Uo c3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBkZm4pOwogCiBlbnVtIGlvbW11X2ZlYXR1 cmUKIHsKQEAgLTE1MCw5ICsxNzYsOSBAQCBzdHJ1Y3QgaW9tbXVfb3BzIHsKICNlbmRpZiAvKiBI QVNfUENJICovCiAKICAgICB2b2lkICgqdGVhcmRvd24pKHN0cnVjdCBkb21haW4gKmQpOwotICAg IGludCBfX211c3RfY2hlY2sgKCptYXBfcGFnZSkoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQg bG9uZyBnZm4sCisgICAgaW50IF9fbXVzdF9jaGVjayAoKm1hcF9wYWdlKShzdHJ1Y3QgZG9tYWlu ICpkLCB1bnNpZ25lZCBsb25nIGRmbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGxvbmcgbWZuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwotICAgIGludCBfX211c3Rf Y2hlY2sgKCp1bm1hcF9wYWdlKShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbik7 CisgICAgaW50IF9fbXVzdF9jaGVjayAoKnVubWFwX3BhZ2UpKHN0cnVjdCBkb21haW4gKmQsIHVu c2lnbmVkIGxvbmcgZGZuKTsKICAgICB2b2lkICgqZnJlZV9wYWdlX3RhYmxlKShzdHJ1Y3QgcGFn ZV9pbmZvICopOwogI2lmZGVmIENPTkZJR19YODYKICAgICB2b2lkICgqdXBkYXRlX2lyZV9mcm9t X2FwaWMpKHVuc2lnbmVkIGludCBhcGljLCB1bnNpZ25lZCBpbnQgcmVnLCB1bnNpZ25lZCBpbnQg dmFsdWUpOwpAQCAtMTYzLDcgKzE4OSw3IEBAIHN0cnVjdCBpb21tdV9vcHMgewogICAgIHZvaWQg KCpyZXN1bWUpKHZvaWQpOwogICAgIHZvaWQgKCpzaGFyZV9wMm0pKHN0cnVjdCBkb21haW4gKmQp OwogICAgIHZvaWQgKCpjcmFzaF9zaHV0ZG93bikodm9pZCk7Ci0gICAgaW50IF9fbXVzdF9jaGVj ayAoKmlvdGxiX2ZsdXNoKShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwKKyAg ICBpbnQgX19tdXN0X2NoZWNrICgqaW90bGJfZmx1c2gpKHN0cnVjdCBkb21haW4gKmQsIHVuc2ln bmVkIGxvbmcgZGZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IHBhZ2VfY291bnQpOwogICAgIGludCBfX211c3RfY2hlY2sgKCppb3RsYl9mbHVzaF9h bGwpKHN0cnVjdCBkb21haW4gKmQpOwogICAgIGludCAoKmdldF9yZXNlcnZlZF9kZXZpY2VfbWVt b3J5KShpb21tdV9ncmRtX3QgKiwgdm9pZCAqKTsKQEAgLTE4NSw3ICsyMTEsNyBAQCBpbnQgaW9t bXVfZG9fcGNpX2RvbWN0bChzdHJ1Y3QgeGVuX2RvbWN0bCAqLCBzdHJ1Y3QgZG9tYWluICpkLAog aW50IGlvbW11X2RvX2RvbWN0bChzdHJ1Y3QgeGVuX2RvbWN0bCAqLCBzdHJ1Y3QgZG9tYWluICpk LAogICAgICAgICAgICAgICAgICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9kb21jdGxf dCkpOwogCi1pbnQgX19tdXN0X2NoZWNrIGlvbW11X2lvdGxiX2ZsdXNoKHN0cnVjdCBkb21haW4g KmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLAoraW50IF9fbXVzdF9jaGVjayBpb21tdV9pb3RsYl9mbHVz aChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGRmbiwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBhZ2VfY291bnQpOwogaW50IF9fbXVzdF9j aGVjayBpb21tdV9pb3RsYl9mbHVzaF9hbGwoc3RydWN0IGRvbWFpbiAqZCk7CiAKZGlmZiAtLWdp dCBhL3hlbi9pbmNsdWRlL3hlbi9tbS5oIGIveGVuL2luY2x1ZGUveGVuL21tLmgKaW5kZXggMjQ2 NTRlOGUyMi4uMjg4ZGM3N2I4NSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL21tLmgKKysr IGIveGVuL2luY2x1ZGUveGVuL21tLmgKQEAgLTI2LDYgKzI2LDExIEBACiAgKiAgIEEgbGluZWFy IGlkZWEgb2YgYSBndWVzdCBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlLiBGb3IgYW4gYXV0by10cmFu c2xhdGVkCiAgKiAgIGd1ZXN0LCBwZm4gPT0gZ2ZuIHdoaWxlIGZvciBhIG5vbi10cmFuc2xhdGVk IGd1ZXN0LCBwZm4gIT0gZ2ZuLgogICoKKyAqIGRmbjogRGV2aWNlIERNQSBGcmFtZSBOdW1iZXIg KGRlZmluaXRpb25zIGluIGluY2x1ZGUveGVuL2lvbW11LmgpCisgKiAgIFRoZSBsaW5lYXIgZnJh bWUgbnVtYmVycyBvZiBJT01NVSBhZGRyZXNzIHNwYWNlLiBBbGwgaW5pdGlhdG9ycyBmb3IgKGku ZS4KKyAqICAgYWxsIGRldmljZXMgYXNzaWduZWQgdG8pIGEgZ3Vlc3Qgc2hhcmUgYSBzaW5nbGUg SU9NTVUgYWRkcmVzcyBzcGFjZSBhbmQsCisgKiAgIGJ5IGRlZmF1bHQsIFhlbiB3aWxsIGVuc3Vy ZSBkZm4gPT0gcGZuLgorICoKICAqIFdBUk5JTkc6IFNvbWUgb2YgdGhlc2UgdGVybXMgaGF2ZSBj aGFuZ2VkIG92ZXIgdGltZSB3aGlsZSBvdGhlcnMgaGF2ZSBiZWVuCiAgKiB1c2VkIGluY29uc2lz dGVudGx5LCBtZWFuaW5nIHRoYXQgYSBsb3Qgb2YgZXhpc3RpbmcgY29kZSBkb2VzIG5vdCBtYXRj aCB0aGUKICAqIGRlZmluaXRpb25zIGFib3ZlLiAgTmV3IGNvZGUgc2hvdWxkIHVzZSB0aGVzZSB0 ZXJtcyBhcyBkZXNjcmliZWQgaGVyZSwgYW5kCi0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhl bi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn L21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs