From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: [PATCH 11/11] drm/msm: Implement preemption for A5XX targets Date: Tue, 7 Mar 2017 09:58:20 -0700 Message-ID: <1488905900-6603-12-git-send-email-jcrouse@codeaurora.org> References: <1486402779-9024-1-git-send-email-jcrouse@codeaurora.org> <1488905900-6603-1-git-send-email-jcrouse@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1488905900-6603-1-git-send-email-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: dri-devel@lists.freedesktop.org SW1wbGVtZW50IHByZWVtcHRpb24gZm9yIEE1WFggdGFyZ2V0cyAtIHRoaXMgYWxsb3dzIG11bHRp cGxlCnJpbmdidWZmZXJzIGZvciBkaWZmZXJlbnQgcHJpb3JpdGllcyB3aXRoIGF1dG9tYXRpYyBw cmVlbXB0aW9uCm9mIGEgbG93ZXIgcHJpb3JpdHkgcmluZ2J1ZmZlciBpZiBhIGhpZ2hlciBvbmUg aXMgcmVhZHkuCgpTaWduZWQtb2ZmLWJ5OiBKb3JkYW4gQ3JvdXNlIDxqY3JvdXNlQGNvZGVhdXJv cmEub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUgICAgICAgICAgICAgIHwg ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E1eHhfZ3B1LmMgICAgIHwgMTc2ICsr KysrKysrKysrKysrLQogZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTV4eF9ncHUuaCAgICAg fCAxMDIgKysrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X3ByZWVtcHQu YyB8IDM0NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9t c20vYWRyZW5vL2FkcmVub19ncHUuYyAgIHwgIDE1ICstCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Fk cmVuby9hZHJlbm9fZ3B1LmggICB8ICAgNyArLQogZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2 LmggICAgICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3JpbmdidWZm ZXIuYyAgICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3JpbmdidWZmZXIuaCAg ICAgIHwgICAxICsKIDkgZmlsZXMgY2hhbmdlZCwgNjM0IGluc2VydGlvbnMoKyksIDE3IGRlbGV0 aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E1 eHhfcHJlZW1wdC5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZSBi L2RyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUKaW5kZXggMzkwNTUzNi4uYTFkODA4YiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9k cm0vbXNtL01ha2VmaWxlCkBAIC04LDYgKzgsNyBAQCBtc20teSA6PSBcCiAJYWRyZW5vL2E0eHhf Z3B1Lm8gXAogCWFkcmVuby9hNXh4X2dwdS5vIFwKIAlhZHJlbm8vYTV4eF9wb3dlci5vIFwKKwlh ZHJlbm8vYTV4eF9wcmVlbXB0Lm8gXAogCWhkbWkvaGRtaS5vIFwKIAloZG1pL2hkbWlfYXVkaW8u byBcCiAJaGRtaS9oZG1pX2JyaWRnZS5vIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t c20vYWRyZW5vL2E1eHhfZ3B1LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X2dw dS5jCmluZGV4IDRhZDk4YjkuLmZlZjE1NDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9t c20vYWRyZW5vL2E1eHhfZ3B1LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTV4 eF9ncHUuYwpAQCAtMTg0LDE0ICsxODQsNjYgQEAgc3RhdGljIGludCB6YXBfbG9hZF9tZHQoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlyZXR1cm4gcmV0OwogfQogCitzdGF0aWMgdm9p ZCBhNXh4X2ZsdXNoKHN0cnVjdCBtc21fZ3B1ICpncHUsIHN0cnVjdCBtc21fcmluZ2J1ZmZlciAq cmluZykKK3sKKwlzdHJ1Y3QgYWRyZW5vX2dwdSAqYWRyZW5vX2dwdSA9IHRvX2FkcmVub19ncHUo Z3B1KTsKKwlzdHJ1Y3QgYTV4eF9ncHUgKmE1eHhfZ3B1ID0gdG9fYTV4eF9ncHUoYWRyZW5vX2dw dSk7CisJdWludDMyX3Qgd3B0cjsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJc3Bpbl9sb2Nr X2lycXNhdmUoJnJpbmctPmxvY2ssIGZsYWdzKTsKKworCS8qIENvcHkgdGhlIHNoYWRvdyB0byB0 aGUgYWN0dWFsIHJlZ2lzdGVyICovCisJcmluZy0+Y3VyID0gcmluZy0+bmV4dDsKKworCS8qIE1h a2Ugc3VyZSB0byB3cmFwIHdwdHIgaWYgd2UgbmVlZCB0byAqLworCXdwdHIgPSBnZXRfd3B0cihy aW5nKTsKKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnJpbmctPmxvY2ssIGZsYWdzKTsKKwor CS8qIE1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIHBvc3RlZCBiZWZvcmUgbWFraW5nIGEgZGVjaXNp b24gKi8KKwltYigpOworCisJLyogVXBkYXRlIEhXIGlmIHRoaXMgaXMgdGhlIGN1cnJlbnQgcmlu ZyBhbmQgd2UgYXJlIG5vdCBpbiBwcmVlbXB0ICovCisJaWYgKGE1eHhfZ3B1LT5jdXJfcmluZyA9 PSByaW5nICYmICFhNXh4X2luX3ByZWVtcHQoYTV4eF9ncHUpKQorCQlncHVfd3JpdGUoZ3B1LCBS RUdfQTVYWF9DUF9SQl9XUFRSLCB3cHRyKTsKK30KKwogc3RhdGljIHZvaWQgYTV4eF9zdWJtaXQo c3RydWN0IG1zbV9ncHUgKmdwdSwgc3RydWN0IG1zbV9nZW1fc3VibWl0ICpzdWJtaXQsCiAJc3Ry dWN0IG1zbV9maWxlX3ByaXZhdGUgKmN0eCkKIHsKIAlzdHJ1Y3QgYWRyZW5vX2dwdSAqYWRyZW5v X2dwdSA9IHRvX2FkcmVub19ncHUoZ3B1KTsKKwlzdHJ1Y3QgYTV4eF9ncHUgKmE1eHhfZ3B1ID0g dG9fYTV4eF9ncHUoYWRyZW5vX2dwdSk7CisKIAlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2 ID0gZ3B1LT5kZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZyA9 IHN1Ym1pdC0+cmluZzsKIAl1bnNpZ25lZCBpbnQgaSwgaWJzID0gMDsKIAorCU9VVF9QS1Q3KHJp bmcsIENQX1BSRUVNUFRfRU5BQkxFX0dMT0JBTCwgMSk7CisJT1VUX1JJTkcocmluZywgMHgwMik7 CisKKwkvKiBUdXJuIG9mZiBwcm90ZWN0ZWQgbW9kZSB0byB3cml0ZSB0byBzcGVjaWFsIHJlZ2lz dGVycyAqLworCU9VVF9QS1Q3KHJpbmcsIENQX1NFVF9QUk9URUNURURfTU9ERSwgMSk7CisJT1VU X1JJTkcocmluZywgMCk7CisKKwkvKiBTZXQgdGhlIHNhdmUgcHJlZW1wdGlvbiByZWNvcmQgZm9y IHRoZSByaW5nL2NvbW1hbmQgKi8KKwlPVVRfUEtUNChyaW5nLCBSRUdfQTVYWF9DUF9DT05URVhU X1NXSVRDSF9TQVZFX0FERFJfTE8sIDIpOworCU9VVF9SSU5HKHJpbmcsIGxvd2VyXzMyX2JpdHMo YTV4eF9ncHUtPnByZWVtcHRfaW92YVtzdWJtaXQtPnJpbmctPmlkXSkpOworCU9VVF9SSU5HKHJp bmcsIHVwcGVyXzMyX2JpdHMoYTV4eF9ncHUtPnByZWVtcHRfaW92YVtzdWJtaXQtPnJpbmctPmlk XSkpOworCisJLyogVHVybiBiYWNrIG9uIHByb3RlY3RlZCBtb2RlICovCisJT1VUX1BLVDcocmlu ZywgQ1BfU0VUX1BST1RFQ1RFRF9NT0RFLCAxKTsKKwlPVVRfUklORyhyaW5nLCAxKTsKKworCS8q IEVuYWJsZSBsb2NhbCBwcmVlbXB0aW9uIGZvciBmaW5lZ3JhaW4gcHJlZW1wdGlvbiAqLworCU9V VF9QS1Q3KHJpbmcsIENQX1BSRUVNUFRfRU5BQkxFX0dMT0JBTCwgMSk7CisJT1VUX1JJTkcocmlu ZywgMHgwMik7CisKKwkvKiBBbGxvdyBDUF9DT05URVhUX1NXSVRDSF9ZSUVMRCBwYWNrZXRzIGlu IHRoZSBJQjIgKi8KKwlPVVRfUEtUNyhyaW5nLCBDUF9ZSUVMRF9FTkFCTEUsIDEpOworCU9VVF9S SU5HKHJpbmcsIDB4MDIpOworCisJLyogU3VibWl0IHRoZSBjb21tYW5kcyAqLwogCWZvciAoaSA9 IDA7IGkgPCBzdWJtaXQtPm5yX2NtZHM7IGkrKykgewogCQlzd2l0Y2ggKHN1Ym1pdC0+Y21kW2ld LnR5cGUpIHsKIAkJY2FzZSBNU01fU1VCTUlUX0NNRF9JQl9UQVJHRVRfQlVGOgpAQCAtMjA5LDE2 ICsyNjEsNTQgQEAgc3RhdGljIHZvaWQgYTV4eF9zdWJtaXQoc3RydWN0IG1zbV9ncHUgKmdwdSwg c3RydWN0IG1zbV9nZW1fc3VibWl0ICpzdWJtaXQsCiAJCX0KIAl9CiAKKwkvKgorCSAqIFdyaXRl IHRoZSByZW5kZXIgbW9kZSB0byBOVUxMICgwKSB0byBpbmRpY2F0ZSB0byB0aGUgQ1AgdGhhdCB0 aGUgSUJzCisJICogYXJlIGRvbmUgcmVuZGVyaW5nIC0gb3RoZXJ3aXNlIGEgbHVja3kgcHJlZW1w dGlvbiB3b3VsZCBzdGFydAorCSAqIHJlcGxheWluZyBmcm9tIHRoZSBsYXN0IGNoZWNrcG9pbnQK KwkgKi8KKwlPVVRfUEtUNyhyaW5nLCBDUF9TRVRfUkVOREVSX01PREUsIDUpOworCU9VVF9SSU5H KHJpbmcsIDApOworCU9VVF9SSU5HKHJpbmcsIDApOworCU9VVF9SSU5HKHJpbmcsIDApOworCU9V VF9SSU5HKHJpbmcsIDApOworCU9VVF9SSU5HKHJpbmcsIDApOworCisJLyogVHVybiBvZmYgSUIg bGV2ZWwgcHJlZW1wdGlvbnMgKi8KKwlPVVRfUEtUNyhyaW5nLCBDUF9ZSUVMRF9FTkFCTEUsIDEp OworCU9VVF9SSU5HKHJpbmcsIDB4MDEpOworCisJLyogV3JpdGUgdGhlIGZlbmNlIHRvIHRoZSBz Y3JhdGNoIHJlZ2lzdGVyICovCiAJT1VUX1BLVDQocmluZywgUkVHX0E1WFhfQ1BfU0NSQVRDSF9S RUcoMiksIDEpOwogCU9VVF9SSU5HKHJpbmcsIHN1Ym1pdC0+ZmVuY2UtPnNlcW5vKTsKIAorCS8q CisJICogRXhlY3V0ZSBhIENBQ0hFX0ZMVVNIX1RTIGV2ZW50LiBUaGlzIHdpbGwgZW5zdXJlIHRo YXQgdGhlCisJICogdGltZXN0YW1wIGlzIHdyaXR0ZW4gdG8gdGhlIG1lbW9yeSBhbmQgdGhlbiB0 cmlnZ2VycyB0aGUgaW50ZXJydXB0CisJICovCiAJT1VUX1BLVDcocmluZywgQ1BfRVZFTlRfV1JJ VEUsIDQpOwogCU9VVF9SSU5HKHJpbmcsIENBQ0hFX0ZMVVNIX1RTIHwgKDEgPDwgMzEpKTsKIAlP VVRfUklORyhyaW5nLCBsb3dlcl8zMl9iaXRzKHJibWVtcHRyKGFkcmVub19ncHUsIHJpbmctPmlk LCBmZW5jZSkpKTsKIAlPVVRfUklORyhyaW5nLCB1cHBlcl8zMl9iaXRzKHJibWVtcHRyKGFkcmVu b19ncHUsIHJpbmctPmlkLCBmZW5jZSkpKTsKIAlPVVRfUklORyhyaW5nLCBzdWJtaXQtPmZlbmNl LT5zZXFubyk7CiAKLQlncHUtPmZ1bmNzLT5mbHVzaChncHUsIHJpbmcpOworCS8qIFlpZWxkIHRo ZSBmbG9vciBvbiBjb21tYW5kIGNvbXBsZXRpb24gKi8KKwlPVVRfUEtUNyhyaW5nLCBDUF9DT05U RVhUX1NXSVRDSF9ZSUVMRCwgNCk7CisJLyoKKwkgKiBJZiBkd29yZFsyOjFdIGFyZSBub24gemVy bywgdGhleSBzcGVjaWZ5IGFuIGFkZHJlc3MgZm9yIHRoZSBDUCB0bworCSAqIHdyaXRlIHRoZSB2 YWx1ZSBvZiBkd29yZFszXSB0byBvbiBwcmVlbXB0aW9uIGNvbXBsZXRlLiBXcml0ZSAwIHRvCisJ ICogc2tpcCB0aGUgd3JpdGUKKwkgKi8KKwlPVVRfUklORyhyaW5nLCAweDAwKTsKKwlPVVRfUklO RyhyaW5nLCAweDAwKTsKKwkvKiBEYXRhIHZhbHVlIC0gbm90IHVzZWQgaWYgdGhlIGFkZHJlc3Mg YWJvdmUgaXMgMCAqLworCU9VVF9SSU5HKHJpbmcsIDB4MDEpOworCS8qIFNldCBiaXQgMCB0byB0 cmlnZ2VyIGFuIGludGVycnVwdCBvbiBwcmVlbXB0IGNvbXBsZXRlICovCisJT1VUX1JJTkcocmlu ZywgMHgwMSk7CisKKwlhNXh4X2ZsdXNoKGdwdSwgcmluZyk7CisKKwkvKiBDaGVjayB0byBzZWUg aWYgd2UgbmVlZCB0byBzdGFydCBwcmVlbXB0aW9uICovCisJYTV4eF9wcmVlbXB0X3RyaWdnZXIo Z3B1KTsKIH0KIAogc3RydWN0IGE1eHhfaHdjZyB7CkBAIC0zOTMsNiArNDgzLDUwIEBAIHN0YXRp YyBpbnQgYTV4eF9tZV9pbml0KHN0cnVjdCBtc21fZ3B1ICpncHUpCiAJcmV0dXJuIGE1eHhfaWRs ZShncHUsIHJpbmcpID8gMCA6IC1FSU5WQUw7CiB9CiAKK3N0YXRpYyBpbnQgYTV4eF9wcmVlbXB0 X3N0YXJ0KHN0cnVjdCBtc21fZ3B1ICpncHUpCit7CisJc3RydWN0IGFkcmVub19ncHUgKmFkcmVu b19ncHUgPSB0b19hZHJlbm9fZ3B1KGdwdSk7CisJc3RydWN0IGE1eHhfZ3B1ICphNXh4X2dwdSA9 IHRvX2E1eHhfZ3B1KGFkcmVub19ncHUpOworCXN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZyA9 IGdwdS0+cmJbMF07CisKKwlpZiAoZ3B1LT5ucl9yaW5ncyA9PSAxKQorCQlyZXR1cm4gMDsKKwor CS8qIFR1cm4gb2ZmIHByb3RlY3RlZCBtb2RlIHRvIHdyaXRlIHRvIHNwZWNpYWwgcmVnaXN0ZXJz ICovCisJT1VUX1BLVDcocmluZywgQ1BfU0VUX1BST1RFQ1RFRF9NT0RFLCAxKTsKKwlPVVRfUklO RyhyaW5nLCAwKTsKKworCS8qIFNldCB0aGUgc2F2ZSBwcmVlbXB0aW9uIHJlY29yZCBmb3IgdGhl IHJpbmcvY29tbWFuZCAqLworCU9VVF9QS1Q0KHJpbmcsIFJFR19BNVhYX0NQX0NPTlRFWFRfU1dJ VENIX1NBVkVfQUREUl9MTywgMik7CisJT1VUX1JJTkcocmluZywgbG93ZXJfMzJfYml0cyhhNXh4 X2dwdS0+cHJlZW1wdF9pb3ZhW3JpbmctPmlkXSkpOworCU9VVF9SSU5HKHJpbmcsIHVwcGVyXzMy X2JpdHMoYTV4eF9ncHUtPnByZWVtcHRfaW92YVtyaW5nLT5pZF0pKTsKKworCS8qIFR1cm4gYmFj ayBvbiBwcm90ZWN0ZWQgbW9kZSAqLworCU9VVF9QS1Q3KHJpbmcsIENQX1NFVF9QUk9URUNURURf TU9ERSwgMSk7CisJT1VUX1JJTkcocmluZywgMSk7CisKKwlPVVRfUEtUNyhyaW5nLCBDUF9QUkVF TVBUX0VOQUJMRV9HTE9CQUwsIDEpOworCU9VVF9SSU5HKHJpbmcsIDB4MDApOworCisJT1VUX1BL VDcocmluZywgQ1BfUFJFRU1QVF9FTkFCTEVfTE9DQUwsIDEpOworCU9VVF9SSU5HKHJpbmcsIDB4 MDEpOworCisJT1VUX1BLVDcocmluZywgQ1BfWUlFTERfRU5BQkxFLCAxKTsKKwlPVVRfUklORyhy aW5nLCAweDAxKTsKKworCS8qIFlpZWxkIHRoZSBmbG9vciBvbiBjb21tYW5kIGNvbXBsZXRpb24g Ki8KKwlPVVRfUEtUNyhyaW5nLCBDUF9DT05URVhUX1NXSVRDSF9ZSUVMRCwgNCk7CisJT1VUX1JJ TkcocmluZywgMHgwMCk7CisJT1VUX1JJTkcocmluZywgMHgwMCk7CisJT1VUX1JJTkcocmluZywg MHgwMSk7CisJT1VUX1JJTkcocmluZywgMHgwMSk7CisKKwlncHUtPmZ1bmNzLT5mbHVzaChncHUs IHJpbmcpOworCisJcmV0dXJuIGE1eHhfaWRsZShncHUsIHJpbmcpID8gMCA6IC1FSU5WQUw7Cit9 CisKKwogc3RhdGljIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqYTV4eF91Y29kZV9sb2FkX2JvKHN0 cnVjdCBtc21fZ3B1ICpncHUsCiAJCWNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncsIHU2NCAqaW92 YSkKIHsKQEAgLTUyNSw2ICs2NTksNyBAQCBzdGF0aWMgaW50IGE1eHhfemFwX3NoYWRlcl9pbml0 KHN0cnVjdCBtc21fZ3B1ICpncHUpCiAJICBBNVhYX1JCQk1fSU5UXzBfTUFTS19SQkJNX0VUU19N U19USU1FT1VUIHwgXAogCSAgQTVYWF9SQkJNX0lOVF8wX01BU0tfUkJCTV9BVEJfQVNZTkNfT1ZF UkZMT1cgfCBcCiAJICBBNVhYX1JCQk1fSU5UXzBfTUFTS19DUF9IV19FUlJPUiB8IFwKKwkgIEE1 WFhfUkJCTV9JTlRfMF9NQVNLX0NQX1NXIHwgXAogCSAgQTVYWF9SQkJNX0lOVF8wX01BU0tfQ1Bf Q0FDSEVfRkxVU0hfVFMgfCBcCiAJICBBNVhYX1JCQk1fSU5UXzBfTUFTS19VQ0hFX09PQl9BQ0NF U1MgfCBcCiAJICBBNVhYX1JCQk1fSU5UXzBfTUFTS19HUE1VX1ZPTFRBR0VfRFJPT1ApCkBAIC02 NzIsNiArODA3LDggQEAgc3RhdGljIGludCBhNXh4X2h3X2luaXQoc3RydWN0IG1zbV9ncHUgKmdw dSkKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCisJYTV4eF9wcmVlbXB0X2h3X2luaXQoZ3B1 KTsKKwogCXJldCA9IGE1eHhfdWNvZGVfaW5pdChncHUpOwogCWlmIChyZXQpCiAJCXJldHVybiBy ZXQ7CkBAIC03MjQsNiArODYxLDkgQEAgc3RhdGljIGludCBhNXh4X2h3X2luaXQoc3RydWN0IG1z bV9ncHUgKmdwdSkKIAkJZ3B1X3dyaXRlKGdwdSwgUkVHX0E1WFhfUkJCTV9TRUNWSURfVFJVU1Rf Q05UTCwgMHgwKTsKIAl9CiAKKwkvKiBMYXN0IHN0ZXAgLSB5aWVsZCB0aGUgcmluZ2J1ZmZlciAq LworCWE1eHhfcHJlZW1wdF9zdGFydChncHUpOworCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTc1NCw2 ICs4OTQsOCBAQCBzdGF0aWMgdm9pZCBhNXh4X2Rlc3Ryb3koc3RydWN0IG1zbV9ncHUgKmdwdSkK IAogCURCRygiJXMiLCBncHUtPm5hbWUpOwogCisJYTV4eF9wcmVlbXB0X2ZpbmkoZ3B1KTsKKwog CWlmIChhNXh4X2dwdS0+cG00X2JvKSB7CiAJCWlmIChhNXh4X2dwdS0+cG00X2lvdmEpCiAJCQlt c21fZ2VtX3B1dF9pb3ZhKGE1eHhfZ3B1LT5wbTRfYm8sIGdwdS0+YXNwYWNlKTsKQEAgLTc5MSw2 ICs5MzMsMTQgQEAgc3RhdGljIGlubGluZSBib29sIF9hNXh4X2NoZWNrX2lkbGUoc3RydWN0IG1z bV9ncHUgKmdwdSkKIAogYm9vbCBhNXh4X2lkbGUoc3RydWN0IG1zbV9ncHUgKmdwdSwgc3RydWN0 IG1zbV9yaW5nYnVmZmVyICpyaW5nKQogeworCXN0cnVjdCBhZHJlbm9fZ3B1ICphZHJlbm9fZ3B1 ID0gdG9fYWRyZW5vX2dwdShncHUpOworCXN0cnVjdCBhNXh4X2dwdSAqYTV4eF9ncHUgPSB0b19h NXh4X2dwdShhZHJlbm9fZ3B1KTsKKworCWlmIChyaW5nICE9IGE1eHhfZ3B1LT5jdXJfcmluZykg eworCQlXQVJOKDEsICJUcmllZCB0byBpZGxlIGEgbm9uLWN1cnJlbnQgcmluZ2J1ZmZlclxuIik7 CisJCXJldHVybiBmYWxzZTsKKwl9CisKIAkvKiB3YWl0IGZvciBDUCB0byBkcmFpbiByaW5nYnVm ZmVyOiAqLwogCWlmICghYWRyZW5vX2lkbGUoZ3B1LCByaW5nKSkKIAkJcmV0dXJuIGZhbHNlOwpA QCAtOTYyLDggKzExMTIsMTMgQEAgc3RhdGljIGlycXJldHVybl90IGE1eHhfaXJxKHN0cnVjdCBt c21fZ3B1ICpncHUpCiAJaWYgKHN0YXR1cyAmIEE1WFhfUkJCTV9JTlRfMF9NQVNLX0dQTVVfVk9M VEFHRV9EUk9PUCkKIAkJYTV4eF9ncG11X2Vycl9pcnEoZ3B1KTsKIAotCWlmIChzdGF0dXMgJiBB NVhYX1JCQk1fSU5UXzBfTUFTS19DUF9DQUNIRV9GTFVTSF9UUykKKwlpZiAoc3RhdHVzICYgQTVY WF9SQkJNX0lOVF8wX01BU0tfQ1BfQ0FDSEVfRkxVU0hfVFMpIHsKKwkJYTV4eF9wcmVlbXB0X3Ry aWdnZXIoZ3B1KTsKIAkJbXNtX2dwdV9yZXRpcmUoZ3B1KTsKKwl9CisKKwlpZiAoc3RhdHVzICYg QTVYWF9SQkJNX0lOVF8wX01BU0tfQ1BfU1cpCisJCWE1eHhfcHJlZW1wdF9pcnEoZ3B1KTsKIAog CXJldHVybiBJUlFfSEFORExFRDsKIH0KQEAgLTEwOTEsNiArMTI0NiwxNCBAQCBzdGF0aWMgdm9p ZCBhNXh4X3Nob3coc3RydWN0IG1zbV9ncHUgKmdwdSwgc3RydWN0IHNlcV9maWxlICptKQogfQog I2VuZGlmCiAKK3N0YXRpYyBzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKmE1eHhfYWN0aXZlX3Jpbmco c3RydWN0IG1zbV9ncHUgKmdwdSkKK3sKKwlzdHJ1Y3QgYWRyZW5vX2dwdSAqYWRyZW5vX2dwdSA9 IHRvX2FkcmVub19ncHUoZ3B1KTsKKwlzdHJ1Y3QgYTV4eF9ncHUgKmE1eHhfZ3B1ID0gdG9fYTV4 eF9ncHUoYWRyZW5vX2dwdSk7CisKKwlyZXR1cm4gYTV4eF9ncHUtPmN1cl9yaW5nOworfQorCiBz dGF0aWMgY29uc3Qgc3RydWN0IGFkcmVub19ncHVfZnVuY3MgZnVuY3MgPSB7CiAJLmJhc2UgPSB7 CiAJCS5nZXRfcGFyYW0gPSBhZHJlbm9fZ2V0X3BhcmFtLApAQCAtMTEwMCw4ICsxMjYzLDggQEAg c3RhdGljIHZvaWQgYTV4eF9zaG93KHN0cnVjdCBtc21fZ3B1ICpncHUsIHN0cnVjdCBzZXFfZmls ZSAqbSkKIAkJLnJlY292ZXIgPSBhNXh4X3JlY292ZXIsCiAJCS5sYXN0X2ZlbmNlID0gYWRyZW5v X2xhc3RfZmVuY2UsCiAJCS5zdWJtaXQgPSBhNXh4X3N1Ym1pdCwKLQkJLmZsdXNoID0gYWRyZW5v X2ZsdXNoLAotCQkuYWN0aXZlX3JpbmcgPSBhZHJlbm9fYWN0aXZlX3JpbmcsCisJCS5mbHVzaCA9 IGE1eHhfZmx1c2gsCisJCS5hY3RpdmVfcmluZyA9IGE1eHhfYWN0aXZlX3JpbmcsCiAJCS5pcnEg PSBhNXh4X2lycSwKIAkJLmRlc3Ryb3kgPSBhNXh4X2Rlc3Ryb3ksCiAJCS5zaG93ID0gYTV4eF9z aG93LApAQCAtMTEzNiw3ICsxMjk5LDcgQEAgc3RydWN0IG1zbV9ncHUgKmE1eHhfZ3B1X2luaXQo c3RydWN0IGRybV9kZXZpY2UgKmRldikKIAogCWE1eHhfZ3B1LT5sbV9sZWFrYWdlID0gMHg0RTAw MUE7CiAKLQlyZXQgPSBhZHJlbm9fZ3B1X2luaXQoZGV2LCBwZGV2LCBhZHJlbm9fZ3B1LCAmZnVu Y3MsIDEpOworCXJldCA9IGFkcmVub19ncHVfaW5pdChkZXYsIHBkZXYsIGFkcmVub19ncHUsICZm dW5jcywgNCk7CiAJaWYgKHJldCkgewogCQlhNXh4X2Rlc3Ryb3koJihhNXh4X2dwdS0+YmFzZS5i YXNlKSk7CiAJCXJldHVybiBFUlJfUFRSKHJldCk7CkBAIC0xMTQ1LDUgKzEzMDgsOCBAQCBzdHJ1 Y3QgbXNtX2dwdSAqYTV4eF9ncHVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCWlmIChn cHUtPmFzcGFjZSkKIAkJbXNtX21tdV9zZXRfZmF1bHRfaGFuZGxlcihncHUtPmFzcGFjZS0+bW11 LCBncHUsIGE1eHhfZmF1bHRfaGFuZGxlcik7CiAKKwkvKiBTZXQgdXAgdGhlIHByZWVtcHRpb24g c3BlY2lmaWMgYml0cyBhbmQgcGllY2VzIGZvciBlYWNoIHJpbmdidWZmZXIgKi8KKwlhNXh4X3By ZWVtcHRfaW5pdChncHUpOworCiAJcmV0dXJuIGdwdTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9tc20vYWRyZW5vL2E1eHhfZ3B1LmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVu by9hNXh4X2dwdS5oCmluZGV4IDQwNWI1NjMuLmYwNDJhNzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vYWRyZW5vL2E1eHhfZ3B1LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9h ZHJlbm8vYTV4eF9ncHUuaApAQCAtMSw0ICsxLDQgQEAKLS8qIENvcHlyaWdodCAoYykgMjAxNiBU aGUgTGludXggRm91bmRhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8qIENvcHlyaWdodCAo YykgMjAxNi0yMDE3IFRoZSBMaW51eCBGb3VuZGF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog ICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhbmQKQEAgLTM2LDEwICszNiw5OCBAQCBzdHJ1 Y3QgYTV4eF9ncHUgewogCXVpbnQzMl90IGdwbXVfZHdvcmRzOwogCiAJdWludDMyX3QgbG1fbGVh a2FnZTsKKworCXN0cnVjdCBtc21fcmluZ2J1ZmZlciAqY3VyX3Jpbmc7CisJc3RydWN0IG1zbV9y aW5nYnVmZmVyICpuZXh0X3Jpbmc7CisKKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKnByZWVtcHRf Ym9bTVNNX0dQVV9NQVhfUklOR1NdOworCXN0cnVjdCBhNXh4X3ByZWVtcHRfcmVjb3JkICpwcmVl bXB0W01TTV9HUFVfTUFYX1JJTkdTXTsKKwl1aW50NjRfdCBwcmVlbXB0X2lvdmFbTVNNX0dQVV9N QVhfUklOR1NdOworCisJYXRvbWljX3QgcHJlZW1wdF9zdGF0ZTsKKwlzdHJ1Y3QgdGltZXJfbGlz dCBwcmVlbXB0X3RpbWVyOworCiB9OwogCiAjZGVmaW5lIHRvX2E1eHhfZ3B1KHgpIGNvbnRhaW5l cl9vZih4LCBzdHJ1Y3QgYTV4eF9ncHUsIGJhc2UpCiAKKy8qCisgKiBJbiBvcmRlciB0byBkbyBs b2NrbGVzcyBwcmVlbXB0aW9uIHdlIHVzZSBhIHNpbXBsZSBzdGF0ZSBtYWNoaW5lIHRvIHByb2dy ZXNzCisgKiB0aHJvdWdoIHRoZSBwcm9jZXNzLgorICoKKyAqIFBSRUVNUFRfTk9ORSAtIG5vIHBy ZWVtcHRpb24gaW4gcHJvZ3Jlc3MuICBOZXh0IHN0YXRlIFNUQVJULgorICogUFJFRU1QVF9TVEFS VCAtIFRoZSB0cmlnZ2VyIGlzIGV2YXVsYXRpbmcgaWYgcHJlZW1wdGlvbiBpcyBwb3NzaWJsZS4g TmV4dAorICogc3RhdGVzOiBUUklHR0VSRUQsIE5PTkUKKyAqIFBSRUVNUFRfVFJJR0dFUkVEOiBB IHByZWVtcHRpb24gaGFzIGJlZW4gZXhlY3V0ZWQgb24gdGhlIGhhcmR3YXJlLiBOZXh0CisgKiBz dGF0ZXM6IEZBVUxURUQsIFBFTkRJTkcKKyAqIFBSRUVNUFRfRkFVTFRFRDogQSBwcmVlbXB0aW9u IHRpbWVkIG91dCAobmV2ZXIgY29tcGxldGVkKS4gVGhpcyB3aWxsIHRyaWdnZXIKKyAqIHJlY292 ZXJ5LiAgTmV4dCBzdGF0ZTogTi9BCisgKiBQUkVFTVBUX1BFTkRJTkc6IFByZWVtcHRpb24gY29t cGxldGUgaW50ZXJydXB0IGZpcmVkIC0gdGhlIGNhbGxiYWNrIGlzCisgKiBjaGVja2luZyB0aGUg c3VjY2VzcyBvZiB0aGUgb3BlcmF0aW9uLiBOZXh0IHN0YXRlOiBGQVVMVEVELCBOT05FLgorICov CisKK2VudW0gcHJlZW1wdF9zdGF0ZSB7CisJUFJFRU1QVF9OT05FID0gMCwKKwlQUkVFTVBUX1NU QVJULAorCVBSRUVNUFRfVFJJR0dFUkVELAorCVBSRUVNUFRfRkFVTFRFRCwKKwlQUkVFTVBUX1BF TkRJTkcsCit9OworCisvKgorICogc3RydWN0IGE1eHhfcHJlZW1wdF9yZWNvcmQgaXMgYSBzaGFy ZWQgYnVmZmVyIGJldHdlZW4gdGhlIG1pY3JvY29kZSBhbmQgdGhlCisgKiBDUFUgdG8gc3RvcmUg dGhlIHN0YXRlIGZvciBwcmVlbXB0aW9uLiBUaGUgcmVjb3JkIGl0c2VsZiBpcyBtdWNoIGxhcmdl cgorICogKDY0aykgYnV0IG1vc3Qgb2YgdGhhdCBpcyB1c2VkIGJ5IHRoZSBDUCBmb3Igc3RvcmFn ZS4KKyAqCisgKiBUaGVyZSBpcyBhIHByZWVtcHRpb24gcmVjb3JkIGFzc2lnbmVkIHBlciByaW5n YnVmZmVyLiBXaGVuIHRoZSBDUFUgdHJpZ2dlcnMgYQorICogcHJlZW1wdGlvbiwgaXQgZmlsbHMg b3V0IHRoZSByZWNvcmQgd2l0aCB0aGUgdXNlZnVsIGluZm9ybWF0aW9uICh3cHRyLCByaW5nCisg KiBiYXNlLCBldGMpIGFuZCB0aGUgbWljcm9jb2RlIHVzZXMgdGhhdCBpbmZvcm1hdGlvbiB0byBz ZXQgdXAgdGhlIENQIGZvbGxvd2luZworICogdGhlIHByZWVtcHRpb24uICBXaGVuIGEgcmluZyBp cyBzd2l0Y2hlZCBvdXQsIHRoZSBDUCB3aWxsIHNhdmUgdGhlIHJpbmdidWZmZXIKKyAqIHN0YXRl IGJhY2sgdG8gdGhlIHJlY29yZC4gSW4gdGhpcyB3YXksIG9uY2UgdGhlIHJlY29yZHMgYXJlIHBy b3Blcmx5IHNldCB1cAorICogdGhlIENQVSBjYW4gcXVpY2tseSBzd2l0Y2ggYmFjayBhbmQgZm9y dGggYmV0d2VlbiByaW5nYnVmZmVycyBieSBvbmx5CisgKiB1cGRhdGluZyBhIGZldyByZWdpc3Rl cnMgKG9mdGVuIG9ubHkgdGhlIHdwdHIpLgorICoKKyAqIFRoZXNlIGFyZSB0aGUgQ1BVIGF3YXJl IHJlZ2lzdGVycyBpbiB0aGUgcmVjb3JkOgorICogQG1hZ2ljOiBNdXN0IGFsd2F5cyBiZSAweDI3 QzRCQUZDCisgKiBAaW5mbzogVHlwZSBvZiB0aGUgcmVjb3JkIC0gd3JpdHRlbiAwIGJ5IHRoZSBD UFUsIHVwZGF0ZWQgYnkgdGhlIENQCisgKiBAZGF0YTogRGF0YSBmaWVsZCBmcm9tIFNFVF9SRU5E RVJfTU9ERSBvciBhIGNoZWNrcG9pbnQuIFdyaXR0ZW4gYW5kIHVzZWQgYnkKKyAqIHRoZSBDUAor ICogQGNudGw6IFZhbHVlIG9mIFJCX0NOVEwgd3JpdHRlbiBieSBDUFUsIHNhdmUvcmVzdG9yZWQg YnkgQ1AKKyAqIEBycHRyOiBWYWx1ZSBvZiBSQl9SUFRSIHdyaXR0ZW4gYnkgQ1BVLCBzYXZlL3Jl c3RvcmVkIGJ5IENQCisgKiBAd3B0cjogVmFsdWUgb2YgUkJfV1BUUiB3cml0dGVuIGJ5IENQVSwg c2F2ZS9yZXN0b3JlZCBieSBDUAorICogQHJwdHJfYWRkcjogVmFsdWUgb2YgUkJfUlBUUl9BRERS IHdyaXR0ZW4gYnkgQ1BVLCBzYXZlL3Jlc3RvcmVkIGJ5IENQCisgKiBAcmJhc2U6IFZhbHVlIG9m IFJCX0JBU0Ugd3JpdHRlbiBieSBDUFUsIHNhdmUvcmVzdG9yZWQgYnkgQ1AKKyAqIEBjb3VudGVy OiBHUFUgYWRkcmVzcyBvZiB0aGUgc3RvcmFnZSBhcmVhIGZvciB0aGUgcGVyZm9ybWFuY2UgY291 bnRlcnMKKyAqLworc3RydWN0IGE1eHhfcHJlZW1wdF9yZWNvcmQgeworCXVpbnQzMl90IG1hZ2lj OworCXVpbnQzMl90IGluZm87CisJdWludDMyX3QgZGF0YTsKKwl1aW50MzJfdCBjbnRsOworCXVp bnQzMl90IHJwdHI7CisJdWludDMyX3Qgd3B0cjsKKwl1aW50NjRfdCBycHRyX2FkZHI7CisJdWlu dDY0X3QgcmJhc2U7CisJdWludDY0X3QgY291bnRlcjsKK307CisKKy8qIE1hZ2ljIGlkZW50aWZp ZXIgZm9yIHRoZSBwcmVlbXB0aW9uIHJlY29yZCAqLworI2RlZmluZSBBNVhYX1BSRUVNUFRfUkVD T1JEX01BR0lDIDB4MjdDNEJBRkNVTAorCisvKgorICogRXZlbiB0aG91Z2ggdGhlIHN0cnVjdHVy ZSBhYm92ZSBpcyBvbmx5IGEgZmV3IGJ5dGVzLCB3ZSBuZWVkIGEgZnVsbCA2NGsgdG8KKyAqIHN0 b3JlIHRoZSBlbnRpcmUgcHJlZW1wdGlvbiByZWNvcmQgZnJvbSB0aGUgQ1AKKyAqLworI2RlZmlu ZSBBNVhYX1BSRUVNUFRfUkVDT1JEX1NJWkUgKDY0ICogMTAyNCkKKworLyoKKyAqIFRoZSBwcmVl bXB0aW9uIGNvdW50ZXIgYmxvY2sgaXMgYSBzdG9yYWdlIGFyZWEgZm9yIHRoZSB2YWx1ZSBvZiB0 aGUKKyAqIHByZWVtcHRpb24gY291bnRlcnMgdGhhdCBhcmUgc2F2ZWQgaW1tZWRpYXRlbHkgYmVm b3JlIGNvbnRleHQgc3dpdGNoLiBXZQorICogYXBwZW5kIGl0IG9uIHRvIHRoZSBlbmQgb2YgdGhl IGFsbG9jYWR0aW9uIGZvciB0aGUgcHJlZW1wdGlvbiByZWNvcmQuCisgKi8KKyNkZWZpbmUgQTVY WF9QUkVFTVBUX0NPVU5URVJfU0laRSAoMTYgKiA0KQorCisKIGludCBhNXh4X3Bvd2VyX2luaXQo c3RydWN0IG1zbV9ncHUgKmdwdSk7CiB2b2lkIGE1eHhfZ3BtdV91Y29kZV9pbml0KHN0cnVjdCBt c21fZ3B1ICpncHUpOwogCkBAIC01OCw0ICsxNDYsMTYgQEAgc3RhdGljIGlubGluZSBpbnQgc3Bp bl91c2VjcyhzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCB1aW50MzJfdCB1c2VjcywKIAogYm9vbCBhNXh4 X2lkbGUoc3RydWN0IG1zbV9ncHUgKmdwdSwgc3RydWN0IG1zbV9yaW5nYnVmZmVyICpyaW5nKTsK IAordm9pZCBhNXh4X3ByZWVtcHRfaW5pdChzdHJ1Y3QgbXNtX2dwdSAqZ3B1KTsKK3ZvaWQgYTV4 eF9wcmVlbXB0X2h3X2luaXQoc3RydWN0IG1zbV9ncHUgKmdwdSk7Cit2b2lkIGE1eHhfcHJlZW1w dF90cmlnZ2VyKHN0cnVjdCBtc21fZ3B1ICpncHUpOwordm9pZCBhNXh4X3ByZWVtcHRfaXJxKHN0 cnVjdCBtc21fZ3B1ICpncHUpOwordm9pZCBhNXh4X3ByZWVtcHRfZmluaShzdHJ1Y3QgbXNtX2dw dSAqZ3B1KTsKKworLyogUmV0dXJuIHRydWUgaWYgd2UgYXJlIGluIGEgcHJlZW1wdCBzdGF0ZSAq Lworc3RhdGljIGlubGluZSBib29sIGE1eHhfaW5fcHJlZW1wdChzdHJ1Y3QgYTV4eF9ncHUgKmE1 eHhfZ3B1KQoreworCXJldHVybiAhKGF0b21pY19yZWFkKCZhNXh4X2dwdS0+cHJlZW1wdF9zdGF0 ZSkgPT0gUFJFRU1QVF9OT05FKTsKK30KKwogI2VuZGlmIC8qIF9fQTVYWF9HUFVfSF9fICovCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X3ByZWVtcHQuYyBiL2Ry aXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E1eHhfcHJlZW1wdC5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjU4MmJhOWIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dw dS9kcm0vbXNtL2FkcmVuby9hNXh4X3ByZWVtcHQuYwpAQCAtMCwwICsxLDM0NSBAQAorLyogQ29w eXJpZ2h0IChjKSAyMDE3IFRoZSBMaW51eCBGb3VuZGF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVk LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhbmQKKyAqIG9ubHkgdmVyc2lvbiAyIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisgKgorICovCisKKyNpbmNsdWRlICJtc21fZ2VtLmgiCisjaW5jbHVkZSAi YTV4eF9ncHUuaCIKKworc3RhdGljIHZvaWQgKmFsbG9jX2tlcm5lbF9ibyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZHJtLCBzdHJ1Y3QgbXNtX2dwdSAqZ3B1LAorCQlzaXplX3Qgc2l6ZSwgdWludDMyX3Qg ZmxhZ3MsIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqKmJvLAorCQl1NjQgKmlvdmEpCit7CisJc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpfYm87CisJdTY0IF9pb3ZhOworCXZvaWQgKnB0cjsKKwlpbnQg cmV0OworCisJbXV0ZXhfbG9jaygmZHJtLT5zdHJ1Y3RfbXV0ZXgpOworCV9ibyA9IG1zbV9nZW1f bmV3KGRybSwgc2l6ZSwgZmxhZ3MpOworCW11dGV4X3VubG9jaygmZHJtLT5zdHJ1Y3RfbXV0ZXgp OworCisJaWYgKElTX0VSUihfYm8pKQorCQlyZXR1cm4gX2JvOworCisJcmV0ID0gbXNtX2dlbV9n ZXRfaW92YShfYm8sIGdwdS0+YXNwYWNlLCAmX2lvdmEpOworCWlmIChyZXQpCisJCWdvdG8gb3V0 OworCisJcHRyID0gbXNtX2dlbV9nZXRfdmFkZHIoX2JvKTsKKwlpZiAoIXB0cikgeworCQlyZXQg PSAtRU5PTUVNOworCQlnb3RvIG91dDsKKwl9CisKKwlpZiAoYm8pCisJCSpibyA9IF9ibzsKKwlp ZiAoaW92YSkKKwkJKmlvdmEgPSBfaW92YTsKKworCXJldHVybiBwdHI7CitvdXQ6CisJZHJtX2dl bV9vYmplY3RfdW5yZWZlcmVuY2VfdW5sb2NrZWQoX2JvKTsKKwlyZXR1cm4gRVJSX1BUUihyZXQp OworfQorCisvKgorICogVHJ5IHRvIHRyYW5zaXRpb24gdGhlIHByZWVtcHRpb24gc3RhdGUgZnJv bSBvbGQgdG8gbmV3LiBSZXR1cm4KKyAqIHRydWUgb24gc3VjY2VzcyBvciBmYWxzZSBpZiB0aGUg b3JpZ2luYWwgc3RhdGUgd2Fzbid0ICdvbGQnCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbCB0cnlf cHJlZW1wdF9zdGF0ZShzdHJ1Y3QgYTV4eF9ncHUgKmE1eHhfZ3B1LAorCQllbnVtIHByZWVtcHRf c3RhdGUgb2xkLCBlbnVtIHByZWVtcHRfc3RhdGUgbmV3KQoreworCWVudW0gcHJlZW1wdF9zdGF0 ZSBjdXIgPSBhdG9taWNfY21weGNoZygmYTV4eF9ncHUtPnByZWVtcHRfc3RhdGUsCisJCW9sZCwg bmV3KTsKKworCXJldHVybiAoY3VyID09IG9sZCk7Cit9CisKKy8qCisgKiBGb3JjZSB0aGUgcHJl ZW1wdGlvbiBzdGF0ZSB0byB0aGUgc3BlY2lmaWVkIHN0YXRlLiAgVGhpcyBpcyB1c2VkIGluIGNh c2VzCisgKiB3aGVyZSB0aGUgY3VycmVudCBzdGF0ZSBpcyBrbm93biBhbmQgd29uJ3QgY2hhbmdl CisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfcHJlZW1wdF9zdGF0ZShzdHJ1Y3QgYTV4eF9n cHUgKmdwdSwKKwkJZW51bSBwcmVlbXB0X3N0YXRlIG5ldykKK3sKKwkvKgorCSAqIHByZWVtcHRf c3RhdGUgbWF5IGJlIHJlYWQgYnkgb3RoZXIgY29yZXMgdHJ5aW5nIHRvIHRyaWdnZXIgYQorCSAq IHByZWVtcHRpb24gb3IgaW4gdGhlIGludGVycnVwdCBoYW5kbGVyIHNvIGJhcnJpZXJzIGFyZSBu ZWVkZWQKKwkgKiBiZWZvcmUuLi4KKwkgKi8KKwlzbXBfbWJfX2JlZm9yZV9hdG9taWMoKTsKKwlh dG9taWNfc2V0KCZncHUtPnByZWVtcHRfc3RhdGUsIG5ldyk7CisJLyogLi4uIGFuZCBhZnRlciov CisJc21wX21iX19hZnRlcl9hdG9taWMoKTsKK30KKworLyogV3JpdGUgdGhlIG1vc3QgcmVjZW50 IHdwdHIgZm9yIHRoZSBnaXZlbiByaW5nIGludG8gdGhlIGhhcmR3YXJlICovCitzdGF0aWMgaW5s aW5lIHZvaWQgdXBkYXRlX3dwdHIoc3RydWN0IG1zbV9ncHUgKmdwdSwgc3RydWN0IG1zbV9yaW5n YnVmZmVyICpyaW5nKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJdWludDMyX3Qgd3B0cjsK KworCWlmICghcmluZykKKwkJcmV0dXJuOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnJpbmctPmxv Y2ssIGZsYWdzKTsKKwl3cHRyID0gZ2V0X3dwdHIocmluZyk7CisJc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmcmluZy0+bG9jaywgZmxhZ3MpOworCisJZ3B1X3dyaXRlKGdwdSwgUkVHX0E1WFhfQ1Bf UkJfV1BUUiwgd3B0cik7Cit9CisKKy8qIFJldHVybiB0aGUgaGlnaGVzdCBwcmlvcml0eSByaW5n YnVmZmVyIHdpdGggc29tZXRoaW5nIGluIGl0ICovCitzdGF0aWMgc3RydWN0IG1zbV9yaW5nYnVm ZmVyICpnZXRfbmV4dF9yaW5nKHN0cnVjdCBtc21fZ3B1ICpncHUpCit7CisJc3RydWN0IGFkcmVu b19ncHUgKmFkcmVub19ncHUgPSB0b19hZHJlbm9fZ3B1KGdwdSk7CisJdW5zaWduZWQgbG9uZyBm bGFnczsKKwlpbnQgaTsKKworCWZvciAoaSA9IGdwdS0+bnJfcmluZ3MgLSAxOyBpID49IDA7IGkt LSkgeworCQlib29sIGVtcHR5OworCQlzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJpbmcgPSBncHUt PnJiW2ldOworCisJCXNwaW5fbG9ja19pcnFzYXZlKCZyaW5nLT5sb2NrLCBmbGFncyk7CisJCWVt cHR5ID0gKGdldF93cHRyKHJpbmcpID09IGFkcmVub19ncHUtPm1lbXB0cnMtPnJwdHJbcmluZy0+ aWRdKTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcmluZy0+bG9jaywgZmxhZ3MpOworCisJ CWlmICghZW1wdHkpCisJCQlyZXR1cm4gcmluZzsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKwor c3RhdGljIHZvaWQgYTV4eF9wcmVlbXB0X3RpbWVyKHVuc2lnbmVkIGxvbmcgZGF0YSkKK3sKKwlz dHJ1Y3QgYTV4eF9ncHUgKmE1eHhfZ3B1ID0gKHN0cnVjdCBhNXh4X2dwdSAqKSBkYXRhOworCXN0 cnVjdCBtc21fZ3B1ICpncHUgPSAmYTV4eF9ncHUtPmJhc2UuYmFzZTsKKwlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gZ3B1LT5kZXY7CisJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRl di0+ZGV2X3ByaXZhdGU7CisKKwlpZiAoIXRyeV9wcmVlbXB0X3N0YXRlKGE1eHhfZ3B1LCBQUkVF TVBUX1RSSUdHRVJFRCwgUFJFRU1QVF9GQVVMVEVEKSkKKwkJcmV0dXJuOworCisJZGV2X2Vycihk ZXYtPmRldiwgIiVzOiBwcmVlbXB0aW9uIHRpbWVkIG91dFxuIiwgZ3B1LT5uYW1lKTsKKwlxdWV1 ZV93b3JrKHByaXYtPndxLCAmZ3B1LT5yZWNvdmVyX3dvcmspOworfQorCisvKiBUcnkgdG8gdHJp Z2dlciBhIHByZWVtcHRpb24gc3dpdGNoICovCit2b2lkIGE1eHhfcHJlZW1wdF90cmlnZ2VyKHN0 cnVjdCBtc21fZ3B1ICpncHUpCit7CisJc3RydWN0IGFkcmVub19ncHUgKmFkcmVub19ncHUgPSB0 b19hZHJlbm9fZ3B1KGdwdSk7CisJc3RydWN0IGE1eHhfZ3B1ICphNXh4X2dwdSA9IHRvX2E1eHhf Z3B1KGFkcmVub19ncHUpOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJc3RydWN0IG1zbV9yaW5n YnVmZmVyICpyaW5nOworCisJaWYgKGdwdS0+bnJfcmluZ3MgPT0gMSkKKwkJcmV0dXJuOworCisJ LyoKKwkgKiBUcnkgdG8gc3RhcnQgcHJlZW1wdGlvbiBieSBtb3ZpbmcgZnJvbSBOT05FIHRvIFNU QVJULiBJZgorCSAqIHVuc3VjY2Vzc2Z1bCwgYSBwcmVlbXB0aW9uIGlzIGFscmVhZHkgaW4gZmxp Z2h0CisJICovCisJaWYgKCF0cnlfcHJlZW1wdF9zdGF0ZShhNXh4X2dwdSwgUFJFRU1QVF9OT05F LCBQUkVFTVBUX1NUQVJUKSkKKwkJcmV0dXJuOworCisJLyogR2V0IHRoZSBuZXh0IHJpbmcgdG8g cHJlZW1wdCB0byAqLworCXJpbmcgPSBnZXRfbmV4dF9yaW5nKGdwdSk7CisKKwkvKgorCSAqIElm IG5vIHJpbmcgaXMgcG9wdWxhdGVkIG9yIHRoZSBoaWdoZXN0IHByaW9yaXR5IHJpbmcgaXMgdGhl IGN1cnJlbnQKKwkgKiBvbmUgZG8gbm90aGluZyBleGNlcHQgdG8gdXBkYXRlIHRoZSB3cHRyIHRv IHRoZSBsYXRlc3QgYW5kIGdyZWF0ZXN0CisJICovCisJaWYgKCFyaW5nIHx8IChhNXh4X2dwdS0+ Y3VyX3JpbmcgPT0gcmluZykpIHsKKwkJdXBkYXRlX3dwdHIoZ3B1LCByaW5nKTsKKworCQkvKiBT ZXQgdGhlIHN0YXRlIGJhY2sgdG8gTk9ORSAqLworCQlzZXRfcHJlZW1wdF9zdGF0ZShhNXh4X2dw dSwgUFJFRU1QVF9OT05FKTsKKwkJcmV0dXJuOworCX0KKworCS8qIE1ha2Ugc3VyZSB0aGUgd3B0 ciBkb2Vzbid0IHVwZGF0ZSB3aGlsZSB3ZSdyZSBpbiBtb3Rpb24gKi8KKwlzcGluX2xvY2tfaXJx c2F2ZSgmcmluZy0+bG9jaywgZmxhZ3MpOworCWE1eHhfZ3B1LT5wcmVlbXB0W3JpbmctPmlkXS0+ d3B0ciA9IGdldF93cHRyKHJpbmcpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnJpbmctPmxv Y2ssIGZsYWdzKTsKKworCS8qIFNldCB0aGUgYWRkcmVzcyBvZiB0aGUgaW5jb21pbmcgcHJlZW1w dGlvbiByZWNvcmQgKi8KKwlncHVfd3JpdGU2NChncHUsIFJFR19BNVhYX0NQX0NPTlRFWFRfU1dJ VENIX1JFU1RPUkVfQUREUl9MTywKKwkJUkVHX0E1WFhfQ1BfQ09OVEVYVF9TV0lUQ0hfUkVTVE9S RV9BRERSX0hJLAorCQlhNXh4X2dwdS0+cHJlZW1wdF9pb3ZhW3JpbmctPmlkXSk7CisKKwlhNXh4 X2dwdS0+bmV4dF9yaW5nID0gcmluZzsKKworCS8qIFN0YXJ0IGEgdGltZXIgdG8gY2F0Y2ggYSBz dHVjayBwcmVlbXB0aW9uICovCisJbW9kX3RpbWVyKCZhNXh4X2dwdS0+cHJlZW1wdF90aW1lciwg amlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoMTAwMDApKTsKKworCS8qIFNldCB0aGUgcHJlZW1w dGlvbiBzdGF0ZSB0byB0cmlnZ2VyZWQgKi8KKwlzZXRfcHJlZW1wdF9zdGF0ZShhNXh4X2dwdSwg UFJFRU1QVF9UUklHR0VSRUQpOworCisJLyogTWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgd3JpdHRl biBiZWZvcmUgaGl0dGluZyB0aGUgYnV0dG9uICovCisJd21iKCk7CisKKwkvKiBBbmQgYWN0dWFs bHkgc3RhcnQgdGhlIHByZWVtcHRpb24gKi8KKwlncHVfd3JpdGUoZ3B1LCBSRUdfQTVYWF9DUF9D T05URVhUX1NXSVRDSF9DTlRMLCAxKTsKK30KKwordm9pZCBhNXh4X3ByZWVtcHRfaXJxKHN0cnVj dCBtc21fZ3B1ICpncHUpCit7CisJdWludDMyX3Qgc3RhdHVzOworCXN0cnVjdCBhZHJlbm9fZ3B1 ICphZHJlbm9fZ3B1ID0gdG9fYWRyZW5vX2dwdShncHUpOworCXN0cnVjdCBhNXh4X2dwdSAqYTV4 eF9ncHUgPSB0b19hNXh4X2dwdShhZHJlbm9fZ3B1KTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gZ3B1LT5kZXY7CisJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7CisKKwlpZiAoIXRyeV9wcmVlbXB0X3N0YXRlKGE1eHhfZ3B1LCBQUkVFTVBUX1RSSUdH RVJFRCwgUFJFRU1QVF9QRU5ESU5HKSkKKwkJcmV0dXJuOworCisJLyogRGVsZXRlIHRoZSBwcmVl bXB0aW9uIHdhdGNoZG9nIHRpbWVyICovCisJZGVsX3RpbWVyKCZhNXh4X2dwdS0+cHJlZW1wdF90 aW1lcik7CisKKwkvKgorCSAqIFRoZSBoYXJkd2FyZSBzaG91bGQgYmUgc2V0dGluZyBDUF9DT05U RVhUX1NXSVRDSF9DTlRMIHRvIHplcm8gYmVmb3JlCisJICogZmlyaW5nIHRoZSBpbnRlcnJ1cHQs IGJ1dCB0aGVyZSBpcyBhIG5vbiB6ZXJvIGNoYW5jZSBvZiBhIGhhcmR3YXJlCisJICogY29uZGl0 aW9uIG9yIGEgc29mdHdhcmUgcmFjZSB0aGF0IGNvdWxkIHNldCBpdCBhZ2FpbiBiZWZvcmUgd2Ug aGF2ZSBhCisJICogY2hhbmNlIHRvIGZpbmlzaC4gSWYgdGhhdCBoYXBwZW5zLCBsb2cgYW5kIGdv IGZvciByZWNvdmVyeQorCSAqLworCXN0YXR1cyA9IGdwdV9yZWFkKGdwdSwgUkVHX0E1WFhfQ1Bf Q09OVEVYVF9TV0lUQ0hfQ05UTCk7CisJaWYgKHVubGlrZWx5KHN0YXR1cykpIHsKKwkJc2V0X3By ZWVtcHRfc3RhdGUoYTV4eF9ncHUsIFBSRUVNUFRfRkFVTFRFRCk7CisJCWRldl9lcnIoZGV2LT5k ZXYsICIlczogUHJlZW1wdGlvbiBmYWlsZWQgdG8gY29tcGxldGVcbiIsCisJCQlncHUtPm5hbWUp OworCQlxdWV1ZV93b3JrKHByaXYtPndxLCAmZ3B1LT5yZWNvdmVyX3dvcmspOworCQlyZXR1cm47 CisJfQorCisJYTV4eF9ncHUtPmN1cl9yaW5nID0gYTV4eF9ncHUtPm5leHRfcmluZzsKKwlhNXh4 X2dwdS0+bmV4dF9yaW5nID0gTlVMTDsKKworCXVwZGF0ZV93cHRyKGdwdSwgYTV4eF9ncHUtPmN1 cl9yaW5nKTsKKworCXNldF9wcmVlbXB0X3N0YXRlKGE1eHhfZ3B1LCBQUkVFTVBUX05PTkUpOwor fQorCit2b2lkIGE1eHhfcHJlZW1wdF9od19pbml0KHN0cnVjdCBtc21fZ3B1ICpncHUpCit7CisJ c3RydWN0IGFkcmVub19ncHUgKmFkcmVub19ncHUgPSB0b19hZHJlbm9fZ3B1KGdwdSk7CisJc3Ry dWN0IGE1eHhfZ3B1ICphNXh4X2dwdSA9IHRvX2E1eHhfZ3B1KGFkcmVub19ncHUpOworCXN0cnVj dCBtc21fcmluZ2J1ZmZlciAqcmluZzsKKwlpbnQgaTsKKworCWlmIChncHUtPm5yX3JpbmdzID4g MSkgeworCQkvKiBDbGVhciB0aGUgcHJlZW1wdGlvbiByZWNvcmRzICovCisJCUZPUl9FQUNIX1JJ TkcoZ3B1LCByaW5nLCBpKSB7CisJCQlpZiAocmluZykgeworCQkJCWE1eHhfZ3B1LT5wcmVlbXB0 W3JpbmctPmlkXS0+d3B0ciA9IDA7CisJCQkJYTV4eF9ncHUtPnByZWVtcHRbcmluZy0+aWRdLT5y cHRyID0gMDsKKwkJCQlhNXh4X2dwdS0+cHJlZW1wdFtyaW5nLT5pZF0tPnJiYXNlID0gcmluZy0+ aW92YTsKKwkJCX0KKwkJfQorCX0KKworCS8qIFdyaXRlIGEgMCB0byBzaWduYWwgdGhhdCB3ZSBh cmVuJ3Qgc3dpdGNoaW5nIHBhZ2V0YWJsZXMgKi8KKwlncHVfd3JpdGU2NChncHUsIFJFR19BNVhY X0NQX0NPTlRFWFRfU1dJVENIX1NNTVVfSU5GT19MTywKKwkJUkVHX0E1WFhfQ1BfQ09OVEVYVF9T V0lUQ0hfU01NVV9JTkZPX0hJLCAwKTsKKworCS8qIFJlc2V0IHRoZSBwcmVlbXB0aW9uIHN0YXRl ICovCisJc2V0X3ByZWVtcHRfc3RhdGUoYTV4eF9ncHUsIFBSRUVNUFRfTk9ORSk7CisKKwkvKiBB bHdheXMgY29tZSB1cCBvbiByYiAwICovCisJYTV4eF9ncHUtPmN1cl9yaW5nID0gZ3B1LT5yYlsw XTsKK30KKworc3RhdGljIGludCBwcmVlbXB0X2luaXRfcmluZyhzdHJ1Y3QgYTV4eF9ncHUgKmE1 eHhfZ3B1LAorCQlzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJpbmcpCit7CisJc3RydWN0IGFkcmVu b19ncHUgKmFkcmVub19ncHUgPSAmYTV4eF9ncHUtPmJhc2U7CisJc3RydWN0IG1zbV9ncHUgKmdw dSA9ICZhZHJlbm9fZ3B1LT5iYXNlOworCXN0cnVjdCBhNXh4X3ByZWVtcHRfcmVjb3JkICpwdHI7 CisJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpibzsKKwl1NjQgaW92YTsKKworCXB0ciA9IGFsbG9j X2tlcm5lbF9ibyhncHUtPmRldiwgZ3B1LAorCQlBNVhYX1BSRUVNUFRfUkVDT1JEX1NJWkUgKyBB NVhYX1BSRUVNUFRfQ09VTlRFUl9TSVpFLAorCQlNU01fQk9fVU5DQUNIRUQsICZibywgJmlvdmEp OworCisJaWYgKElTX0VSUihwdHIpKQorCQlyZXR1cm4gUFRSX0VSUihwdHIpOworCisJYTV4eF9n cHUtPnByZWVtcHRfYm9bcmluZy0+aWRdID0gYm87CisJYTV4eF9ncHUtPnByZWVtcHRfaW92YVty aW5nLT5pZF0gPSBpb3ZhOworCWE1eHhfZ3B1LT5wcmVlbXB0W3JpbmctPmlkXSA9IHB0cjsKKwor CS8qIFNldCB1cCB0aGUgZGVmYXVsdHMgb24gdGhlIHByZWVtcHRpb24gcmVjb3JkICovCisKKwlw dHItPm1hZ2ljID0gQTVYWF9QUkVFTVBUX1JFQ09SRF9NQUdJQzsKKwlwdHItPmluZm8gPSAwOwor CXB0ci0+ZGF0YSA9IDA7CisJcHRyLT5jbnRsID0gTVNNX0dQVV9SQl9DTlRMX0RFRkFVTFQ7CisJ cHRyLT5ycHRyX2FkZHIgPSByYm1lbXB0cihhZHJlbm9fZ3B1LCByaW5nLT5pZCwgcnB0cik7CisJ cHRyLT5jb3VudGVyID0gaW92YSArIEE1WFhfUFJFRU1QVF9SRUNPUkRfU0laRTsKKworCXJldHVy biAwOworfQorCit2b2lkIGE1eHhfcHJlZW1wdF9maW5pKHN0cnVjdCBtc21fZ3B1ICpncHUpCit7 CisJc3RydWN0IGFkcmVub19ncHUgKmFkcmVub19ncHUgPSB0b19hZHJlbm9fZ3B1KGdwdSk7CisJ c3RydWN0IGE1eHhfZ3B1ICphNXh4X2dwdSA9IHRvX2E1eHhfZ3B1KGFkcmVub19ncHUpOworCXN0 cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZzsKKwlpbnQgaTsKKworCUZPUl9FQUNIX1JJTkcoZ3B1 LCByaW5nLCBpKSB7CisJCWlmICghcmluZyB8fCAhYTV4eF9ncHUtPnByZWVtcHRfYm9baV0pCisJ CQljb250aW51ZTsKKworCQlpZiAoYTV4eF9ncHUtPnByZWVtcHRbaV0pCisJCQltc21fZ2VtX3B1 dF92YWRkcihhNXh4X2dwdS0+cHJlZW1wdF9ib1tpXSk7CisKKwkJaWYgKGE1eHhfZ3B1LT5wcmVl bXB0X2lvdmFbaV0pCisJCQltc21fZ2VtX3B1dF9pb3ZhKGE1eHhfZ3B1LT5wcmVlbXB0X2JvW2ld LCBncHUtPmFzcGFjZSk7CisKKwkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2VfdW5sb2NrZWQo YTV4eF9ncHUtPnByZWVtcHRfYm9baV0pOworCisJCWE1eHhfZ3B1LT5wcmVlbXB0X2JvW2ldID0g TlVMTDsKKwl9Cit9CisKK3ZvaWQgYTV4eF9wcmVlbXB0X2luaXQoc3RydWN0IG1zbV9ncHUgKmdw dSkKK3sKKwlzdHJ1Y3QgYWRyZW5vX2dwdSAqYWRyZW5vX2dwdSA9IHRvX2FkcmVub19ncHUoZ3B1 KTsKKwlzdHJ1Y3QgYTV4eF9ncHUgKmE1eHhfZ3B1ID0gdG9fYTV4eF9ncHUoYWRyZW5vX2dwdSk7 CisJc3RydWN0IG1zbV9yaW5nYnVmZmVyICpyaW5nOworCWludCBpOworCisJLyogTm8gcHJlZW1w dGlvbiBpZiB3ZSBvbmx5IGhhdmUgb25lIHJpbmcgKi8KKwlpZiAoZ3B1LT5ucl9yaW5ncyA8PSAx KQorCQlyZXR1cm47CisKKwlGT1JfRUFDSF9SSU5HKGdwdSwgcmluZywgaSkgeworCQlpZiAoIXJp bmcpCisJCQljb250aW51ZTsKKworCQlpZiAocHJlZW1wdF9pbml0X3JpbmcoYTV4eF9ncHUsIHJp bmcpKSB7CisJCQkvKgorCQkJICogT24gYW55IGZhaWx1cmUgb3VyIGFkdmVudHVyZSBpcyBvdmVy LiBDbGVhbiB1cCBhbmQKKwkJCSAqIHNldCBucl9yaW5ncyB0byAxIHRvIGZvcmNlIHByZWVtcHRp b24gb2ZmCisJCQkgKi8KKwkJCWE1eHhfcHJlZW1wdF9maW5pKGdwdSk7CisJCQlncHUtPm5yX3Jp bmdzID0gMTsKKworCQkJcmV0dXJuOworCQl9CisJfQorCisJc2V0dXBfdGltZXIoJmE1eHhfZ3B1 LT5wcmVlbXB0X3RpbWVyLCBhNXh4X3ByZWVtcHRfdGltZXIsCisJCSh1bnNpZ25lZCBsb25nKSBh NXh4X2dwdSk7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJl bm9fZ3B1LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1LmMKaW5kZXgg OGMyM2Q5Mi4uMmRlYmM3NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8v YWRyZW5vX2dwdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2FkcmVub19ncHUu YwpAQCAtOTMsMTEgKzkzLDYgQEAgaW50IGFkcmVub19od19pbml0KHN0cnVjdCBtc21fZ3B1ICpn cHUpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB1aW50MzJfdCBnZXRfd3B0cihzdHJ1Y3QgbXNt X3JpbmdidWZmZXIgKnJpbmcpCi17Ci0JcmV0dXJuIHJpbmctPmN1ciAtIHJpbmctPnN0YXJ0Owot fQotCiAvKiBVc2UgdGhpcyBoZWxwZXIgdG8gcmVhZCBycHRyLCBzaW5jZSBhNDMwIGRvZXNuJ3Qg dXBkYXRlIHJwdHIgaW4gbWVtb3J5ICovCiBzdGF0aWMgdWludDMyX3QgZ2V0X3JwdHIoc3RydWN0 IGFkcmVub19ncHUgKmFkcmVub19ncHUsCiAJCXN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZykK QEAgLTE0NSw2ICsxNDAsNyBAQCB2b2lkIGFkcmVub19yZWNvdmVyKHN0cnVjdCBtc21fZ3B1ICpn cHUpCiAJCWlmICghcmluZykKIAkJCWNvbnRpbnVlOwogCisJCS8qIE5vIG5lZWQgZm9yIGEgbG9j ayBoZXJlLCBub2JvZHkgZWxzZSBpcyBwZWVraW5nIGluICovCiAJCXJpbmctPmN1ciA9IHJpbmct PnN0YXJ0OwogCQlyaW5nLT5uZXh0ID0gcmluZy0+c3RhcnQ7CiAKQEAgLTE4NCw3ICsxODAsNyBA QCB2b2lkIGFkcmVub19zdWJtaXQoc3RydWN0IG1zbV9ncHUgKmdwdSwgc3RydWN0IG1zbV9nZW1f c3VibWl0ICpzdWJtaXQsCiAJCWNhc2UgTVNNX1NVQk1JVF9DTURfQlVGOgogCQkJT1VUX1BLVDMo cmluZywgYWRyZW5vX2lzX2E0MzAoYWRyZW5vX2dwdSkgPwogCQkJCUNQX0lORElSRUNUX0JVRkZF Ul9QRkUgOiBDUF9JTkRJUkVDVF9CVUZGRVJfUEZELCAyKTsKLQkJCU9VVF9SSU5HKHJpbmcsIHN1 Ym1pdC0+Y21kW2ldLmlvdmEpOworCQkJT1VUX1JJTkcocmluZywgbG93ZXJfMzJfYml0cyhzdWJt aXQtPmNtZFtpXS5pb3ZhKSk7CiAJCQlPVVRfUklORyhyaW5nLCBzdWJtaXQtPmNtZFtpXS5zaXpl KTsKIAkJCU9VVF9QS1QyKHJpbmcpOwogCQkJYnJlYWs7CkBAIC0yNTEsNyArMjQ3LDcgQEAgdm9p ZCBhZHJlbm9fZmx1c2goc3RydWN0IG1zbV9ncHUgKmdwdSwgc3RydWN0IG1zbV9yaW5nYnVmZmVy ICpyaW5nKQogCSAqIHRvIGFjY291bnQgZm9yIHRoZSBwb3NzaWJpbGl0eSB0aGF0IHRoZSBsYXN0 IGNvbW1hbmQgZml0IGV4YWN0bHkgaW50bwogCSAqIHRoZSByaW5nYnVmZmVyIGFuZCByYi0+bmV4 dCBoYXNuJ3Qgd3JhcHBlZCB0byB6ZXJvIHlldAogCSAqLwotCXdwdHIgPSAocmluZy0+Y3VyIC0g cmluZy0+c3RhcnQpICUgKE1TTV9HUFVfUklOR0JVRkZFUl9TWiA+PiAyKTsKKwl3cHRyID0gZ2V0 X3dwdHIocmluZyk7CiAKIAkvKiBlbnN1cmUgd3JpdGVzIHRvIHJpbmdidWZmZXIgaGF2ZSBoaXQg c3lzdGVtIG1lbW9yeTogKi8KIAltYigpOwpAQCAtMjY5LDggKzI2NSw5IEBAIGJvb2wgYWRyZW5v X2lkbGUoc3RydWN0IG1zbV9ncHUgKmdwdSwgc3RydWN0IG1zbV9yaW5nYnVmZmVyICpyaW5nKQog CQlyZXR1cm4gdHJ1ZTsKIAogCS8qIFRPRE8gbWF5YmUgd2UgbmVlZCB0byByZXNldCBHUFUgaGVy ZSB0byByZWNvdmVyIGZyb20gaGFuZz8gKi8KLQlEUk1fRVJST1IoIiVzOiB0aW1lb3V0IHdhaXRp bmcgdG8gZHJhaW4gcmluZ2J1ZmZlciAlZCFcbiIsIGdwdS0+bmFtZSwKLQkJcmluZy0+aWQpOwor CURSTV9FUlJPUigiJXM6IHRpbWVvdXQgd2FpdGluZyB0byBkcmFpbiByaW5nYnVmZmVyICVkIHJw dHIvd3B0ciA9ICVYLyVYXG4iLAorCQlncHUtPm5hbWUsIHJpbmctPmlkLCBnZXRfcnB0cihhZHJl bm9fZ3B1LCByaW5nKSwgd3B0cik7CisKIAlyZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2FkcmVub19ncHUuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vYWRyZW5vL2FkcmVub19ncHUuaAppbmRleCBlMDVmYThlLi40YTM2MzBmIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1LmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29w eXJpZ2h0IChDKSAyMDEzIFJlZCBIYXQKICAqIEF1dGhvcjogUm9iIENsYXJrIDxyb2JkY2xhcmtA Z21haWwuY29tPgogICoKLSAqIENvcHlyaWdodCAoYykgMjAxNCBUaGUgTGludXggRm91bmRhdGlv bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAxNCwyMDE3IFRoZSBM aW51eCBGb3VuZGF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 IGl0CiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkKQEAgLTMzMiw2ICszMzIsMTEgQEAgc3RhdGljIGlu bGluZSB2b2lkIGFkcmVub19ncHVfd3JpdGU2NChzdHJ1Y3QgYWRyZW5vX2dwdSAqZ3B1LAogCWFk cmVub19ncHVfd3JpdGUoZ3B1LCBoaSwgdXBwZXJfMzJfYml0cyhkYXRhKSk7CiB9CiAKK3N0YXRp YyBpbmxpbmUgdWludDMyX3QgZ2V0X3dwdHIoc3RydWN0IG1zbV9yaW5nYnVmZmVyICpyaW5nKQor eworCXJldHVybiAocmluZy0+Y3VyIC0gcmluZy0+c3RhcnQpICUgKE1TTV9HUFVfUklOR0JVRkZF Ul9TWiA+PiAyKTsKK30KKwogLyoKICAqIEdpdmVuIGEgcmVnaXN0ZXIgYW5kIGEgY291bnQsIHJl dHVybiBhIHZhbHVlIHRvIHByb2dyYW0gaW50bwogICogUkVHX0NQX1BST1RFQ1RfUkVHKG4pIC0g dGhpcyB3aWxsIGJsb2NrIGJvdGggcmVhZHMgYW5kIHdyaXRlcyBmb3IgX2xlbgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21z bV9kcnYuaAppbmRleCA2MDBjMzljLi4wOGFkOWU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vbXNtL21zbV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaApAQCAt NzgsNyArNzgsNyBAQCBzdHJ1Y3QgbXNtX3ZibGFua19jdHJsIHsKIAlzcGlubG9ja190IGxvY2s7 CiB9OwogCi0jZGVmaW5lIE1TTV9HUFVfTUFYX1JJTkdTIDEKKyNkZWZpbmUgTVNNX0dQVV9NQVhf UklOR1MgNAogCiBzdHJ1Y3QgbXNtX2RybV9wcml2YXRlIHsKIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL21zbS9tc21fcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21f cmluZ2J1ZmZlci5jCmluZGV4IGI4ODU5NzkuLmY0MmNlMDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vbXNtX3JpbmdidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21z bV9yaW5nYnVmZmVyLmMKQEAgLTUwLDYgKzUwLDggQEAgc3RydWN0IG1zbV9yaW5nYnVmZmVyICpt c21fcmluZ2J1ZmZlcl9uZXcoc3RydWN0IG1zbV9ncHUgKmdwdSwgaW50IGlkKQogCXJpbmctPm5l eHQgID0gcmluZy0+c3RhcnQ7CiAJcmluZy0+Y3VyICAgPSByaW5nLT5zdGFydDsKIAorCXNwaW5f bG9ja19pbml0KCZyaW5nLT5sb2NrKTsKKwogCXJldHVybiByaW5nOwogCiBmYWlsOgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9tc21fcmluZ2J1ZmZlci5oCmluZGV4IDg2NWIyMWEuLjBmOTFkYjAgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3JpbmdidWZmZXIuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vbXNtL21zbV9yaW5nYnVmZmVyLmgKQEAgLTI5LDYgKzI5LDcgQEAgc3RydWN0IG1zbV9y aW5nYnVmZmVyIHsKIAkvKiBsYXN0X2ZlbmNlID09IGNvbXBsZXRlZF9mZW5jZSAtLT4gbm8gcGVu ZGluZyB3b3JrICovCiAJdWludDMyX3QgbGFzdF9mZW5jZTsKIAl1aW50MzJfdCBjb21wbGV0ZWRf ZmVuY2U7CisJc3BpbmxvY2tfdCBsb2NrOwogfTsKIAogc3RydWN0IG1zbV9yaW5nYnVmZmVyICpt c21fcmluZ2J1ZmZlcl9uZXcoc3RydWN0IG1zbV9ncHUgKmdwdSwgaW50IGlkKTsKLS0gCjEuOS4x CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpGcmVlZHJl bm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8K