From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Christian=20K=C3=B6nig?= Subject: [PATCH 4/5] drm/amdgpu: track evicted page tables v2 Date: Mon, 28 Aug 2017 20:50:43 +0200 Message-ID: <1503946244-1535-4-git-send-email-deathsimple@vodafone.de> References: <1503946244-1535-1-git-send-email-deathsimple@vodafone.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1503946244-1535-1-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@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 RnJvbTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgoKSW5zdGVh ZCBvZiB2YWxpZGF0aW5nIGFsbCBwYWdlIHRhYmxlcyB3aGVuIG9uZSB3YXMgZXZpY3RlZCwKdHJh Y2sgd2hpY2ggb25lIG5lZWRzIGEgdmFsaWRhdGlvbi4KCnYyOiBzaW1wbGlmeSBhbWRncHVfdm1f cmVhZHkgYXMgd2VsbAoKU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFu LmtvZW5pZ0BhbWQuY29tPgpSZXZpZXdlZC1ieTogQWxleCBEZXVjaGVyIDxhbGV4YW5kZXIuZGV1 Y2hlckBhbWQuY29tPiAodjEpCi0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2NzLmMgICAgIHwgICA3ICstCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2Vt LmMgICAgfCAgIDggKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3Qu YyB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMgICAgIHwg MjI3ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfdm0uaCAgICAgfCAgMTYgKy0KIDUgZmlsZXMgY2hhbmdlZCwgMTE5IGluc2Vy dGlvbnMoKyksIDE0MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9jcy5jCmluZGV4IDNmNDZiNWEuLmY2OGFjNTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9jcy5jCkBAIC02MzIsOSArNjMyLDYgQEAgc3RhdGljIGludCBhbWRncHVfY3NfcGFy c2VyX2JvcyhzdHJ1Y3QgYW1kZ3B1X2NzX3BhcnNlciAqcCwKIAogCWFtZGdwdV9jc19yZXBvcnRf bW92ZWRfYnl0ZXMocC0+YWRldiwgcC0+Ynl0ZXNfbW92ZWQsCiAJCQkJICAgICBwLT5ieXRlc19t b3ZlZF92aXMpOwotCWZwcml2LT52bS5sYXN0X2V2aWN0aW9uX2NvdW50ZXIgPQotCQlhdG9taWM2 NF9yZWFkKCZwLT5hZGV2LT5udW1fZXZpY3Rpb25zKTsKLQogCWlmIChwLT5ib19saXN0KSB7CiAJ CXN0cnVjdCBhbWRncHVfYm8gKmdkcyA9IHAtPmJvX2xpc3QtPmdkc19vYmo7CiAJCXN0cnVjdCBh bWRncHVfYm8gKmd3cyA9IHAtPmJvX2xpc3QtPmd3c19vYmo7CkBAIC04MjYsNyArODIzLDcgQEAg c3RhdGljIGludCBhbWRncHVfYm9fdm1fdXBkYXRlX3B0ZShzdHJ1Y3QgYW1kZ3B1X2NzX3BhcnNl ciAqcCkKIAkJCWlmICghYm8pCiAJCQkJY29udGludWU7CiAKLQkJCWFtZGdwdV92bV9ib19pbnZh bGlkYXRlKGFkZXYsIGJvKTsKKwkJCWFtZGdwdV92bV9ib19pbnZhbGlkYXRlKGFkZXYsIGJvLCBm YWxzZSk7CiAJCX0KIAl9CiAKQEAgLTg1MSw3ICs4NDgsNyBAQCBzdGF0aWMgaW50IGFtZGdwdV9j c19pYl92bV9jaHVuayhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAl9CiAKIAlpZiAocC0+ am9iLT52bSkgewotCQlwLT5qb2ItPnZtX3BkX2FkZHIgPSBhbWRncHVfYm9fZ3B1X29mZnNldCh2 bS0+cm9vdC5ibyk7CisJCXAtPmpvYi0+dm1fcGRfYWRkciA9IGFtZGdwdV9ib19ncHVfb2Zmc2V0 KHZtLT5yb290LmJhc2UuYm8pOwogCiAJCXIgPSBhbWRncHVfYm9fdm1fdXBkYXRlX3B0ZShwKTsK IAkJaWYgKHIpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf Z2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMKaW5kZXggYmEw MTI5My4uZDAyODgwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYwpA QCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgYW1kZ3B1X2dlbV9vYmplY3RfY2xvc2Uoc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmosCiAJaWYgKGJvX3ZhICYmIC0tYm9fdmEtPnJlZl9jb3VudCA9PSAw KSB7CiAJCWFtZGdwdV92bV9ib19ybXYoYWRldiwgYm9fdmEpOwogCi0JCWlmIChhbWRncHVfdm1f cmVhZHkoYWRldiwgdm0pKSB7CisJCWlmIChhbWRncHVfdm1fcmVhZHkodm0pKSB7CiAJCQlzdHJ1 Y3QgZG1hX2ZlbmNlICpmZW5jZSA9IE5VTEw7CiAKIAkJCXIgPSBhbWRncHVfdm1fY2xlYXJfZnJl ZWQoYWRldiwgdm0sICZmZW5jZSk7CkBAIC00ODEsMTAgKzQ4MSwxMCBAQCBzdGF0aWMgdm9pZCBh bWRncHVfZ2VtX3ZhX3VwZGF0ZV92bShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkg ICAgc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwKIAkJCQkgICAgdWludDMyX3Qgb3BlcmF0aW9uKQog ewotCWludCByID0gLUVSRVNUQVJUU1lTOworCWludCByOwogCi0JaWYgKCFhbWRncHVfdm1fcmVh ZHkoYWRldiwgdm0pKQotCQlnb3RvIGVycm9yOworCWlmICghYW1kZ3B1X3ZtX3JlYWR5KHZtKSkK KwkJcmV0dXJuOwogCiAJciA9IGFtZGdwdV92bV91cGRhdGVfZGlyZWN0b3JpZXMoYWRldiwgdm0p OwogCWlmIChyKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X29iamVjdC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5jCmlu ZGV4IDllNDk1ZGEuLjUyZDAxMDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9vYmplY3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfb2JqZWN0LmMKQEAgLTkyOSw3ICs5MjksNyBAQCB2b2lkIGFtZGdwdV9ib19tb3ZlX25vdGlm eShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAogCQlyZXR1cm47CiAKIAlhYm8gPSBjb250 YWluZXJfb2YoYm8sIHN0cnVjdCBhbWRncHVfYm8sIHRibyk7Ci0JYW1kZ3B1X3ZtX2JvX2ludmFs aWRhdGUoYWRldiwgYWJvKTsKKwlhbWRncHVfdm1fYm9faW52YWxpZGF0ZShhZGV2LCBhYm8sIGV2 aWN0KTsKIAogCWFtZGdwdV9ib19rdW5tYXAoYWJvKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfdm0uYwppbmRleCA4NTE4OWYxLi41OTJjM2U3IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfdm0uYwpAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgYW1kZ3B1X3ZtX2dl dF9wZF9ibyhzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwKIAkJCSBzdHJ1Y3QgbGlzdF9oZWFkICp2YWxp ZGF0ZWQsCiAJCQkgc3RydWN0IGFtZGdwdV9ib19saXN0X2VudHJ5ICplbnRyeSkKIHsKLQllbnRy eS0+cm9iaiA9IHZtLT5yb290LmJvOworCWVudHJ5LT5yb2JqID0gdm0tPnJvb3QuYmFzZS5ibzsK IAllbnRyeS0+cHJpb3JpdHkgPSAwOwogCWVudHJ5LT50di5ibyA9ICZlbnRyeS0+cm9iai0+dGJv OwogCWVudHJ5LT50di5zaGFyZWQgPSB0cnVlOwpAQCAtMTQ5LDYxICsxNDksNiBAQCB2b2lkIGFt ZGdwdV92bV9nZXRfcGRfYm8oc3RydWN0IGFtZGdwdV92bSAqdm0sCiB9CiAKIC8qKgotICogYW1k Z3B1X3ZtX3ZhbGlkYXRlX2xheWVyIC0gdmFsaWRhdGUgYSBzaW5nbGUgcGFnZSB0YWJsZSBsZXZl bAotICoKLSAqIEBwYXJlbnQ6IHBhcmVudCBwYWdlIHRhYmxlIGxldmVsCi0gKiBAdmFsaWRhdGU6 IGNhbGxiYWNrIHRvIGRvIHRoZSB2YWxpZGF0aW9uCi0gKiBAcGFyYW06IHBhcmFtZXRlciBmb3Ig dGhlIHZhbGlkYXRpb24gY2FsbGJhY2sKLSAqCi0gKiBWYWxpZGF0ZSB0aGUgcGFnZSB0YWJsZSBC T3Mgb24gY29tbWFuZCBzdWJtaXNzaW9uIGlmIG5lY2Nlc3NhcnkuCi0gKi8KLXN0YXRpYyBpbnQg YW1kZ3B1X3ZtX3ZhbGlkYXRlX2xldmVsKHN0cnVjdCBhbWRncHVfdm1fcHQgKnBhcmVudCwKLQkJ CQkgICAgaW50ICgqdmFsaWRhdGUpKHZvaWQgKiwgc3RydWN0IGFtZGdwdV9ibyAqKSwKLQkJCQkg ICAgdm9pZCAqcGFyYW0sIGJvb2wgdXNlX2NwdV9mb3JfdXBkYXRlLAotCQkJCSAgICBzdHJ1Y3Qg dHRtX2JvX2dsb2JhbCAqZ2xvYikKLXsKLQl1bnNpZ25lZCBpOwotCWludCByOwotCi0JaWYgKHVz ZV9jcHVfZm9yX3VwZGF0ZSkgewotCQlyID0gYW1kZ3B1X2JvX2ttYXAocGFyZW50LT5ibywgTlVM TCk7Ci0JCWlmIChyKQotCQkJcmV0dXJuIHI7Ci0JfQotCi0JaWYgKCFwYXJlbnQtPmVudHJpZXMp Ci0JCXJldHVybiAwOwotCi0JZm9yIChpID0gMDsgaSA8PSBwYXJlbnQtPmxhc3RfZW50cnlfdXNl ZDsgKytpKSB7Ci0JCXN0cnVjdCBhbWRncHVfdm1fcHQgKmVudHJ5ID0gJnBhcmVudC0+ZW50cmll c1tpXTsKLQotCQlpZiAoIWVudHJ5LT5ibykKLQkJCWNvbnRpbnVlOwotCi0JCXIgPSB2YWxpZGF0 ZShwYXJhbSwgZW50cnktPmJvKTsKLQkJaWYgKHIpCi0JCQlyZXR1cm4gcjsKLQotCQlzcGluX2xv Y2soJmdsb2ItPmxydV9sb2NrKTsKLQkJdHRtX2JvX21vdmVfdG9fbHJ1X3RhaWwoJmVudHJ5LT5i by0+dGJvKTsKLQkJaWYgKGVudHJ5LT5iby0+c2hhZG93KQotCQkJdHRtX2JvX21vdmVfdG9fbHJ1 X3RhaWwoJmVudHJ5LT5iby0+c2hhZG93LT50Ym8pOwotCQlzcGluX3VubG9jaygmZ2xvYi0+bHJ1 X2xvY2spOwotCi0JCS8qCi0JCSAqIFJlY3Vyc2UgaW50byB0aGUgc3ViIGRpcmVjdG9yeS4gVGhp cyBpcyBoYXJtbGVzcyBiZWNhdXNlIHdlCi0JCSAqIGhhdmUgb25seSBhIG1heGltdW0gb2YgNSBs YXllcnMuCi0JCSAqLwotCQlyID0gYW1kZ3B1X3ZtX3ZhbGlkYXRlX2xldmVsKGVudHJ5LCB2YWxp ZGF0ZSwgcGFyYW0sCi0JCQkJCSAgICAgdXNlX2NwdV9mb3JfdXBkYXRlLCBnbG9iKTsKLQkJaWYg KHIpCi0JCQlyZXR1cm4gcjsKLQl9Ci0KLQlyZXR1cm4gcjsKLX0KLQotLyoqCiAgKiBhbWRncHVf dm1fdmFsaWRhdGVfcHRfYm9zIC0gdmFsaWRhdGUgdGhlIHBhZ2UgdGFibGUgQk9zCiAgKgogICog QGFkZXY6IGFtZGdwdSBkZXZpY2UgcG9pbnRlcgpAQCAtMjE3LDMyICsxNjIsNDMgQEAgaW50IGFt ZGdwdV92bV92YWxpZGF0ZV9wdF9ib3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVj dCBhbWRncHVfdm0gKnZtLAogCQkJICAgICAgaW50ICgqdmFsaWRhdGUpKHZvaWQgKnAsIHN0cnVj dCBhbWRncHVfYm8gKmJvKSwKIAkJCSAgICAgIHZvaWQgKnBhcmFtKQogewotCXVpbnQ2NF90IG51 bV9ldmljdGlvbnM7CisJc3RydWN0IHR0bV9ib19nbG9iYWwgKmdsb2IgPSBhZGV2LT5tbWFuLmJk ZXYuZ2xvYjsKKwlpbnQgcjsKIAotCS8qIFdlIG9ubHkgbmVlZCB0byB2YWxpZGF0ZSB0aGUgcGFn ZSB0YWJsZXMKLQkgKiBpZiB0aGV5IGFyZW4ndCBhbHJlYWR5IHZhbGlkLgotCSAqLwotCW51bV9l dmljdGlvbnMgPSBhdG9taWM2NF9yZWFkKCZhZGV2LT5udW1fZXZpY3Rpb25zKTsKLQlpZiAobnVt X2V2aWN0aW9ucyA9PSB2bS0+bGFzdF9ldmljdGlvbl9jb3VudGVyKQotCQlyZXR1cm4gMDsKKwlz cGluX2xvY2soJnZtLT5zdGF0dXNfbG9jayk7CisJd2hpbGUgKCFsaXN0X2VtcHR5KCZ2bS0+ZXZp Y3RlZCkpIHsKKwkJc3RydWN0IGFtZGdwdV92bV9ib19iYXNlICpib19iYXNlOworCQlzdHJ1Y3Qg YW1kZ3B1X2JvICpibzsKIAotCXJldHVybiBhbWRncHVfdm1fdmFsaWRhdGVfbGV2ZWwoJnZtLT5y b290LCB2YWxpZGF0ZSwgcGFyYW0sCi0JCQkJCXZtLT51c2VfY3B1X2Zvcl91cGRhdGUsCi0JCQkJ CWFkZXYtPm1tYW4uYmRldi5nbG9iKTsKLX0KKwkJYm9fYmFzZSA9IGxpc3RfZmlyc3RfZW50cnko JnZtLT5ldmljdGVkLAorCQkJCQkgICBzdHJ1Y3QgYW1kZ3B1X3ZtX2JvX2Jhc2UsCisJCQkJCSAg IHZtX3N0YXR1cyk7CisJCXNwaW5fdW5sb2NrKCZ2bS0+c3RhdHVzX2xvY2spOwogCi0vKioKLSAq IGFtZGdwdV92bV9jaGVjayAtIGhlbHBlciBmb3IgYW1kZ3B1X3ZtX3JlYWR5Ci0gKi8KLXN0YXRp YyBpbnQgYW1kZ3B1X3ZtX2NoZWNrKHZvaWQgKnBhcmFtLCBzdHJ1Y3QgYW1kZ3B1X2JvICpibykK LXsKLQkvKiBpZiBhbnl0aGluZyBpcyBzd2FwcGVkIG91dCBkb24ndCBzd2FwIGl0IGluIGhlcmUs Ci0JICAganVzdCBhYm9ydCBhbmQgd2FpdCBmb3IgdGhlIG5leHQgQ1MgKi8KLQlpZiAoIWFtZGdw dV9ib19ncHVfYWNjZXNzaWJsZShibykpCi0JCXJldHVybiAtRVJFU1RBUlRTWVM7CisJCWJvID0g Ym9fYmFzZS0+Ym87CisJCUJVR19PTighYm8pOworCQlpZiAoYm8tPnBhcmVudCkgeworCQkJciA9 IHZhbGlkYXRlKHBhcmFtLCBibyk7CisJCQlpZiAocikKKwkJCQlyZXR1cm4gcjsKIAotCWlmIChi by0+c2hhZG93ICYmICFhbWRncHVfYm9fZ3B1X2FjY2Vzc2libGUoYm8tPnNoYWRvdykpCi0JCXJl dHVybiAtRVJFU1RBUlRTWVM7CisJCQlzcGluX2xvY2soJmdsb2ItPmxydV9sb2NrKTsKKwkJCXR0 bV9ib19tb3ZlX3RvX2xydV90YWlsKCZiby0+dGJvKTsKKwkJCWlmIChiby0+c2hhZG93KQorCQkJ CXR0bV9ib19tb3ZlX3RvX2xydV90YWlsKCZiby0+c2hhZG93LT50Ym8pOworCQkJc3Bpbl91bmxv Y2soJmdsb2ItPmxydV9sb2NrKTsKKwkJfQorCisJCWlmICh2bS0+dXNlX2NwdV9mb3JfdXBkYXRl KSB7CisJCQlyID0gYW1kZ3B1X2JvX2ttYXAoYm8sIE5VTEwpOworCQkJaWYgKHIpCisJCQkJcmV0 dXJuIHI7CisJCX0KKworCQlzcGluX2xvY2soJnZtLT5zdGF0dXNfbG9jayk7CisJCWxpc3RfZGVs X2luaXQoJmJvX2Jhc2UtPnZtX3N0YXR1cyk7CisJfQorCXNwaW5fdW5sb2NrKCZ2bS0+c3RhdHVz X2xvY2spOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0yNTAsMTcgKzIwNiwxOSBAQCBzdGF0aWMgaW50 IGFtZGdwdV92bV9jaGVjayh2b2lkICpwYXJhbSwgc3RydWN0IGFtZGdwdV9ibyAqYm8pCiAvKioK ICAqIGFtZGdwdV92bV9yZWFkeSAtIGNoZWNrIFZNIGlzIHJlYWR5IGZvciB1cGRhdGVzCiAgKgot ICogQGFkZXY6IGFtZGdwdSBkZXZpY2UKICAqIEB2bTogVk0gdG8gY2hlY2sKICAqCiAgKiBDaGVj ayBpZiBhbGwgVk0gUERzL1BUcyBhcmUgcmVhZHkgZm9yIHVwZGF0ZXMKICAqLwotYm9vbCBhbWRn cHVfdm1fcmVhZHkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfdm0g KnZtKQorYm9vbCBhbWRncHVfdm1fcmVhZHkoc3RydWN0IGFtZGdwdV92bSAqdm0pCiB7Ci0JaWYg KGFtZGdwdV92bV9jaGVjayhOVUxMLCB2bS0+cm9vdC5ibykpCi0JCXJldHVybiBmYWxzZTsKKwli b29sIHJlYWR5OworCisJc3Bpbl9sb2NrKCZ2bS0+c3RhdHVzX2xvY2spOworCXJlYWR5ID0gbGlz dF9lbXB0eSgmdm0tPmV2aWN0ZWQpOworCXNwaW5fdW5sb2NrKCZ2bS0+c3RhdHVzX2xvY2spOwog Ci0JcmV0dXJuICFhbWRncHVfdm1fdmFsaWRhdGVfcHRfYm9zKGFkZXYsIHZtLCBhbWRncHVfdm1f Y2hlY2ssIE5VTEwpOworCXJldHVybiByZWFkeTsKIH0KIAogLyoqCkBAIC0zMjUsMTEgKzI4Mywx MSBAQCBzdGF0aWMgaW50IGFtZGdwdV92bV9hbGxvY19sZXZlbHMoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsCiAKIAkvKiB3YWxrIG92ZXIgdGhlIGFkZHJlc3Mgc3BhY2UgYW5kIGFsbG9jYXRl IHRoZSBwYWdlIHRhYmxlcyAqLwogCWZvciAocHRfaWR4ID0gZnJvbTsgcHRfaWR4IDw9IHRvOyAr K3B0X2lkeCkgewotCQlzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpyZXN2ID0gdm0tPnJvb3Qu Ym8tPnRiby5yZXN2OworCQlzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpyZXN2ID0gdm0tPnJv b3QuYmFzZS5iby0+dGJvLnJlc3Y7CiAJCXN0cnVjdCBhbWRncHVfdm1fcHQgKmVudHJ5ID0gJnBh cmVudC0+ZW50cmllc1twdF9pZHhdOwogCQlzdHJ1Y3QgYW1kZ3B1X2JvICpwdDsKIAotCQlpZiAo IWVudHJ5LT5ibykgeworCQlpZiAoIWVudHJ5LT5iYXNlLmJvKSB7CiAJCQlyID0gYW1kZ3B1X2Jv X2NyZWF0ZShhZGV2LAogCQkJCQkgICAgIGFtZGdwdV92bV9ib19zaXplKGFkZXYsIGxldmVsKSwK IAkJCQkJICAgICBBTURHUFVfR1BVX1BBR0VfU0laRSwgdHJ1ZSwKQEAgLTM1MCw5ICszMDgsMTIg QEAgc3RhdGljIGludCBhbWRncHVfdm1fYWxsb2NfbGV2ZWxzKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LAogCQkJLyogS2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgcm9vdCBkaXJlY3RvcnkgdG8g YXZvaWQKIAkJCSogZnJlZWluZyB0aGVtIHVwIGluIHRoZSB3cm9uZyBvcmRlci4KIAkJCSovCi0J CQlwdC0+cGFyZW50ID0gYW1kZ3B1X2JvX3JlZih2bS0+cm9vdC5ibyk7CisJCQlwdC0+cGFyZW50 ID0gYW1kZ3B1X2JvX3JlZih2bS0+cm9vdC5iYXNlLmJvKTsKIAotCQkJZW50cnktPmJvID0gcHQ7 CisJCQllbnRyeS0+YmFzZS52bSA9IHZtOworCQkJZW50cnktPmJhc2UuYm8gPSBwdDsKKwkJCWxp c3RfYWRkX3RhaWwoJmVudHJ5LT5iYXNlLmJvX2xpc3QsICZwdC0+dmEpOworCQkJSU5JVF9MSVNU X0hFQUQoJmVudHJ5LT5iYXNlLnZtX3N0YXR1cyk7CiAJCQllbnRyeS0+YWRkciA9IDA7CiAJCX0K IApAQCAtMTAxOSw3ICs5ODAsNyBAQCBzdGF0aWMgaW50IGFtZGdwdV92bV93YWl0X3BkKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwKIAlpbnQgcjsKIAog CWFtZGdwdV9zeW5jX2NyZWF0ZSgmc3luYyk7Ci0JYW1kZ3B1X3N5bmNfcmVzdihhZGV2LCAmc3lu Yywgdm0tPnJvb3QuYm8tPnRiby5yZXN2LCBvd25lcik7CisJYW1kZ3B1X3N5bmNfcmVzdihhZGV2 LCAmc3luYywgdm0tPnJvb3QuYmFzZS5iby0+dGJvLnJlc3YsIG93bmVyKTsKIAlyID0gYW1kZ3B1 X3N5bmNfd2FpdCgmc3luYywgdHJ1ZSk7CiAJYW1kZ3B1X3N5bmNfZnJlZSgmc3luYyk7CiAKQEAg LTEwNTgsMTAgKzEwMTksMTAgQEAgc3RhdGljIGludCBhbWRncHVfdm1fdXBkYXRlX2xldmVsKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCiAJbWVtc2V0KCZwYXJhbXMsIDAsIHNpemVvZihw YXJhbXMpKTsKIAlwYXJhbXMuYWRldiA9IGFkZXY7Ci0Jc2hhZG93ID0gcGFyZW50LT5iby0+c2hh ZG93OworCXNoYWRvdyA9IHBhcmVudC0+YmFzZS5iby0+c2hhZG93OwogCiAJaWYgKHZtLT51c2Vf Y3B1X2Zvcl91cGRhdGUpIHsKLQkJcGRfYWRkciA9ICh1bnNpZ25lZCBsb25nKWFtZGdwdV9ib19r cHRyKHBhcmVudC0+Ym8pOworCQlwZF9hZGRyID0gKHVuc2lnbmVkIGxvbmcpYW1kZ3B1X2JvX2tw dHIocGFyZW50LT5iYXNlLmJvKTsKIAkJciA9IGFtZGdwdV92bV93YWl0X3BkKGFkZXYsIHZtLCBB TURHUFVfRkVOQ0VfT1dORVJfVk0pOwogCQlpZiAodW5saWtlbHkocikpCiAJCQlyZXR1cm4gcjsK QEAgLTEwNzcsNyArMTAzOCw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3ZtX3VwZGF0ZV9sZXZlbChz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJLyogYXNzdW1lIHRoZSB3b3JzdCBjYXNlICov CiAJCW5kdyArPSBwYXJlbnQtPmxhc3RfZW50cnlfdXNlZCAqIDY7CiAKLQkJcGRfYWRkciA9IGFt ZGdwdV9ib19ncHVfb2Zmc2V0KHBhcmVudC0+Ym8pOworCQlwZF9hZGRyID0gYW1kZ3B1X2JvX2dw dV9vZmZzZXQocGFyZW50LT5iYXNlLmJvKTsKIAogCQlpZiAoc2hhZG93KSB7CiAJCQlzaGFkb3df YWRkciA9IGFtZGdwdV9ib19ncHVfb2Zmc2V0KHNoYWRvdyk7CkBAIC0xMDk3LDcgKzEwNTgsNyBA QCBzdGF0aWMgaW50IGFtZGdwdV92bV91cGRhdGVfbGV2ZWwoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsCiAKIAkvKiB3YWxrIG92ZXIgdGhlIGFkZHJlc3Mgc3BhY2UgYW5kIHVwZGF0ZSB0aGUg ZGlyZWN0b3J5ICovCiAJZm9yIChwdF9pZHggPSAwOyBwdF9pZHggPD0gcGFyZW50LT5sYXN0X2Vu dHJ5X3VzZWQ7ICsrcHRfaWR4KSB7Ci0JCXN0cnVjdCBhbWRncHVfYm8gKmJvID0gcGFyZW50LT5l bnRyaWVzW3B0X2lkeF0uYm87CisJCXN0cnVjdCBhbWRncHVfYm8gKmJvID0gcGFyZW50LT5lbnRy aWVzW3B0X2lkeF0uYmFzZS5ibzsKIAkJdWludDY0X3QgcGRlLCBwdDsKIAogCQlpZiAoYm8gPT0g TlVMTCkKQEAgLTExNDAsNyArMTEwMSw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3ZtX3VwZGF0ZV9s ZXZlbChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAl9CiAKIAlpZiAoY291bnQpIHsKLQkJ aWYgKHZtLT5yb290LmJvLT5zaGFkb3cpCisJCWlmICh2bS0+cm9vdC5iYXNlLmJvLT5zaGFkb3cp CiAJCQlwYXJhbXMuZnVuYygmcGFyYW1zLCBsYXN0X3NoYWRvdywgbGFzdF9wdCwKIAkJCQkgICAg Y291bnQsIGluY3IsIEFNREdQVV9QVEVfVkFMSUQpOwogCkBAIC0xMTUzLDcgKzExMTQsOCBAQCBz dGF0aWMgaW50IGFtZGdwdV92bV91cGRhdGVfbGV2ZWwoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsCiAJCQlhbWRncHVfam9iX2ZyZWUoam9iKTsKIAkJfSBlbHNlIHsKIAkJCWFtZGdwdV9yaW5n X3BhZF9pYihyaW5nLCBwYXJhbXMuaWIpOwotCQkJYW1kZ3B1X3N5bmNfcmVzdihhZGV2LCAmam9i LT5zeW5jLCBwYXJlbnQtPmJvLT50Ym8ucmVzdiwKKwkJCWFtZGdwdV9zeW5jX3Jlc3YoYWRldiwg JmpvYi0+c3luYywKKwkJCQkJIHBhcmVudC0+YmFzZS5iby0+dGJvLnJlc3YsCiAJCQkJCSBBTURH UFVfRkVOQ0VfT1dORVJfVk0pOwogCQkJaWYgKHNoYWRvdykKIAkJCQlhbWRncHVfc3luY19yZXN2 KGFkZXYsICZqb2ItPnN5bmMsCkBAIC0xMTY2LDcgKzExMjgsNyBAQCBzdGF0aWMgaW50IGFtZGdw dV92bV91cGRhdGVfbGV2ZWwoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQlpZiAocikK IAkJCQlnb3RvIGVycm9yX2ZyZWU7CiAKLQkJCWFtZGdwdV9ib19mZW5jZShwYXJlbnQtPmJvLCBm ZW5jZSwgdHJ1ZSk7CisJCQlhbWRncHVfYm9fZmVuY2UocGFyZW50LT5iYXNlLmJvLCBmZW5jZSwg dHJ1ZSk7CiAJCQlkbWFfZmVuY2VfcHV0KHZtLT5sYXN0X2Rpcl91cGRhdGUpOwogCQkJdm0tPmxh c3RfZGlyX3VwZGF0ZSA9IGRtYV9mZW5jZV9nZXQoZmVuY2UpOwogCQkJZG1hX2ZlbmNlX3B1dChm ZW5jZSk7CkBAIC0xMTc5LDcgKzExNDEsNyBAQCBzdGF0aWMgaW50IGFtZGdwdV92bV91cGRhdGVf bGV2ZWwoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJZm9yIChwdF9pZHggPSAwOyBwdF9p ZHggPD0gcGFyZW50LT5sYXN0X2VudHJ5X3VzZWQ7ICsrcHRfaWR4KSB7CiAJCXN0cnVjdCBhbWRn cHVfdm1fcHQgKmVudHJ5ID0gJnBhcmVudC0+ZW50cmllc1twdF9pZHhdOwogCi0JCWlmICghZW50 cnktPmJvKQorCQlpZiAoIWVudHJ5LT5iYXNlLmJvKQogCQkJY29udGludWU7CiAKIAkJciA9IGFt ZGdwdV92bV91cGRhdGVfbGV2ZWwoYWRldiwgdm0sIGVudHJ5LCBsZXZlbCArIDEpOwpAQCAtMTIx Miw3ICsxMTc0LDcgQEAgc3RhdGljIHZvaWQgYW1kZ3B1X3ZtX2ludmFsaWRhdGVfbGV2ZWwoc3Ry dWN0IGFtZGdwdV92bV9wdCAqcGFyZW50KQogCWZvciAocHRfaWR4ID0gMDsgcHRfaWR4IDw9IHBh cmVudC0+bGFzdF9lbnRyeV91c2VkOyArK3B0X2lkeCkgewogCQlzdHJ1Y3QgYW1kZ3B1X3ZtX3B0 ICplbnRyeSA9ICZwYXJlbnQtPmVudHJpZXNbcHRfaWR4XTsKIAotCQlpZiAoIWVudHJ5LT5ibykK KwkJaWYgKCFlbnRyeS0+YmFzZS5ibykKIAkJCWNvbnRpbnVlOwogCiAJCWVudHJ5LT5hZGRyID0g fjBVTEw7CkBAIC0xMjY3LDcgKzEyMjksNyBAQCB2b2lkIGFtZGdwdV92bV9nZXRfZW50cnkoc3Ry dWN0IGFtZGdwdV9wdGVfdXBkYXRlX3BhcmFtcyAqcCwgdWludDY0X3QgYWRkciwKIAkqZW50cnkg PSAmcC0+dm0tPnJvb3Q7CiAJd2hpbGUgKCgqZW50cnkpLT5lbnRyaWVzKSB7CiAJCWlkeCA9IGFk ZHIgPj4gKHAtPmFkZXYtPnZtX21hbmFnZXIuYmxvY2tfc2l6ZSAqIGxldmVsLS0pOwotCQlpZHgg JT0gYW1kZ3B1X2JvX3NpemUoKCplbnRyeSktPmJvKSAvIDg7CisJCWlkeCAlPSBhbWRncHVfYm9f c2l6ZSgoKmVudHJ5KS0+YmFzZS5ibykgLyA4OwogCQkqcGFyZW50ID0gKmVudHJ5OwogCQkqZW50 cnkgPSAmKCplbnRyeSktPmVudHJpZXNbaWR4XTsKIAl9CkBAIC0xMzAzLDcgKzEyNjUsNyBAQCBz dGF0aWMgdm9pZCBhbWRncHVfdm1faGFuZGxlX2h1Z2VfcGFnZXMoc3RydWN0IGFtZGdwdV9wdGVf dXBkYXRlX3BhcmFtcyAqcCwKIAkgICAgcC0+c3JjIHx8CiAJICAgICEoZmxhZ3MgJiBBTURHUFVf UFRFX1ZBTElEKSkgewogCi0JCWRzdCA9IGFtZGdwdV9ib19ncHVfb2Zmc2V0KGVudHJ5LT5ibyk7 CisJCWRzdCA9IGFtZGdwdV9ib19ncHVfb2Zmc2V0KGVudHJ5LT5iYXNlLmJvKTsKIAkJZHN0ID0g YW1kZ3B1X2dhcnRfZ2V0X3ZtX3BkZShwLT5hZGV2LCBkc3QpOwogCQlmbGFncyA9IEFNREdQVV9Q VEVfVkFMSUQ7CiAJfSBlbHNlIHsKQEAgLTEzMjksMTggKzEyOTEsMTggQEAgc3RhdGljIHZvaWQg YW1kZ3B1X3ZtX2hhbmRsZV9odWdlX3BhZ2VzKHN0cnVjdCBhbWRncHVfcHRlX3VwZGF0ZV9wYXJh bXMgKnAsCiAJCXRtcCA9IHAtPnBhZ2VzX2FkZHI7CiAJCXAtPnBhZ2VzX2FkZHIgPSBOVUxMOwog Ci0JCXBkX2FkZHIgPSAodW5zaWduZWQgbG9uZylhbWRncHVfYm9fa3B0cihwYXJlbnQtPmJvKTsK KwkJcGRfYWRkciA9ICh1bnNpZ25lZCBsb25nKWFtZGdwdV9ib19rcHRyKHBhcmVudC0+YmFzZS5i byk7CiAJCXBkZSA9IHBkX2FkZHIgKyAoZW50cnkgLSBwYXJlbnQtPmVudHJpZXMpICogODsKIAkJ YW1kZ3B1X3ZtX2NwdV9zZXRfcHRlcyhwLCBwZGUsIGRzdCwgMSwgMCwgZmxhZ3MpOwogCiAJCXAt PnBhZ2VzX2FkZHIgPSB0bXA7CiAJfSBlbHNlIHsKLQkJaWYgKHBhcmVudC0+Ym8tPnNoYWRvdykg ewotCQkJcGRfYWRkciA9IGFtZGdwdV9ib19ncHVfb2Zmc2V0KHBhcmVudC0+Ym8tPnNoYWRvdyk7 CisJCWlmIChwYXJlbnQtPmJhc2UuYm8tPnNoYWRvdykgeworCQkJcGRfYWRkciA9IGFtZGdwdV9i b19ncHVfb2Zmc2V0KHBhcmVudC0+YmFzZS5iby0+c2hhZG93KTsKIAkJCXBkZSA9IHBkX2FkZHIg KyAoZW50cnkgLSBwYXJlbnQtPmVudHJpZXMpICogODsKIAkJCWFtZGdwdV92bV9kb19zZXRfcHRl cyhwLCBwZGUsIGRzdCwgMSwgMCwgZmxhZ3MpOwogCQl9Ci0JCXBkX2FkZHIgPSBhbWRncHVfYm9f Z3B1X29mZnNldChwYXJlbnQtPmJvKTsKKwkJcGRfYWRkciA9IGFtZGdwdV9ib19ncHVfb2Zmc2V0 KHBhcmVudC0+YmFzZS5ibyk7CiAJCXBkZSA9IHBkX2FkZHIgKyAoZW50cnkgLSBwYXJlbnQtPmVu dHJpZXMpICogODsKIAkJYW1kZ3B1X3ZtX2RvX3NldF9wdGVzKHAsIHBkZSwgZHN0LCAxLCAwLCBm bGFncyk7CiAJfQpAQCAtMTM5MSw3ICsxMzUzLDcgQEAgc3RhdGljIGludCBhbWRncHVfdm1fdXBk YXRlX3B0ZXMoc3RydWN0IGFtZGdwdV9wdGVfdXBkYXRlX3BhcmFtcyAqcGFyYW1zLAogCQlpZiAo ZW50cnktPmFkZHIgJiBBTURHUFVfUERFX1BURSkKIAkJCWNvbnRpbnVlOwogCi0JCXB0ID0gZW50 cnktPmJvOworCQlwdCA9IGVudHJ5LT5iYXNlLmJvOwogCQlpZiAodXNlX2NwdV91cGRhdGUpIHsK IAkJCXBlX3N0YXJ0ID0gKHVuc2lnbmVkIGxvbmcpYW1kZ3B1X2JvX2twdHIocHQpOwogCQl9IGVs c2UgewpAQCAtMTYxMSwxMiArMTU3MywxMiBAQCBzdGF0aWMgaW50IGFtZGdwdV92bV9ib191cGRh dGVfbWFwcGluZyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAlpZiAocikKIAkJZ290byBl cnJvcl9mcmVlOwogCi0JciA9IGFtZGdwdV9zeW5jX3Jlc3YoYWRldiwgJmpvYi0+c3luYywgdm0t PnJvb3QuYm8tPnRiby5yZXN2LAorCXIgPSBhbWRncHVfc3luY19yZXN2KGFkZXYsICZqb2ItPnN5 bmMsIHZtLT5yb290LmJhc2UuYm8tPnRiby5yZXN2LAogCQkJICAgICBvd25lcik7CiAJaWYgKHIp CiAJCWdvdG8gZXJyb3JfZnJlZTsKIAotCXIgPSByZXNlcnZhdGlvbl9vYmplY3RfcmVzZXJ2ZV9z aGFyZWQodm0tPnJvb3QuYm8tPnRiby5yZXN2KTsKKwlyID0gcmVzZXJ2YXRpb25fb2JqZWN0X3Jl c2VydmVfc2hhcmVkKHZtLT5yb290LmJhc2UuYm8tPnRiby5yZXN2KTsKIAlpZiAocikKIAkJZ290 byBlcnJvcl9mcmVlOwogCkBAIC0xNjMxLDcgKzE1OTMsNyBAQCBzdGF0aWMgaW50IGFtZGdwdV92 bV9ib191cGRhdGVfbWFwcGluZyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAlpZiAocikK IAkJZ290byBlcnJvcl9mcmVlOwogCi0JYW1kZ3B1X2JvX2ZlbmNlKHZtLT5yb290LmJvLCBmLCB0 cnVlKTsKKwlhbWRncHVfYm9fZmVuY2Uodm0tPnJvb3QuYmFzZS5ibywgZiwgdHJ1ZSk7CiAJZG1h X2ZlbmNlX3B1dCgqZmVuY2UpOwogCSpmZW5jZSA9IGY7CiAJcmV0dXJuIDA7CkBAIC0xOTI2LDcg KzE4ODgsNyBAQCBzdGF0aWMgdm9pZCBhbWRncHVfdm1fZnJlZV9tYXBwaW5nKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LAogICovCiBzdGF0aWMgdm9pZCBhbWRncHVfdm1fcHJ0X2Zpbmkoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfdm0gKnZtKQogewotCXN0cnVj dCByZXNlcnZhdGlvbl9vYmplY3QgKnJlc3YgPSB2bS0+cm9vdC5iby0+dGJvLnJlc3Y7CisJc3Ry dWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVzdiA9IHZtLT5yb290LmJhc2UuYm8tPnRiby5yZXN2 OwogCXN0cnVjdCBkbWFfZmVuY2UgKmV4Y2wsICoqc2hhcmVkOwogCXVuc2lnbmVkIGksIHNoYXJl ZF9jb3VudDsKIAlpbnQgcjsKQEAgLTI0MTMsMTIgKzIzNzUsMjUgQEAgdm9pZCBhbWRncHVfdm1f Ym9fcm12KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogICogTWFyayBAYm8gYXMgaW52YWxp ZC4KICAqLwogdm9pZCBhbWRncHVfdm1fYm9faW52YWxpZGF0ZShzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwKLQkJCSAgICAgc3RydWN0IGFtZGdwdV9ibyAqYm8pCisJCQkgICAgIHN0cnVjdCBh bWRncHVfYm8gKmJvLCBib29sIGV2aWN0ZWQpCiB7CiAJc3RydWN0IGFtZGdwdV92bV9ib19iYXNl ICpib19iYXNlOwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShib19iYXNlLCAmYm8tPnZhLCBib19s aXN0KSB7CisJCXN0cnVjdCBhbWRncHVfdm0gKnZtID0gYm9fYmFzZS0+dm07CisKIAkJYm9fYmFz ZS0+bW92ZWQgPSB0cnVlOworCQlpZiAoZXZpY3RlZCAmJiBiby0+dGJvLnJlc3YgPT0gdm0tPnJv b3QuYmFzZS5iby0+dGJvLnJlc3YpIHsKKwkJCXNwaW5fbG9jaygmYm9fYmFzZS0+dm0tPnN0YXR1 c19sb2NrKTsKKwkJCWxpc3RfbW92ZSgmYm9fYmFzZS0+dm1fc3RhdHVzLCAmdm0tPmV2aWN0ZWQp OworCQkJc3Bpbl91bmxvY2soJmJvX2Jhc2UtPnZtLT5zdGF0dXNfbG9jayk7CisJCQljb250aW51 ZTsKKwkJfQorCisJCS8qIERvbid0IGFkZCBwYWdlIHRhYmxlcyB0byB0aGUgbW92ZWQgc3RhdGUg Ki8KKwkJaWYgKGJvLT50Ym8udHlwZSA9PSB0dG1fYm9fdHlwZV9rZXJuZWwpCisJCQljb250aW51 ZTsKKwogCQlzcGluX2xvY2soJmJvX2Jhc2UtPnZtLT5zdGF0dXNfbG9jayk7CiAJCWxpc3RfbW92 ZSgmYm9fYmFzZS0+dm1fc3RhdHVzLCAmYm9fYmFzZS0+dm0tPm1vdmVkKTsKIAkJc3Bpbl91bmxv Y2soJmJvX2Jhc2UtPnZtLT5zdGF0dXNfbG9jayk7CkBAIC0yNTA2LDYgKzI0ODEsNyBAQCBpbnQg YW1kZ3B1X3ZtX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVf dm0gKnZtLAogCWZvciAoaSA9IDA7IGkgPCBBTURHUFVfTUFYX1ZNSFVCUzsgaSsrKQogCQl2bS0+ cmVzZXJ2ZWRfdm1pZFtpXSA9IE5VTEw7CiAJc3Bpbl9sb2NrX2luaXQoJnZtLT5zdGF0dXNfbG9j ayk7CisJSU5JVF9MSVNUX0hFQUQoJnZtLT5ldmljdGVkKTsKIAlJTklUX0xJU1RfSEVBRCgmdm0t Pm1vdmVkKTsKIAlJTklUX0xJU1RfSEVBRCgmdm0tPmZyZWVkKTsKIApAQCAtMjU1MCwzMCArMjUy NiwzMSBAQCBpbnQgYW1kZ3B1X3ZtX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHN0 cnVjdCBhbWRncHVfdm0gKnZtLAogCXIgPSBhbWRncHVfYm9fY3JlYXRlKGFkZXYsIGFtZGdwdV92 bV9ib19zaXplKGFkZXYsIDApLCBhbGlnbiwgdHJ1ZSwKIAkJCSAgICAgQU1ER1BVX0dFTV9ET01B SU5fVlJBTSwKIAkJCSAgICAgZmxhZ3MsCi0JCQkgICAgIE5VTEwsIE5VTEwsIGluaXRfcGRlX3Zh bHVlLCAmdm0tPnJvb3QuYm8pOworCQkJICAgICBOVUxMLCBOVUxMLCBpbml0X3BkZV92YWx1ZSwg JnZtLT5yb290LmJhc2UuYm8pOwogCWlmIChyKQogCQlnb3RvIGVycm9yX2ZyZWVfc2NoZWRfZW50 aXR5OwogCi0JciA9IGFtZGdwdV9ib19yZXNlcnZlKHZtLT5yb290LmJvLCBmYWxzZSk7Ci0JaWYg KHIpCi0JCWdvdG8gZXJyb3JfZnJlZV9yb290OwotCi0Jdm0tPmxhc3RfZXZpY3Rpb25fY291bnRl ciA9IGF0b21pYzY0X3JlYWQoJmFkZXYtPm51bV9ldmljdGlvbnMpOworCXZtLT5yb290LmJhc2Uu dm0gPSB2bTsKKwlsaXN0X2FkZF90YWlsKCZ2bS0+cm9vdC5iYXNlLmJvX2xpc3QsICZ2bS0+cm9v dC5iYXNlLmJvLT52YSk7CisJSU5JVF9MSVNUX0hFQUQoJnZtLT5yb290LmJhc2Uudm1fc3RhdHVz KTsKIAogCWlmICh2bS0+dXNlX2NwdV9mb3JfdXBkYXRlKSB7Ci0JCXIgPSBhbWRncHVfYm9fa21h cCh2bS0+cm9vdC5ibywgTlVMTCk7CisJCXIgPSBhbWRncHVfYm9fcmVzZXJ2ZSh2bS0+cm9vdC5i YXNlLmJvLCBmYWxzZSk7CiAJCWlmIChyKQogCQkJZ290byBlcnJvcl9mcmVlX3Jvb3Q7Ci0JfQog Ci0JYW1kZ3B1X2JvX3VucmVzZXJ2ZSh2bS0+cm9vdC5ibyk7CisJCXIgPSBhbWRncHVfYm9fa21h cCh2bS0+cm9vdC5iYXNlLmJvLCBOVUxMKTsKKwkJaWYgKHIpCisJCQlnb3RvIGVycm9yX2ZyZWVf cm9vdDsKKwkJYW1kZ3B1X2JvX3VucmVzZXJ2ZSh2bS0+cm9vdC5iYXNlLmJvKTsKKwl9CiAKIAly ZXR1cm4gMDsKIAogZXJyb3JfZnJlZV9yb290OgotCWFtZGdwdV9ib191bnJlZigmdm0tPnJvb3Qu Ym8tPnNoYWRvdyk7Ci0JYW1kZ3B1X2JvX3VucmVmKCZ2bS0+cm9vdC5ibyk7Ci0Jdm0tPnJvb3Qu Ym8gPSBOVUxMOworCWFtZGdwdV9ib191bnJlZigmdm0tPnJvb3QuYmFzZS5iby0+c2hhZG93KTsK KwlhbWRncHVfYm9fdW5yZWYoJnZtLT5yb290LmJhc2UuYm8pOworCXZtLT5yb290LmJhc2UuYm8g PSBOVUxMOwogCiBlcnJvcl9mcmVlX3NjaGVkX2VudGl0eToKIAlhbWRfc2NoZWRfZW50aXR5X2Zp bmkoJnJpbmctPnNjaGVkLCAmdm0tPmVudGl0eSk7CkBAIC0yNTkyLDkgKzI1NjksMTEgQEAgc3Rh dGljIHZvaWQgYW1kZ3B1X3ZtX2ZyZWVfbGV2ZWxzKHN0cnVjdCBhbWRncHVfdm1fcHQgKmxldmVs KQogewogCXVuc2lnbmVkIGk7CiAKLQlpZiAobGV2ZWwtPmJvKSB7Ci0JCWFtZGdwdV9ib191bnJl ZigmbGV2ZWwtPmJvLT5zaGFkb3cpOwotCQlhbWRncHVfYm9fdW5yZWYoJmxldmVsLT5ibyk7CisJ aWYgKGxldmVsLT5iYXNlLmJvKSB7CisJCWxpc3RfZGVsKCZsZXZlbC0+YmFzZS5ib19saXN0KTsK KwkJbGlzdF9kZWwoJmxldmVsLT5iYXNlLnZtX3N0YXR1cyk7CisJCWFtZGdwdV9ib191bnJlZigm bGV2ZWwtPmJhc2UuYm8tPnNoYWRvdyk7CisJCWFtZGdwdV9ib191bnJlZigmbGV2ZWwtPmJhc2Uu Ym8pOwogCX0KIAogCWlmIChsZXZlbC0+ZW50cmllcykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X3ZtLmgKaW5kZXggZmYwOTNkNC4uNGU0NjVlOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X3ZtLmgKQEAgLTExMSwxMiArMTExLDEyIEBAIHN0cnVjdCBhbWRncHVfdm1f Ym9fYmFzZSB7CiB9OwogCiBzdHJ1Y3QgYW1kZ3B1X3ZtX3B0IHsKLQlzdHJ1Y3QgYW1kZ3B1X2Jv CSpibzsKLQl1aW50NjRfdAkJYWRkcjsKKwlzdHJ1Y3QgYW1kZ3B1X3ZtX2JvX2Jhc2UJYmFzZTsK Kwl1aW50NjRfdAkJCWFkZHI7CiAKIAkvKiBhcnJheSBvZiBwYWdlIHRhYmxlcywgb25lIGZvciBl YWNoIGRpcmVjdG9yeSBlbnRyeSAqLwotCXN0cnVjdCBhbWRncHVfdm1fcHQJKmVudHJpZXM7Ci0J dW5zaWduZWQJCWxhc3RfZW50cnlfdXNlZDsKKwlzdHJ1Y3QgYW1kZ3B1X3ZtX3B0CQkqZW50cmll czsKKwl1bnNpZ25lZAkJCWxhc3RfZW50cnlfdXNlZDsKIH07CiAKIHN0cnVjdCBhbWRncHVfdm0g ewpAQCAtMTI2LDYgKzEyNiw5IEBAIHN0cnVjdCBhbWRncHVfdm0gewogCS8qIHByb3RlY3Rpbmcg aW52YWxpZGF0ZWQgKi8KIAlzcGlubG9ja190CQlzdGF0dXNfbG9jazsKIAorCS8qIEJPcyB3aG8g bmVlZHMgYSB2YWxpZGF0aW9uICovCisJc3RydWN0IGxpc3RfaGVhZAlldmljdGVkOworCiAJLyog Qk9zIG1vdmVkLCBidXQgbm90IHlldCB1cGRhdGVkIGluIHRoZSBQVCAqLwogCXN0cnVjdCBsaXN0 X2hlYWQJbW92ZWQ7CiAKQEAgLTEzNSw3ICsxMzgsNiBAQCBzdHJ1Y3QgYW1kZ3B1X3ZtIHsKIAkv KiBjb250YWlucyB0aGUgcGFnZSBkaXJlY3RvcnkgKi8KIAlzdHJ1Y3QgYW1kZ3B1X3ZtX3B0ICAg ICByb290OwogCXN0cnVjdCBkbWFfZmVuY2UJKmxhc3RfZGlyX3VwZGF0ZTsKLQl1aW50NjRfdAkJ bGFzdF9ldmljdGlvbl9jb3VudGVyOwogCiAJLyogcHJvdGVjdGluZyBmcmVlZCAqLwogCXNwaW5s b2NrX3QJCWZyZWVkX2xvY2s7CkBAIC0yMjUsNyArMjI3LDcgQEAgdm9pZCBhbWRncHVfdm1fZmlu aShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgc3RydWN0IGFtZGdwdV92bSAqdm0pOwogdm9p ZCBhbWRncHVfdm1fZ2V0X3BkX2JvKHN0cnVjdCBhbWRncHVfdm0gKnZtLAogCQkJIHN0cnVjdCBs aXN0X2hlYWQgKnZhbGlkYXRlZCwKIAkJCSBzdHJ1Y3QgYW1kZ3B1X2JvX2xpc3RfZW50cnkgKmVu dHJ5KTsKLWJvb2wgYW1kZ3B1X3ZtX3JlYWR5KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBz dHJ1Y3QgYW1kZ3B1X3ZtICp2bSk7Citib29sIGFtZGdwdV92bV9yZWFkeShzdHJ1Y3QgYW1kZ3B1 X3ZtICp2bSk7CiBpbnQgYW1kZ3B1X3ZtX3ZhbGlkYXRlX3B0X2JvcyhzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwgc3RydWN0IGFtZGdwdV92bSAqdm0sCiAJCQkgICAgICBpbnQgKCpjYWxsYmFj aykodm9pZCAqcCwgc3RydWN0IGFtZGdwdV9ibyAqYm8pLAogCQkJICAgICAgdm9pZCAqcGFyYW0p OwpAQCAtMjUwLDcgKzI1Miw3IEBAIGludCBhbWRncHVfdm1fYm9fdXBkYXRlKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LAogCQkJc3RydWN0IGFtZGdwdV9ib192YSAqYm9fdmEsCiAJCQlib29s IGNsZWFyKTsKIHZvaWQgYW1kZ3B1X3ZtX2JvX2ludmFsaWRhdGUoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsCi0JCQkgICAgIHN0cnVjdCBhbWRncHVfYm8gKmJvKTsKKwkJCSAgICAgc3RydWN0 IGFtZGdwdV9ibyAqYm8sIGJvb2wgZXZpY3RlZCk7CiBzdHJ1Y3QgYW1kZ3B1X2JvX3ZhICphbWRn cHVfdm1fYm9fZmluZChzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwKIAkJCQkgICAgICAgc3RydWN0IGFt ZGdwdV9ibyAqYm8pOwogc3RydWN0IGFtZGdwdV9ib192YSAqYW1kZ3B1X3ZtX2JvX2FkZChzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2FtZC1nZngK