From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andres Rodriguez Subject: [PATCH 11/25] drm/amdkfd: allow split HQD on per-queue granularity v4 Date: Tue, 4 Apr 2017 18:05:37 -0400 Message-ID: <20170404220551.8669-12-andresx7@gmail.com> References: <20170404220551.8669-1-andresx7@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170404220551.8669-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+CkFja2VkLWJ5OiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29l bmlnQGFtZC5jb20+ClNpZ25lZC1vZmYtYnk6IEFuZHJlcyBSb2RyaWd1ZXogPGFuZHJlc3g3QGdt YWlsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkLmMg ICAgICAgICB8ICAyMiArKysrLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2Rldmlj ZS5jICAgICAgICAgICAgfCAgIDQgKwogLi4uL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNl X3F1ZXVlX21hbmFnZXIuYyAgfCAxMDAgKysrKysrKysrKysrKystLS0tLS0tCiAuLi4vZ3B1L2Ry bS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVldWVfbWFuYWdlci5oICB8ICAxMCArLS0KIC4uLi9k cm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlX3F1ZXVlX21hbmFnZXJfY2lrLmMgIHwgICAyICstCiBk cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfcGFja2V0X21hbmFnZXIuYyAgICB8ICAgMyAr LQogLi4uL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfcHJvY2Vzc19xdWV1ZV9tYW5hZ2VyLmMgfCAg IDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvaW5jbHVkZS9rZ2Rfa2ZkX2ludGVyZmFjZS5oICAg IHwgIDE3ICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2tmZC5jICAgICAgICAg ICAgICAgIHwgIDIxICsrKystCiA5IGZpbGVzIGNoYW5nZWQsIDEyNiBpbnNlcnRpb25zKCspLCA1 NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfYW1ka2ZkLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2Zk LmMKaW5kZXggMzIwMGZmOS4uOGZjNWFhMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2FtZGtmZC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9hbWRrZmQuYwpAQCAtODgsMjggKzg4LDQ0IEBAIHZvaWQgYW1kZ3B1X2FtZGtmZF9m aW5pKHZvaWQpCiAKIHZvaWQgYW1kZ3B1X2FtZGtmZF9kZXZpY2VfcHJvYmUoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYpCiB7CiAJaWYgKGtnZDJrZmQpCiAJCWFkZXYtPmtmZCA9IGtnZDJrZmQt PnByb2JlKChzdHJ1Y3Qga2dkX2RldiAqKWFkZXYsCiAJCQkJCWFkZXYtPnBkZXYsIGtmZDJrZ2Qp OwogfQogCiB2b2lkIGFtZGdwdV9hbWRrZmRfZGV2aWNlX2luaXQoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYpCiB7CisJaW50IGk7CisJaW50IGxhc3RfdmFsaWRfYml0OwogCWlmIChhZGV2LT5r ZmQpIHsKIAkJc3RydWN0IGtnZDJrZmRfc2hhcmVkX3Jlc291cmNlcyBncHVfcmVzb3VyY2VzID0g ewogCQkJLmNvbXB1dGVfdm1pZF9iaXRtYXAgPSAweEZGMDAsCi0KLQkJCS5maXJzdF9jb21wdXRl X3BpcGUgPSAxLAotCQkJLmNvbXB1dGVfcGlwZV9jb3VudCA9IDQgLSAxLAorCQkJLm51bV9tZWMg PSBhZGV2LT5nZngubWVjLm51bV9tZWMsCisJCQkubnVtX3BpcGVfcGVyX21lYyA9IGFkZXYtPmdm eC5tZWMubnVtX3BpcGVfcGVyX21lYywKKwkJCS5udW1fcXVldWVfcGVyX3BpcGUgPSBhZGV2LT5n ZngubWVjLm51bV9xdWV1ZV9wZXJfcGlwZQogCQl9OwogCisJCS8qIHRoaXMgaXMgZ29pbmcgdG8g aGF2ZSBhIGZldyBvZiB0aGUgTVNCcyBzZXQgdGhhdCB3ZSBuZWVkIHRvCisJCSAqIGNsZWFyICov CisJCWJpdG1hcF9jb21wbGVtZW50KGdwdV9yZXNvdXJjZXMucXVldWVfYml0bWFwLAorCQkJCSAg YWRldi0+Z2Z4Lm1lYy5xdWV1ZV9iaXRtYXAsCisJCQkJICBLR0RfTUFYX1FVRVVFUyk7CisKKwkJ LyogQWNjb3JkaW5nIHRvIGxpbnV4L2JpdG1hcC5oIHdlIHNob3VsZG4ndCB1c2UgYml0bWFwX2Ns ZWFyIGlmCisJCSAqIG5iaXRzIGlzIG5vdCBjb21waWxlIHRpbWUgY29uc3RhbnQgKi8KKwkJbGFz dF92YWxpZF9iaXQgPSBhZGV2LT5nZngubWVjLm51bV9tZWMKKwkJCQkqIGFkZXYtPmdmeC5tZWMu bnVtX3BpcGVfcGVyX21lYworCQkJCSogYWRldi0+Z2Z4Lm1lYy5udW1fcXVldWVfcGVyX3BpcGU7 CisJCWZvciAoaSA9IGxhc3RfdmFsaWRfYml0OyBpIDwgS0dEX01BWF9RVUVVRVM7ICsraSkKKwkJ CWNsZWFyX2JpdChpLCBncHVfcmVzb3VyY2VzLnF1ZXVlX2JpdG1hcCk7CisKIAkJYW1kZ3B1X2Rv b3JiZWxsX2dldF9rZmRfaW5mbyhhZGV2LAogCQkJCSZncHVfcmVzb3VyY2VzLmRvb3JiZWxsX3Bo eXNpY2FsX2FkZHJlc3MsCiAJCQkJJmdwdV9yZXNvdXJjZXMuZG9vcmJlbGxfYXBlcnR1cmVfc2l6 ZSwKIAkJCQkmZ3B1X3Jlc291cmNlcy5kb29yYmVsbF9zdGFydF9vZmZzZXQpOwogCiAJCWtnZDJr ZmQtPmRldmljZV9pbml0KGFkZXYtPmtmZCwgJmdwdV9yZXNvdXJjZXMpOwogCX0KIH0KIAogdm9p ZCBhbWRncHVfYW1ka2ZkX2RldmljZV9maW5pKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZS5jIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZS5jCmluZGV4IDNmOTVmN2MuLjg4MTg3 YmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2UuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlLmMKQEAgLTIxOSwyMCAr MjE5LDI0IEBAIHN0YXRpYyBpbnQgaW9tbXVfaW52YWxpZF9wcHJfY2Ioc3RydWN0IHBjaV9kZXYg KnBkZXYsIGludCBwYXNpZCwKIAlyZXR1cm4gQU1EX0lPTU1VX0lOVl9QUklfUlNQX0lOVkFMSUQ7 CiB9CiAKIGJvb2wga2dkMmtmZF9kZXZpY2VfaW5pdChzdHJ1Y3Qga2ZkX2RldiAqa2ZkLAogCQkJ IGNvbnN0IHN0cnVjdCBrZ2Qya2ZkX3NoYXJlZF9yZXNvdXJjZXMgKmdwdV9yZXNvdXJjZXMpCiB7 CiAJdW5zaWduZWQgaW50IHNpemU7CiAKIAlrZmQtPnNoYXJlZF9yZXNvdXJjZXMgPSAqZ3B1X3Jl c291cmNlczsKIAorCS8qIFdlIG9ubHkgdXNlIHRoZSBmaXJzdCBNRUMgKi8KKwlpZiAoa2ZkLT5z aGFyZWRfcmVzb3VyY2VzLm51bV9tZWMgPiAxKQorCQlrZmQtPnNoYXJlZF9yZXNvdXJjZXMubnVt X21lYyA9IDE7CisKIAkvKiBjYWxjdWxhdGUgbWF4IHNpemUgb2YgbXFkcyBuZWVkZWQgZm9yIHF1 ZXVlcyAqLwogCXNpemUgPSBtYXhfbnVtX29mX3F1ZXVlc19wZXJfZGV2aWNlICoKIAkJCWtmZC0+ ZGV2aWNlX2luZm8tPm1xZF9zaXplX2FsaWduZWQ7CiAKIAkvKgogCSAqIGNhbGN1bGF0ZSBtYXgg c2l6ZSBvZiBydW5saXN0IHBhY2tldC4KIAkgKiBUaGVyZSBjYW4gYmUgb25seSAyIHBhY2tldHMg YXQgb25jZQogCSAqLwogCXNpemUgKz0gKEtGRF9NQVhfTlVNX09GX1BST0NFU1NFUyAqIHNpemVv ZihzdHJ1Y3QgcG00X21hcF9wcm9jZXNzKSArCiAJCW1heF9udW1fb2ZfcXVldWVzX3Blcl9kZXZp Y2UgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZV9x dWV1ZV9tYW5hZ2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlX3F1 ZXVlX21hbmFnZXIuYwppbmRleCBjMDY0ZGVhLi41ZjI4NzIwIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlX3F1ZXVlX21hbmFnZXIuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlX3F1ZXVlX21hbmFnZXIuYwpAQCAtNTYs MzUgKzU2LDU4IEBAIHN0YXRpYyB2b2lkIGRlYWxsb2NhdGVfc2RtYV9xdWV1ZShzdHJ1Y3QgZGV2 aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwKIAkJCQl1bnNpZ25lZCBpbnQgc2RtYV9xdWV1ZV9pZCk7 CiAKIHN0YXRpYyBpbmxpbmUKIGVudW0gS0ZEX01RRF9UWVBFIGdldF9tcWRfdHlwZV9mcm9tX3F1 ZXVlX3R5cGUoZW51bSBrZmRfcXVldWVfdHlwZSB0eXBlKQogewogCWlmICh0eXBlID09IEtGRF9R VUVVRV9UWVBFX1NETUEpCiAJCXJldHVybiBLRkRfTVFEX1RZUEVfU0RNQTsKIAlyZXR1cm4gS0ZE X01RRF9UWVBFX0NQOwogfQogCi11bnNpZ25lZCBpbnQgZ2V0X2ZpcnN0X3BpcGUoc3RydWN0IGRl dmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0pCitzdGF0aWMgYm9vbCBpc19waXBlX2VuYWJsZWQoc3Ry dWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sIGludCBtZWMsIGludCBwaXBlKQoreworCWlu dCBpOworCWludCBwaXBlX29mZnNldCA9IG1lYyAqIGRxbS0+ZGV2LT5zaGFyZWRfcmVzb3VyY2Vz Lm51bV9waXBlX3Blcl9tZWMKKwkJKyBwaXBlICogZHFtLT5kZXYtPnNoYXJlZF9yZXNvdXJjZXMu bnVtX3F1ZXVlX3Blcl9waXBlOworCisJLyogcXVldWUgaXMgYXZhaWxhYmxlIGZvciBLRkQgdXNh Z2UgaWYgYml0IGlzIDEgKi8KKwlmb3IgKGkgPSAwOyBpIDwgIGRxbS0+ZGV2LT5zaGFyZWRfcmVz b3VyY2VzLm51bV9xdWV1ZV9wZXJfcGlwZTsgKytpKQorCQlpZiAodGVzdF9iaXQocGlwZV9vZmZz ZXQgKyBpLAorCQkJICAgICAgZHFtLT5kZXYtPnNoYXJlZF9yZXNvdXJjZXMucXVldWVfYml0bWFw KSkKKwkJCXJldHVybiB0cnVlOworCXJldHVybiBmYWxzZTsKK30KKwordW5zaWduZWQgaW50IGdl dF9tZWNfbnVtKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtKQoreworCUJVR19PTigh ZHFtIHx8ICFkcW0tPmRldik7CisKKwlyZXR1cm4gZHFtLT5kZXYtPnNoYXJlZF9yZXNvdXJjZXMu bnVtX21lYzsKK30KKwordW5zaWduZWQgaW50IGdldF9xdWV1ZXNfbnVtKHN0cnVjdCBkZXZpY2Vf cXVldWVfbWFuYWdlciAqZHFtKQogewogCUJVR19PTighZHFtIHx8ICFkcW0tPmRldik7Ci0JcmV0 dXJuIGRxbS0+ZGV2LT5zaGFyZWRfcmVzb3VyY2VzLmZpcnN0X2NvbXB1dGVfcGlwZTsKKwlyZXR1 cm4gYml0bWFwX3dlaWdodChkcW0tPmRldi0+c2hhcmVkX3Jlc291cmNlcy5xdWV1ZV9iaXRtYXAs CisJCQkJS0dEX01BWF9RVUVVRVMpOwogfQogCi11bnNpZ25lZCBpbnQgZ2V0X3BpcGVzX251bShz dHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSkKK3Vuc2lnbmVkIGludCBnZXRfcXVldWVz X3Blcl9waXBlKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtKQogewogCUJVR19PTigh ZHFtIHx8ICFkcW0tPmRldik7Ci0JcmV0dXJuIGRxbS0+ZGV2LT5zaGFyZWRfcmVzb3VyY2VzLmNv bXB1dGVfcGlwZV9jb3VudDsKKwlyZXR1cm4gZHFtLT5kZXYtPnNoYXJlZF9yZXNvdXJjZXMubnVt X3F1ZXVlX3Blcl9waXBlOwogfQogCi1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBnZXRfcGlw ZXNfbnVtX2Nwc2NoKHZvaWQpCit1bnNpZ25lZCBpbnQgZ2V0X3BpcGVzX3Blcl9tZWMoc3RydWN0 IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0pCiB7Ci0JcmV0dXJuIFBJUEVfUEVSX01FX0NQX1ND SEVEVUxJTkc7CisJQlVHX09OKCFkcW0gfHwgIWRxbS0+ZGV2KTsKKwlyZXR1cm4gZHFtLT5kZXYt PnNoYXJlZF9yZXNvdXJjZXMubnVtX3BpcGVfcGVyX21lYzsKIH0KIAogdm9pZCBwcm9ncmFtX3No X21lbV9zZXR0aW5ncyhzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwKIAkJCQkJc3Ry dWN0IHFjbV9wcm9jZXNzX2RldmljZSAqcXBkKQogewogCXJldHVybiBkcW0tPmRldi0+a2ZkMmtn ZC0+cHJvZ3JhbV9zaF9tZW1fc2V0dGluZ3MoCiAJCQkJCQlkcW0tPmRldi0+a2dkLCBxcGQtPnZt aWQsCiAJCQkJCQlxcGQtPnNoX21lbV9jb25maWcsCiAJCQkJCQlxcGQtPnNoX21lbV9hcGUxX2Jh c2UsCiAJCQkJCQlxcGQtPnNoX21lbV9hcGUxX2xpbWl0LApAQCAtMTkzLDQzICsyMTYsNDcgQEAg c3RhdGljIGludCBjcmVhdGVfcXVldWVfbm9jcHNjaChzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFn ZXIgKmRxbSwKIAlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBhbGxvY2F0ZV9ocWQoc3RydWN0 IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sIHN0cnVjdCBxdWV1ZSAqcSkKIHsKIAlib29sIHNl dDsKIAlpbnQgcGlwZSwgYml0LCBpOwogCiAJc2V0ID0gZmFsc2U7CiAKLQlmb3IgKHBpcGUgPSBk cW0tPm5leHRfcGlwZV90b19hbGxvY2F0ZSwgaSA9IDA7IGkgPCBnZXRfcGlwZXNfbnVtKGRxbSk7 Ci0JCQlwaXBlID0gKChwaXBlICsgMSkgJSBnZXRfcGlwZXNfbnVtKGRxbSkpLCArK2kpIHsKKwlm b3IgKHBpcGUgPSBkcW0tPm5leHRfcGlwZV90b19hbGxvY2F0ZSwgaSA9IDA7IGkgPCBnZXRfcGlw ZXNfcGVyX21lYyhkcW0pOworCQkJcGlwZSA9ICgocGlwZSArIDEpICUgZ2V0X3BpcGVzX3Blcl9t ZWMoZHFtKSksICsraSkgeworCisJCWlmICghaXNfcGlwZV9lbmFibGVkKGRxbSwgMCwgcGlwZSkp CisJCQljb250aW51ZTsKKwogCQlpZiAoZHFtLT5hbGxvY2F0ZWRfcXVldWVzW3BpcGVdICE9IDAp IHsKIAkJCWJpdCA9IGZpbmRfZmlyc3RfYml0KAogCQkJCSh1bnNpZ25lZCBsb25nICopJmRxbS0+ YWxsb2NhdGVkX3F1ZXVlc1twaXBlXSwKLQkJCQlRVUVVRVNfUEVSX1BJUEUpOworCQkJCWdldF9x dWV1ZXNfcGVyX3BpcGUoZHFtKSk7CiAKIAkJCWNsZWFyX2JpdChiaXQsCiAJCQkJKHVuc2lnbmVk IGxvbmcgKikmZHFtLT5hbGxvY2F0ZWRfcXVldWVzW3BpcGVdKTsKIAkJCXEtPnBpcGUgPSBwaXBl OwogCQkJcS0+cXVldWUgPSBiaXQ7CiAJCQlzZXQgPSB0cnVlOwogCQkJYnJlYWs7CiAJCX0KIAl9 CiAKIAlpZiAoIXNldCkKIAkJcmV0dXJuIC1FQlVTWTsKIAogCXByX2RlYnVnKCJrZmQ6IERRTSAl cyBocWQgc2xvdCAtIHBpcGUgKCVkKSBxdWV1ZSglZClcbiIsCiAJCQkJX19mdW5jX18sIHEtPnBp cGUsIHEtPnF1ZXVlKTsKIAkvKiBob3Jpem9udGFsIGhxZCBhbGxvY2F0aW9uICovCi0JZHFtLT5u ZXh0X3BpcGVfdG9fYWxsb2NhdGUgPSAocGlwZSArIDEpICUgZ2V0X3BpcGVzX251bShkcW0pOwor CWRxbS0+bmV4dF9waXBlX3RvX2FsbG9jYXRlID0gKHBpcGUgKyAxKSAlIGdldF9waXBlc19wZXJf bWVjKGRxbSk7CiAKIAlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIGRlYWxsb2Nh dGVfaHFkKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLAogCQkJCXN0cnVjdCBxdWV1 ZSAqcSkKIHsKIAlzZXRfYml0KHEtPnF1ZXVlLCAodW5zaWduZWQgbG9uZyAqKSZkcW0tPmFsbG9j YXRlZF9xdWV1ZXNbcS0+cGlwZV0pOwogfQogCkBAIC00NjIsNzUgKzQ4OSw2NCBAQCBzZXRfcGFz aWRfdm1pZF9tYXBwaW5nKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLCB1bnNpZ25l ZCBpbnQgcGFzaWQsCiAKIAlwYXNpZF9tYXBwaW5nID0gKHBhc2lkID09IDApID8gMCA6CiAJCSh1 aW50MzJfdClwYXNpZCB8CiAJCUFUQ19WTUlEX1BBU0lEX01BUFBJTkdfVkFMSUQ7CiAKIAlyZXR1 cm4gZHFtLT5kZXYtPmtmZDJrZ2QtPnNldF9wYXNpZF92bWlkX21hcHBpbmcoCiAJCQkJCQlkcW0t PmRldi0+a2dkLCBwYXNpZF9tYXBwaW5nLAogCQkJCQkJdm1pZCk7CiB9CiAKLWludCBpbml0X3Bp cGVsaW5lcyhzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwKLQkJCXVuc2lnbmVkIGlu dCBwaXBlc19udW0sIHVuc2lnbmVkIGludCBmaXJzdF9waXBlKQotewotCUJVR19PTighZHFtIHx8 ICFkcW0tPmRldik7Ci0KLQlwcl9kZWJ1Zygia2ZkOiBJbiBmdW5jICVzXG4iLCBfX2Z1bmNfXyk7 Ci0KLQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIHZvaWQgaW5pdF9pbnRlcnJ1cHRzKHN0cnVjdCBk ZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtKQogewogCXVuc2lnbmVkIGludCBpOwogCiAJQlVHX09O KGRxbSA9PSBOVUxMKTsKIAotCWZvciAoaSA9IDAgOyBpIDwgZ2V0X3BpcGVzX251bShkcW0pIDsg aSsrKQotCQlkcW0tPmRldi0+a2ZkMmtnZC0+aW5pdF9pbnRlcnJ1cHRzKGRxbS0+ZGV2LT5rZ2Qs Ci0JCQkJaSArIGdldF9maXJzdF9waXBlKGRxbSkpOworCWZvciAoaSA9IDAgOyBpIDwgZ2V0X3Bp cGVzX3Blcl9tZWMoZHFtKSA7IGkrKykKKwkJaWYgKGlzX3BpcGVfZW5hYmxlZChkcW0sIDAsIGkp KQorCQkJZHFtLT5kZXYtPmtmZDJrZ2QtPmluaXRfaW50ZXJydXB0cyhkcW0tPmRldi0+a2dkLCBp KTsKIH0KIAogc3RhdGljIGludCBpbml0X3NjaGVkdWxlcihzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21h bmFnZXIgKmRxbSkKIHsKLQlpbnQgcmV0dmFsOworCWludCByZXR2YWwgPSAwOwogCiAJQlVHX09O KCFkcW0pOwogCiAJcHJfZGVidWcoImtmZDogSW4gJXNcbiIsIF9fZnVuY19fKTsKIAotCXJldHZh bCA9IGluaXRfcGlwZWxpbmVzKGRxbSwgZ2V0X3BpcGVzX251bShkcW0pLCBnZXRfZmlyc3RfcGlw ZShkcW0pKTsKIAlyZXR1cm4gcmV0dmFsOwogfQogCiBzdGF0aWMgaW50IGluaXRpYWxpemVfbm9j cHNjaChzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSkKIHsKIAlpbnQgaTsKIAogCUJV R19PTighZHFtKTsKIAogCXByX2RlYnVnKCJrZmQ6IEluIGZ1bmMgJXMgbnVtIG9mIHBpcGVzOiAl ZFxuIiwKLQkJCV9fZnVuY19fLCBnZXRfcGlwZXNfbnVtKGRxbSkpOworCQkJX19mdW5jX18sIGdl dF9waXBlc19wZXJfbWVjKGRxbSkpOwogCiAJbXV0ZXhfaW5pdCgmZHFtLT5sb2NrKTsKIAlJTklU X0xJU1RfSEVBRCgmZHFtLT5xdWV1ZXMpOwogCWRxbS0+cXVldWVfY291bnQgPSBkcW0tPm5leHRf cGlwZV90b19hbGxvY2F0ZSA9IDA7CiAJZHFtLT5zZG1hX3F1ZXVlX2NvdW50ID0gMDsKLQlkcW0t PmFsbG9jYXRlZF9xdWV1ZXMgPSBrY2FsbG9jKGdldF9waXBlc19udW0oZHFtKSwKKwlkcW0tPmFs bG9jYXRlZF9xdWV1ZXMgPSBrY2FsbG9jKGdldF9waXBlc19wZXJfbWVjKGRxbSksCiAJCQkJCXNp emVvZih1bnNpZ25lZCBpbnQpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIWRxbS0+YWxsb2NhdGVkX3F1 ZXVlcykgewogCQltdXRleF9kZXN0cm95KCZkcW0tPmxvY2spOwogCQlyZXR1cm4gLUVOT01FTTsK IAl9CiAKLQlmb3IgKGkgPSAwOyBpIDwgZ2V0X3BpcGVzX251bShkcW0pOyBpKyspCi0JCWRxbS0+ YWxsb2NhdGVkX3F1ZXVlc1tpXSA9ICgxIDw8IFFVRVVFU19QRVJfUElQRSkgLSAxOworCWZvciAo aSA9IDA7IGkgPCBnZXRfcGlwZXNfcGVyX21lYyhkcW0pOyBpKyspCisJCWRxbS0+YWxsb2NhdGVk X3F1ZXVlc1tpXSA9ICgxIDw8IGdldF9xdWV1ZXNfcGVyX3BpcGUoZHFtKSkgLSAxOwogCiAJZHFt LT52bWlkX2JpdG1hcCA9ICgxIDw8IFZNSURfUEVSX0RFVklDRSkgLSAxOwogCWRxbS0+c2RtYV9i aXRtYXAgPSAoMSA8PCBDSUtfU0RNQV9RVUVVRVMpIC0gMTsKIAogCWluaXRfc2NoZWR1bGVyKGRx bSk7CiAJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyB2b2lkIHVuaW5pdGlhbGl6ZV9ub2Nwc2NoKHN0 cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtKQogewpAQCAtNjIzLDUxICs2MzksNjcgQEAg c3RhdGljIGludCBjcmVhdGVfc2RtYV9xdWV1ZV9ub2Nwc2NoKHN0cnVjdCBkZXZpY2VfcXVldWVf bWFuYWdlciAqZHFtLAogCiAJcmV0dXJuIDA7CiB9CiAKIC8qCiAgKiBEZXZpY2UgUXVldWUgTWFu YWdlciBpbXBsZW1lbnRhdGlvbiBmb3IgY3Agc2NoZWR1bGVyCiAgKi8KIAogc3RhdGljIGludCBz ZXRfc2NoZWRfcmVzb3VyY2VzKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtKQogewor CWludCBpOwogCXN0cnVjdCBzY2hlZHVsaW5nX3Jlc291cmNlcyByZXM7Ci0JdW5zaWduZWQgaW50 IHF1ZXVlX251bSwgcXVldWVfbWFzazsKIAogCUJVR19PTighZHFtKTsKIAogCXByX2RlYnVnKCJr ZmQ6IEluIGZ1bmMgJXNcbiIsIF9fZnVuY19fKTsKIAotCXF1ZXVlX251bSA9IGdldF9waXBlc19u dW1fY3BzY2goKSAqIFFVRVVFU19QRVJfUElQRTsKLQlxdWV1ZV9tYXNrID0gKDEgPDwgcXVldWVf bnVtKSAtIDE7CiAJcmVzLnZtaWRfbWFzayA9ICgxIDw8IFZNSURfUEVSX0RFVklDRSkgLSAxOwog CXJlcy52bWlkX21hc2sgPDw9IEtGRF9WTUlEX1NUQVJUX09GRlNFVDsKLQlyZXMucXVldWVfbWFz ayA9IHF1ZXVlX21hc2sgPDwgKGdldF9maXJzdF9waXBlKGRxbSkgKiBRVUVVRVNfUEVSX1BJUEUp OworCisJLyogQXZvaWQgdG91Y2hpbmcgdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIHF1ZXVl X2JpdG1hcCBkaXJlY3RseS4KKwkgKiBFdmVuIHRob3VnaCBkb2luZyBhIHNpbXBsZSBtZW1jcHkg bWlnaHQgc291bmQgdGVtcHRpbmcsIGl0IHdvdWxkCisJICogc2lsZW50bHkgYnJlYWsgaWYgdGhl IGltcGxlbWVudGF0aW9uIG9mIGJpdG1hcHMgaXMgY2hhbmdlZCAqLworCXJlcy5xdWV1ZV9tYXNr ID0gMDsKKwlmb3IgKGkgPSAwOyBpIDwgS0dEX01BWF9RVUVVRVM7ICsraSkgeworCQlpZiAoIXRl c3RfYml0KGksIGRxbS0+ZGV2LT5zaGFyZWRfcmVzb3VyY2VzLnF1ZXVlX2JpdG1hcCkpCisJCQlj b250aW51ZTsKKworCQkvKiBUaGlzIHNpdHVhdGlvbiBtYXkgYmUgaGl0IGluIHRoZSBmdXR1cmUg aWYgYSBuZXcgSFcKKwkJICogZ2VuZXJhdGlvbiBleHBvc2VzIG1vcmUgdGhhbiA2NCBxdWV1ZXMu IElmIHNvLCB0aGUKKwkJICogZGVmaW5pdGlvbiBvZiByZXMucXVldWVfbWFzayBuZWVkcyB1cGRh dGluZyAqLworCQlpZiAoV0FSTl9PTihpID4gKHNpemVvZihyZXMucXVldWVfbWFzaykqOCkpKSB7 CisJCQlwcl9lcnIoIkludmFsaWQgcXVldWUgZW5hYmxlZCBieSBhbWRncHU6ICVkXG4iLCBpKTsK KwkJCWJyZWFrOworCQl9CisKKwkJcmVzLnF1ZXVlX21hc2sgfD0gKDF1bGwgPDwgaSk7CisJfQog CXJlcy5nd3NfbWFzayA9IHJlcy5vYWNfbWFzayA9IHJlcy5nZHNfaGVhcF9iYXNlID0KIAkJCQkJ CXJlcy5nZHNfaGVhcF9zaXplID0gMDsKIAogCXByX2RlYnVnKCJrZmQ6IHNjaGVkdWxpbmcgcmVz b3VyY2VzOlxuIgogCQkJIiAgICAgIHZtaWQgbWFzazogMHglOFhcbiIKIAkJCSIgICAgICBxdWV1 ZSBtYXNrOiAweCU4bGxYXG4iLAogCQkJcmVzLnZtaWRfbWFzaywgcmVzLnF1ZXVlX21hc2spOwog CiAJcmV0dXJuIHBtX3NlbmRfc2V0X3Jlc291cmNlcygmZHFtLT5wYWNrZXRzLCAmcmVzKTsKIH0K IAogc3RhdGljIGludCBpbml0aWFsaXplX2Nwc2NoKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdl ciAqZHFtKQogewogCWludCByZXR2YWw7CiAKIAlCVUdfT04oIWRxbSk7CiAKIAlwcl9kZWJ1Zygi a2ZkOiBJbiBmdW5jICVzIG51bSBvZiBwaXBlczogJWRcbiIsCi0JCQlfX2Z1bmNfXywgZ2V0X3Bp cGVzX251bV9jcHNjaCgpKTsKKwkJCV9fZnVuY19fLCBnZXRfcGlwZXNfcGVyX21lYyhkcW0pKTsK IAogCW11dGV4X2luaXQoJmRxbS0+bG9jayk7CiAJSU5JVF9MSVNUX0hFQUQoJmRxbS0+cXVldWVz KTsKIAlkcW0tPnF1ZXVlX2NvdW50ID0gZHFtLT5wcm9jZXNzZXNfY291bnQgPSAwOwogCWRxbS0+ c2RtYV9xdWV1ZV9jb3VudCA9IDA7CiAJZHFtLT5hY3RpdmVfcnVubGlzdCA9IGZhbHNlOwogCXJl dHZhbCA9IGRxbS0+b3BzX2FzaWNfc3BlY2lmaWMuaW5pdGlhbGl6ZShkcW0pOwogCWlmIChyZXR2 YWwgIT0gMCkKIAkJZ290byBmYWlsX2luaXRfcGlwZWxpbmVzOwogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlX3F1ZXVlX21hbmFnZXIuaCBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVldWVfbWFuYWdlci5oCmluZGV4IGE2 MjViOTEuLjY2Yjk2MTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tm ZF9kZXZpY2VfcXVldWVfbWFuYWdlci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2Zk L2tmZF9kZXZpY2VfcXVldWVfbWFuYWdlci5oCkBAIC0yMywyMiArMjMsMjAgQEAKIAogI2lmbmRl ZiBLRkRfREVWSUNFX1FVRVVFX01BTkFHRVJfSF8KICNkZWZpbmUgS0ZEX0RFVklDRV9RVUVVRV9N QU5BR0VSX0hfCiAKICNpbmNsdWRlIDxsaW51eC9yd3NlbS5oPgogI2luY2x1ZGUgPGxpbnV4L2xp c3QuaD4KICNpbmNsdWRlICJrZmRfcHJpdi5oIgogI2luY2x1ZGUgImtmZF9tcWRfbWFuYWdlci5o IgogCiAjZGVmaW5lIFFVRVVFX1BSRUVNUFRfREVGQVVMVF9USU1FT1VUX01TCSg1MDApCi0jZGVm aW5lIFFVRVVFU19QRVJfUElQRQkJCQkoOCkKLSNkZWZpbmUgUElQRV9QRVJfTUVfQ1BfU0NIRURV TElORwkJKDMpCiAjZGVmaW5lIENJS19WTUlEX05VTQkJCQkoOCkKICNkZWZpbmUgS0ZEX1ZNSURf U1RBUlRfT0ZGU0VUCQkJKDgpCiAjZGVmaW5lIFZNSURfUEVSX0RFVklDRQkJCQlDSUtfVk1JRF9O VU0KICNkZWZpbmUgS0ZEX0RRTV9GSVJTVF9QSVBFCQkJKDApCiAjZGVmaW5lIENJS19TRE1BX1FV RVVFUwkJCQkoNCkKICNkZWZpbmUgQ0lLX1NETUFfUVVFVUVTX1BFUl9FTkdJTkUJCSgyKQogI2Rl ZmluZSBDSUtfU0RNQV9FTkdJTkVfTlVNCQkJKDIpCiAKIHN0cnVjdCBkZXZpY2VfcHJvY2Vzc19u b2RlIHsKIAlzdHJ1Y3QgcWNtX3Byb2Nlc3NfZGV2aWNlICpxcGQ7CkBAIC0xNzUsMjQgKzE3Mywy NCBAQCBzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgewogCXVpbnQ2NF90CQlmZW5jZV9ncHVf YWRkcjsKIAl1bnNpZ25lZCBpbnQJCSpmZW5jZV9hZGRyOwogCXN0cnVjdCBrZmRfbWVtX29iagkq ZmVuY2VfbWVtOwogCWJvb2wJCQlhY3RpdmVfcnVubGlzdDsKIH07CiAKIHZvaWQgZGV2aWNlX3F1 ZXVlX21hbmFnZXJfaW5pdF9jaWsoc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyX2FzaWNfb3Bz ICpvcHMpOwogdm9pZCBkZXZpY2VfcXVldWVfbWFuYWdlcl9pbml0X3ZpKHN0cnVjdCBkZXZpY2Vf cXVldWVfbWFuYWdlcl9hc2ljX29wcyAqb3BzKTsKIHZvaWQgcHJvZ3JhbV9zaF9tZW1fc2V0dGlu Z3Moc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sCiAJCQkJCXN0cnVjdCBxY21fcHJv Y2Vzc19kZXZpY2UgKnFwZCk7Ci1pbnQgaW5pdF9waXBlbGluZXMoc3RydWN0IGRldmljZV9xdWV1 ZV9tYW5hZ2VyICpkcW0sCi0JCXVuc2lnbmVkIGludCBwaXBlc19udW0sIHVuc2lnbmVkIGludCBm aXJzdF9waXBlKTsKLXVuc2lnbmVkIGludCBnZXRfZmlyc3RfcGlwZShzdHJ1Y3QgZGV2aWNlX3F1 ZXVlX21hbmFnZXIgKmRxbSk7Ci11bnNpZ25lZCBpbnQgZ2V0X3BpcGVzX251bShzdHJ1Y3QgZGV2 aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSk7Cit1bnNpZ25lZCBpbnQgZ2V0X21lY19udW0oc3RydWN0 IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0pOwordW5zaWduZWQgaW50IGdldF9xdWV1ZXNfbnVt KHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtKTsKK3Vuc2lnbmVkIGludCBnZXRfcXVl dWVzX3Blcl9waXBlKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtKTsKK3Vuc2lnbmVk IGludCBnZXRfcGlwZXNfcGVyX21lYyhzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSk7 CiAKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdldF9zaF9tZW1fYmFzZXNfMzIoc3RydWN0 IGtmZF9wcm9jZXNzX2RldmljZSAqcGRkKQogewogCXJldHVybiAocGRkLT5sZHNfYmFzZSA+PiAx NikgJiAweEZGOwogfQogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludAogZ2V0X3NoX21lbV9i YXNlc19ueWJibGVfNjQoc3RydWN0IGtmZF9wcm9jZXNzX2RldmljZSAqcGRkKQogewogCXJldHVy biAocGRkLT5sZHNfYmFzZSA+PiA2MCkgJiAweDBFOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyX2Npay5jIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyX2Npay5jCmluZGV4IGM2 ZjQzNWEuLjQ4ZGMwNTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tm ZF9kZXZpY2VfcXVldWVfbWFuYWdlcl9jaWsuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGtmZC9rZmRfZGV2aWNlX3F1ZXVlX21hbmFnZXJfY2lrLmMKQEAgLTE0NCwxMiArMTQ0LDEyIEBA IHN0YXRpYyB2b2lkIGluaXRfc2RtYV92bShzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRx bSwgc3RydWN0IHF1ZXVlICpxLAogCWVsc2UKIAkJdmFsdWUgfD0gKChnZXRfc2hfbWVtX2Jhc2Vz X255YmJsZV82NChxcGRfdG9fcGRkKHFwZCkpKSA8PAogCQkJCVNETUEwX1JMQzBfVklSVFVBTF9B RERSX19TSEFSRURfQkFTRV9fU0hJRlQpICYKIAkJCQlTRE1BMF9STEMwX1ZJUlRVQUxfQUREUl9f U0hBUkVEX0JBU0VfTUFTSzsKIAogCXEtPnByb3BlcnRpZXMuc2RtYV92bV9hZGRyID0gdmFsdWU7 CiB9CiAKIHN0YXRpYyBpbnQgaW5pdGlhbGl6ZV9jcHNjaF9jaWsoc3RydWN0IGRldmljZV9xdWV1 ZV9tYW5hZ2VyICpkcW0pCiB7Ci0JcmV0dXJuIGluaXRfcGlwZWxpbmVzKGRxbSwgZ2V0X3BpcGVz X251bShkcW0pLCBnZXRfZmlyc3RfcGlwZShkcW0pKTsKKwlyZXR1cm4gMDsKIH0KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wYWNrZXRfbWFuYWdlci5jIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3BhY2tldF9tYW5hZ2VyLmMKaW5kZXggY2E4YzA5 My4uNzEzMTk5OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3Bh Y2tldF9tYW5hZ2VyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3BhY2tl dF9tYW5hZ2VyLmMKQEAgLTU4LDIyICs1OCwyMSBAQCBzdGF0aWMgdm9pZCBwbV9jYWxjX3JsaWJf c2l6ZShzdHJ1Y3QgcGFja2V0X21hbmFnZXIgKnBtLAogCXVuc2lnbmVkIGludCBwcm9jZXNzX2Nv dW50LCBxdWV1ZV9jb3VudDsKIAl1bnNpZ25lZCBpbnQgbWFwX3F1ZXVlX3NpemU7CiAKIAlCVUdf T04oIXBtIHx8ICFybGliX3NpemUgfHwgIW92ZXJfc3Vic2NyaXB0aW9uKTsKIAogCXByb2Nlc3Nf Y291bnQgPSBwbS0+ZHFtLT5wcm9jZXNzZXNfY291bnQ7CiAJcXVldWVfY291bnQgPSBwbS0+ZHFt LT5xdWV1ZV9jb3VudDsKIAogCS8qIGNoZWNrIGlmIHRoZXJlIGlzIG92ZXIgc3Vic2NyaXB0aW9u Ki8KIAkqb3Zlcl9zdWJzY3JpcHRpb24gPSBmYWxzZTsKLQlpZiAoKHByb2Nlc3NfY291bnQgPiAx KSB8fAotCQlxdWV1ZV9jb3VudCA+IFBJUEVfUEVSX01FX0NQX1NDSEVEVUxJTkcgKiBRVUVVRVNf UEVSX1BJUEUpIHsKKwlpZiAoKHByb2Nlc3NfY291bnQgPiAxKSB8fCBxdWV1ZV9jb3VudCA+IGdl dF9xdWV1ZXNfbnVtKHBtLT5kcW0pKSB7CiAJCSpvdmVyX3N1YnNjcmlwdGlvbiA9IHRydWU7CiAJ CXByX2RlYnVnKCJrZmQ6IG92ZXIgc3Vic2NyaWJlZCBydW5saXN0XG4iKTsKIAl9CiAKIAltYXBf cXVldWVfc2l6ZSA9CiAJCShwbS0+ZHFtLT5kZXYtPmRldmljZV9pbmZvLT5hc2ljX2ZhbWlseSA9 PSBDSElQX0NBUlJJWk8pID8KIAkJc2l6ZW9mKHN0cnVjdCBwbTRfbWVzX21hcF9xdWV1ZXMpIDoK IAkJc2l6ZW9mKHN0cnVjdCBwbTRfbWFwX3F1ZXVlcyk7CiAJLyogY2FsY3VsYXRlIHJ1biBsaXN0 IGliIGFsbG9jYXRpb24gc2l6ZSAqLwogCSpybGliX3NpemUgPSBwcm9jZXNzX2NvdW50ICogc2l6 ZW9mKHN0cnVjdCBwbTRfbWFwX3Byb2Nlc3MpICsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1ka2ZkL2tmZF9wcm9jZXNzX3F1ZXVlX21hbmFnZXIuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1ka2ZkL2tmZF9wcm9jZXNzX3F1ZXVlX21hbmFnZXIuYwppbmRleCBlMWZiNDBiLi4z MmNkZjJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfcHJvY2Vz c19xdWV1ZV9tYW5hZ2VyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3By b2Nlc3NfcXVldWVfbWFuYWdlci5jCkBAIC0yMDIsMjEgKzIwMiwyMSBAQCBpbnQgcHFtX2NyZWF0 ZV9xdWV1ZShzdHJ1Y3QgcHJvY2Vzc19xdWV1ZV9tYW5hZ2VyICpwcW0sCiAJCXJldHZhbCA9IC1F Tk9NRU07CiAJCWdvdG8gZXJyX2FsbG9jYXRlX3BxbjsKIAl9CiAKIAlzd2l0Y2ggKHR5cGUpIHsK IAljYXNlIEtGRF9RVUVVRV9UWVBFX1NETUE6CiAJY2FzZSBLRkRfUVVFVUVfVFlQRV9DT01QVVRF OgogCQkvKiBjaGVjayBpZiB0aGVyZSBpcyBvdmVyIHN1YnNjcmlwdGlvbiAqLwogCQlpZiAoKHNj aGVkX3BvbGljeSA9PSBLRkRfU0NIRURfUE9MSUNZX0hXU19OT19PVkVSU1VCU0NSSVBUSU9OKSAm JgogCQkoKGRldi0+ZHFtLT5wcm9jZXNzZXNfY291bnQgPj0gVk1JRF9QRVJfREVWSUNFKSB8fAot CQkoZGV2LT5kcW0tPnF1ZXVlX2NvdW50ID49IFBJUEVfUEVSX01FX0NQX1NDSEVEVUxJTkcgKiBR VUVVRVNfUEVSX1BJUEUpKSkgeworCQkoZGV2LT5kcW0tPnF1ZXVlX2NvdW50ID49IGdldF9xdWV1 ZXNfbnVtKGRldi0+ZHFtKSkpKSB7CiAJCQlwcl9lcnIoImtmZDogb3Zlci1zdWJzY3JpcHRpb24g aXMgbm90IGFsbG93ZWQgaW4gcmFkZW9uX2tmZC5zY2hlZF9wb2xpY3kgPT0gMVxuIik7CiAJCQly ZXR2YWwgPSAtRVBFUk07CiAJCQlnb3RvIGVycl9jcmVhdGVfcXVldWU7CiAJCX0KIAogCQlyZXR2 YWwgPSBjcmVhdGVfY3BfcXVldWUocHFtLCBkZXYsICZxLCAmcV9wcm9wZXJ0aWVzLCBmLCAqcWlk KTsKIAkJaWYgKHJldHZhbCAhPSAwKQogCQkJZ290byBlcnJfY3JlYXRlX3F1ZXVlOwogCQlwcW4t PnEgPSBxOwogCQlwcW4tPmtxID0gTlVMTDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvaW5jbHVkZS9rZ2Rfa2ZkX2ludGVyZmFjZS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9pbmNs dWRlL2tnZF9rZmRfaW50ZXJmYWNlLmgKaW5kZXggNjdmNmQxOS4uOTFlZjE0OCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9pbmNsdWRlL2tnZF9rZmRfaW50ZXJmYWNlLmgKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9pbmNsdWRlL2tnZF9rZmRfaW50ZXJmYWNlLmgKQEAgLTIyLDI0 ICsyMiwyNSBAQAogCiAvKgogICogVGhpcyBmaWxlIGRlZmluZXMgdGhlIHByaXZhdGUgaW50ZXJm YWNlIGJldHdlZW4gdGhlCiAgKiBBTUQga2VybmVsIGdyYXBoaWNzIGRyaXZlcnMgYW5kIHRoZSBB TUQgS0ZELgogICovCiAKICNpZm5kZWYgS0dEX0tGRF9JTlRFUkZBQ0VfSF9JTkNMVURFRAogI2Rl ZmluZSBLR0RfS0ZEX0lOVEVSRkFDRV9IX0lOQ0xVREVECiAKICNpbmNsdWRlIDxsaW51eC90eXBl cy5oPgorI2luY2x1ZGUgPGxpbnV4L2JpdG1hcC5oPgogCiBzdHJ1Y3QgcGNpX2RldjsKIAotI2Rl ZmluZSBLRkRfSU5URVJGQUNFX1ZFUlNJT04gMQorI2RlZmluZSBLRkRfSU5URVJGQUNFX1ZFUlNJ T04gMgogI2RlZmluZSBLR0RfTUFYX1FVRVVFUyAxMjgKIAogc3RydWN0IGtmZF9kZXY7CiBzdHJ1 Y3Qga2dkX2RldjsKIAogc3RydWN0IGtnZF9tZW07CiAKIGVudW0ga2dkX21lbW9yeV9wb29sIHsK IAlLR0RfUE9PTF9TWVNURU1fQ0FDSEVBQkxFID0gMSwKIAlLR0RfUE9PTF9TWVNURU1fV1JJVEVD T01CSU5FID0gMiwKQEAgLTU1LDI1ICs1NiwzMSBAQCBlbnVtIGtnZF9lbmdpbmVfdHlwZSB7CiAJ S0dEX0VOR0lORV9STEMsCiAJS0dEX0VOR0lORV9TRE1BMSwKIAlLR0RfRU5HSU5FX1NETUEyLAog CUtHRF9FTkdJTkVfTUFYCiB9OwogCiBzdHJ1Y3Qga2dkMmtmZF9zaGFyZWRfcmVzb3VyY2VzIHsK IAkvKiBCaXQgbiA9PSAxIG1lYW5zIFZNSUQgbiBpcyBhdmFpbGFibGUgZm9yIEtGRC4gKi8KIAl1 bnNpZ25lZCBpbnQgY29tcHV0ZV92bWlkX2JpdG1hcDsKIAotCS8qIENvbXB1dGUgcGlwZXMgYXJl IGNvdW50ZWQgc3RhcnRpbmcgZnJvbSBNRUMwL3BpcGUwIGFzIDAuICovCi0JdW5zaWduZWQgaW50 IGZpcnN0X2NvbXB1dGVfcGlwZTsKKwkvKiBudW1iZXIgb2YgbWVjIGF2YWlsYWJsZSBmcm9tIHRo ZSBoYXJkd2FyZSAqLworCXVpbnQzMl90IG51bV9tZWM7CiAKLQkvKiBOdW1iZXIgb2YgTUVDIHBp cGVzIGF2YWlsYWJsZSBmb3IgS0ZELiAqLwotCXVuc2lnbmVkIGludCBjb21wdXRlX3BpcGVfY291 bnQ7CisJLyogbnVtYmVyIG9mIHBpcGVzIHBlciBtZWMgKi8KKwl1aW50MzJfdCBudW1fcGlwZV9w ZXJfbWVjOworCisJLyogbnVtYmVyIG9mIHF1ZXVlcyBwZXIgcGlwZSAqLworCXVpbnQzMl90IG51 bV9xdWV1ZV9wZXJfcGlwZTsKKworCS8qIEJpdCBuID09IDEgbWVhbnMgUXVldWUgbiBpcyBhdmFp bGFibGUgZm9yIEtGRCAqLworCURFQ0xBUkVfQklUTUFQKHF1ZXVlX2JpdG1hcCwgS0dEX01BWF9R VUVVRVMpOwogCiAJLyogQmFzZSBhZGRyZXNzIG9mIGRvb3JiZWxsIGFwZXJ0dXJlLiAqLwogCXBo eXNfYWRkcl90IGRvb3JiZWxsX3BoeXNpY2FsX2FkZHJlc3M7CiAKIAkvKiBTaXplIGluIGJ5dGVz IG9mIGRvb3JiZWxsIGFwZXJ0dXJlLiAqLwogCXNpemVfdCBkb29yYmVsbF9hcGVydHVyZV9zaXpl OwogCiAJLyogTnVtYmVyIG9mIGJ5dGVzIGF0IHN0YXJ0IG9mIGFwZXJ0dXJlIHJlc2VydmVkIGZv ciBLR0QuICovCiAJc2l6ZV90IGRvb3JiZWxsX3N0YXJ0X29mZnNldDsKIH07CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9rZmQuYyBiL2RyaXZlcnMvZ3B1L2RybS9y YWRlb24vcmFkZW9uX2tmZC5jCmluZGV4IGEwNmUzYjEuLjY5OWZlN2YgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2tmZC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9y YWRlb24vcmFkZW9uX2tmZC5jCkBAIC0xNzIsMjggKzE3Miw0MyBAQCB2b2lkIHJhZGVvbl9rZmRf ZmluaSh2b2lkKQogCiB2b2lkIHJhZGVvbl9rZmRfZGV2aWNlX3Byb2JlKHN0cnVjdCByYWRlb25f ZGV2aWNlICpyZGV2KQogewogCWlmIChrZ2Qya2ZkKQogCQlyZGV2LT5rZmQgPSBrZ2Qya2ZkLT5w cm9iZSgoc3RydWN0IGtnZF9kZXYgKilyZGV2LAogCQkJcmRldi0+cGRldiwgJmtmZDJrZ2QpOwog fQogCiB2b2lkIHJhZGVvbl9rZmRfZGV2aWNlX2luaXQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJk ZXYpCiB7CisJaW50IGksIHF1ZXVlLCBwaXBlLCBtZWM7CisKIAlpZiAocmRldi0+a2ZkKSB7CiAJ CXN0cnVjdCBrZ2Qya2ZkX3NoYXJlZF9yZXNvdXJjZXMgZ3B1X3Jlc291cmNlcyA9IHsKIAkJCS5j b21wdXRlX3ZtaWRfYml0bWFwID0gMHhGRjAwLAotCi0JCQkuZmlyc3RfY29tcHV0ZV9waXBlID0g MSwKLQkJCS5jb21wdXRlX3BpcGVfY291bnQgPSA0IC0gMSwKKwkJCS5udW1fbWVjID0gMSwKKwkJ CS5udW1fcGlwZV9wZXJfbWVjID0gNCwKKwkJCS5udW1fcXVldWVfcGVyX3BpcGUgPSA4CiAJCX07 CiAKKwkJYml0bWFwX3plcm8oZ3B1X3Jlc291cmNlcy5xdWV1ZV9iaXRtYXAsIEtHRF9NQVhfUVVF VUVTKTsKKworCQlmb3IgKGkgPSAwOyBpIDwgS0dEX01BWF9RVUVVRVM7ICsraSkgeworCQkJcXVl dWUgPSBpICUgZ3B1X3Jlc291cmNlcy5udW1fcXVldWVfcGVyX3BpcGU7CisJCQlwaXBlID0gKGkg LyBncHVfcmVzb3VyY2VzLm51bV9xdWV1ZV9wZXJfcGlwZSkKKwkJCQklIGdwdV9yZXNvdXJjZXMu bnVtX3BpcGVfcGVyX21lYzsKKwkJCW1lYyA9IChpIC8gZ3B1X3Jlc291cmNlcy5udW1fcXVldWVf cGVyX3BpcGUpCisJCQkJLyBncHVfcmVzb3VyY2VzLm51bV9waXBlX3Blcl9tZWM7CisKKwkJCWlm IChtZWMgPT0gMCAmJiBwaXBlID4gMCkKKwkJCQlzZXRfYml0KGksIGdwdV9yZXNvdXJjZXMucXVl dWVfYml0bWFwKTsKKwkJfQorCiAJCXJhZGVvbl9kb29yYmVsbF9nZXRfa2ZkX2luZm8ocmRldiwK IAkJCQkmZ3B1X3Jlc291cmNlcy5kb29yYmVsbF9waHlzaWNhbF9hZGRyZXNzLAogCQkJCSZncHVf cmVzb3VyY2VzLmRvb3JiZWxsX2FwZXJ0dXJlX3NpemUsCiAJCQkJJmdwdV9yZXNvdXJjZXMuZG9v cmJlbGxfc3RhcnRfb2Zmc2V0KTsKIAogCQlrZ2Qya2ZkLT5kZXZpY2VfaW5pdChyZGV2LT5rZmQs ICZncHVfcmVzb3VyY2VzKTsKIAl9CiB9CiAKIHZvaWQgcmFkZW9uX2tmZF9kZXZpY2VfZmluaShz dHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldikKLS0gCjIuOS4zCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2FtZC1nZngK