From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andres Rodriguez Subject: [PATCH 12/17] drm/amdkfd: allow split HQD on per-queue granularity v4 Date: Mon, 17 Apr 2017 18:48:08 -0400 Message-ID: <20170417224813.3173-13-andresx7@gmail.com> References: <20170417224813.3173-1-andresx7@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170417224813.3173-1-andresx7-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 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: andresx7-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org VXBkYXRlIHRoZSBLR0QgdG8gS0ZEIGludGVyZmFjZSB0byBhbGxvdyBzaGFyaW5nIHBpcGVzIHdp dGggcXVldWUKZ3JhbnVsYXJpdHkgaW5zdGVhZCBvZiBwaXBlIGdyYW51bGFyaXR5LgoKVGhpcyBh bGxvd3MgZm9yIG1vcmUgaW50ZXJlc3RpbmcgcGlwZS9xdWV1ZSBzcGxpdHMuCgp2MjogZml4IG92 ZXJmbG93IGNoZWNrIGZvciByZXMucXVldWVfbWFzawp2MzogZml4IHNoaWZ0IG92ZXJmbG93IHdo ZW4gc2V0dGluZyByZXMucXVldWVfbWFzawp2NDogZml4IGNvbW1lbnQgaW4gaXNfcGlwZWxpbmVf ZW5hYmxlZCgpCgpSZXZpZXdlZC1ieTogRWR3YXJkIE8nQ2FsbGFnaGFuIDxmdW5mdW5jdG9yQGZv bGtsb3JlMTk4NC5uZXQ+ClJldmlld2VkLWJ5OiBGZWxpeCBLdWVobGluZyA8RmVsaXguS3VlaGxp bmdAYW1kLmNvbT4KQWNrZWQtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdA YW1kLmNvbT4KU2lnbmVkLW9mZi1ieTogQW5kcmVzIFJvZHJpZ3VleiA8YW5kcmVzeDdAZ21haWwu Y29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmQuYyAgICAg ICAgIHwgIDIyICsrKystCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlLmMg ICAgICAgICAgICB8ICAgNCArCiAuLi4vZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVl dWVfbWFuYWdlci5jICB8IDEwMCArKysrKysrKysrKysrKy0tLS0tLS0KIC4uLi9ncHUvZHJtL2Ft ZC9hbWRrZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyLmggIHwgIDEwICstLQogLi4uL2RybS9h bWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVldWVfbWFuYWdlcl9jaWsuYyAgfCAgIDIgKy0KIGRyaXZl cnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wYWNrZXRfbWFuYWdlci5jICAgIHwgICAzICstCiAu Li4vZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wcm9jZXNzX3F1ZXVlX21hbmFnZXIuYyB8ICAgMiAr LQogZHJpdmVycy9ncHUvZHJtL2FtZC9pbmNsdWRlL2tnZF9rZmRfaW50ZXJmYWNlLmggICAgfCAg MTcgKystLQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fa2ZkLmMgICAgICAgICAgICAg ICAgfCAgMjEgKysrKy0KIDkgZmlsZXMgY2hhbmdlZCwgMTI2IGluc2VydGlvbnMoKyksIDU1IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9hbWRrZmQuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmQuYwpp bmRleCAzMjAwZmY5Li44ZmM1YWEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfYW1ka2ZkLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X2FtZGtmZC5jCkBAIC03OCw0OCArNzgsNjQgQEAgYm9vbCBhbWRncHVfYW1ka2ZkX2xvYWRf aW50ZXJmYWNlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCXJldHVybiB0cnVlOwogfQog CiB2b2lkIGFtZGdwdV9hbWRrZmRfZmluaSh2b2lkKQogewogCWlmIChrZ2Qya2ZkKSB7CiAJCWtn ZDJrZmQtPmV4aXQoKTsKIAkJc3ltYm9sX3B1dChrZ2Qya2ZkX2luaXQpOwogCX0KIH0KIAogdm9p ZCBhbWRncHVfYW1ka2ZkX2RldmljZV9wcm9iZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikK IHsKIAlpZiAoa2dkMmtmZCkKIAkJYWRldi0+a2ZkID0ga2dkMmtmZC0+cHJvYmUoKHN0cnVjdCBr Z2RfZGV2ICopYWRldiwKIAkJCQkJYWRldi0+cGRldiwga2ZkMmtnZCk7CiB9CiAKIHZvaWQgYW1k Z3B1X2FtZGtmZF9kZXZpY2VfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKKwlp bnQgaTsKKwlpbnQgbGFzdF92YWxpZF9iaXQ7CiAJaWYgKGFkZXYtPmtmZCkgewogCQlzdHJ1Y3Qg a2dkMmtmZF9zaGFyZWRfcmVzb3VyY2VzIGdwdV9yZXNvdXJjZXMgPSB7CiAJCQkuY29tcHV0ZV92 bWlkX2JpdG1hcCA9IDB4RkYwMCwKLQotCQkJLmZpcnN0X2NvbXB1dGVfcGlwZSA9IDEsCi0JCQku Y29tcHV0ZV9waXBlX2NvdW50ID0gNCAtIDEsCisJCQkubnVtX21lYyA9IGFkZXYtPmdmeC5tZWMu bnVtX21lYywKKwkJCS5udW1fcGlwZV9wZXJfbWVjID0gYWRldi0+Z2Z4Lm1lYy5udW1fcGlwZV9w ZXJfbWVjLAorCQkJLm51bV9xdWV1ZV9wZXJfcGlwZSA9IGFkZXYtPmdmeC5tZWMubnVtX3F1ZXVl X3Blcl9waXBlCiAJCX07CiAKKwkJLyogdGhpcyBpcyBnb2luZyB0byBoYXZlIGEgZmV3IG9mIHRo ZSBNU0JzIHNldCB0aGF0IHdlIG5lZWQgdG8KKwkJICogY2xlYXIgKi8KKwkJYml0bWFwX2NvbXBs ZW1lbnQoZ3B1X3Jlc291cmNlcy5xdWV1ZV9iaXRtYXAsCisJCQkJICBhZGV2LT5nZngubWVjLnF1 ZXVlX2JpdG1hcCwKKwkJCQkgIEtHRF9NQVhfUVVFVUVTKTsKKworCQkvKiBBY2NvcmRpbmcgdG8g bGludXgvYml0bWFwLmggd2Ugc2hvdWxkbid0IHVzZSBiaXRtYXBfY2xlYXIgaWYKKwkJICogbmJp dHMgaXMgbm90IGNvbXBpbGUgdGltZSBjb25zdGFudCAqLworCQlsYXN0X3ZhbGlkX2JpdCA9IGFk ZXYtPmdmeC5tZWMubnVtX21lYworCQkJCSogYWRldi0+Z2Z4Lm1lYy5udW1fcGlwZV9wZXJfbWVj CisJCQkJKiBhZGV2LT5nZngubWVjLm51bV9xdWV1ZV9wZXJfcGlwZTsKKwkJZm9yIChpID0gbGFz dF92YWxpZF9iaXQ7IGkgPCBLR0RfTUFYX1FVRVVFUzsgKytpKQorCQkJY2xlYXJfYml0KGksIGdw dV9yZXNvdXJjZXMucXVldWVfYml0bWFwKTsKKwogCQlhbWRncHVfZG9vcmJlbGxfZ2V0X2tmZF9p bmZvKGFkZXYsCiAJCQkJJmdwdV9yZXNvdXJjZXMuZG9vcmJlbGxfcGh5c2ljYWxfYWRkcmVzcywK IAkJCQkmZ3B1X3Jlc291cmNlcy5kb29yYmVsbF9hcGVydHVyZV9zaXplLAogCQkJCSZncHVfcmVz b3VyY2VzLmRvb3JiZWxsX3N0YXJ0X29mZnNldCk7CiAKIAkJa2dkMmtmZC0+ZGV2aWNlX2luaXQo YWRldi0+a2ZkLCAmZ3B1X3Jlc291cmNlcyk7CiAJfQogfQogCiB2b2lkIGFtZGdwdV9hbWRrZmRf ZGV2aWNlX2Zpbmkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJaWYgKGFkZXYtPmtm ZCkgewogCQlrZ2Qya2ZkLT5kZXZpY2VfZXhpdChhZGV2LT5rZmQpOwogCQlhZGV2LT5rZmQgPSBO VUxMOwogCX0KIH0KIAogdm9pZCBhbWRncHVfYW1ka2ZkX2ludGVycnVwdChzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwKIAkJY29uc3Qgdm9pZCAqaWhfcmluZ19lbnRyeSkKIHsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2UuYyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2UuYwppbmRleCAzZjk1ZjdjLi44ODE4N2JmIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZS5jCkBAIC0yMDksNDAgKzIwOSw0NCBA QCBzdGF0aWMgaW50IGlvbW11X2ludmFsaWRfcHByX2NiKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBp bnQgcGFzaWQsCiAJCQlwYXNpZCwKIAkJCWFkZHJlc3MsCiAJCQlmbGFncyk7CiAKIAlkZXYgPSBr ZmRfZGV2aWNlX2J5X3BjaV9kZXYocGRldik7CiAJQlVHX09OKGRldiA9PSBOVUxMKTsKIAogCWtm ZF9zaWduYWxfaW9tbXVfZXZlbnQoZGV2LCBwYXNpZCwgYWRkcmVzcywKIAkJCWZsYWdzICYgUFBS X0ZBVUxUX1dSSVRFLCBmbGFncyAmIFBQUl9GQVVMVF9FWEVDKTsKIAogCXJldHVybiBBTURfSU9N TVVfSU5WX1BSSV9SU1BfSU5WQUxJRDsKIH0KIAogYm9vbCBrZ2Qya2ZkX2RldmljZV9pbml0KHN0 cnVjdCBrZmRfZGV2ICprZmQsCiAJCQkgY29uc3Qgc3RydWN0IGtnZDJrZmRfc2hhcmVkX3Jlc291 cmNlcyAqZ3B1X3Jlc291cmNlcykKIHsKIAl1bnNpZ25lZCBpbnQgc2l6ZTsKIAogCWtmZC0+c2hh cmVkX3Jlc291cmNlcyA9ICpncHVfcmVzb3VyY2VzOwogCisJLyogV2Ugb25seSB1c2UgdGhlIGZp cnN0IE1FQyAqLworCWlmIChrZmQtPnNoYXJlZF9yZXNvdXJjZXMubnVtX21lYyA+IDEpCisJCWtm ZC0+c2hhcmVkX3Jlc291cmNlcy5udW1fbWVjID0gMTsKKwogCS8qIGNhbGN1bGF0ZSBtYXggc2l6 ZSBvZiBtcWRzIG5lZWRlZCBmb3IgcXVldWVzICovCiAJc2l6ZSA9IG1heF9udW1fb2ZfcXVldWVz X3Blcl9kZXZpY2UgKgogCQkJa2ZkLT5kZXZpY2VfaW5mby0+bXFkX3NpemVfYWxpZ25lZDsKIAog CS8qCiAJICogY2FsY3VsYXRlIG1heCBzaXplIG9mIHJ1bmxpc3QgcGFja2V0LgogCSAqIFRoZXJl IGNhbiBiZSBvbmx5IDIgcGFja2V0cyBhdCBvbmNlCiAJICovCiAJc2l6ZSArPSAoS0ZEX01BWF9O VU1fT0ZfUFJPQ0VTU0VTICogc2l6ZW9mKHN0cnVjdCBwbTRfbWFwX3Byb2Nlc3MpICsKIAkJbWF4 X251bV9vZl9xdWV1ZXNfcGVyX2RldmljZSAqCiAJCXNpemVvZihzdHJ1Y3QgcG00X21hcF9xdWV1 ZXMpICsgc2l6ZW9mKHN0cnVjdCBwbTRfcnVubGlzdCkpICogMjsKIAogCS8qIEFkZCBzaXplIG9m IEhJUSAmIERJUSAqLwogCXNpemUgKz0gS0ZEX0tFUk5FTF9RVUVVRV9TSVpFICogMjsKIAogCS8q IGFkZCBhbm90aGVyIDUxMktCIGZvciBhbGwgb3RoZXIgYWxsb2NhdGlvbnMgb24gZ2FydCAoSFBE LCBmZW5jZXMpICovCiAJc2l6ZSArPSA1MTIgKiAxMDI0OwogCiAJaWYgKGtmZC0+a2ZkMmtnZC0+ aW5pdF9ndHRfbWVtX2FsbG9jYXRpb24oCiAJCQlrZmQtPmtnZCwgc2l6ZSwgJmtmZC0+Z3R0X21l bSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVl dWVfbWFuYWdlci5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZV9xdWV1 ZV9tYW5hZ2VyLmMKaW5kZXggYzA2NGRlYS4uNWYyODcyMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyLmMKQEAgLTQ2LDU1 ICs0Niw3OCBAQCBzdGF0aWMgaW50IGNyZWF0ZV9jb21wdXRlX3F1ZXVlX25vY3BzY2goc3RydWN0 IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sCiAKIHN0YXRpYyBpbnQgZXhlY3V0ZV9xdWV1ZXNf Y3BzY2goc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sIGJvb2wgbG9jayk7CiBzdGF0 aWMgaW50IGRlc3Ryb3lfcXVldWVzX2Nwc2NoKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAq ZHFtLAogCQkJCWJvb2wgcHJlZW1wdF9zdGF0aWNfcXVldWVzLCBib29sIGxvY2spOwogCiBzdGF0 aWMgaW50IGNyZWF0ZV9zZG1hX3F1ZXVlX25vY3BzY2goc3RydWN0IGRldmljZV9xdWV1ZV9tYW5h Z2VyICpkcW0sCiAJCQkJCXN0cnVjdCBxdWV1ZSAqcSwKIAkJCQkJc3RydWN0IHFjbV9wcm9jZXNz X2RldmljZSAqcXBkKTsKIAogc3RhdGljIHZvaWQgZGVhbGxvY2F0ZV9zZG1hX3F1ZXVlKHN0cnVj dCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLAogCQkJCXVuc2lnbmVkIGludCBzZG1hX3F1ZXVl X2lkKTsKIAogc3RhdGljIGlubGluZQogZW51bSBLRkRfTVFEX1RZUEUgZ2V0X21xZF90eXBlX2Zy b21fcXVldWVfdHlwZShlbnVtIGtmZF9xdWV1ZV90eXBlIHR5cGUpCiB7CiAJaWYgKHR5cGUgPT0g S0ZEX1FVRVVFX1RZUEVfU0RNQSkKIAkJcmV0dXJuIEtGRF9NUURfVFlQRV9TRE1BOwogCXJldHVy biBLRkRfTVFEX1RZUEVfQ1A7CiB9CiAKLXVuc2lnbmVkIGludCBnZXRfZmlyc3RfcGlwZShzdHJ1 Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSkKK3N0YXRpYyBib29sIGlzX3BpcGVfZW5hYmxl ZChzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwgaW50IG1lYywgaW50IHBpcGUpCit7 CisJaW50IGk7CisJaW50IHBpcGVfb2Zmc2V0ID0gbWVjICogZHFtLT5kZXYtPnNoYXJlZF9yZXNv dXJjZXMubnVtX3BpcGVfcGVyX21lYworCQkrIHBpcGUgKiBkcW0tPmRldi0+c2hhcmVkX3Jlc291 cmNlcy5udW1fcXVldWVfcGVyX3BpcGU7CisKKwkvKiBxdWV1ZSBpcyBhdmFpbGFibGUgZm9yIEtG RCB1c2FnZSBpZiBiaXQgaXMgMSAqLworCWZvciAoaSA9IDA7IGkgPCAgZHFtLT5kZXYtPnNoYXJl ZF9yZXNvdXJjZXMubnVtX3F1ZXVlX3Blcl9waXBlOyArK2kpCisJCWlmICh0ZXN0X2JpdChwaXBl X29mZnNldCArIGksCisJCQkgICAgICBkcW0tPmRldi0+c2hhcmVkX3Jlc291cmNlcy5xdWV1ZV9i aXRtYXApKQorCQkJcmV0dXJuIHRydWU7CisJcmV0dXJuIGZhbHNlOworfQorCit1bnNpZ25lZCBp bnQgZ2V0X21lY19udW0oc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0pCit7CisJQlVH X09OKCFkcW0gfHwgIWRxbS0+ZGV2KTsKKworCXJldHVybiBkcW0tPmRldi0+c2hhcmVkX3Jlc291 cmNlcy5udW1fbWVjOworfQorCit1bnNpZ25lZCBpbnQgZ2V0X3F1ZXVlc19udW0oc3RydWN0IGRl dmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0pCiB7CiAJQlVHX09OKCFkcW0gfHwgIWRxbS0+ZGV2KTsK LQlyZXR1cm4gZHFtLT5kZXYtPnNoYXJlZF9yZXNvdXJjZXMuZmlyc3RfY29tcHV0ZV9waXBlOwor CXJldHVybiBiaXRtYXBfd2VpZ2h0KGRxbS0+ZGV2LT5zaGFyZWRfcmVzb3VyY2VzLnF1ZXVlX2Jp dG1hcCwKKwkJCQlLR0RfTUFYX1FVRVVFUyk7CiB9CiAKLXVuc2lnbmVkIGludCBnZXRfcGlwZXNf bnVtKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtKQordW5zaWduZWQgaW50IGdldF9x dWV1ZXNfcGVyX3BpcGUoc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0pCiB7CiAJQlVH X09OKCFkcW0gfHwgIWRxbS0+ZGV2KTsKLQlyZXR1cm4gZHFtLT5kZXYtPnNoYXJlZF9yZXNvdXJj ZXMuY29tcHV0ZV9waXBlX2NvdW50OworCXJldHVybiBkcW0tPmRldi0+c2hhcmVkX3Jlc291cmNl cy5udW1fcXVldWVfcGVyX3BpcGU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdl dF9waXBlc19udW1fY3BzY2godm9pZCkKK3Vuc2lnbmVkIGludCBnZXRfcGlwZXNfcGVyX21lYyhz dHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSkKIHsKLQlyZXR1cm4gUElQRV9QRVJfTUVf Q1BfU0NIRURVTElORzsKKwlCVUdfT04oIWRxbSB8fCAhZHFtLT5kZXYpOworCXJldHVybiBkcW0t PmRldi0+c2hhcmVkX3Jlc291cmNlcy5udW1fcGlwZV9wZXJfbWVjOwogfQogCiB2b2lkIHByb2dy YW1fc2hfbWVtX3NldHRpbmdzKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLAogCQkJ CQlzdHJ1Y3QgcWNtX3Byb2Nlc3NfZGV2aWNlICpxcGQpCiB7CiAJcmV0dXJuIGRxbS0+ZGV2LT5r ZmQya2dkLT5wcm9ncmFtX3NoX21lbV9zZXR0aW5ncygKIAkJCQkJCWRxbS0+ZGV2LT5rZ2QsIHFw ZC0+dm1pZCwKIAkJCQkJCXFwZC0+c2hfbWVtX2NvbmZpZywKIAkJCQkJCXFwZC0+c2hfbWVtX2Fw ZTFfYmFzZSwKIAkJCQkJCXFwZC0+c2hfbWVtX2FwZTFfbGltaXQsCiAJCQkJCQlxcGQtPnNoX21l bV9iYXNlcyk7CiB9CiAKIHN0YXRpYyBpbnQgYWxsb2NhdGVfdm1pZChzdHJ1Y3QgZGV2aWNlX3F1 ZXVlX21hbmFnZXIgKmRxbSwKIAkJCXN0cnVjdCBxY21fcHJvY2Vzc19kZXZpY2UgKnFwZCwKIAkJ CXN0cnVjdCBxdWV1ZSAqcSkKIHsKIAlpbnQgYml0LCBhbGxvY2F0ZWRfdm1pZDsKIAogCWlmIChk cW0tPnZtaWRfYml0bWFwID09IDApCkBAIC0xODMsNjMgKzIwNiw2NyBAQCBzdGF0aWMgaW50IGNy ZWF0ZV9xdWV1ZV9ub2Nwc2NoKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLAogCiAJ LyoKIAkgKiBVbmNvbmRpdGlvbmFsbHkgaW5jcmVtZW50IHRoaXMgY291bnRlciwgcmVnYXJkbGVz cyBvZiB0aGUgcXVldWUncwogCSAqIHR5cGUgb3Igd2hldGhlciB0aGUgcXVldWUgaXMgYWN0aXZl LgogCSAqLwogCWRxbS0+dG90YWxfcXVldWVfY291bnQrKzsKIAlwcl9kZWJ1ZygiVG90YWwgb2Yg JWQgcXVldWVzIGFyZSBhY2NvdW50YWJsZSBzbyBmYXJcbiIsCiAJCQlkcW0tPnRvdGFsX3F1ZXVl X2NvdW50KTsKIAogCW11dGV4X3VubG9jaygmZHFtLT5sb2NrKTsKIAlyZXR1cm4gMDsKIH0KIAog c3RhdGljIGludCBhbGxvY2F0ZV9ocWQoc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0s IHN0cnVjdCBxdWV1ZSAqcSkKIHsKIAlib29sIHNldDsKIAlpbnQgcGlwZSwgYml0LCBpOwogCiAJ c2V0ID0gZmFsc2U7CiAKLQlmb3IgKHBpcGUgPSBkcW0tPm5leHRfcGlwZV90b19hbGxvY2F0ZSwg aSA9IDA7IGkgPCBnZXRfcGlwZXNfbnVtKGRxbSk7Ci0JCQlwaXBlID0gKChwaXBlICsgMSkgJSBn ZXRfcGlwZXNfbnVtKGRxbSkpLCArK2kpIHsKKwlmb3IgKHBpcGUgPSBkcW0tPm5leHRfcGlwZV90 b19hbGxvY2F0ZSwgaSA9IDA7IGkgPCBnZXRfcGlwZXNfcGVyX21lYyhkcW0pOworCQkJcGlwZSA9 ICgocGlwZSArIDEpICUgZ2V0X3BpcGVzX3Blcl9tZWMoZHFtKSksICsraSkgeworCisJCWlmICgh aXNfcGlwZV9lbmFibGVkKGRxbSwgMCwgcGlwZSkpCisJCQljb250aW51ZTsKKwogCQlpZiAoZHFt LT5hbGxvY2F0ZWRfcXVldWVzW3BpcGVdICE9IDApIHsKIAkJCWJpdCA9IGZpbmRfZmlyc3RfYml0 KAogCQkJCSh1bnNpZ25lZCBsb25nICopJmRxbS0+YWxsb2NhdGVkX3F1ZXVlc1twaXBlXSwKLQkJ CQlRVUVVRVNfUEVSX1BJUEUpOworCQkJCWdldF9xdWV1ZXNfcGVyX3BpcGUoZHFtKSk7CiAKIAkJ CWNsZWFyX2JpdChiaXQsCiAJCQkJKHVuc2lnbmVkIGxvbmcgKikmZHFtLT5hbGxvY2F0ZWRfcXVl dWVzW3BpcGVdKTsKIAkJCXEtPnBpcGUgPSBwaXBlOwogCQkJcS0+cXVldWUgPSBiaXQ7CiAJCQlz ZXQgPSB0cnVlOwogCQkJYnJlYWs7CiAJCX0KIAl9CiAKIAlpZiAoIXNldCkKIAkJcmV0dXJuIC1F QlVTWTsKIAogCXByX2RlYnVnKCJrZmQ6IERRTSAlcyBocWQgc2xvdCAtIHBpcGUgKCVkKSBxdWV1 ZSglZClcbiIsCiAJCQkJX19mdW5jX18sIHEtPnBpcGUsIHEtPnF1ZXVlKTsKIAkvKiBob3Jpem9u dGFsIGhxZCBhbGxvY2F0aW9uICovCi0JZHFtLT5uZXh0X3BpcGVfdG9fYWxsb2NhdGUgPSAocGlw ZSArIDEpICUgZ2V0X3BpcGVzX251bShkcW0pOworCWRxbS0+bmV4dF9waXBlX3RvX2FsbG9jYXRl ID0gKHBpcGUgKyAxKSAlIGdldF9waXBlc19wZXJfbWVjKGRxbSk7CiAKIAlyZXR1cm4gMDsKIH0K IAogc3RhdGljIGlubGluZSB2b2lkIGRlYWxsb2NhdGVfaHFkKHN0cnVjdCBkZXZpY2VfcXVldWVf bWFuYWdlciAqZHFtLAogCQkJCXN0cnVjdCBxdWV1ZSAqcSkKIHsKIAlzZXRfYml0KHEtPnF1ZXVl LCAodW5zaWduZWQgbG9uZyAqKSZkcW0tPmFsbG9jYXRlZF9xdWV1ZXNbcS0+cGlwZV0pOwogfQog CiBzdGF0aWMgaW50IGNyZWF0ZV9jb21wdXRlX3F1ZXVlX25vY3BzY2goc3RydWN0IGRldmljZV9x dWV1ZV9tYW5hZ2VyICpkcW0sCiAJCQkJCXN0cnVjdCBxdWV1ZSAqcSwKIAkJCQkJc3RydWN0IHFj bV9wcm9jZXNzX2RldmljZSAqcXBkKQogewogCWludCByZXR2YWw7CiAJc3RydWN0IG1xZF9tYW5h Z2VyICptcWQ7CiAKIAlCVUdfT04oIWRxbSB8fCAhcSB8fCAhcXBkKTsKIAogCW1xZCA9IGRxbS0+ b3BzLmdldF9tcWRfbWFuYWdlcihkcW0sIEtGRF9NUURfVFlQRV9DT01QVVRFKTsKQEAgLTQ1Miw5 NSArNDc5LDg0IEBAIHN0YXRpYyBpbnQgdW5yZWdpc3Rlcl9wcm9jZXNzX25vY3BzY2goc3RydWN0 IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sCiBvdXQ6CiAJbXV0ZXhfdW5sb2NrKCZkcW0tPmxv Y2spOwogCXJldHVybiByZXR2YWw7CiB9CiAKIHN0YXRpYyBpbnQKIHNldF9wYXNpZF92bWlkX21h cHBpbmcoc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sIHVuc2lnbmVkIGludCBwYXNp ZCwKIAkJCXVuc2lnbmVkIGludCB2bWlkKQogewogCXVpbnQzMl90IHBhc2lkX21hcHBpbmc7CiAK IAlwYXNpZF9tYXBwaW5nID0gKHBhc2lkID09IDApID8gMCA6CiAJCSh1aW50MzJfdClwYXNpZCB8 CiAJCUFUQ19WTUlEX1BBU0lEX01BUFBJTkdfVkFMSUQ7CiAKIAlyZXR1cm4gZHFtLT5kZXYtPmtm ZDJrZ2QtPnNldF9wYXNpZF92bWlkX21hcHBpbmcoCiAJCQkJCQlkcW0tPmRldi0+a2dkLCBwYXNp ZF9tYXBwaW5nLAogCQkJCQkJdm1pZCk7CiB9CiAKLWludCBpbml0X3BpcGVsaW5lcyhzdHJ1Y3Qg ZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwKLQkJCXVuc2lnbmVkIGludCBwaXBlc19udW0sIHVu c2lnbmVkIGludCBmaXJzdF9waXBlKQotewotCUJVR19PTighZHFtIHx8ICFkcW0tPmRldik7Ci0K LQlwcl9kZWJ1Zygia2ZkOiBJbiBmdW5jICVzXG4iLCBfX2Z1bmNfXyk7Ci0KLQlyZXR1cm4gMDsK LX0KLQogc3RhdGljIHZvaWQgaW5pdF9pbnRlcnJ1cHRzKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFu YWdlciAqZHFtKQogewogCXVuc2lnbmVkIGludCBpOwogCiAJQlVHX09OKGRxbSA9PSBOVUxMKTsK IAotCWZvciAoaSA9IDAgOyBpIDwgZ2V0X3BpcGVzX251bShkcW0pIDsgaSsrKQotCQlkcW0tPmRl di0+a2ZkMmtnZC0+aW5pdF9pbnRlcnJ1cHRzKGRxbS0+ZGV2LT5rZ2QsCi0JCQkJaSArIGdldF9m aXJzdF9waXBlKGRxbSkpOworCWZvciAoaSA9IDAgOyBpIDwgZ2V0X3BpcGVzX3Blcl9tZWMoZHFt KSA7IGkrKykKKwkJaWYgKGlzX3BpcGVfZW5hYmxlZChkcW0sIDAsIGkpKQorCQkJZHFtLT5kZXYt PmtmZDJrZ2QtPmluaXRfaW50ZXJydXB0cyhkcW0tPmRldi0+a2dkLCBpKTsKIH0KIAogc3RhdGlj IGludCBpbml0X3NjaGVkdWxlcihzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSkKIHsK LQlpbnQgcmV0dmFsOworCWludCByZXR2YWwgPSAwOwogCiAJQlVHX09OKCFkcW0pOwogCiAJcHJf ZGVidWcoImtmZDogSW4gJXNcbiIsIF9fZnVuY19fKTsKIAotCXJldHZhbCA9IGluaXRfcGlwZWxp bmVzKGRxbSwgZ2V0X3BpcGVzX251bShkcW0pLCBnZXRfZmlyc3RfcGlwZShkcW0pKTsKIAlyZXR1 cm4gcmV0dmFsOwogfQogCiBzdGF0aWMgaW50IGluaXRpYWxpemVfbm9jcHNjaChzdHJ1Y3QgZGV2 aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSkKIHsKIAlpbnQgaTsKIAogCUJVR19PTighZHFtKTsKIAog CXByX2RlYnVnKCJrZmQ6IEluIGZ1bmMgJXMgbnVtIG9mIHBpcGVzOiAlZFxuIiwKLQkJCV9fZnVu Y19fLCBnZXRfcGlwZXNfbnVtKGRxbSkpOworCQkJX19mdW5jX18sIGdldF9waXBlc19wZXJfbWVj KGRxbSkpOwogCiAJbXV0ZXhfaW5pdCgmZHFtLT5sb2NrKTsKIAlJTklUX0xJU1RfSEVBRCgmZHFt LT5xdWV1ZXMpOwogCWRxbS0+cXVldWVfY291bnQgPSBkcW0tPm5leHRfcGlwZV90b19hbGxvY2F0 ZSA9IDA7CiAJZHFtLT5zZG1hX3F1ZXVlX2NvdW50ID0gMDsKLQlkcW0tPmFsbG9jYXRlZF9xdWV1 ZXMgPSBrY2FsbG9jKGdldF9waXBlc19udW0oZHFtKSwKKwlkcW0tPmFsbG9jYXRlZF9xdWV1ZXMg PSBrY2FsbG9jKGdldF9waXBlc19wZXJfbWVjKGRxbSksCiAJCQkJCXNpemVvZih1bnNpZ25lZCBp bnQpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIWRxbS0+YWxsb2NhdGVkX3F1ZXVlcykgewogCQltdXRl eF9kZXN0cm95KCZkcW0tPmxvY2spOwogCQlyZXR1cm4gLUVOT01FTTsKIAl9CiAKLQlmb3IgKGkg PSAwOyBpIDwgZ2V0X3BpcGVzX251bShkcW0pOyBpKyspCi0JCWRxbS0+YWxsb2NhdGVkX3F1ZXVl c1tpXSA9ICgxIDw8IFFVRVVFU19QRVJfUElQRSkgLSAxOworCWZvciAoaSA9IDA7IGkgPCBnZXRf cGlwZXNfcGVyX21lYyhkcW0pOyBpKyspCisJCWRxbS0+YWxsb2NhdGVkX3F1ZXVlc1tpXSA9ICgx IDw8IGdldF9xdWV1ZXNfcGVyX3BpcGUoZHFtKSkgLSAxOwogCiAJZHFtLT52bWlkX2JpdG1hcCA9 ICgxIDw8IFZNSURfUEVSX0RFVklDRSkgLSAxOwogCWRxbS0+c2RtYV9iaXRtYXAgPSAoMSA8PCBD SUtfU0RNQV9RVUVVRVMpIC0gMTsKIAogCWluaXRfc2NoZWR1bGVyKGRxbSk7CiAJcmV0dXJuIDA7 CiB9CiAKIHN0YXRpYyB2b2lkIHVuaW5pdGlhbGl6ZV9ub2Nwc2NoKHN0cnVjdCBkZXZpY2VfcXVl dWVfbWFuYWdlciAqZHFtKQogewogCWludCBpOwogCiAJQlVHX09OKCFkcW0pOwogCiAJQlVHX09O KGRxbS0+cXVldWVfY291bnQgPiAwIHx8IGRxbS0+cHJvY2Vzc2VzX2NvdW50ID4gMCk7CiAKIAlr ZnJlZShkcW0tPmFsbG9jYXRlZF9xdWV1ZXMpOwogCWZvciAoaSA9IDAgOyBpIDwgS0ZEX01RRF9U WVBFX01BWCA7IGkrKykKIAkJa2ZyZWUoZHFtLT5tcWRzW2ldKTsKIAltdXRleF9kZXN0cm95KCZk cW0tPmxvY2spOwpAQCAtNjEzLDcxICs2MjksODcgQEAgc3RhdGljIGludCBjcmVhdGVfc2RtYV9x dWV1ZV9ub2Nwc2NoKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLAogCQlyZXR1cm4g cmV0dmFsOwogCX0KIAogCXJldHZhbCA9IG1xZC0+bG9hZF9tcWQobXFkLCBxLT5tcWQsIDAsCiAJ CQkJMCwgTlVMTCk7CiAJaWYgKHJldHZhbCAhPSAwKSB7CiAJCWRlYWxsb2NhdGVfc2RtYV9xdWV1 ZShkcW0sIHEtPnNkbWFfaWQpOwogCQltcWQtPnVuaW5pdF9tcWQobXFkLCBxLT5tcWQsIHEtPm1x ZF9tZW1fb2JqKTsKIAkJcmV0dXJuIHJldHZhbDsKIAl9CiAKIAlyZXR1cm4gMDsKIH0KIAogLyoK ICAqIERldmljZSBRdWV1ZSBNYW5hZ2VyIGltcGxlbWVudGF0aW9uIGZvciBjcCBzY2hlZHVsZXIK ICAqLwogCiBzdGF0aWMgaW50IHNldF9zY2hlZF9yZXNvdXJjZXMoc3RydWN0IGRldmljZV9xdWV1 ZV9tYW5hZ2VyICpkcW0pCiB7CisJaW50IGk7CiAJc3RydWN0IHNjaGVkdWxpbmdfcmVzb3VyY2Vz IHJlczsKLQl1bnNpZ25lZCBpbnQgcXVldWVfbnVtLCBxdWV1ZV9tYXNrOwogCiAJQlVHX09OKCFk cW0pOwogCiAJcHJfZGVidWcoImtmZDogSW4gZnVuYyAlc1xuIiwgX19mdW5jX18pOwogCi0JcXVl dWVfbnVtID0gZ2V0X3BpcGVzX251bV9jcHNjaCgpICogUVVFVUVTX1BFUl9QSVBFOwotCXF1ZXVl X21hc2sgPSAoMSA8PCBxdWV1ZV9udW0pIC0gMTsKIAlyZXMudm1pZF9tYXNrID0gKDEgPDwgVk1J RF9QRVJfREVWSUNFKSAtIDE7CiAJcmVzLnZtaWRfbWFzayA8PD0gS0ZEX1ZNSURfU1RBUlRfT0ZG U0VUOwotCXJlcy5xdWV1ZV9tYXNrID0gcXVldWVfbWFzayA8PCAoZ2V0X2ZpcnN0X3BpcGUoZHFt KSAqIFFVRVVFU19QRVJfUElQRSk7CisKKwkvKiBBdm9pZCB0b3VjaGluZyB0aGUgaW50ZXJuYWwg cmVwcmVzZW50YXRpb24gcXVldWVfYml0bWFwIGRpcmVjdGx5LgorCSAqIEV2ZW4gdGhvdWdoIGRv aW5nIGEgc2ltcGxlIG1lbWNweSBtaWdodCBzb3VuZCB0ZW1wdGluZywgaXQgd291bGQKKwkgKiBz aWxlbnRseSBicmVhayBpZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgYml0bWFwcyBpcyBjaGFuZ2Vk ICovCisJcmVzLnF1ZXVlX21hc2sgPSAwOworCWZvciAoaSA9IDA7IGkgPCBLR0RfTUFYX1FVRVVF UzsgKytpKSB7CisJCWlmICghdGVzdF9iaXQoaSwgZHFtLT5kZXYtPnNoYXJlZF9yZXNvdXJjZXMu cXVldWVfYml0bWFwKSkKKwkJCWNvbnRpbnVlOworCisJCS8qIFRoaXMgc2l0dWF0aW9uIG1heSBi ZSBoaXQgaW4gdGhlIGZ1dHVyZSBpZiBhIG5ldyBIVworCQkgKiBnZW5lcmF0aW9uIGV4cG9zZXMg bW9yZSB0aGFuIDY0IHF1ZXVlcy4gSWYgc28sIHRoZQorCQkgKiBkZWZpbml0aW9uIG9mIHJlcy5x dWV1ZV9tYXNrIG5lZWRzIHVwZGF0aW5nICovCisJCWlmIChXQVJOX09OKGkgPiAoc2l6ZW9mKHJl cy5xdWV1ZV9tYXNrKSo4KSkpIHsKKwkJCXByX2VycigiSW52YWxpZCBxdWV1ZSBlbmFibGVkIGJ5 IGFtZGdwdTogJWRcbiIsIGkpOworCQkJYnJlYWs7CisJCX0KKworCQlyZXMucXVldWVfbWFzayB8 PSAoMXVsbCA8PCBpKTsKKwl9CiAJcmVzLmd3c19tYXNrID0gcmVzLm9hY19tYXNrID0gcmVzLmdk c19oZWFwX2Jhc2UgPQogCQkJCQkJcmVzLmdkc19oZWFwX3NpemUgPSAwOwogCiAJcHJfZGVidWco ImtmZDogc2NoZWR1bGluZyByZXNvdXJjZXM6XG4iCiAJCQkiICAgICAgdm1pZCBtYXNrOiAweCU4 WFxuIgogCQkJIiAgICAgIHF1ZXVlIG1hc2s6IDB4JThsbFhcbiIsCiAJCQlyZXMudm1pZF9tYXNr LCByZXMucXVldWVfbWFzayk7CiAKIAlyZXR1cm4gcG1fc2VuZF9zZXRfcmVzb3VyY2VzKCZkcW0t PnBhY2tldHMsICZyZXMpOwogfQogCiBzdGF0aWMgaW50IGluaXRpYWxpemVfY3BzY2goc3RydWN0 IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0pCiB7CiAJaW50IHJldHZhbDsKIAogCUJVR19PTigh ZHFtKTsKIAogCXByX2RlYnVnKCJrZmQ6IEluIGZ1bmMgJXMgbnVtIG9mIHBpcGVzOiAlZFxuIiwK LQkJCV9fZnVuY19fLCBnZXRfcGlwZXNfbnVtX2Nwc2NoKCkpOworCQkJX19mdW5jX18sIGdldF9w aXBlc19wZXJfbWVjKGRxbSkpOwogCiAJbXV0ZXhfaW5pdCgmZHFtLT5sb2NrKTsKIAlJTklUX0xJ U1RfSEVBRCgmZHFtLT5xdWV1ZXMpOwogCWRxbS0+cXVldWVfY291bnQgPSBkcW0tPnByb2Nlc3Nl c19jb3VudCA9IDA7CiAJZHFtLT5zZG1hX3F1ZXVlX2NvdW50ID0gMDsKIAlkcW0tPmFjdGl2ZV9y dW5saXN0ID0gZmFsc2U7CiAJcmV0dmFsID0gZHFtLT5vcHNfYXNpY19zcGVjaWZpYy5pbml0aWFs aXplKGRxbSk7CiAJaWYgKHJldHZhbCAhPSAwKQogCQlnb3RvIGZhaWxfaW5pdF9waXBlbGluZXM7 CiAKIAlyZXR1cm4gMDsKIAogZmFpbF9pbml0X3BpcGVsaW5lczoKIAltdXRleF9kZXN0cm95KCZk cW0tPmxvY2spOwogCXJldHVybiByZXR2YWw7CiB9CiAKIHN0YXRpYyBpbnQgc3RhcnRfY3BzY2go c3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0pCiB7CiAJc3RydWN0IGRldmljZV9wcm9j ZXNzX25vZGUgKm5vZGU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9r ZmRfZGV2aWNlX3F1ZXVlX21hbmFnZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tm ZF9kZXZpY2VfcXVldWVfbWFuYWdlci5oCmluZGV4IGE2MjViOTEuLjY2Yjk2MTUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVldWVfbWFuYWdlci5o CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVldWVfbWFuYWdl ci5oCkBAIC0xMyw0MiArMTMsNDAgQEAKICAqCiAgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgogICogSU1Q TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFksCiAgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9O SU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKICAqIFRIRSBDT1BZUklHSFQgSE9MREVS KFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgogICog T1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP UiBPVEhFUldJU0UsCiAgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKICAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBT T0ZUV0FSRS4KICAqCiAgKi8KIAogI2lmbmRlZiBLRkRfREVWSUNFX1FVRVVFX01BTkFHRVJfSF8K ICNkZWZpbmUgS0ZEX0RFVklDRV9RVUVVRV9NQU5BR0VSX0hfCiAKICNpbmNsdWRlIDxsaW51eC9y d3NlbS5oPgogI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KICNpbmNsdWRlICJrZmRfcHJpdi5oIgog I2luY2x1ZGUgImtmZF9tcWRfbWFuYWdlci5oIgogCiAjZGVmaW5lIFFVRVVFX1BSRUVNUFRfREVG QVVMVF9USU1FT1VUX01TCSg1MDApCi0jZGVmaW5lIFFVRVVFU19QRVJfUElQRQkJCQkoOCkKLSNk ZWZpbmUgUElQRV9QRVJfTUVfQ1BfU0NIRURVTElORwkJKDMpCiAjZGVmaW5lIENJS19WTUlEX05V TQkJCQkoOCkKICNkZWZpbmUgS0ZEX1ZNSURfU1RBUlRfT0ZGU0VUCQkJKDgpCiAjZGVmaW5lIFZN SURfUEVSX0RFVklDRQkJCQlDSUtfVk1JRF9OVU0KICNkZWZpbmUgS0ZEX0RRTV9GSVJTVF9QSVBF CQkJKDApCiAjZGVmaW5lIENJS19TRE1BX1FVRVVFUwkJCQkoNCkKICNkZWZpbmUgQ0lLX1NETUFf UVVFVUVTX1BFUl9FTkdJTkUJCSgyKQogI2RlZmluZSBDSUtfU0RNQV9FTkdJTkVfTlVNCQkJKDIp CiAKIHN0cnVjdCBkZXZpY2VfcHJvY2Vzc19ub2RlIHsKIAlzdHJ1Y3QgcWNtX3Byb2Nlc3NfZGV2 aWNlICpxcGQ7CiAJc3RydWN0IGxpc3RfaGVhZCBsaXN0OwogfTsKIAogLyoqCiAgKiBzdHJ1Y3Qg ZGV2aWNlX3F1ZXVlX21hbmFnZXJfb3BzCiAgKgogICogQGNyZWF0ZV9xdWV1ZTogUXVldWUgY3Jl YXRpb24gcm91dGluZS4KICAqCiAgKiBAZGVzdHJveV9xdWV1ZTogUXVldWUgZGVzdHJ1Y3Rpb24g cm91dGluZS4KICAqCkBAIC0xNjUsMzcgKzE2MywzNyBAQCBzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21h bmFnZXIgewogCXVuc2lnbmVkIGludAkJcHJvY2Vzc2VzX2NvdW50OwogCXVuc2lnbmVkIGludAkJ cXVldWVfY291bnQ7CiAJdW5zaWduZWQgaW50CQlzZG1hX3F1ZXVlX2NvdW50OwogCXVuc2lnbmVk IGludAkJdG90YWxfcXVldWVfY291bnQ7CiAJdW5zaWduZWQgaW50CQluZXh0X3BpcGVfdG9fYWxs b2NhdGU7CiAJdW5zaWduZWQgaW50CQkqYWxsb2NhdGVkX3F1ZXVlczsKIAl1bnNpZ25lZCBpbnQJ CXNkbWFfYml0bWFwOwogCXVuc2lnbmVkIGludAkJdm1pZF9iaXRtYXA7CiAJdWludDY0X3QJCXBp cGVsaW5lc19hZGRyOwogCXN0cnVjdCBrZmRfbWVtX29iagkqcGlwZWxpbmVfbWVtOwogCXVpbnQ2 NF90CQlmZW5jZV9ncHVfYWRkcjsKIAl1bnNpZ25lZCBpbnQJCSpmZW5jZV9hZGRyOwogCXN0cnVj dCBrZmRfbWVtX29iagkqZmVuY2VfbWVtOwogCWJvb2wJCQlhY3RpdmVfcnVubGlzdDsKIH07CiAK IHZvaWQgZGV2aWNlX3F1ZXVlX21hbmFnZXJfaW5pdF9jaWsoc3RydWN0IGRldmljZV9xdWV1ZV9t YW5hZ2VyX2FzaWNfb3BzICpvcHMpOwogdm9pZCBkZXZpY2VfcXVldWVfbWFuYWdlcl9pbml0X3Zp KHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlcl9hc2ljX29wcyAqb3BzKTsKIHZvaWQgcHJvZ3Jh bV9zaF9tZW1fc2V0dGluZ3Moc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sCiAJCQkJ CXN0cnVjdCBxY21fcHJvY2Vzc19kZXZpY2UgKnFwZCk7Ci1pbnQgaW5pdF9waXBlbGluZXMoc3Ry dWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sCi0JCXVuc2lnbmVkIGludCBwaXBlc19udW0s IHVuc2lnbmVkIGludCBmaXJzdF9waXBlKTsKLXVuc2lnbmVkIGludCBnZXRfZmlyc3RfcGlwZShz dHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSk7Ci11bnNpZ25lZCBpbnQgZ2V0X3BpcGVz X251bShzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSk7Cit1bnNpZ25lZCBpbnQgZ2V0 X21lY19udW0oc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0pOwordW5zaWduZWQgaW50 IGdldF9xdWV1ZXNfbnVtKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtKTsKK3Vuc2ln bmVkIGludCBnZXRfcXVldWVzX3Blcl9waXBlKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAq ZHFtKTsKK3Vuc2lnbmVkIGludCBnZXRfcGlwZXNfcGVyX21lYyhzdHJ1Y3QgZGV2aWNlX3F1ZXVl X21hbmFnZXIgKmRxbSk7CiAKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdldF9zaF9tZW1f YmFzZXNfMzIoc3RydWN0IGtmZF9wcm9jZXNzX2RldmljZSAqcGRkKQogewogCXJldHVybiAocGRk LT5sZHNfYmFzZSA+PiAxNikgJiAweEZGOwogfQogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGlu dAogZ2V0X3NoX21lbV9iYXNlc19ueWJibGVfNjQoc3RydWN0IGtmZF9wcm9jZXNzX2RldmljZSAq cGRkKQogewogCXJldHVybiAocGRkLT5sZHNfYmFzZSA+PiA2MCkgJiAweDBFOwogfQogCiAjZW5k aWYgLyogS0ZEX0RFVklDRV9RVUVVRV9NQU5BR0VSX0hfICovCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlX3F1ZXVlX21hbmFnZXJfY2lrLmMgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlX3F1ZXVlX21hbmFnZXJfY2lrLmMKaW5k ZXggYzZmNDM1YS4uNDhkYzA1NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRr ZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyX2Npay5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVldWVfbWFuYWdlcl9jaWsuYwpAQCAtMTM0LDIyICsxMzQs MjIgQEAgc3RhdGljIGludCByZWdpc3Rlcl9wcm9jZXNzX2NpayhzdHJ1Y3QgZGV2aWNlX3F1ZXVl X21hbmFnZXIgKmRxbSwKIH0KIAogc3RhdGljIHZvaWQgaW5pdF9zZG1hX3ZtKHN0cnVjdCBkZXZp Y2VfcXVldWVfbWFuYWdlciAqZHFtLCBzdHJ1Y3QgcXVldWUgKnEsCiAJCQkJc3RydWN0IHFjbV9w cm9jZXNzX2RldmljZSAqcXBkKQogewogCXVpbnQzMl90IHZhbHVlID0gKDEgPDwgU0RNQTBfUkxD MF9WSVJUVUFMX0FERFJfX0FUQ19fU0hJRlQpOwogCiAJaWYgKHEtPnByb2Nlc3MtPmlzXzMyYml0 X3VzZXJfbW9kZSkKIAkJdmFsdWUgfD0gKDEgPDwgU0RNQTBfUkxDMF9WSVJUVUFMX0FERFJfX1BU UjMyX19TSElGVCkgfAogCQkJCWdldF9zaF9tZW1fYmFzZXNfMzIocXBkX3RvX3BkZChxcGQpKTsK IAllbHNlCiAJCXZhbHVlIHw9ICgoZ2V0X3NoX21lbV9iYXNlc19ueWJibGVfNjQocXBkX3RvX3Bk ZChxcGQpKSkgPDwKIAkJCQlTRE1BMF9STEMwX1ZJUlRVQUxfQUREUl9fU0hBUkVEX0JBU0VfX1NI SUZUKSAmCiAJCQkJU0RNQTBfUkxDMF9WSVJUVUFMX0FERFJfX1NIQVJFRF9CQVNFX01BU0s7CiAK IAlxLT5wcm9wZXJ0aWVzLnNkbWFfdm1fYWRkciA9IHZhbHVlOwogfQogCiBzdGF0aWMgaW50IGlu aXRpYWxpemVfY3BzY2hfY2lrKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtKQogewot CXJldHVybiBpbml0X3BpcGVsaW5lcyhkcW0sIGdldF9waXBlc19udW0oZHFtKSwgZ2V0X2ZpcnN0 X3BpcGUoZHFtKSk7CisJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGtmZC9rZmRfcGFja2V0X21hbmFnZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k a2ZkL2tmZF9wYWNrZXRfbWFuYWdlci5jCmluZGV4IGNhOGMwOTMuLjcxMzE5OTggMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wYWNrZXRfbWFuYWdlci5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wYWNrZXRfbWFuYWdlci5jCkBAIC00OCw0 MiArNDgsNDEgQEAgc3RhdGljIHVuc2lnbmVkIGludCBidWlsZF9wbTRfaGVhZGVyKHVuc2lnbmVk IGludCBvcGNvZGUsIHNpemVfdCBwYWNrZXRfc2l6ZSkKIAloZWFkZXIuY291bnQgPSBwYWNrZXRf c2l6ZS9zaXplb2YodWludDMyX3QpIC0gMjsKIAloZWFkZXIudHlwZSA9IFBNNF9UWVBFXzM7CiAK IAlyZXR1cm4gaGVhZGVyLnUzMmFsbDsKIH0KIAogc3RhdGljIHZvaWQgcG1fY2FsY19ybGliX3Np emUoc3RydWN0IHBhY2tldF9tYW5hZ2VyICpwbSwKIAkJCQl1bnNpZ25lZCBpbnQgKnJsaWJfc2l6 ZSwKIAkJCQlib29sICpvdmVyX3N1YnNjcmlwdGlvbikKIHsKIAl1bnNpZ25lZCBpbnQgcHJvY2Vz c19jb3VudCwgcXVldWVfY291bnQ7CiAJdW5zaWduZWQgaW50IG1hcF9xdWV1ZV9zaXplOwogCiAJ QlVHX09OKCFwbSB8fCAhcmxpYl9zaXplIHx8ICFvdmVyX3N1YnNjcmlwdGlvbik7CiAKIAlwcm9j ZXNzX2NvdW50ID0gcG0tPmRxbS0+cHJvY2Vzc2VzX2NvdW50OwogCXF1ZXVlX2NvdW50ID0gcG0t PmRxbS0+cXVldWVfY291bnQ7CiAKIAkvKiBjaGVjayBpZiB0aGVyZSBpcyBvdmVyIHN1YnNjcmlw dGlvbiovCiAJKm92ZXJfc3Vic2NyaXB0aW9uID0gZmFsc2U7Ci0JaWYgKChwcm9jZXNzX2NvdW50 ID4gMSkgfHwKLQkJcXVldWVfY291bnQgPiBQSVBFX1BFUl9NRV9DUF9TQ0hFRFVMSU5HICogUVVF VUVTX1BFUl9QSVBFKSB7CisJaWYgKChwcm9jZXNzX2NvdW50ID4gMSkgfHwgcXVldWVfY291bnQg PiBnZXRfcXVldWVzX251bShwbS0+ZHFtKSkgewogCQkqb3Zlcl9zdWJzY3JpcHRpb24gPSB0cnVl OwogCQlwcl9kZWJ1Zygia2ZkOiBvdmVyIHN1YnNjcmliZWQgcnVubGlzdFxuIik7CiAJfQogCiAJ bWFwX3F1ZXVlX3NpemUgPQogCQkocG0tPmRxbS0+ZGV2LT5kZXZpY2VfaW5mby0+YXNpY19mYW1p bHkgPT0gQ0hJUF9DQVJSSVpPKSA/CiAJCXNpemVvZihzdHJ1Y3QgcG00X21lc19tYXBfcXVldWVz KSA6CiAJCXNpemVvZihzdHJ1Y3QgcG00X21hcF9xdWV1ZXMpOwogCS8qIGNhbGN1bGF0ZSBydW4g bGlzdCBpYiBhbGxvY2F0aW9uIHNpemUgKi8KIAkqcmxpYl9zaXplID0gcHJvY2Vzc19jb3VudCAq IHNpemVvZihzdHJ1Y3QgcG00X21hcF9wcm9jZXNzKSArCiAJCSAgICAgcXVldWVfY291bnQgKiBt YXBfcXVldWVfc2l6ZTsKIAogCS8qCiAJICogSW5jcmVhc2UgdGhlIGFsbG9jYXRpb24gc2l6ZSBp biBjYXNlIHdlIG5lZWQgYSBjaGFpbmVkIHJ1biBsaXN0CiAJICogd2hlbiBvdmVyIHN1YnNjcmlw dGlvbgogCSAqLwogCWlmICgqb3Zlcl9zdWJzY3JpcHRpb24pCiAJCSpybGliX3NpemUgKz0gc2l6 ZW9mKHN0cnVjdCBwbTRfcnVubGlzdCk7CiAKIAlwcl9kZWJ1Zygia2ZkOiBydW5saXN0IGliIHNp emUgJWRcbiIsICpybGliX3NpemUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRrZmQva2ZkX3Byb2Nlc3NfcXVldWVfbWFuYWdlci5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRrZmQva2ZkX3Byb2Nlc3NfcXVldWVfbWFuYWdlci5jCmluZGV4IGUxZmI0MGIuLjMyY2RmMmIg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wcm9jZXNzX3F1ZXVl X21hbmFnZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfcHJvY2Vzc19x dWV1ZV9tYW5hZ2VyLmMKQEAgLTE5Miw0MSArMTkyLDQxIEBAIGludCBwcW1fY3JlYXRlX3F1ZXVl KHN0cnVjdCBwcm9jZXNzX3F1ZXVlX21hbmFnZXIgKnBxbSwKIAlpZiAocmV0dmFsICE9IDApCiAJ CXJldHVybiByZXR2YWw7CiAKIAlpZiAobGlzdF9lbXB0eSgmcHFtLT5xdWV1ZXMpKSB7CiAJCXBk ZC0+cXBkLnBxbSA9IHBxbTsKIAkJZGV2LT5kcW0tPm9wcy5yZWdpc3Rlcl9wcm9jZXNzKGRldi0+ ZHFtLCAmcGRkLT5xcGQpOwogCX0KIAogCXBxbiA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBwcm9j ZXNzX3F1ZXVlX25vZGUpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIXBxbikgewogCQlyZXR2YWwgPSAt RU5PTUVNOwogCQlnb3RvIGVycl9hbGxvY2F0ZV9wcW47CiAJfQogCiAJc3dpdGNoICh0eXBlKSB7 CiAJY2FzZSBLRkRfUVVFVUVfVFlQRV9TRE1BOgogCWNhc2UgS0ZEX1FVRVVFX1RZUEVfQ09NUFVU RToKIAkJLyogY2hlY2sgaWYgdGhlcmUgaXMgb3ZlciBzdWJzY3JpcHRpb24gKi8KIAkJaWYgKChz Y2hlZF9wb2xpY3kgPT0gS0ZEX1NDSEVEX1BPTElDWV9IV1NfTk9fT1ZFUlNVQlNDUklQVElPTikg JiYKIAkJKChkZXYtPmRxbS0+cHJvY2Vzc2VzX2NvdW50ID49IFZNSURfUEVSX0RFVklDRSkgfHwK LQkJKGRldi0+ZHFtLT5xdWV1ZV9jb3VudCA+PSBQSVBFX1BFUl9NRV9DUF9TQ0hFRFVMSU5HICog UVVFVUVTX1BFUl9QSVBFKSkpIHsKKwkJKGRldi0+ZHFtLT5xdWV1ZV9jb3VudCA+PSBnZXRfcXVl dWVzX251bShkZXYtPmRxbSkpKSkgewogCQkJcHJfZXJyKCJrZmQ6IG92ZXItc3Vic2NyaXB0aW9u IGlzIG5vdCBhbGxvd2VkIGluIHJhZGVvbl9rZmQuc2NoZWRfcG9saWN5ID09IDFcbiIpOwogCQkJ cmV0dmFsID0gLUVQRVJNOwogCQkJZ290byBlcnJfY3JlYXRlX3F1ZXVlOwogCQl9CiAKIAkJcmV0 dmFsID0gY3JlYXRlX2NwX3F1ZXVlKHBxbSwgZGV2LCAmcSwgJnFfcHJvcGVydGllcywgZiwgKnFp ZCk7CiAJCWlmIChyZXR2YWwgIT0gMCkKIAkJCWdvdG8gZXJyX2NyZWF0ZV9xdWV1ZTsKIAkJcHFu LT5xID0gcTsKIAkJcHFuLT5rcSA9IE5VTEw7CiAJCXJldHZhbCA9IGRldi0+ZHFtLT5vcHMuY3Jl YXRlX3F1ZXVlKGRldi0+ZHFtLCBxLCAmcGRkLT5xcGQsCiAJCQkJCQkmcS0+cHJvcGVydGllcy52 bWlkKTsKIAkJcHJfZGVidWcoIkRRTSByZXR1cm5lZCAlZCBmb3IgY3JlYXRlX3F1ZXVlXG4iLCBy ZXR2YWwpOwogCQlwcmludF9xdWV1ZShxKTsKIAkJYnJlYWs7CiAJY2FzZSBLRkRfUVVFVUVfVFlQ RV9ESVE6CiAJCWtxID0ga2VybmVsX3F1ZXVlX2luaXQoZGV2LCBLRkRfUVVFVUVfVFlQRV9ESVEp OwogCQlpZiAoa3EgPT0gTlVMTCkgewogCQkJcmV0dmFsID0gLUVOT01FTTsKIAkJCWdvdG8gZXJy X2NyZWF0ZV9xdWV1ZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvaW5jbHVkZS9r Z2Rfa2ZkX2ludGVyZmFjZS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9pbmNsdWRlL2tnZF9rZmRf aW50ZXJmYWNlLmgKaW5kZXggNjdmNmQxOS4uOTFlZjE0OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9pbmNsdWRlL2tnZF9rZmRfaW50ZXJmYWNlLmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9pbmNsdWRlL2tnZF9rZmRfaW50ZXJmYWNlLmgKQEAgLTEyLDc4ICsxMiw4NSBAQAog ICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAg KgogICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkg T0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKICAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJ TUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogICogRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5U IFNIQUxMCiAgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxF IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKICAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJ TiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAogICogQVJJU0lORyBG Uk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNF IE9SCiAgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAgKi8KIAogLyoKICAqIFRo aXMgZmlsZSBkZWZpbmVzIHRoZSBwcml2YXRlIGludGVyZmFjZSBiZXR3ZWVuIHRoZQogICogQU1E IGtlcm5lbCBncmFwaGljcyBkcml2ZXJzIGFuZCB0aGUgQU1EIEtGRC4KICAqLwogCiAjaWZuZGVm IEtHRF9LRkRfSU5URVJGQUNFX0hfSU5DTFVERUQKICNkZWZpbmUgS0dEX0tGRF9JTlRFUkZBQ0Vf SF9JTkNMVURFRAogCiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9i aXRtYXAuaD4KIAogc3RydWN0IHBjaV9kZXY7CiAKLSNkZWZpbmUgS0ZEX0lOVEVSRkFDRV9WRVJT SU9OIDEKKyNkZWZpbmUgS0ZEX0lOVEVSRkFDRV9WRVJTSU9OIDIKICNkZWZpbmUgS0dEX01BWF9R VUVVRVMgMTI4CiAKIHN0cnVjdCBrZmRfZGV2Owogc3RydWN0IGtnZF9kZXY7CiAKIHN0cnVjdCBr Z2RfbWVtOwogCiBlbnVtIGtnZF9tZW1vcnlfcG9vbCB7CiAJS0dEX1BPT0xfU1lTVEVNX0NBQ0hF QUJMRSA9IDEsCiAJS0dEX1BPT0xfU1lTVEVNX1dSSVRFQ09NQklORSA9IDIsCiAJS0dEX1BPT0xf RlJBTUVCVUZGRVIgPSAzLAogfTsKIAogZW51bSBrZ2RfZW5naW5lX3R5cGUgewogCUtHRF9FTkdJ TkVfUEZQID0gMSwKIAlLR0RfRU5HSU5FX01FLAogCUtHRF9FTkdJTkVfQ0UsCiAJS0dEX0VOR0lO RV9NRUMxLAogCUtHRF9FTkdJTkVfTUVDMiwKIAlLR0RfRU5HSU5FX1JMQywKIAlLR0RfRU5HSU5F X1NETUExLAogCUtHRF9FTkdJTkVfU0RNQTIsCiAJS0dEX0VOR0lORV9NQVgKIH07CiAKIHN0cnVj dCBrZ2Qya2ZkX3NoYXJlZF9yZXNvdXJjZXMgewogCS8qIEJpdCBuID09IDEgbWVhbnMgVk1JRCBu IGlzIGF2YWlsYWJsZSBmb3IgS0ZELiAqLwogCXVuc2lnbmVkIGludCBjb21wdXRlX3ZtaWRfYml0 bWFwOwogCi0JLyogQ29tcHV0ZSBwaXBlcyBhcmUgY291bnRlZCBzdGFydGluZyBmcm9tIE1FQzAv cGlwZTAgYXMgMC4gKi8KLQl1bnNpZ25lZCBpbnQgZmlyc3RfY29tcHV0ZV9waXBlOworCS8qIG51 bWJlciBvZiBtZWMgYXZhaWxhYmxlIGZyb20gdGhlIGhhcmR3YXJlICovCisJdWludDMyX3QgbnVt X21lYzsKIAotCS8qIE51bWJlciBvZiBNRUMgcGlwZXMgYXZhaWxhYmxlIGZvciBLRkQuICovCi0J dW5zaWduZWQgaW50IGNvbXB1dGVfcGlwZV9jb3VudDsKKwkvKiBudW1iZXIgb2YgcGlwZXMgcGVy IG1lYyAqLworCXVpbnQzMl90IG51bV9waXBlX3Blcl9tZWM7CisKKwkvKiBudW1iZXIgb2YgcXVl dWVzIHBlciBwaXBlICovCisJdWludDMyX3QgbnVtX3F1ZXVlX3Blcl9waXBlOworCisJLyogQml0 IG4gPT0gMSBtZWFucyBRdWV1ZSBuIGlzIGF2YWlsYWJsZSBmb3IgS0ZEICovCisJREVDTEFSRV9C SVRNQVAocXVldWVfYml0bWFwLCBLR0RfTUFYX1FVRVVFUyk7CiAKIAkvKiBCYXNlIGFkZHJlc3Mg b2YgZG9vcmJlbGwgYXBlcnR1cmUuICovCiAJcGh5c19hZGRyX3QgZG9vcmJlbGxfcGh5c2ljYWxf YWRkcmVzczsKIAogCS8qIFNpemUgaW4gYnl0ZXMgb2YgZG9vcmJlbGwgYXBlcnR1cmUuICovCiAJ c2l6ZV90IGRvb3JiZWxsX2FwZXJ0dXJlX3NpemU7CiAKIAkvKiBOdW1iZXIgb2YgYnl0ZXMgYXQg c3RhcnQgb2YgYXBlcnR1cmUgcmVzZXJ2ZWQgZm9yIEtHRC4gKi8KIAlzaXplX3QgZG9vcmJlbGxf c3RhcnRfb2Zmc2V0OwogfTsKIAogLyoqCiAgKiBzdHJ1Y3Qga2ZkMmtnZF9jYWxscwogICoKICAq IEBpbml0X2d0dF9tZW1fYWxsb2NhdGlvbjogQWxsb2NhdGUgYSBidWZmZXIgb24gdGhlIGdhcnQg YXBlcnR1cmUuCiAgKiBUaGUgYnVmZmVyIGNhbiBiZSB1c2VkIGZvciBtcWRzLCBocGRzLCBrZXJu ZWwgcXVldWUsIGZlbmNlIGFuZCBydW5saXN0cwogICoKICAqIEBmcmVlX2d0dF9tZW06IEZyZWVz IGEgYnVmZmVyIHRoYXQgd2FzIGFsbG9jYXRlZCBvbiB0aGUgZ2FydCBhcGVydHVyZQogICoKICAq IEBnZXRfdm1lbV9zaXplOiBSZXRyaWV2ZXMgKHBoeXNpY2FsKSBzaXplIG9mIFZSQU0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2tmZC5jIGIvZHJpdmVycy9ncHUv ZHJtL3JhZGVvbi9yYWRlb25fa2ZkLmMKaW5kZXggYTA2ZTNiMS4uNjk5ZmU3ZiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fa2ZkLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL3JhZGVvbi9yYWRlb25fa2ZkLmMKQEAgLTE2Miw0OCArMTYyLDYzIEBAIGludCByYWRlb25f a2ZkX2luaXQodm9pZCkKIAlyZXR1cm4gcmV0OwogfQogCiB2b2lkIHJhZGVvbl9rZmRfZmluaSh2 b2lkKQogewogCWlmIChrZ2Qya2ZkKSB7CiAJCWtnZDJrZmQtPmV4aXQoKTsKIAkJc3ltYm9sX3B1 dChrZ2Qya2ZkX2luaXQpOwogCX0KIH0KIAogdm9pZCByYWRlb25fa2ZkX2RldmljZV9wcm9iZShz dHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldikKIHsKIAlpZiAoa2dkMmtmZCkKIAkJcmRldi0+a2Zk ID0ga2dkMmtmZC0+cHJvYmUoKHN0cnVjdCBrZ2RfZGV2ICopcmRldiwKIAkJCXJkZXYtPnBkZXYs ICZrZmQya2dkKTsKIH0KIAogdm9pZCByYWRlb25fa2ZkX2RldmljZV9pbml0KHN0cnVjdCByYWRl b25fZGV2aWNlICpyZGV2KQogeworCWludCBpLCBxdWV1ZSwgcGlwZSwgbWVjOworCiAJaWYgKHJk ZXYtPmtmZCkgewogCQlzdHJ1Y3Qga2dkMmtmZF9zaGFyZWRfcmVzb3VyY2VzIGdwdV9yZXNvdXJj ZXMgPSB7CiAJCQkuY29tcHV0ZV92bWlkX2JpdG1hcCA9IDB4RkYwMCwKLQotCQkJLmZpcnN0X2Nv bXB1dGVfcGlwZSA9IDEsCi0JCQkuY29tcHV0ZV9waXBlX2NvdW50ID0gNCAtIDEsCisJCQkubnVt X21lYyA9IDEsCisJCQkubnVtX3BpcGVfcGVyX21lYyA9IDQsCisJCQkubnVtX3F1ZXVlX3Blcl9w aXBlID0gOAogCQl9OwogCisJCWJpdG1hcF96ZXJvKGdwdV9yZXNvdXJjZXMucXVldWVfYml0bWFw LCBLR0RfTUFYX1FVRVVFUyk7CisKKwkJZm9yIChpID0gMDsgaSA8IEtHRF9NQVhfUVVFVUVTOyAr K2kpIHsKKwkJCXF1ZXVlID0gaSAlIGdwdV9yZXNvdXJjZXMubnVtX3F1ZXVlX3Blcl9waXBlOwor CQkJcGlwZSA9IChpIC8gZ3B1X3Jlc291cmNlcy5udW1fcXVldWVfcGVyX3BpcGUpCisJCQkJJSBn cHVfcmVzb3VyY2VzLm51bV9waXBlX3Blcl9tZWM7CisJCQltZWMgPSAoaSAvIGdwdV9yZXNvdXJj ZXMubnVtX3F1ZXVlX3Blcl9waXBlKQorCQkJCS8gZ3B1X3Jlc291cmNlcy5udW1fcGlwZV9wZXJf bWVjOworCisJCQlpZiAobWVjID09IDAgJiYgcGlwZSA+IDApCisJCQkJc2V0X2JpdChpLCBncHVf cmVzb3VyY2VzLnF1ZXVlX2JpdG1hcCk7CisJCX0KKwogCQlyYWRlb25fZG9vcmJlbGxfZ2V0X2tm ZF9pbmZvKHJkZXYsCiAJCQkJJmdwdV9yZXNvdXJjZXMuZG9vcmJlbGxfcGh5c2ljYWxfYWRkcmVz cywKIAkJCQkmZ3B1X3Jlc291cmNlcy5kb29yYmVsbF9hcGVydHVyZV9zaXplLAogCQkJCSZncHVf cmVzb3VyY2VzLmRvb3JiZWxsX3N0YXJ0X29mZnNldCk7CiAKIAkJa2dkMmtmZC0+ZGV2aWNlX2lu aXQocmRldi0+a2ZkLCAmZ3B1X3Jlc291cmNlcyk7CiAJfQogfQogCiB2b2lkIHJhZGVvbl9rZmRf ZGV2aWNlX2Zpbmkoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpCiB7CiAJaWYgKHJkZXYtPmtm ZCkgewogCQlrZ2Qya2ZkLT5kZXZpY2VfZXhpdChyZGV2LT5rZmQpOwogCQlyZGV2LT5rZmQgPSBO VUxMOwogCX0KIH0KIAogdm9pZCByYWRlb25fa2ZkX2ludGVycnVwdChzdHJ1Y3QgcmFkZW9uX2Rl dmljZSAqcmRldiwgY29uc3Qgdm9pZCAqaWhfcmluZ19lbnRyeSkKIHsKIAlpZiAocmRldi0+a2Zk KQotLSAKMi45LjMKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=