From mboxrd@z Thu Jan 1 00:00:00 1970 From: Xiangliang Yu Subject: [PATCH 1/1] drm/amdgpu/gfx8: add support kernel interface queue(KIQ) Date: Tue, 20 Dec 2016 17:40:48 +0800 Message-ID: <1482226848-2440-1-git-send-email-Xiangliang.Yu@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Xiangliang Yu S0lRIGlzIHF1ZXVlLW1lbW9yeSBiYXNlZCBpbml0aWFsaXphdGlvbiBtZXRob2Q6IHNldHVwIEtJ USBxdWV1ZQpmaXJzdGx5LCB0aGVuIHNlbmQgY29tbWFuZCB0byBLSVEgdG8gc2V0dXAgb3RoZXIg cXVldWVzLCB3aXRob3V0CmFjY2Vzc2luZyByZWdpc3RlcnMuCgpGb3IgdmlydHVhbGl6YXRpb24s IG5lZWQgS0lRIHRvIGFjY2VzcyB2aXJ0dWFsIGZ1bmN0aW9uIHJlZ2lzdGVycwp3aGVuIHJ1bm5p bmcgb24gZ3Vlc3QgbW9kZS4KClNpZ25lZC1vZmYtYnk6IFhpYW5nbGlhbmcgWXUgPFhpYW5nbGlh bmcuWXVAYW1kLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaCAg IHwgIDEzICsKIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OF8wLmMgfCA2NDMgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvdmlkLmggICAgICB8ICAgMiArCiAzIGZpbGVzIGNoYW5nZWQsIDY1NiBpbnNlcnRpb25zKCsp LCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgKaW5kZXggOWVh NWJmMC4uYzM5Mjg4MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgKQEAgLTE4Niw2 ICsxODYsMTEgQEAgZW51bSBhbWRncHVfdGhlcm1hbF9pcnEgewogCUFNREdQVV9USEVSTUFMX0lS UV9MQVNUCiB9OwogCitlbnVtIGFtZGdwdV9raXFfaXJxIHsKKwlBTURHUFVfQ1BfS0lRX0lSUV9E UklWRVIwID0gMCwKKwlBTURHUFVfQ1BfS0lRX0lSUV9MQVNUCit9OworCiBpbnQgYW1kZ3B1X3Nl dF9jbG9ja2dhdGluZ19zdGF0ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkgIGVu dW0gYW1kX2lwX2Jsb2NrX3R5cGUgYmxvY2tfdHlwZSwKIAkJCQkgIGVudW0gYW1kX2Nsb2NrZ2F0 aW5nX3N0YXRlIHN0YXRlKTsKQEAgLTc3OCw2ICs3ODMsMTMgQEAgc3RydWN0IGFtZGdwdV9tZWMg ewogCXUzMiBudW1fcXVldWU7CiB9OwogCitzdHJ1Y3QgYW1kZ3B1X2tpcSB7CisJdTY0CQkJZW9w X2dwdV9hZGRyOworCXN0cnVjdCBhbWRncHVfYm8JKmVvcF9vYmo7CisJc3RydWN0IGFtZGdwdV9y aW5nCXJpbmc7CisJc3RydWN0IGFtZGdwdV9pcnFfc3JjCWlycTsKK307CisKIC8qCiAgKiBHUFUg c2NyYXRjaCByZWdpc3RlcnMgc3RydWN0dXJlcywgZnVuY3Rpb25zICYgaGVscGVycwogICovCkBA IC04NTMsNiArODY1LDcgQEAgc3RydWN0IGFtZGdwdV9nZnggewogCXN0cnVjdCBhbWRncHVfZ2Nh X2NvbmZpZwljb25maWc7CiAJc3RydWN0IGFtZGdwdV9ybGMJCXJsYzsKIAlzdHJ1Y3QgYW1kZ3B1 X21lYwkJbWVjOworCXN0cnVjdCBhbWRncHVfa2lxCQlraXE7CiAJc3RydWN0IGFtZGdwdV9zY3Jh dGNoCQlzY3JhdGNoOwogCWNvbnN0IHN0cnVjdCBmaXJtd2FyZQkJKm1lX2Z3OwkvKiBNRSBmaXJt d2FyZSAqLwogCXVpbnQzMl90CQkJbWVfZndfdmVyc2lvbjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OF8wLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9nZnhfdjhfMC5jCmluZGV4IGMzZTZiZmMuLjM1NjllNWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OF8wLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvZ2Z4X3Y4XzAuYwpAQCAtMTM2Nyw2ICsxMzY3LDQyIEBAIHN0YXRpYyB2b2lkIGdmeF92 OF8wX21lY19maW5pKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCX0KIH0KIAorc3RhdGlj IGludCBnZnhfdjhfMF9raXFfaW5pdF9yaW5nKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAor CQkJCSAgc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLAorCQkJCSAgc3RydWN0IGFtZGdwdV9pcnFf c3JjICppcnEpCit7CisJaW50IHIgPSAwOworCisJcmluZy0+YWRldiA9IE5VTEw7CisJcmluZy0+ cmluZ19vYmogPSBOVUxMOworCXJpbmctPnVzZV9kb29yYmVsbCA9IHRydWU7CisJcmluZy0+ZG9v cmJlbGxfaW5kZXggPSBBTURHUFVfRE9PUkJFTExfS0lROworCWlmIChhZGV2LT5nZngubWVjMl9m dykgeworCQlyaW5nLT5tZSA9IDI7CisJCXJpbmctPnBpcGUgPSAwOworCX0gZWxzZSB7CisJCXJp bmctPm1lID0gMTsKKwkJcmluZy0+cGlwZSA9IDE7CisJfQorCisJaXJxLT5kYXRhID0gcmluZzsK KwlyaW5nLT5xdWV1ZSA9IDA7CisJc3ByaW50ZihyaW5nLT5uYW1lLCAia2lxICVkLiVkLiVkIiwg cmluZy0+bWUsIHJpbmctPnBpcGUsIHJpbmctPnF1ZXVlKTsKKwlyID0gYW1kZ3B1X3JpbmdfaW5p dChhZGV2LCByaW5nLCAxMDI0LAorCQkJICAgICBpcnEsIEFNREdQVV9DUF9LSVFfSVJRX0RSSVZF UjApOworCWlmIChyKQorCQlkZXZfd2FybihhZGV2LT5kZXYsICIoJWQpIGZhaWxlZCB0byBpbml0 IGtpcSByaW5nXG4iLCByKTsKKworCXJldHVybiByOworfQorCitzdGF0aWMgdm9pZCBnZnhfdjhf MF9raXFfZnJlZV9yaW5nKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywKKwkJCQkgICBzdHJ1Y3Qg YW1kZ3B1X2lycV9zcmMgKmlycSkKK3sKKwlhbWRncHVfcmluZ19maW5pKHJpbmcpOworCWlycS0+ ZGF0YSA9IE5VTEw7Cit9CisKICNkZWZpbmUgTUVDX0hQRF9TSVpFIDIwNDgKIAogc3RhdGljIGlu dCBnZnhfdjhfMF9tZWNfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKQEAgLTE0MjEs NiArMTQ1Nyw2OSBAQCBzdGF0aWMgaW50IGdmeF92OF8wX21lY19pbml0KHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2KQogCXJldHVybiAwOwogfQogCitzdGF0aWMgdm9pZCBnZnhfdjhfMF9raXFf ZmluaShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKK3sKKwlpbnQgcjsKKwlzdHJ1Y3QgYW1k Z3B1X2tpcSAqa2lxID0gJmFkZXYtPmdmeC5raXE7CisKKwlpZiAoa2lxLT5lb3Bfb2JqKSB7CisJ CXIgPSBhbWRncHVfYm9fcmVzZXJ2ZShraXEtPmVvcF9vYmosIGZhbHNlKTsKKwkJaWYgKHVubGlr ZWx5KHIgIT0gMCkpCisJCQlkZXZfd2FybihhZGV2LT5kZXYsICIoJWQpIHJlc2VydmUgSFBEIEVP UCBibyBmYWlsZWRcbiIsIHIpOworCQlhbWRncHVfYm9fdW5waW4oa2lxLT5lb3Bfb2JqKTsKKwkJ YW1kZ3B1X2JvX3VucmVzZXJ2ZShraXEtPmVvcF9vYmopOworCQlhbWRncHVfYm9fdW5yZWYoJmtp cS0+ZW9wX29iaik7CisJCWtpcS0+ZW9wX29iaiA9IE5VTEw7CisJfQorfQorCitzdGF0aWMgaW50 IGdmeF92OF8wX2tpcV9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQoreworCWludCBy OworCXUzMiAqaHBkOworCXN0cnVjdCBhbWRncHVfa2lxICpraXEgPSAmYWRldi0+Z2Z4LmtpcTsK KworCWlmIChraXEtPmVvcF9vYmogPT0gTlVMTCkgeworCQlyID0gYW1kZ3B1X2JvX2NyZWF0ZShh ZGV2LAorCQkJCSAgICAgTUVDX0hQRF9TSVpFLAorCQkJCSAgICAgUEFHRV9TSVpFLCB0cnVlLAor CQkJCSAgICAgQU1ER1BVX0dFTV9ET01BSU5fR1RULCAwLCBOVUxMLCBOVUxMLAorCQkJCSAgICAg JmtpcS0+ZW9wX29iaik7CisJCWlmIChyKSB7CisJCQlkZXZfd2FybihhZGV2LT5kZXYsICIoJWQp IGNyZWF0ZSBIRFAgRU9QIGJvIGZhaWxlZFxuIiwgcik7CisJCQlyZXR1cm4gcjsKKwkJfQorCX0K KworCXIgPSBhbWRncHVfYm9fcmVzZXJ2ZShraXEtPmVvcF9vYmosIGZhbHNlKTsKKwlpZiAodW5s aWtlbHkociAhPSAwKSkgeworCQlnZnhfdjhfMF9raXFfZmluaShhZGV2KTsKKwkJcmV0dXJuIHI7 CisJfQorCisJciA9IGFtZGdwdV9ib19waW4oa2lxLT5lb3Bfb2JqLCBBTURHUFVfR0VNX0RPTUFJ Tl9HVFQsCisJCQkgICZraXEtPmVvcF9ncHVfYWRkcik7CisJaWYgKHIpIHsKKwkJZGV2X3dhcm4o YWRldi0+ZGV2LCAiKCVkKSBwaW4gSERQIEVPUCBibyBmYWlsZWRcbiIsIHIpOworCQlnZnhfdjhf MF9raXFfZmluaShhZGV2KTsKKwkJcmV0dXJuIHI7CisJfQorCisJciA9IGFtZGdwdV9ib19rbWFw KGtpcS0+ZW9wX29iaiwgKHZvaWQgKiopJmhwZCk7CisJaWYgKHIpIHsKKwkJZGV2X3dhcm4oYWRl di0+ZGV2LCAiKCVkKSBtYXAgSERQIEVPUCBibyBmYWlsZWRcbiIsIHIpOworCQlnZnhfdjhfMF9r aXFfZmluaShhZGV2KTsKKwkJcmV0dXJuIHI7CisJfQorCisJbWVtc2V0KGhwZCwgMCwgTUVDX0hQ RF9TSVpFKTsKKworCWFtZGdwdV9ib19rdW5tYXAoa2lxLT5lb3Bfb2JqKTsKKwlhbWRncHVfYm9f dW5yZXNlcnZlKGtpcS0+ZW9wX29iaik7CisKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGNvbnN0 IHUzMiB2Z3ByX2luaXRfY29tcHV0ZV9zaGFkZXJbXSA9CiB7CiAJMHg3ZTAwMDIwOSwgMHg3ZTAy MDIwOCwKQEAgLTE5OTcsOCArMjA5NiwxNCBAQCBzdGF0aWMgaW50IGdmeF92OF8wX3N3X2luaXQo dm9pZCAqaGFuZGxlKQogewogCWludCBpLCByOwogCXN0cnVjdCBhbWRncHVfcmluZyAqcmluZzsK KwlzdHJ1Y3QgYW1kZ3B1X2tpcSAqa2lxOwogCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0g KHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOwogCisJLyogS0lRIGV2ZW50ICovCisJciA9 IGFtZGdwdV9pcnFfYWRkX2lkKGFkZXYsIDE3OCwgJmFkZXYtPmdmeC5raXEuaXJxKTsKKwlpZiAo cikKKwkJcmV0dXJuIHI7CisKIAkvKiBFT1AgRXZlbnQgKi8KIAlyID0gYW1kZ3B1X2lycV9hZGRf aWQoYWRldiwgMTgxLCAmYWRldi0+Z2Z4LmVvcF9pcnEpOwogCWlmIChyKQpAQCAtMjAzNiw2ICsy MTQxLDE3IEBAIHN0YXRpYyBpbnQgZ2Z4X3Y4XzBfc3dfaW5pdCh2b2lkICpoYW5kbGUpCiAJCXJl dHVybiByOwogCX0KIAorCXIgPSBnZnhfdjhfMF9raXFfaW5pdChhZGV2KTsKKwlpZiAocikgewor CQlEUk1fRVJST1IoIkZhaWxlZCB0byBpbml0IEtJUSBCT3MhXG4iKTsKKwkJcmV0dXJuIHI7CisJ fQorCisJa2lxID0gJmFkZXYtPmdmeC5raXE7CisJciA9IGdmeF92OF8wX2tpcV9pbml0X3Jpbmco YWRldiwgJmtpcS0+cmluZywgJmtpcS0+aXJxKTsKKwlpZiAocikKKwkJcmV0dXJuIHI7CisKIAkv KiBzZXQgdXAgdGhlIGdmeCByaW5nICovCiAJZm9yIChpID0gMDsgaSA8IGFkZXYtPmdmeC5udW1f Z2Z4X3JpbmdzOyBpKyspIHsKIAkJcmluZyA9ICZhZGV2LT5nZnguZ2Z4X3JpbmdbaV07CkBAIC0y MTE5LDcgKzIyMzUsOSBAQCBzdGF0aWMgaW50IGdmeF92OF8wX3N3X2Zpbmkodm9pZCAqaGFuZGxl KQogCQlhbWRncHVfcmluZ19maW5pKCZhZGV2LT5nZnguZ2Z4X3JpbmdbaV0pOwogCWZvciAoaSA9 IDA7IGkgPCBhZGV2LT5nZngubnVtX2NvbXB1dGVfcmluZ3M7IGkrKykKIAkJYW1kZ3B1X3Jpbmdf ZmluaSgmYWRldi0+Z2Z4LmNvbXB1dGVfcmluZ1tpXSk7CisJZ2Z4X3Y4XzBfa2lxX2ZyZWVfcmlu ZygmYWRldi0+Z2Z4LmtpcS5yaW5nLCAmYWRldi0+Z2Z4LmtpcS5pcnEpOwogCisJZ2Z4X3Y4XzBf a2lxX2ZpbmkoYWRldik7CiAJZ2Z4X3Y4XzBfbWVjX2ZpbmkoYWRldik7CiAJZ2Z4X3Y4XzBfcmxj X2ZpbmkoYWRldik7CiAJZ2Z4X3Y4XzBfZnJlZV9taWNyb2NvZGUoYWRldik7CkBAIC00NTA2LDYg KzQ2MjQsMzk5IEBAIHN0YXRpYyB2b2lkIGdmeF92OF8wX2NwX2NvbXB1dGVfZmluaShzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldikKIAl9CiB9CiAKKy8qIEtJUSBmdW5jdGlvbnMgKi8KK3N0YXRp YyB2b2lkIGdmeF92OF8wX2tpcV9zZXR0aW5nKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZykKK3sK Kwl1aW50MzJfdCB0bXA7CisJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSByaW5nLT5hZGV2 OworCisJLyogdGVsbCBSTEMgd2hpY2ggaXMgS0lRIHF1ZXVlICovCisJdG1wID0gUlJFRzMyKG1t UkxDX0NQX1NDSEVEVUxFUlMpOworCXRtcCAmPSAweGZmZmZmZjAwOworCXRtcCB8PSAocmluZy0+ bWUgPDwgNSkgfCAocmluZy0+cGlwZSA8PCAzKSB8IChyaW5nLT5xdWV1ZSk7CisJV1JFRzMyKG1t UkxDX0NQX1NDSEVEVUxFUlMsIHRtcCk7CisJdG1wIHw9IDB4ODA7CisJV1JFRzMyKG1tUkxDX0NQ X1NDSEVEVUxFUlMsIHRtcCk7Cit9CisKK3N0YXRpYyB2b2lkIGdmeF92OF8wX2tpcV9lbmFibGUo c3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKQoreworCWFtZGdwdV9yaW5nX2FsbG9jKHJpbmcsIDgp OworCS8qIHNldCByZXNvdXJjZXMgKi8KKwlhbWRncHVfcmluZ193cml0ZShyaW5nLCBQQUNLRVQz KFBBQ0tFVDNfU0VUX1JFU09VUkNFUywgNikpOworCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIDAp OwkvKiB2bWlkX21hc2s6MCBxdWV1ZV90eXBlOjAgKEtJUSkgKi8KKwlhbWRncHVfcmluZ193cml0 ZShyaW5nLCAweDAwMDAwMEZGKTsJLyogcXVldWUgbWFzayBsbyAqLworCWFtZGdwdV9yaW5nX3dy aXRlKHJpbmcsIDApOwkvKiBxdWV1ZSBtYXNrIGhpICovCisJYW1kZ3B1X3Jpbmdfd3JpdGUocmlu ZywgMCk7CS8qIGd3cyBtYXNrIGxvICovCisJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgMCk7CS8q IGd3cyBtYXNrIGhpICovCisJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgMCk7CS8qIG9hYyBtYXNr ICovCisJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgMCk7CS8qIGdkcyBoZWFwIGJhc2U6MCwgZ2Rz IGhlYXAgc2l6ZTowICovCisJYW1kZ3B1X3JpbmdfY29tbWl0KHJpbmcpOworCXVkZWxheSg1MCk7 Cit9CisKK3N0YXRpYyB2b2lkIGdmeF92OF8wX21hcF9xdWV1ZV9lbmFibGUoc3RydWN0IGFtZGdw dV9yaW5nICpraXFfcmluZywKKwkJCQkgICBzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpCit7CisJ c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBraXFfcmluZy0+YWRldjsKKwl1aW50NjRfdCBt cWRfYWRkciwgd3B0cl9hZGRyOworCisJbXFkX2FkZHIgPSBhbWRncHVfYm9fZ3B1X29mZnNldChy aW5nLT5tcWRfb2JqKTsKKwl3cHRyX2FkZHIgPSBhZGV2LT53Yi5ncHVfYWRkciArIChyaW5nLT53 cHRyX29mZnMgKiA0KTsKKwlhbWRncHVfcmluZ19hbGxvYyhraXFfcmluZywgOCk7CisKKwlhbWRn cHVfcmluZ193cml0ZShraXFfcmluZywgUEFDS0VUMyhQQUNLRVQzX01BUF9RVUVVRVMsIDUpKTsK KwkvKiBRX3NlbDowLCB2bWlkOjAsIHZpZG1lbTogMSwgZW5naW5lOjAsIG51bV9ROjEqLworCWFt ZGdwdV9yaW5nX3dyaXRlKGtpcV9yaW5nLCAweDIxMDEwMDAwKTsKKwlhbWRncHVfcmluZ193cml0 ZShraXFfcmluZywgKHJpbmctPmRvb3JiZWxsX2luZGV4IDw8IDIpIHwKKwkJCShyaW5nLT5xdWV1 ZSA8PCAyNikgfAorCQkJKHJpbmctPnBpcGUgPDwgMjkpIHwKKwkJCSgocmluZy0+bWUgPT0gMSA/ IDAgOiAxKSA8PCAzMSkpOyAvKiBkb29yYmVsbCAqLworCWFtZGdwdV9yaW5nX3dyaXRlKGtpcV9y aW5nLCBsb3dlcl8zMl9iaXRzKG1xZF9hZGRyKSk7CisJYW1kZ3B1X3Jpbmdfd3JpdGUoa2lxX3Jp bmcsIHVwcGVyXzMyX2JpdHMobXFkX2FkZHIpKTsKKwlhbWRncHVfcmluZ193cml0ZShraXFfcmlu ZywgbG93ZXJfMzJfYml0cyh3cHRyX2FkZHIpKTsKKwlhbWRncHVfcmluZ193cml0ZShraXFfcmlu ZywgdXBwZXJfMzJfYml0cyh3cHRyX2FkZHIpKTsKKwlhbWRncHVfcmluZ19jb21taXQoa2lxX3Jp bmcpOworCXVkZWxheSg1MCk7Cit9CisKK3N0YXRpYyBpbnQgZ2Z4X3Y4XzBfbXFkX2luaXQoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCisJCQkgICAgIHN0cnVjdCB2aV9tcWQgKm1xZCwKKwkJ CSAgICAgdWludDY0X3QgbXFkX2dwdV9hZGRyLAorCQkJICAgICB1aW50NjRfdCBlb3BfZ3B1X2Fk ZHIsCisJCQkgICAgIHN0cnVjdCBhbWRncHVfcmluZyAqcmluZykKK3sKKwl1aW50NjRfdCBocWRf Z3B1X2FkZHIsIHdiX2dwdV9hZGRyLCBlb3BfYmFzZV9hZGRyOworCXVpbnQzMl90IHRtcDsKKwor CW1xZC0+aGVhZGVyID0gMHhDMDMxMDgwMDsKKwltcWQtPmNvbXB1dGVfcGlwZWxpbmVzdGF0X2Vu YWJsZSA9IDB4MDAwMDAwMDE7CisJbXFkLT5jb21wdXRlX3N0YXRpY190aHJlYWRfbWdtdF9zZTAg PSAweGZmZmZmZmZmOworCW1xZC0+Y29tcHV0ZV9zdGF0aWNfdGhyZWFkX21nbXRfc2UxID0gMHhm ZmZmZmZmZjsKKwltcWQtPmNvbXB1dGVfc3RhdGljX3RocmVhZF9tZ210X3NlMiA9IDB4ZmZmZmZm ZmY7CisJbXFkLT5jb21wdXRlX3N0YXRpY190aHJlYWRfbWdtdF9zZTMgPSAweGZmZmZmZmZmOwor CW1xZC0+Y29tcHV0ZV9taXNjX3Jlc2VydmVkID0gMHgwMDAwMDAwMzsKKworCWVvcF9iYXNlX2Fk ZHIgPSBlb3BfZ3B1X2FkZHIgPj4gODsKKwltcWQtPmNwX2hxZF9lb3BfYmFzZV9hZGRyX2xvID0g ZW9wX2Jhc2VfYWRkcjsKKwltcWQtPmNwX2hxZF9lb3BfYmFzZV9hZGRyX2hpID0gdXBwZXJfMzJf Yml0cyhlb3BfYmFzZV9hZGRyKTsKKworCS8qIHNldCB0aGUgRU9QIHNpemUsIHJlZ2lzdGVyIHZh bHVlIGlzIDJeKEVPUF9TSVpFKzEpIGR3b3JkcyAqLworCXRtcCA9IFJSRUczMihtbUNQX0hRRF9F T1BfQ09OVFJPTCk7CisJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIENQX0hRRF9FT1BfQ09OVFJP TCwgRU9QX1NJWkUsCisJCQkob3JkZXJfYmFzZV8yKE1FQ19IUERfU0laRSAvIDQpIC0gMSkpOwor CisJbXFkLT5jcF9ocWRfZW9wX2NvbnRyb2wgPSB0bXA7CisKKwkvKiBlbmFibGUgZG9vcmJlbGw/ ICovCisJdG1wID0gUlJFRzMyKG1tQ1BfSFFEX1BRX0RPT1JCRUxMX0NPTlRST0wpOworCisJaWYg KHJpbmctPnVzZV9kb29yYmVsbCkKKwkJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIENQX0hRRF9Q UV9ET09SQkVMTF9DT05UUk9MLAorCQkJCQkgRE9PUkJFTExfRU4sIDEpOworCWVsc2UKKwkJdG1w ID0gUkVHX1NFVF9GSUVMRCh0bXAsIENQX0hRRF9QUV9ET09SQkVMTF9DT05UUk9MLAorCQkJCQkg RE9PUkJFTExfRU4sIDApOworCisJbXFkLT5jcF9ocWRfcHFfZG9vcmJlbGxfY29udHJvbCA9IHRt cDsKKworCS8qIGRpc2FibGUgdGhlIHF1ZXVlIGlmIGl0J3MgYWN0aXZlICovCisJbXFkLT5jcF9o cWRfZGVxdWV1ZV9yZXF1ZXN0ID0gMDsKKwltcWQtPmNwX2hxZF9wcV9ycHRyID0gMDsKKwltcWQt PmNwX2hxZF9wcV93cHRyID0gMDsKKworCS8qIHNldCB0aGUgcG9pbnRlciB0byB0aGUgTVFEICov CisJbXFkLT5jcF9tcWRfYmFzZV9hZGRyX2xvID0gbXFkX2dwdV9hZGRyICYgMHhmZmZmZmZmYzsK KwltcWQtPmNwX21xZF9iYXNlX2FkZHJfaGkgPSB1cHBlcl8zMl9iaXRzKG1xZF9ncHVfYWRkcik7 CisKKwkvKiBzZXQgTVFEIHZtaWQgdG8gMCAqLworCXRtcCA9IFJSRUczMihtbUNQX01RRF9DT05U Uk9MKTsKKwl0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwgQ1BfTVFEX0NPTlRST0wsIFZNSUQsIDAp OworCW1xZC0+Y3BfbXFkX2NvbnRyb2wgPSB0bXA7CisKKwkvKiBzZXQgdGhlIHBvaW50ZXIgdG8g dGhlIEhRRCwgdGhpcyBpcyBzaW1pbGFyIENQX1JCMF9CQVNFL19ISSAqLworCWhxZF9ncHVfYWRk ciA9IHJpbmctPmdwdV9hZGRyID4+IDg7CisJbXFkLT5jcF9ocWRfcHFfYmFzZV9sbyA9IGhxZF9n cHVfYWRkcjsKKwltcWQtPmNwX2hxZF9wcV9iYXNlX2hpID0gdXBwZXJfMzJfYml0cyhocWRfZ3B1 X2FkZHIpOworCisJLyogc2V0IHVwIHRoZSBIUUQsIHRoaXMgaXMgc2ltaWxhciB0byBDUF9SQjBf Q05UTCAqLworCXRtcCA9IFJSRUczMihtbUNQX0hRRF9QUV9DT05UUk9MKTsKKwl0bXAgPSBSRUdf U0VUX0ZJRUxEKHRtcCwgQ1BfSFFEX1BRX0NPTlRST0wsIFFVRVVFX1NJWkUsCisJCQkgICAgKG9y ZGVyX2Jhc2VfMihyaW5nLT5yaW5nX3NpemUgLyA0KSAtIDEpKTsKKwl0bXAgPSBSRUdfU0VUX0ZJ RUxEKHRtcCwgQ1BfSFFEX1BRX0NPTlRST0wsIFJQVFJfQkxPQ0tfU0laRSwKKwkJCSgob3JkZXJf YmFzZV8yKEFNREdQVV9HUFVfUEFHRV9TSVpFIC8gNCkgLSAxKSA8PCA4KSk7CisjaWZkZWYgX19C SUdfRU5ESUFOCisJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIENQX0hRRF9QUV9DT05UUk9MLCBF TkRJQU5fU1dBUCwgMSk7CisjZW5kaWYKKwl0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwgQ1BfSFFE X1BRX0NPTlRST0wsIFVOT1JEX0RJU1BBVENILCAwKTsKKwl0bXAgPSBSRUdfU0VUX0ZJRUxEKHRt cCwgQ1BfSFFEX1BRX0NPTlRST0wsIFJPUV9QUV9JQl9GTElQLCAwKTsKKwl0bXAgPSBSRUdfU0VU X0ZJRUxEKHRtcCwgQ1BfSFFEX1BRX0NPTlRST0wsIFBSSVZfU1RBVEUsIDEpOworCXRtcCA9IFJF R19TRVRfRklFTEQodG1wLCBDUF9IUURfUFFfQ09OVFJPTCwgS01EX1FVRVVFLCAxKTsKKwltcWQt PmNwX2hxZF9wcV9jb250cm9sID0gdG1wOworCisJLyogc2V0IHRoZSB3YiBhZGRyZXNzIHdoZXRo ZXIgaXQncyBlbmFibGVkIG9yIG5vdCAqLworCXdiX2dwdV9hZGRyID0gYWRldi0+d2IuZ3B1X2Fk ZHIgKyAocmluZy0+cnB0cl9vZmZzICogNCk7CisJbXFkLT5jcF9ocWRfcHFfcnB0cl9yZXBvcnRf YWRkcl9sbyA9IHdiX2dwdV9hZGRyICYgMHhmZmZmZmZmYzsKKwltcWQtPmNwX2hxZF9wcV9ycHRy X3JlcG9ydF9hZGRyX2hpID0KKwkJdXBwZXJfMzJfYml0cyh3Yl9ncHVfYWRkcikgJiAweGZmZmY7 CisKKwkvKiBvbmx5IHVzZWQgaWYgQ1BfUFFfV1BUUl9QT0xMX0NOVEwuQ1BfUFFfV1BUUl9QT0xM X0NOVExfX0VOX01BU0s9MSAqLworCXdiX2dwdV9hZGRyID0gYWRldi0+d2IuZ3B1X2FkZHIgKyAo cmluZy0+d3B0cl9vZmZzICogNCk7CisJbXFkLT5jcF9ocWRfcHFfd3B0cl9wb2xsX2FkZHJfbG8g PSB3Yl9ncHVfYWRkciAmIDB4ZmZmZmZmZmM7CisJbXFkLT5jcF9ocWRfcHFfd3B0cl9wb2xsX2Fk ZHJfaGkgPSB1cHBlcl8zMl9iaXRzKHdiX2dwdV9hZGRyKSAmIDB4ZmZmZjsKKworCXRtcCA9IDA7 CisJLyogZW5hYmxlIHRoZSBkb29yYmVsbCBpZiByZXF1ZXN0ZWQgKi8KKwlpZiAocmluZy0+dXNl X2Rvb3JiZWxsKSB7CisJCXRtcCA9IFJSRUczMihtbUNQX0hRRF9QUV9ET09SQkVMTF9DT05UUk9M KTsKKwkJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIENQX0hRRF9QUV9ET09SQkVMTF9DT05UUk9M LAorCQkJCURPT1JCRUxMX09GRlNFVCwgcmluZy0+ZG9vcmJlbGxfaW5kZXgpOworCisJCXRtcCA9 IFJFR19TRVRfRklFTEQodG1wLCBDUF9IUURfUFFfRE9PUkJFTExfQ09OVFJPTCwKKwkJCQkJIERP T1JCRUxMX0VOLCAxKTsKKwkJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIENQX0hRRF9QUV9ET09S QkVMTF9DT05UUk9MLAorCQkJCQkgRE9PUkJFTExfU09VUkNFLCAwKTsKKwkJdG1wID0gUkVHX1NF VF9GSUVMRCh0bXAsIENQX0hRRF9QUV9ET09SQkVMTF9DT05UUk9MLAorCQkJCQkgRE9PUkJFTExf SElULCAwKTsKKwl9CisKKwltcWQtPmNwX2hxZF9wcV9kb29yYmVsbF9jb250cm9sID0gdG1wOwor CisJLyogcmVzZXQgcmVhZCBhbmQgd3JpdGUgcG9pbnRlcnMsIHNpbWlsYXIgdG8gQ1BfUkIwX1dQ VFIvX1JQVFIgKi8KKwlyaW5nLT53cHRyID0gMDsKKwltcWQtPmNwX2hxZF9wcV93cHRyID0gcmlu Zy0+d3B0cjsKKwltcWQtPmNwX2hxZF9wcV9ycHRyID0gUlJFRzMyKG1tQ1BfSFFEX1BRX1JQVFIp OworCisJLyogc2V0IHRoZSB2bWlkIGZvciB0aGUgcXVldWUgKi8KKwltcWQtPmNwX2hxZF92bWlk ID0gMDsKKworCXRtcCA9IFJSRUczMihtbUNQX0hRRF9QRVJTSVNURU5UX1NUQVRFKTsKKwl0bXAg PSBSRUdfU0VUX0ZJRUxEKHRtcCwgQ1BfSFFEX1BFUlNJU1RFTlRfU1RBVEUsIFBSRUxPQURfU0la RSwgMHg1Myk7CisJbXFkLT5jcF9ocWRfcGVyc2lzdGVudF9zdGF0ZSA9IHRtcDsKKworCS8qIGFj dGl2YXRlIHRoZSBxdWV1ZSAqLworCW1xZC0+Y3BfaHFkX2FjdGl2ZSA9IDE7CisKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIGludCBnZnhfdjhfMF9raXFfaW5pdF9yZWdpc3RlcihzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwKKwkJCQkgICAgICBzdHJ1Y3QgdmlfbXFkICptcWQsCisJCQkJICAg ICAgc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKQoreworCXVpbnQzMl90IHRtcDsKKwlpbnQgajsK KworCS8qIGRpc2FibGUgd3B0ciBwb2xsaW5nICovCisJdG1wID0gUlJFRzMyKG1tQ1BfUFFfV1BU Ul9QT0xMX0NOVEwpOworCXRtcCA9IFJFR19TRVRfRklFTEQodG1wLCBDUF9QUV9XUFRSX1BPTExf Q05UTCwgRU4sIDApOworCVdSRUczMihtbUNQX1BRX1dQVFJfUE9MTF9DTlRMLCB0bXApOworCisJ V1JFRzMyKG1tQ1BfSFFEX0VPUF9CQVNFX0FERFIsIG1xZC0+Y3BfaHFkX2VvcF9iYXNlX2FkZHJf bG8pOworCVdSRUczMihtbUNQX0hRRF9FT1BfQkFTRV9BRERSX0hJLCBtcWQtPmNwX2hxZF9lb3Bf YmFzZV9hZGRyX2hpKTsKKworCS8qIHNldCB0aGUgRU9QIHNpemUsIHJlZ2lzdGVyIHZhbHVlIGlz IDJeKEVPUF9TSVpFKzEpIGR3b3JkcyAqLworCVdSRUczMihtbUNQX0hRRF9FT1BfQ09OVFJPTCwg bXFkLT5jcF9ocWRfZW9wX2NvbnRyb2wpOworCisJLyogZW5hYmxlIGRvb3JiZWxsPyAqLworCVdS RUczMihtbUNQX0hRRF9QUV9ET09SQkVMTF9DT05UUk9MLCBtcWQtPmNwX2hxZF9wcV9kb29yYmVs bF9jb250cm9sKTsKKworCS8qIGRpc2FibGUgdGhlIHF1ZXVlIGlmIGl0J3MgYWN0aXZlICovCisJ aWYgKFJSRUczMihtbUNQX0hRRF9BQ1RJVkUpICYgMSkgeworCQlXUkVHMzIobW1DUF9IUURfREVR VUVVRV9SRVFVRVNULCAxKTsKKwkJZm9yIChqID0gMDsgaiA8IGFkZXYtPnVzZWNfdGltZW91dDsg aisrKSB7CisJCQlpZiAoIShSUkVHMzIobW1DUF9IUURfQUNUSVZFKSAmIDEpKQorCQkJCWJyZWFr OworCQkJdWRlbGF5KDEpOworCQl9CisJCVdSRUczMihtbUNQX0hRRF9ERVFVRVVFX1JFUVVFU1Qs IG1xZC0+Y3BfaHFkX2RlcXVldWVfcmVxdWVzdCk7CisJCVdSRUczMihtbUNQX0hRRF9QUV9SUFRS LCBtcWQtPmNwX2hxZF9wcV9ycHRyKTsKKwkJV1JFRzMyKG1tQ1BfSFFEX1BRX1dQVFIsIG1xZC0+ Y3BfaHFkX3BxX3dwdHIpOworCX0KKworCS8qIHNldCB0aGUgcG9pbnRlciB0byB0aGUgTVFEICov CisJV1JFRzMyKG1tQ1BfTVFEX0JBU0VfQUREUiwgbXFkLT5jcF9tcWRfYmFzZV9hZGRyX2xvKTsK KwlXUkVHMzIobW1DUF9NUURfQkFTRV9BRERSX0hJLCBtcWQtPmNwX21xZF9iYXNlX2FkZHJfaGkp OworCisJLyogc2V0IE1RRCB2bWlkIHRvIDAgKi8KKwlXUkVHMzIobW1DUF9NUURfQ09OVFJPTCwg bXFkLT5jcF9tcWRfY29udHJvbCk7CisKKwkvKiBzZXQgdGhlIHBvaW50ZXIgdG8gdGhlIEhRRCwg dGhpcyBpcyBzaW1pbGFyIENQX1JCMF9CQVNFL19ISSAqLworCVdSRUczMihtbUNQX0hRRF9QUV9C QVNFLCBtcWQtPmNwX2hxZF9wcV9iYXNlX2xvKTsKKwlXUkVHMzIobW1DUF9IUURfUFFfQkFTRV9I SSwgbXFkLT5jcF9ocWRfcHFfYmFzZV9oaSk7CisKKwkvKiBzZXQgdXAgdGhlIEhRRCwgdGhpcyBp cyBzaW1pbGFyIHRvIENQX1JCMF9DTlRMICovCisJV1JFRzMyKG1tQ1BfSFFEX1BRX0NPTlRST0ws IG1xZC0+Y3BfaHFkX3BxX2NvbnRyb2wpOworCisJLyogc2V0IHRoZSB3YiBhZGRyZXNzIHdoZXRo ZXIgaXQncyBlbmFibGVkIG9yIG5vdCAqLworCVdSRUczMihtbUNQX0hRRF9QUV9SUFRSX1JFUE9S VF9BRERSLAorCQkJCW1xZC0+Y3BfaHFkX3BxX3JwdHJfcmVwb3J0X2FkZHJfbG8pOworCVdSRUcz MihtbUNQX0hRRF9QUV9SUFRSX1JFUE9SVF9BRERSX0hJLAorCQkJCW1xZC0+Y3BfaHFkX3BxX3Jw dHJfcmVwb3J0X2FkZHJfaGkpOworCisJLyogb25seSB1c2VkIGlmIENQX1BRX1dQVFJfUE9MTF9D TlRMLkNQX1BRX1dQVFJfUE9MTF9DTlRMX19FTl9NQVNLPTEgKi8KKwlXUkVHMzIobW1DUF9IUURf UFFfV1BUUl9QT0xMX0FERFIsIG1xZC0+Y3BfaHFkX3BxX3dwdHJfcG9sbF9hZGRyX2xvKTsKKwlX UkVHMzIobW1DUF9IUURfUFFfV1BUUl9QT0xMX0FERFJfSEksIG1xZC0+Y3BfaHFkX3BxX3dwdHJf cG9sbF9hZGRyX2hpKTsKKworCS8qIGVuYWJsZSB0aGUgZG9vcmJlbGwgaWYgcmVxdWVzdGVkICov CisJaWYgKHJpbmctPnVzZV9kb29yYmVsbCkgeworCQlpZiAoKGFkZXYtPmFzaWNfdHlwZSA9PSBD SElQX0NBUlJJWk8pIHx8CisJCQkJKGFkZXYtPmFzaWNfdHlwZSA9PSBDSElQX0ZJSkkpIHx8CisJ CQkJKGFkZXYtPmFzaWNfdHlwZSA9PSBDSElQX1NUT05FWSkpIHsKKwkJCVdSRUczMihtbUNQX01F Q19ET09SQkVMTF9SQU5HRV9MT1dFUiwKKwkJCQkJCUFNREdQVV9ET09SQkVMTF9LSVEgPDwgMik7 CisJCQlXUkVHMzIobW1DUF9NRUNfRE9PUkJFTExfUkFOR0VfVVBQRVIsCisJCQkJCQlBTURHUFVf RE9PUkJFTExfTUVDX1JJTkc3IDw8IDIpOworCQl9CisJfQorCVdSRUczMihtbUNQX0hRRF9QUV9E T09SQkVMTF9DT05UUk9MLCBtcWQtPmNwX2hxZF9wcV9kb29yYmVsbF9jb250cm9sKTsKKworCS8q IHJlc2V0IHJlYWQgYW5kIHdyaXRlIHBvaW50ZXJzLCBzaW1pbGFyIHRvIENQX1JCMF9XUFRSL19S UFRSICovCisJV1JFRzMyKG1tQ1BfSFFEX1BRX1dQVFIsIG1xZC0+Y3BfaHFkX3BxX3dwdHIpOwor CisJLyogc2V0IHRoZSB2bWlkIGZvciB0aGUgcXVldWUgKi8KKwlXUkVHMzIobW1DUF9IUURfVk1J RCwgbXFkLT5jcF9ocWRfdm1pZCk7CisKKwlXUkVHMzIobW1DUF9IUURfUEVSU0lTVEVOVF9TVEFU RSwgbXFkLT5jcF9ocWRfcGVyc2lzdGVudF9zdGF0ZSk7CisKKwkvKiBhY3RpdmF0ZSB0aGUgcXVl dWUgKi8KKwlXUkVHMzIobW1DUF9IUURfQUNUSVZFLCBtcWQtPmNwX2hxZF9hY3RpdmUpOworCisJ aWYgKHJpbmctPnVzZV9kb29yYmVsbCkgeworCQl0bXAgPSBSUkVHMzIobW1DUF9QUV9TVEFUVVMp OworCQl0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwgQ1BfUFFfU1RBVFVTLCBET09SQkVMTF9FTkFC TEUsIDEpOworCQlXUkVHMzIobW1DUF9QUV9TVEFUVVMsIHRtcCk7CisJfQorCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgZ2Z4X3Y4XzBfa2lxX2luaXRfcXVldWUoc3RydWN0IGFtZGdwdV9y aW5nICpyaW5nLAorCQkJCSAgIHN0cnVjdCB2aV9tcWQgKm1xZCwKKwkJCQkgICB1NjQgbXFkX2dw dV9hZGRyKQoreworCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gcmluZy0+YWRldjsKKwlz dHJ1Y3QgYW1kZ3B1X2tpcSAqa2lxID0gJmFkZXYtPmdmeC5raXE7CisJdWludDY0X3QgZW9wX2dw dV9hZGRyOworCWJvb2wgaXNfa2lxID0gZmFsc2U7CisKKwlpZiAocmluZy0+ZnVuY3MtPnR5cGUg PT0gQU1ER1BVX1JJTkdfVFlQRV9LSVEpCisJCWlzX2tpcSA9IHRydWU7CisKKwlpZiAoaXNfa2lx KSB7CisJCWVvcF9ncHVfYWRkciA9IGtpcS0+ZW9wX2dwdV9hZGRyOworCQlnZnhfdjhfMF9raXFf c2V0dGluZygma2lxLT5yaW5nKTsKKwl9IGVsc2UKKwkJZW9wX2dwdV9hZGRyID0gYWRldi0+Z2Z4 Lm1lYy5ocGRfZW9wX2dwdV9hZGRyICsKKwkJCQkJcmluZy0+cXVldWUgKiBNRUNfSFBEX1NJWkU7 CisKKwltdXRleF9sb2NrKCZhZGV2LT5zcmJtX211dGV4KTsKKwl2aV9zcmJtX3NlbGVjdChhZGV2 LCByaW5nLT5tZSwgcmluZy0+cGlwZSwgcmluZy0+cXVldWUsIDApOworCisJZ2Z4X3Y4XzBfbXFk X2luaXQoYWRldiwgbXFkLCBtcWRfZ3B1X2FkZHIsIGVvcF9ncHVfYWRkciwgcmluZyk7CisKKwlp ZiAoaXNfa2lxKQorCQlnZnhfdjhfMF9raXFfaW5pdF9yZWdpc3RlcihhZGV2LCBtcWQsIHJpbmcp OworCisJdmlfc3JibV9zZWxlY3QoYWRldiwgMCwgMCwgMCwgMCk7CisJbXV0ZXhfdW5sb2NrKCZh ZGV2LT5zcmJtX211dGV4KTsKKworCWlmIChpc19raXEpCisJCWdmeF92OF8wX2tpcV9lbmFibGUo cmluZyk7CisJZWxzZQorCQlnZnhfdjhfMF9tYXBfcXVldWVfZW5hYmxlKCZraXEtPnJpbmcsIHJp bmcpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZ2Z4X3Y4XzBfa2lxX3NldHVwX3F1 ZXVlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAorCQkJCSAgICBzdHJ1Y3QgYW1kZ3B1X3Jp bmcgKnJpbmcpCit7CisJc3RydWN0IHZpX21xZCAqbXFkOworCXU2NCBtcWRfZ3B1X2FkZHI7CisJ dTMyICpidWY7CisJaW50IHIgPSAwOworCisJciA9IGFtZGdwdV9ib19jcmVhdGUoYWRldiwgc2l6 ZW9mKHN0cnVjdCB2aV9tcWQpLCBQQUdFX1NJWkUsIHRydWUsCisJCQkgICAgIEFNREdQVV9HRU1f RE9NQUlOX0dUVCwgMCwgTlVMTCwgTlVMTCwKKwkJCSAgICAgJnJpbmctPm1xZF9vYmopOworCWlm IChyKSB7CisJCWRldl93YXJuKGFkZXYtPmRldiwgIiglZCkgY3JlYXRlIE1RRCBibyBmYWlsZWRc biIsIHIpOworCQlyZXR1cm4gcjsKKwl9CisJciA9IGFtZGdwdV9ib19yZXNlcnZlKHJpbmctPm1x ZF9vYmosIGZhbHNlKTsKKwlpZiAodW5saWtlbHkociAhPSAwKSkgeworCQlhbWRncHVfYm9fdW5y ZWYoJnJpbmctPm1xZF9vYmopOworCQlyZXR1cm4gcjsKKwl9CisJciA9IGFtZGdwdV9ib19waW4o cmluZy0+bXFkX29iaiwgQU1ER1BVX0dFTV9ET01BSU5fR1RULAorCQkJICAmbXFkX2dwdV9hZGRy KTsKKwlpZiAocikgeworCQlkZXZfd2FybihhZGV2LT5kZXYsICIoJWQpIHBpbiBNUUQgYm8gZmFp bGVkXG4iLCByKTsKKwkJYW1kZ3B1X2JvX3VucmVzZXJ2ZShyaW5nLT5tcWRfb2JqKTsKKwkJYW1k Z3B1X2JvX3VucmVmKCZyaW5nLT5tcWRfb2JqKTsKKwkJcmV0dXJuIHI7CisJfQorCXIgPSBhbWRn cHVfYm9fa21hcChyaW5nLT5tcWRfb2JqLCAodm9pZCAqKikmYnVmKTsKKwlpZiAocikgeworCQlk ZXZfd2FybihhZGV2LT5kZXYsICIoJWQpIG1hcCBNUUQgYm8gZmFpbGVkXG4iLCByKTsKKwkJYW1k Z3B1X2JvX3VucGluKHJpbmctPm1xZF9vYmopOworCQlhbWRncHVfYm9fdW5yZXNlcnZlKHJpbmct Pm1xZF9vYmopOworCQlhbWRncHVfYm9fdW5yZWYoJnJpbmctPm1xZF9vYmopOworCQlyZXR1cm4g cjsKKwl9CisKKwkvKiBpbml0IHRoZSBtcWQgc3RydWN0ICovCisJbWVtc2V0KGJ1ZiwgMCwgc2l6 ZW9mKHN0cnVjdCB2aV9tcWQpKTsKKwltcWQgPSAoc3RydWN0IHZpX21xZCAqKWJ1ZjsKKworCXIg PSBnZnhfdjhfMF9raXFfaW5pdF9xdWV1ZShyaW5nLCBtcWQsIG1xZF9ncHVfYWRkcik7CisJaWYg KHIpCisJCXJldHVybiByOworCisJYW1kZ3B1X2JvX2t1bm1hcChyaW5nLT5tcWRfb2JqKTsKKwlh bWRncHVfYm9fdW5yZXNlcnZlKHJpbmctPm1xZF9vYmopOworCisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQgZ2Z4X3Y4XzBfa2lxX3Jlc3VtZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikK K3sKKwlzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcgPSBOVUxMOworCWludCByLCBpOworCisJcmlu ZyA9ICZhZGV2LT5nZngua2lxLnJpbmc7CisJciA9IGdmeF92OF8wX2tpcV9zZXR1cF9xdWV1ZShh ZGV2LCByaW5nKTsKKwlpZiAocikKKwkJcmV0dXJuIHI7CisKKwlmb3IgKGkgPSAwOyBpIDwgYWRl di0+Z2Z4Lm51bV9jb21wdXRlX3JpbmdzOyBpKyspIHsKKwkJcmluZyA9ICZhZGV2LT5nZnguY29t cHV0ZV9yaW5nW2ldOworCQlyID0gZ2Z4X3Y4XzBfa2lxX3NldHVwX3F1ZXVlKGFkZXYsIHJpbmcp OworCQlpZiAocikKKwkJCXJldHVybiByOworCX0KKworCWdmeF92OF8wX2NwX2NvbXB1dGVfZW5h YmxlKGFkZXYsIHRydWUpOworCisJZm9yIChpID0gMDsgaSA8IGFkZXYtPmdmeC5udW1fY29tcHV0 ZV9yaW5nczsgaSsrKSB7CisJCXJpbmcgPSAmYWRldi0+Z2Z4LmNvbXB1dGVfcmluZ1tpXTsKKwor CQlyaW5nLT5yZWFkeSA9IHRydWU7CisJCXIgPSBhbWRncHVfcmluZ190ZXN0X3JpbmcocmluZyk7 CisJCWlmIChyKQorCQkJcmluZy0+cmVhZHkgPSBmYWxzZTsKKwl9CisKKwlyaW5nID0gJmFkZXYt PmdmeC5raXEucmluZzsKKwlyaW5nLT5yZWFkeSA9IHRydWU7CisJciA9IGFtZGdwdV9yaW5nX3Rl c3RfcmluZyhyaW5nKTsKKwlpZiAocikKKwkJcmluZy0+cmVhZHkgPSBmYWxzZTsKKworCXJldHVy biAwOworfQorCiBzdGF0aWMgaW50IGdmeF92OF8wX2NwX2NvbXB1dGVfcmVzdW1lKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2KQogewogCWludCByLCBpLCBqOwpAQCAtNDgwNiw3ICs1MzE3LDEw IEBAIHN0YXRpYyBpbnQgZ2Z4X3Y4XzBfY3BfcmVzdW1lKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2KQogCWlmIChyKQogCQlyZXR1cm4gcjsKIAotCXIgPSBnZnhfdjhfMF9jcF9jb21wdXRlX3Jl c3VtZShhZGV2KTsKKwlpZiAoYW1kZ3B1X3NyaW92X3ZmKGFkZXYpKQorCQlyID0gZ2Z4X3Y4XzBf a2lxX3Jlc3VtZShhZGV2KTsKKwllbHNlCisJCXIgPSBnZnhfdjhfMF9jcF9jb21wdXRlX3Jlc3Vt ZShhZGV2KTsKIAlpZiAocikKIAkJcmV0dXJuIHI7CiAKQEAgLTYwMTEsNyArNjUyNSw4IEBAIHN0 YXRpYyB2b2lkIGdmeF92OF8wX3JpbmdfZW1pdF9oZHBfZmx1c2goc3RydWN0IGFtZGdwdV9yaW5n ICpyaW5nKQogewogCXUzMiByZWZfYW5kX21hc2ssIHJlZ19tZW1fZW5naW5lOwogCi0JaWYgKHJp bmctPmZ1bmNzLT50eXBlID09IEFNREdQVV9SSU5HX1RZUEVfQ09NUFVURSkgeworCWlmICgocmlu Zy0+ZnVuY3MtPnR5cGUgPT0gQU1ER1BVX1JJTkdfVFlQRV9DT01QVVRFKSB8fAorCSAgICAocmlu Zy0+ZnVuY3MtPnR5cGUgPT0gQU1ER1BVX1JJTkdfVFlQRV9LSVEpKSB7CiAJCXN3aXRjaCAocmlu Zy0+bWUpIHsKIAkJY2FzZSAxOgogCQkJcmVmX2FuZF9tYXNrID0gR1BVX0hEUF9GTFVTSF9ET05F X19DUDJfTUFTSyA8PCByaW5nLT5waXBlOwpAQCAtNjIyNCw2ICs2NzM5LDMyIEBAIHN0YXRpYyB2 b2lkIGdmeF92OF8wX3JpbmdfZW1pdF9mZW5jZV9jb21wdXRlKHN0cnVjdCBhbWRncHVfcmluZyAq cmluZywKIAlhbWRncHVfcmluZ193cml0ZShyaW5nLCB1cHBlcl8zMl9iaXRzKHNlcSkpOwogfQog CitzdGF0aWMgdm9pZCBnZnhfdjhfMF9raXFfcmluZ19lbWl0X2ZlbmNlKHN0cnVjdCBhbWRncHVf cmluZyAqcmluZywgdTY0IGFkZHIsCisJCQkJCSB1NjQgc2VxLCB1bnNpZ25lZCBpbnQgZmxhZ3Mp Cit7CisJLyogd2Ugb25seSBhbGxvY2F0ZSAzMmJpdCBmb3IgZWFjaCBzZXEgd2IgYWRkcmVzcyAq LworCWlmIChmbGFncyAmIEFNREdQVV9GRU5DRV9GTEFHXzY0QklUKQorCQlCVUcoKTsKKworCS8q IHdyaXRlIGZlbmNlIHNlcSB0byB0aGUgImFkZHIiICovCisJYW1kZ3B1X3Jpbmdfd3JpdGUocmlu ZywgUEFDS0VUMyhQQUNLRVQzX1dSSVRFX0RBVEEsIDMpKTsKKwlhbWRncHVfcmluZ193cml0ZShy aW5nLCAoV1JJVEVfREFUQV9FTkdJTkVfU0VMKDApIHwKKwkJCQkgV1JJVEVfREFUQV9EU1RfU0VM KDUpIHwgV1JfQ09ORklSTSkpOworCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIGxvd2VyXzMyX2Jp dHMoYWRkcikpOworCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIHVwcGVyXzMyX2JpdHMoYWRkcikp OworCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIGxvd2VyXzMyX2JpdHMoc2VxKSk7CisKKwlpZiAo ZmxhZ3MgJiBBTURHUFVfRkVOQ0VfRkxBR19JTlQpIHsKKwkJLyogc2V0IHJlZ2lzdGVyIHRvIHRy aWdnZXIgSU5UICovCisJCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIFBBQ0tFVDMoUEFDS0VUM19X UklURV9EQVRBLCAzKSk7CisJCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIChXUklURV9EQVRBX0VO R0lORV9TRUwoMCkgfAorCQkJCQkgV1JJVEVfREFUQV9EU1RfU0VMKDApIHwgV1JfQ09ORklSTSkp OworCQlhbWRncHVfcmluZ193cml0ZShyaW5nLCBtbUNQQ19JTlRfU1RBVFVTKTsKKwkJYW1kZ3B1 X3Jpbmdfd3JpdGUocmluZywgMCk7CisJCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIDB4MjAwMDAw MDApOyAvKiBzcmNfaWQgaXMgMTc4ICovCisJfQorfQorCiBzdGF0aWMgdm9pZCBnZnhfdjhfcmlu Z19lbWl0X3NiKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZykKIHsKIAlhbWRncHVfcmluZ193cml0 ZShyaW5nLCBQQUNLRVQzKFBBQ0tFVDNfU1dJVENIX0JVRkZFUiwgMCkpOwpAQCAtNjQwNSw2ICs2 OTQ2LDY5IEBAIHN0YXRpYyBpbnQgZ2Z4X3Y4XzBfcHJpdl9pbnN0X2lycShzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBnZnhfdjhfMF9raXFf c2V0X2ludGVycnVwdF9zdGF0ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKKwkJCQkJICAg IHN0cnVjdCBhbWRncHVfaXJxX3NyYyAqc3JjLAorCQkJCQkgICAgdW5zaWduZWQgaW50IHR5cGUs CisJCQkJCSAgICBlbnVtIGFtZGdwdV9pbnRlcnJ1cHRfc3RhdGUgc3RhdGUpCit7CisJdWludDMy X3QgdG1wLCB0YXJnZXQ7CisJc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nID0gKHN0cnVjdCBhbWRn cHVfcmluZyAqKXNyYy0+ZGF0YTsKKworCUJVR19PTighcmluZyB8fCAocmluZy0+ZnVuY3MtPnR5 cGUgIT0gQU1ER1BVX1JJTkdfVFlQRV9LSVEpKTsKKworCXRhcmdldCA9IChyaW5nLT5tZSA9PSAx KSA/IG1tQ1BfTUUxX1BJUEUwX0lOVF9DTlRMIDogbW1DUF9NRTJfUElQRTBfSU5UX0NOVEw7CisJ dGFyZ2V0ICs9IHJpbmctPnBpcGU7CisKKwlzd2l0Y2ggKHR5cGUpIHsKKwljYXNlIEFNREdQVV9D UF9LSVFfSVJRX0RSSVZFUjA6CisJCWlmIChzdGF0ZSA9PSBBTURHUFVfSVJRX1NUQVRFX0RJU0FC TEUpIHsKKwkJCXRtcCA9IFJSRUczMihtbUNQQ19JTlRfQ05UTCk7CisJCQl0bXAgPSBSRUdfU0VU X0ZJRUxEKHRtcCwgQ1BDX0lOVF9DTlRMLAorCQkJCQkJIEdFTkVSSUMyX0lOVF9FTkFCTEUsIDAp OworCQkJV1JFRzMyKG1tQ1BDX0lOVF9DTlRMLCB0bXApOworCisJCQl0bXAgPSBSUkVHMzIodGFy Z2V0KTsKKwkJCXRtcCA9IFJFR19TRVRfRklFTEQodG1wLCBDUF9NRTJfUElQRTBfSU5UX0NOVEws CisJCQkJCQkgR0VORVJJQzJfSU5UX0VOQUJMRSwgMCk7CisJCQlXUkVHMzIodGFyZ2V0LCB0bXAp OworCQl9IGVsc2UgeworCQkJdG1wID0gUlJFRzMyKG1tQ1BDX0lOVF9DTlRMKTsKKwkJCXRtcCA9 IFJFR19TRVRfRklFTEQodG1wLCBDUENfSU5UX0NOVEwsCisJCQkJCQkgR0VORVJJQzJfSU5UX0VO QUJMRSwgMSk7CisJCQlXUkVHMzIobW1DUENfSU5UX0NOVEwsIHRtcCk7CisKKwkJCXRtcCA9IFJS RUczMih0YXJnZXQpOworCQkJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIENQX01FMl9QSVBFMF9J TlRfQ05UTCwKKwkJCQkJCSBHRU5FUklDMl9JTlRfRU5BQkxFLCAxKTsKKwkJCVdSRUczMih0YXJn ZXQsIHRtcCk7CisJCX0KKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJQlVHKCk7IC8qIGtpcSBvbmx5 IHN1cHBvcnQgR0VORVJJQzJfSU5UIG5vdyAqLworCQlicmVhazsKKwl9CisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQgZ2Z4X3Y4XzBfa2lxX2lycShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwKKwkJCSAgICBzdHJ1Y3QgYW1kZ3B1X2lycV9zcmMgKnNvdXJjZSwKKwkJCSAgICBzdHJ1Y3Qg YW1kZ3B1X2l2X2VudHJ5ICplbnRyeSkKK3sKKwl1OCBtZV9pZCwgcGlwZV9pZCwgcXVldWVfaWQ7 CisJc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nID0gKHN0cnVjdCBhbWRncHVfcmluZyAqKXNvdXJj ZS0+ZGF0YTsKKworCUJVR19PTighcmluZyB8fCAocmluZy0+ZnVuY3MtPnR5cGUgIT0gQU1ER1BV X1JJTkdfVFlQRV9LSVEpKTsKKworCW1lX2lkID0gKGVudHJ5LT5yaW5nX2lkICYgMHgwYykgPj4g MjsKKwlwaXBlX2lkID0gKGVudHJ5LT5yaW5nX2lkICYgMHgwMykgPj4gMDsKKwlxdWV1ZV9pZCA9 IChlbnRyeS0+cmluZ19pZCAmIDB4NzApID4+IDQ7CisJRFJNX0RFQlVHKCJJSDogQ1BDIEdFTkVS SUMyX0lOVCwgbWU6JWQsIHBpcGU6JWQsIHF1ZXVlOiVkXG4iLAorCQkgICBtZV9pZCwgcGlwZV9p ZCwgcXVldWVfaWQpOworCisJYW1kZ3B1X2ZlbmNlX3Byb2Nlc3MocmluZyk7CisJcmV0dXJuIDA7 Cit9CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kX2lwX2Z1bmNzIGdmeF92OF8wX2lwX2Z1bmNz ID0gewogCS5uYW1lID0gImdmeF92OF8wIiwKIAkuZWFybHlfaW5pdCA9IGdmeF92OF8wX2Vhcmx5 X2luaXQsCkBAIC02NDg1LDEwICs3MDg5LDM3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kZ3B1 X3JpbmdfZnVuY3MgZ2Z4X3Y4XzBfcmluZ19mdW5jc19jb21wdXRlID0gewogCS5wYWRfaWIgPSBh bWRncHVfcmluZ19nZW5lcmljX3BhZF9pYiwKIH07CiAKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYW1k Z3B1X3JpbmdfZnVuY3MgZ2Z4X3Y4XzBfcmluZ19mdW5jc19raXEgPSB7CisJLnR5cGUgPSBBTURH UFVfUklOR19UWVBFX0tJUSwKKwkuYWxpZ25fbWFzayA9IDB4ZmYsCisJLm5vcCA9IFBBQ0tFVDMo UEFDS0VUM19OT1AsIDB4M0ZGRiksCisJLmdldF9ycHRyID0gZ2Z4X3Y4XzBfcmluZ19nZXRfcnB0 ciwKKwkuZ2V0X3dwdHIgPSBnZnhfdjhfMF9yaW5nX2dldF93cHRyX2NvbXB1dGUsCisJLnNldF93 cHRyID0gZ2Z4X3Y4XzBfcmluZ19zZXRfd3B0cl9jb21wdXRlLAorCS5lbWl0X2ZyYW1lX3NpemUg PQorCQkyMCArIC8qIGdmeF92OF8wX3JpbmdfZW1pdF9nZHNfc3dpdGNoICovCisJCTcgKyAvKiBn ZnhfdjhfMF9yaW5nX2VtaXRfaGRwX2ZsdXNoICovCisJCTUgKyAvKiBnZnhfdjhfMF9yaW5nX2Vt aXRfaGRwX2ludmFsaWRhdGUgKi8KKwkJNyArIC8qIGdmeF92OF8wX3JpbmdfZW1pdF9waXBlbGlu ZV9zeW5jICovCisJCTE3ICsgLyogZ2Z4X3Y4XzBfcmluZ19lbWl0X3ZtX2ZsdXNoICovCisJCTcg KyA3ICsgNywgLyogZ2Z4X3Y4XzBfcmluZ19lbWl0X2ZlbmNlX2NvbXB1dGUgeDMgZm9yIHVzZXIg ZmVuY2UsIHZtIGZlbmNlICovCisJLmVtaXRfaWJfc2l6ZSA9CTQsIC8qIGdmeF92OF8wX3Jpbmdf ZW1pdF9pYl9jb21wdXRlICovCisJLmVtaXRfaWIgPSBnZnhfdjhfMF9yaW5nX2VtaXRfaWJfY29t cHV0ZSwKKwkuZW1pdF9mZW5jZSA9IGdmeF92OF8wX2tpcV9yaW5nX2VtaXRfZmVuY2UsCisJLmVt aXRfaGRwX2ZsdXNoID0gZ2Z4X3Y4XzBfcmluZ19lbWl0X2hkcF9mbHVzaCwKKwkuZW1pdF9oZHBf aW52YWxpZGF0ZSA9IGdmeF92OF8wX3JpbmdfZW1pdF9oZHBfaW52YWxpZGF0ZSwKKwkudGVzdF9y aW5nID0gZ2Z4X3Y4XzBfcmluZ190ZXN0X3JpbmcsCisJLnRlc3RfaWIgPSBnZnhfdjhfMF9yaW5n X3Rlc3RfaWIsCisJLmluc2VydF9ub3AgPSBhbWRncHVfcmluZ19pbnNlcnRfbm9wLAorCS5wYWRf aWIgPSBhbWRncHVfcmluZ19nZW5lcmljX3BhZF9pYiwKK307CisKIHN0YXRpYyB2b2lkIGdmeF92 OF8wX3NldF9yaW5nX2Z1bmNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogewogCWludCBp OwogCisJYWRldi0+Z2Z4LmtpcS5yaW5nLmZ1bmNzID0gJmdmeF92OF8wX3JpbmdfZnVuY3Nfa2lx OworCiAJZm9yIChpID0gMDsgaSA8IGFkZXYtPmdmeC5udW1fZ2Z4X3JpbmdzOyBpKyspCiAJCWFk ZXYtPmdmeC5nZnhfcmluZ1tpXS5mdW5jcyA9ICZnZnhfdjhfMF9yaW5nX2Z1bmNzX2dmeDsKIApA QCAtNjUxMSw2ICs3MTQyLDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kZ3B1X2lycV9zcmNf ZnVuY3MgZ2Z4X3Y4XzBfcHJpdl9pbnN0X2lycV9mdW5jcyA9IHsKIAkucHJvY2VzcyA9IGdmeF92 OF8wX3ByaXZfaW5zdF9pcnEsCiB9OwogCitzdGF0aWMgY29uc3Qgc3RydWN0IGFtZGdwdV9pcnFf c3JjX2Z1bmNzIGdmeF92OF8wX2tpcV9pcnFfZnVuY3MgPSB7CisJLnNldCA9IGdmeF92OF8wX2tp cV9zZXRfaW50ZXJydXB0X3N0YXRlLAorCS5wcm9jZXNzID0gZ2Z4X3Y4XzBfa2lxX2lycSwKK307 CisKIHN0YXRpYyB2b2lkIGdmeF92OF8wX3NldF9pcnFfZnVuY3Moc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYpCiB7CiAJYWRldi0+Z2Z4LmVvcF9pcnEubnVtX3R5cGVzID0gQU1ER1BVX0NQX0lS UV9MQVNUOwpAQCAtNjUyMSw2ICs3MTU3LDkgQEAgc3RhdGljIHZvaWQgZ2Z4X3Y4XzBfc2V0X2ly cV9mdW5jcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAogCWFkZXYtPmdmeC5wcml2X2lu c3RfaXJxLm51bV90eXBlcyA9IDE7CiAJYWRldi0+Z2Z4LnByaXZfaW5zdF9pcnEuZnVuY3MgPSAm Z2Z4X3Y4XzBfcHJpdl9pbnN0X2lycV9mdW5jczsKKworCWFkZXYtPmdmeC5raXEuaXJxLm51bV90 eXBlcyA9IEFNREdQVV9DUF9LSVFfSVJRX0xBU1Q7CisJYWRldi0+Z2Z4LmtpcS5pcnEuZnVuY3Mg PSAmZ2Z4X3Y4XzBfa2lxX2lycV9mdW5jczsKIH0KIAogc3RhdGljIHZvaWQgZ2Z4X3Y4XzBfc2V0 X3JsY19mdW5jcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZpZC5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv dmlkLmgKaW5kZXggMTE3NDZmMi4uN2EzODYzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvdmlkLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmlkLmgK QEAgLTM2MCw2ICszNjAsOCBAQAogI2RlZmluZQlQQUNLRVQzX1dBSVRfT05fQ0VfQ09VTlRFUgkJ CTB4ODYKICNkZWZpbmUJUEFDS0VUM19XQUlUX09OX0RFX0NPVU5URVJfRElGRgkJCTB4ODgKICNk ZWZpbmUJUEFDS0VUM19TV0lUQ0hfQlVGRkVSCQkJCTB4OEIKKyNkZWZpbmUJUEFDS0VUM19TRVRf UkVTT1VSQ0VTCQkJCTB4QTAKKyNkZWZpbmUJUEFDS0VUM19NQVBfUVVFVUVTCQkJCTB4QTIKIAog I2RlZmluZSBWQ0VfQ01EX05PX09QCQkweDAwMDAwMDAwCiAjZGVmaW5lIFZDRV9DTURfRU5ECQkw eDAwMDAwMDAxCi0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQt Z2Z4Cg==