From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Yang, Philip" Subject: [PATCH 1/3] drm/amdgpu: use HMM mirror callback to replace mmu notifier v7 Date: Mon, 4 Feb 2019 18:23:00 +0000 Message-ID: <20190204182237.2641-2-Philip.Yang@amd.com> References: <20190204182237.2641-1-Philip.Yang@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190204182237.2641-1-Philip.Yang-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US 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: "Yang, Philip" UmVwbGFjZSBvdXIgTU1VIG5vdGlmaWVyIHdpdGggaG1tX21pcnJvcl9vcHMuc3luY19jcHVfZGV2 aWNlX3BhZ2V0YWJsZXMKY2FsbGJhY2suIEVuYWJsZSBDT05GSUdfSE1NIGFuZCBDT05GSUdfSE1N X01JUlJPUiBhcyBhIGRlcGVuZGVuY3kgaW4KRFJNX0FNREdQVV9VU0VSUFRSIEtjb25maWcuCgpJ dCBzdXBwb3J0cyBib3RoIEtGRCB1c2VycHRyIGFuZCBnZnggdXNlcnB0ciBwYXRocy4KCkNoYW5n ZS1JZDogSWU2MmMzYzVlM2M1Yjg1MjFhYjNiNDM4ZDFlZmYyYWEyYTAwMzgzNWUKU2lnbmVkLW9m Zi1ieTogUGhpbGlwIFlhbmcgPFBoaWxpcC5ZYW5nQGFtZC5jb20+Ci0tLQogZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvS2NvbmZpZyAgICAgfCAgIDYgKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L01ha2VmaWxlICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfbW4uYyB8IDE1NCArKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfbW4uaCB8ICAgMiArLQogNCBmaWxlcyBjaGFuZ2VkLCA3MCBp bnNlcnRpb25zKCspLCA5NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZp ZwppbmRleCA5MjIxZTU0ODkwNjkuLjk2MGE2MzM1NTcwNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9LY29uZmlnCkBAIC0yNiwxMCArMjYsMTAgQEAgY29uZmlnIERSTV9BTURHUFVfQ0lLCiBjb25m aWcgRFJNX0FNREdQVV9VU0VSUFRSCiAJYm9vbCAiQWx3YXlzIGVuYWJsZSB1c2VycHRyIHdyaXRl IHN1cHBvcnQiCiAJZGVwZW5kcyBvbiBEUk1fQU1ER1BVCi0Jc2VsZWN0IE1NVV9OT1RJRklFUgor CXNlbGVjdCBITU1fTUlSUk9SCiAJaGVscAotCSAgVGhpcyBvcHRpb24gc2VsZWN0cyBDT05GSUdf TU1VX05PVElGSUVSIGlmIGl0IGlzbid0IGFscmVhZHkKLQkgIHNlbGVjdGVkIHRvIGVuYWJsZWQg ZnVsbCB1c2VycHRyIHN1cHBvcnQuCisJICBUaGlzIG9wdGlvbiBzZWxlY3RzIENPTkZJR19ITU0g YW5kIENPTkZJR19ITU1fTUlSUk9SIGlmIGl0CisJICBpc24ndCBhbHJlYWR5IHNlbGVjdGVkIHRv IGVuYWJsZWQgZnVsbCB1c2VycHRyIHN1cHBvcnQuCiAKIGNvbmZpZyBEUk1fQU1ER1BVX0dBUlRf REVCVUdGUwogCWJvb2wgIkFsbG93IEdBUlQgYWNjZXNzIHRocm91Z2ggZGVidWdmcyIKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUKaW5kZXggNDY2ZGE1OTU0YTY4Li44NTEwMDFjZWQ1ZTgg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlCkBAIC0xNzIsNyArMTcyLDcgQEAgZW5k aWYKIGFtZGdwdS0kKENPTkZJR19DT01QQVQpICs9IGFtZGdwdV9pb2MzMi5vCiBhbWRncHUtJChD T05GSUdfVkdBX1NXSVRDSEVST08pICs9IGFtZGdwdV9hdHB4X2hhbmRsZXIubwogYW1kZ3B1LSQo Q09ORklHX0FDUEkpICs9IGFtZGdwdV9hY3BpLm8KLWFtZGdwdS0kKENPTkZJR19NTVVfTk9USUZJ RVIpICs9IGFtZGdwdV9tbi5vCithbWRncHUtJChDT05GSUdfSE1NX01JUlJPUikgKz0gYW1kZ3B1 X21uLm8KIAogaW5jbHVkZSAkKEZVTExfQU1EX1BBVEgpL3Bvd2VycGxheS9NYWtlZmlsZQogCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW4uYyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jCmluZGV4IDNlNjgyM2ZkZDkzOS4uZTM1 Njg2N2QyMzA4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf bW4uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW4uYwpAQCAtNDUs NyArNDUsNyBAQAogCiAjaW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4KICNpbmNsdWRlIDxsaW51 eC9tb2R1bGUuaD4KLSNpbmNsdWRlIDxsaW51eC9tbXVfbm90aWZpZXIuaD4KKyNpbmNsdWRlIDxs aW51eC9obW0uaD4KICNpbmNsdWRlIDxsaW51eC9pbnRlcnZhbF90cmVlLmg+CiAjaW5jbHVkZSA8 ZHJtL2RybVAuaD4KICNpbmNsdWRlIDxkcm0vZHJtLmg+CkBAIC01OCw3ICs1OCw2IEBACiAgKgog ICogQGFkZXY6IGFtZGdwdSBkZXZpY2UgcG9pbnRlcgogICogQG1tOiBwcm9jZXNzIGFkZHJlc3Mg c3BhY2UKLSAqIEBtbjogTU1VIG5vdGlmaWVyIHN0cnVjdHVyZQogICogQHR5cGU6IHR5cGUgb2Yg TU1VIG5vdGlmaWVyCiAgKiBAd29yazogZGVzdHJ1Y3Rpb24gd29yayBpdGVtCiAgKiBAbm9kZTog aGFzaCB0YWJsZSBub2RlIHRvIGZpbmQgc3RydWN0dXJlIGJ5IGFkZXYgYW5kIG1uCkBAIC02Niw2 ICs2NSw3IEBACiAgKiBAb2JqZWN0czogaW50ZXJ2YWwgdHJlZSBjb250YWluaW5nIGFtZGdwdV9t bl9ub2RlcwogICogQHJlYWRfbG9jazogbXV0ZXggZm9yIHJlY3Vyc2l2ZSBsb2NraW5nIG9mIEBs b2NrCiAgKiBAcmVjdXJzaW9uOiBkZXB0aCBvZiByZWN1cnNpb24KKyAqIEBtaXJyb3I6IEhNTSBt aXJyb3IgZnVuY3Rpb24gc3VwcG9ydAogICoKICAqIERhdGEgZm9yIGVhY2ggYW1kZ3B1IGRldmlj ZSBhbmQgcHJvY2VzcyBhZGRyZXNzIHNwYWNlLgogICovCkBAIC03Myw3ICs3Myw2IEBAIHN0cnVj dCBhbWRncHVfbW4gewogCS8qIGNvbnN0YW50IGFmdGVyIGluaXRpYWxpc2F0aW9uICovCiAJc3Ry dWN0IGFtZGdwdV9kZXZpY2UJKmFkZXY7CiAJc3RydWN0IG1tX3N0cnVjdAkqbW07Ci0Jc3RydWN0 IG1tdV9ub3RpZmllcgltbjsKIAllbnVtIGFtZGdwdV9tbl90eXBlCXR5cGU7CiAKIAkvKiBvbmx5 IHVzZWQgb24gZGVzdHJ1Y3Rpb24gKi8KQEAgLTg1LDggKzg0LDkgQEAgc3RydWN0IGFtZGdwdV9t biB7CiAJLyogb2JqZWN0cyBwcm90ZWN0ZWQgYnkgbG9jayAqLwogCXN0cnVjdCByd19zZW1hcGhv cmUJbG9jazsKIAlzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQJb2JqZWN0czsKLQlzdHJ1Y3QgbXV0ZXgJ CXJlYWRfbG9jazsKLQlhdG9taWNfdAkJcmVjdXJzaW9uOworCisJLyogSE1NIG1pcnJvciAqLwor CXN0cnVjdCBobW1fbWlycm9yCW1pcnJvcjsKIH07CiAKIC8qKgpAQCAtMTAzLDcgKzEwMyw3IEBA IHN0cnVjdCBhbWRncHVfbW5fbm9kZSB7CiB9OwogCiAvKioKLSAqIGFtZGdwdV9tbl9kZXN0cm95 IC0gZGVzdHJveSB0aGUgTU1VIG5vdGlmaWVyCisgKiBhbWRncHVfbW5fZGVzdHJveSAtIGRlc3Ry b3kgdGhlIEhNTSBtaXJyb3IKICAqCiAgKiBAd29yazogcHJldmlvdXNseSBzaGVkdWxlZCB3b3Jr IGl0ZW0KICAqCkBAIC0xMjksMjggKzEyOSwyNiBAQCBzdGF0aWMgdm9pZCBhbWRncHVfbW5fZGVz dHJveShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJfQogCXVwX3dyaXRlKCZhbW4tPmxvY2sp OwogCW11dGV4X3VubG9jaygmYWRldi0+bW5fbG9jayk7Ci0JbW11X25vdGlmaWVyX3VucmVnaXN0 ZXJfbm9fcmVsZWFzZSgmYW1uLT5tbiwgYW1uLT5tbSk7CisKKwlobW1fbWlycm9yX3VucmVnaXN0 ZXIoJmFtbi0+bWlycm9yKTsKIAlrZnJlZShhbW4pOwogfQogCiAvKioKLSAqIGFtZGdwdV9tbl9y ZWxlYXNlIC0gY2FsbGJhY2sgdG8gbm90aWZ5IGFib3V0IG1tIGRlc3RydWN0aW9uCisgKiBhbWRn cHVfaG1tX21pcnJvcl9yZWxlYXNlIC0gY2FsbGJhY2sgdG8gbm90aWZ5IGFib3V0IG1tIGRlc3Ry dWN0aW9uCiAgKgotICogQG1uOiBvdXIgbm90aWZpZXIKLSAqIEBtbTogdGhlIG1tIHRoaXMgY2Fs bGJhY2sgaXMgYWJvdXQKKyAqIEBtaXJyb3I6IHRoZSBITU0gbWlycm9yIChtbSkgdGhpcyBjYWxs YmFjayBpcyBhYm91dAogICoKLSAqIFNoZWR1bGUgYSB3b3JrIGl0ZW0gdG8gbGF6eSBkZXN0cm95 IG91ciBub3RpZmllci4KKyAqIFNoZWR1bGUgYSB3b3JrIGl0ZW0gdG8gbGF6eSBkZXN0cm95IEhN TSBtaXJyb3IuCiAgKi8KLXN0YXRpYyB2b2lkIGFtZGdwdV9tbl9yZWxlYXNlKHN0cnVjdCBtbXVf bm90aWZpZXIgKm1uLAotCQkJICAgICAgc3RydWN0IG1tX3N0cnVjdCAqbW0pCitzdGF0aWMgdm9p ZCBhbWRncHVfaG1tX21pcnJvcl9yZWxlYXNlKHN0cnVjdCBobW1fbWlycm9yICptaXJyb3IpCiB7 Ci0Jc3RydWN0IGFtZGdwdV9tbiAqYW1uID0gY29udGFpbmVyX29mKG1uLCBzdHJ1Y3QgYW1kZ3B1 X21uLCBtbik7CisJc3RydWN0IGFtZGdwdV9tbiAqYW1uID0gY29udGFpbmVyX29mKG1pcnJvciwg c3RydWN0IGFtZGdwdV9tbiwgbWlycm9yKTsKIAogCUlOSVRfV09SSygmYW1uLT53b3JrLCBhbWRn cHVfbW5fZGVzdHJveSk7CiAJc2NoZWR1bGVfd29yaygmYW1uLT53b3JrKTsKIH0KIAotCiAvKioK ICAqIGFtZGdwdV9tbl9sb2NrIC0gdGFrZSB0aGUgd3JpdGUgc2lkZSBsb2NrIGZvciB0aGlzIG5v dGlmaWVyCiAgKgpAQCAtMTgxLDE0ICsxNzksMTAgQEAgdm9pZCBhbWRncHVfbW5fdW5sb2NrKHN0 cnVjdCBhbWRncHVfbW4gKm1uKQogc3RhdGljIGludCBhbWRncHVfbW5fcmVhZF9sb2NrKHN0cnVj dCBhbWRncHVfbW4gKmFtbiwgYm9vbCBibG9ja2FibGUpCiB7CiAJaWYgKGJsb2NrYWJsZSkKLQkJ bXV0ZXhfbG9jaygmYW1uLT5yZWFkX2xvY2spOwotCWVsc2UgaWYgKCFtdXRleF90cnlsb2NrKCZh bW4tPnJlYWRfbG9jaykpCisJCWRvd25fcmVhZCgmYW1uLT5sb2NrKTsKKwllbHNlIGlmICghZG93 bl9yZWFkX3RyeWxvY2soJmFtbi0+bG9jaykpCiAJCXJldHVybiAtRUFHQUlOOwogCi0JaWYgKGF0 b21pY19pbmNfcmV0dXJuKCZhbW4tPnJlY3Vyc2lvbikgPT0gMSkKLQkJZG93bl9yZWFkX25vbl9v d25lcigmYW1uLT5sb2NrKTsKLQltdXRleF91bmxvY2soJmFtbi0+cmVhZF9sb2NrKTsKLQogCXJl dHVybiAwOwogfQogCkBAIC0xOTksOCArMTkzLDcgQEAgc3RhdGljIGludCBhbWRncHVfbW5fcmVh ZF9sb2NrKHN0cnVjdCBhbWRncHVfbW4gKmFtbiwgYm9vbCBibG9ja2FibGUpCiAgKi8KIHN0YXRp YyB2b2lkIGFtZGdwdV9tbl9yZWFkX3VubG9jayhzdHJ1Y3QgYW1kZ3B1X21uICphbW4pCiB7Ci0J aWYgKGF0b21pY19kZWNfcmV0dXJuKCZhbW4tPnJlY3Vyc2lvbikgPT0gMCkKLQkJdXBfcmVhZF9u b25fb3duZXIoJmFtbi0+bG9jayk7CisJdXBfcmVhZCgmYW1uLT5sb2NrKTsKIH0KIAogLyoqCkBA IC0yMzcsMTQxICsyMzAsMTI2IEBAIHN0YXRpYyB2b2lkIGFtZGdwdV9tbl9pbnZhbGlkYXRlX25v ZGUoc3RydWN0IGFtZGdwdV9tbl9ub2RlICpub2RlLAogLyoqCiAgKiBhbWRncHVfbW5faW52YWxp ZGF0ZV9yYW5nZV9zdGFydF9nZnggLSBjYWxsYmFjayB0byBub3RpZnkgYWJvdXQgbW0gY2hhbmdl CiAgKgotICogQG1uOiBvdXIgbm90aWZpZXIKLSAqIEByYW5nZTogbW11IG5vdGlmaWVyIGNvbnRl eHQKKyAqIEBtaXJyb3I6IHRoZSBobW1fbWlycm9yIChtbSkgaXMgYWJvdXQgdG8gdXBkYXRlCisg KiBAdXBkYXRlOiB0aGUgdXBkYXRlIHN0YXJ0LCBlbmQgYWRkcmVzcwogICoKICAqIEJsb2NrIGZv ciBvcGVyYXRpb25zIG9uIEJPcyB0byBmaW5pc2ggYW5kIG1hcmsgcGFnZXMgYXMgYWNjZXNzZWQg YW5kCiAgKiBwb3RlbnRpYWxseSBkaXJ0eS4KICAqLwotc3RhdGljIGludCBhbWRncHVfbW5faW52 YWxpZGF0ZV9yYW5nZV9zdGFydF9nZngoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCi0JCQljb25z dCBzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICpyYW5nZSkKK3N0YXRpYyBpbnQgYW1kZ3B1X21u X3N5bmNfcGFnZXRhYmxlc19nZngoc3RydWN0IGhtbV9taXJyb3IgKm1pcnJvciwKKwkJCWNvbnN0 IHN0cnVjdCBobW1fdXBkYXRlICp1cGRhdGUpCiB7Ci0Jc3RydWN0IGFtZGdwdV9tbiAqYW1uID0g Y29udGFpbmVyX29mKG1uLCBzdHJ1Y3QgYW1kZ3B1X21uLCBtbik7CisJc3RydWN0IGFtZGdwdV9t biAqYW1uID0gY29udGFpbmVyX29mKG1pcnJvciwgc3RydWN0IGFtZGdwdV9tbiwgbWlycm9yKTsK Kwl1bnNpZ25lZCBsb25nIHN0YXJ0ID0gdXBkYXRlLT5zdGFydDsKKwl1bnNpZ25lZCBsb25nIGVu ZCA9IHVwZGF0ZS0+ZW5kOworCWJvb2wgYmxvY2thYmxlID0gdXBkYXRlLT5ibG9ja2FibGU7CiAJ c3RydWN0IGludGVydmFsX3RyZWVfbm9kZSAqaXQ7Ci0JdW5zaWduZWQgbG9uZyBlbmQ7CiAKIAkv KiBub3RpZmljYXRpb24gaXMgZXhjbHVzaXZlLCBidXQgaW50ZXJ2YWwgaXMgaW5jbHVzaXZlICov Ci0JZW5kID0gcmFuZ2UtPmVuZCAtIDE7CisJZW5kIC09IDE7CiAKIAkvKiBUT0RPIHdlIHNob3Vs ZCBiZSBhYmxlIHRvIHNwbGl0IGxvY2tpbmcgZm9yIGludGVydmFsIHRyZWUgYW5kCiAJICogYW1k Z3B1X21uX2ludmFsaWRhdGVfbm9kZQogCSAqLwotCWlmIChhbWRncHVfbW5fcmVhZF9sb2NrKGFt biwgcmFuZ2UtPmJsb2NrYWJsZSkpCisJaWYgKGFtZGdwdV9tbl9yZWFkX2xvY2soYW1uLCBibG9j a2FibGUpKQogCQlyZXR1cm4gLUVBR0FJTjsKIAotCWl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX2Zp cnN0KCZhbW4tPm9iamVjdHMsIHJhbmdlLT5zdGFydCwgZW5kKTsKKwlpdCA9IGludGVydmFsX3Ry ZWVfaXRlcl9maXJzdCgmYW1uLT5vYmplY3RzLCBzdGFydCwgZW5kKTsKIAl3aGlsZSAoaXQpIHsK IAkJc3RydWN0IGFtZGdwdV9tbl9ub2RlICpub2RlOwogCi0JCWlmICghcmFuZ2UtPmJsb2NrYWJs ZSkgeworCQlpZiAoIWJsb2NrYWJsZSkgewogCQkJYW1kZ3B1X21uX3JlYWRfdW5sb2NrKGFtbik7 CiAJCQlyZXR1cm4gLUVBR0FJTjsKIAkJfQogCiAJCW5vZGUgPSBjb250YWluZXJfb2YoaXQsIHN0 cnVjdCBhbWRncHVfbW5fbm9kZSwgaXQpOwotCQlpdCA9IGludGVydmFsX3RyZWVfaXRlcl9uZXh0 KGl0LCByYW5nZS0+c3RhcnQsIGVuZCk7CisJCWl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX25leHQo aXQsIHN0YXJ0LCBlbmQpOwogCi0JCWFtZGdwdV9tbl9pbnZhbGlkYXRlX25vZGUobm9kZSwgcmFu Z2UtPnN0YXJ0LCBlbmQpOworCQlhbWRncHVfbW5faW52YWxpZGF0ZV9ub2RlKG5vZGUsIHN0YXJ0 LCBlbmQpOwogCX0KIAorCWFtZGdwdV9tbl9yZWFkX3VubG9jayhhbW4pOworCiAJcmV0dXJuIDA7 CiB9CiAKIC8qKgogICogYW1kZ3B1X21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnRfaHNhIC0gY2Fs bGJhY2sgdG8gbm90aWZ5IGFib3V0IG1tIGNoYW5nZQogICoKLSAqIEBtbjogb3VyIG5vdGlmaWVy Ci0gKiBAbW06IHRoZSBtbSB0aGlzIGNhbGxiYWNrIGlzIGFib3V0Ci0gKiBAc3RhcnQ6IHN0YXJ0 IG9mIHVwZGF0ZWQgcmFuZ2UKLSAqIEBlbmQ6IGVuZCBvZiB1cGRhdGVkIHJhbmdlCisgKiBAbWly cm9yOiB0aGUgaG1tX21pcnJvciAobW0pIGlzIGFib3V0IHRvIHVwZGF0ZQorICogQHVwZGF0ZTog dGhlIHVwZGF0ZSBzdGFydCwgZW5kIGFkZHJlc3MKICAqCiAgKiBXZSB0ZW1wb3JhcmlseSBldmlj dCBhbGwgQk9zIGJldHdlZW4gc3RhcnQgYW5kIGVuZC4gVGhpcwogICogbmVjZXNzaXRhdGVzIGV2 aWN0aW5nIGFsbCB1c2VyLW1vZGUgcXVldWVzIG9mIHRoZSBwcm9jZXNzLiBUaGUgQk9zCiAgKiBh cmUgcmVzdG9ydGVkIGluIGFtZGdwdV9tbl9pbnZhbGlkYXRlX3JhbmdlX2VuZF9oc2EuCiAgKi8K LXN0YXRpYyBpbnQgYW1kZ3B1X21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnRfaHNhKHN0cnVjdCBt bXVfbm90aWZpZXIgKm1uLAotCQkJY29uc3Qgc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqcmFu Z2UpCitzdGF0aWMgaW50IGFtZGdwdV9tbl9zeW5jX3BhZ2V0YWJsZXNfaHNhKHN0cnVjdCBobW1f bWlycm9yICptaXJyb3IsCisJCQljb25zdCBzdHJ1Y3QgaG1tX3VwZGF0ZSAqdXBkYXRlKQogewot CXN0cnVjdCBhbWRncHVfbW4gKmFtbiA9IGNvbnRhaW5lcl9vZihtbiwgc3RydWN0IGFtZGdwdV9t biwgbW4pOworCXN0cnVjdCBhbWRncHVfbW4gKmFtbiA9IGNvbnRhaW5lcl9vZihtaXJyb3IsIHN0 cnVjdCBhbWRncHVfbW4sIG1pcnJvcik7CisJdW5zaWduZWQgbG9uZyBzdGFydCA9IHVwZGF0ZS0+ c3RhcnQ7CisJdW5zaWduZWQgbG9uZyBlbmQgPSB1cGRhdGUtPmVuZDsKKwlib29sIGJsb2NrYWJs ZSA9IHVwZGF0ZS0+YmxvY2thYmxlOwogCXN0cnVjdCBpbnRlcnZhbF90cmVlX25vZGUgKml0Owot CXVuc2lnbmVkIGxvbmcgZW5kOwogCiAJLyogbm90aWZpY2F0aW9uIGlzIGV4Y2x1c2l2ZSwgYnV0 IGludGVydmFsIGlzIGluY2x1c2l2ZSAqLwotCWVuZCA9IHJhbmdlLT5lbmQgLSAxOworCWVuZCAt PSAxOwogCi0JaWYgKGFtZGdwdV9tbl9yZWFkX2xvY2soYW1uLCByYW5nZS0+YmxvY2thYmxlKSkK KwlpZiAoYW1kZ3B1X21uX3JlYWRfbG9jayhhbW4sIGJsb2NrYWJsZSkpCiAJCXJldHVybiAtRUFH QUlOOwogCi0JaXQgPSBpbnRlcnZhbF90cmVlX2l0ZXJfZmlyc3QoJmFtbi0+b2JqZWN0cywgcmFu Z2UtPnN0YXJ0LCBlbmQpOworCWl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX2ZpcnN0KCZhbW4tPm9i amVjdHMsIHN0YXJ0LCBlbmQpOwogCXdoaWxlIChpdCkgewogCQlzdHJ1Y3QgYW1kZ3B1X21uX25v ZGUgKm5vZGU7CiAJCXN0cnVjdCBhbWRncHVfYm8gKmJvOwogCi0JCWlmICghcmFuZ2UtPmJsb2Nr YWJsZSkgeworCQlpZiAoIWJsb2NrYWJsZSkgewogCQkJYW1kZ3B1X21uX3JlYWRfdW5sb2NrKGFt bik7CiAJCQlyZXR1cm4gLUVBR0FJTjsKIAkJfQogCiAJCW5vZGUgPSBjb250YWluZXJfb2YoaXQs IHN0cnVjdCBhbWRncHVfbW5fbm9kZSwgaXQpOwotCQlpdCA9IGludGVydmFsX3RyZWVfaXRlcl9u ZXh0KGl0LCByYW5nZS0+c3RhcnQsIGVuZCk7CisJCWl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX25l eHQoaXQsIHN0YXJ0LCBlbmQpOwogCiAJCWxpc3RfZm9yX2VhY2hfZW50cnkoYm8sICZub2RlLT5i b3MsIG1uX2xpc3QpIHsKIAkJCXN0cnVjdCBrZ2RfbWVtICptZW0gPSBiby0+a2ZkX2JvOwogCiAJ CQlpZiAoYW1kZ3B1X3R0bV90dF9hZmZlY3RfdXNlcnB0cihiby0+dGJvLnR0bSwKLQkJCQkJCQkg cmFuZ2UtPnN0YXJ0LAotCQkJCQkJCSBlbmQpKQotCQkJCWFtZGdwdV9hbWRrZmRfZXZpY3RfdXNl cnB0cihtZW0sIHJhbmdlLT5tbSk7CisJCQkJCQkJIHN0YXJ0LCBlbmQpKQorCQkJCWFtZGdwdV9h bWRrZmRfZXZpY3RfdXNlcnB0cihtZW0sIGFtbi0+bW0pOwogCQl9CiAJfQogCisJYW1kZ3B1X21u X3JlYWRfdW5sb2NrKGFtbik7CisKIAlyZXR1cm4gMDsKIH0KIAotLyoqCi0gKiBhbWRncHVfbW5f aW52YWxpZGF0ZV9yYW5nZV9lbmQgLSBjYWxsYmFjayB0byBub3RpZnkgYWJvdXQgbW0gY2hhbmdl Ci0gKgotICogQG1uOiBvdXIgbm90aWZpZXIKLSAqIEBtbTogdGhlIG1tIHRoaXMgY2FsbGJhY2sg aXMgYWJvdXQKLSAqIEBzdGFydDogc3RhcnQgb2YgdXBkYXRlZCByYW5nZQotICogQGVuZDogZW5k IG9mIHVwZGF0ZWQgcmFuZ2UKLSAqCi0gKiBSZWxlYXNlIHRoZSBsb2NrIGFnYWluIHRvIGFsbG93 IG5ldyBjb21tYW5kIHN1Ym1pc3Npb25zLgorLyogTG93IGJpdHMgb2YgYW55IHJlYXNvbmFibGUg bW0gcG9pbnRlciB3aWxsIGJlIHVudXNlZCBkdWUgdG8gc3RydWN0CisgKiBhbGlnbm1lbnQuIFVz ZSB0aGVzZSBiaXRzIHRvIG1ha2UgYSB1bmlxdWUga2V5IGZyb20gdGhlIG1tIHBvaW50ZXIKKyAq IGFuZCBub3RpZmllciB0eXBlLgogICovCi1zdGF0aWMgdm9pZCBhbWRncHVfbW5faW52YWxpZGF0 ZV9yYW5nZV9lbmQoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCi0JCQljb25zdCBzdHJ1Y3QgbW11 X25vdGlmaWVyX3JhbmdlICpyYW5nZSkKLXsKLQlzdHJ1Y3QgYW1kZ3B1X21uICphbW4gPSBjb250 YWluZXJfb2YobW4sIHN0cnVjdCBhbWRncHVfbW4sIG1uKTsKLQotCWFtZGdwdV9tbl9yZWFkX3Vu bG9jayhhbW4pOwotfQorI2RlZmluZSBBTURHUFVfTU5fS0VZKG1tLCB0eXBlKSAoKHVuc2lnbmVk IGxvbmcpKG1tKSArICh0eXBlKSkKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJf b3BzIGFtZGdwdV9tbl9vcHNbXSA9IHsKK3N0YXRpYyBzdHJ1Y3QgaG1tX21pcnJvcl9vcHMgYW1k Z3B1X2htbV9taXJyb3Jfb3BzW10gPSB7CiAJW0FNREdQVV9NTl9UWVBFX0dGWF0gPSB7Ci0JCS5y ZWxlYXNlID0gYW1kZ3B1X21uX3JlbGVhc2UsCi0JCS5pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0ID0g YW1kZ3B1X21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnRfZ2Z4LAotCQkuaW52YWxpZGF0ZV9yYW5n ZV9lbmQgPSBhbWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9lbmQsCisJCS5zeW5jX2NwdV9kZXZp Y2VfcGFnZXRhYmxlcyA9IGFtZGdwdV9tbl9zeW5jX3BhZ2V0YWJsZXNfZ2Z4LAorCQkucmVsZWFz ZSA9IGFtZGdwdV9obW1fbWlycm9yX3JlbGVhc2UKIAl9LAogCVtBTURHUFVfTU5fVFlQRV9IU0Fd ID0gewotCQkucmVsZWFzZSA9IGFtZGdwdV9tbl9yZWxlYXNlLAotCQkuaW52YWxpZGF0ZV9yYW5n ZV9zdGFydCA9IGFtZGdwdV9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0X2hzYSwKLQkJLmludmFs aWRhdGVfcmFuZ2VfZW5kID0gYW1kZ3B1X21uX2ludmFsaWRhdGVfcmFuZ2VfZW5kLAorCQkuc3lu Y19jcHVfZGV2aWNlX3BhZ2V0YWJsZXMgPSBhbWRncHVfbW5fc3luY19wYWdldGFibGVzX2hzYSwK KwkJLnJlbGVhc2UgPSBhbWRncHVfaG1tX21pcnJvcl9yZWxlYXNlCiAJfSwKIH07CiAKLS8qIExv dyBiaXRzIG9mIGFueSByZWFzb25hYmxlIG1tIHBvaW50ZXIgd2lsbCBiZSB1bnVzZWQgZHVlIHRv IHN0cnVjdAotICogYWxpZ25tZW50LiBVc2UgdGhlc2UgYml0cyB0byBtYWtlIGEgdW5pcXVlIGtl eSBmcm9tIHRoZSBtbSBwb2ludGVyCi0gKiBhbmQgbm90aWZpZXIgdHlwZS4KLSAqLwotI2RlZmlu ZSBBTURHUFVfTU5fS0VZKG1tLCB0eXBlKSAoKHVuc2lnbmVkIGxvbmcpKG1tKSArICh0eXBlKSkK LQogLyoqCi0gKiBhbWRncHVfbW5fZ2V0IC0gY3JlYXRlIG5vdGlmaWVyIGNvbnRleHQKKyAqIGFt ZGdwdV9tbl9nZXQgLSBjcmVhdGUgSE1NIG1pcnJvciBjb250ZXh0CiAgKgogICogQGFkZXY6IGFt ZGdwdSBkZXZpY2UgcG9pbnRlcgogICogQHR5cGU6IHR5cGUgb2YgTU1VIG5vdGlmaWVyIGNvbnRl eHQKICAqCi0gKiBDcmVhdGVzIGEgbm90aWZpZXIgY29udGV4dCBmb3IgY3VycmVudC0+bW0uCisg KiBDcmVhdGVzIGEgSE1NIG1pcnJvciBjb250ZXh0IGZvciBjdXJyZW50LT5tbS4KICAqLwogc3Ry dWN0IGFtZGdwdV9tbiAqYW1kZ3B1X21uX2dldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwK IAkJCQllbnVtIGFtZGdwdV9tbl90eXBlIHR5cGUpCkBAIC00MDEsMTIgKzM3OSwxMCBAQCBzdHJ1 Y3QgYW1kZ3B1X21uICphbWRncHVfbW5fZ2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAog CWFtbi0+bW0gPSBtbTsKIAlpbml0X3J3c2VtKCZhbW4tPmxvY2spOwogCWFtbi0+dHlwZSA9IHR5 cGU7Ci0JYW1uLT5tbi5vcHMgPSAmYW1kZ3B1X21uX29wc1t0eXBlXTsKIAlhbW4tPm9iamVjdHMg PSBSQl9ST09UX0NBQ0hFRDsKLQltdXRleF9pbml0KCZhbW4tPnJlYWRfbG9jayk7Ci0JYXRvbWlj X3NldCgmYW1uLT5yZWN1cnNpb24sIDApOwogCi0JciA9IF9fbW11X25vdGlmaWVyX3JlZ2lzdGVy KCZhbW4tPm1uLCBtbSk7CisJYW1uLT5taXJyb3Iub3BzID0gJmFtZGdwdV9obW1fbWlycm9yX29w c1t0eXBlXTsKKwlyID0gaG1tX21pcnJvcl9yZWdpc3RlcigmYW1uLT5taXJyb3IsIG1tKTsKIAlp ZiAocikKIAkJZ290byBmcmVlX2FtbjsKIApAQCAtNDMyLDcgKzQwOCw3IEBAIHN0cnVjdCBhbWRn cHVfbW4gKmFtZGdwdV9tbl9nZXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAgKiBAYm86 IGFtZGdwdSBidWZmZXIgb2JqZWN0CiAgKiBAYWRkcjogdXNlcnB0ciBhZGRyIHdlIHNob3VsZCBt b25pdG9yCiAgKgotICogUmVnaXN0ZXJzIGFuIE1NVSBub3RpZmllciBmb3IgdGhlIGdpdmVuIEJP IGF0IHRoZSBzcGVjaWZpZWQgYWRkcmVzcy4KKyAqIFJlZ2lzdGVycyBhbiBITU0gbWlycm9yIGZv ciB0aGUgZ2l2ZW4gQk8gYXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzLgogICogUmV0dXJucyAwIG9u IHN1Y2Nlc3MsIC1FUlJOTyBpZiBhbnl0aGluZyBnb2VzIHdyb25nLgogICovCiBpbnQgYW1kZ3B1 X21uX3JlZ2lzdGVyKHN0cnVjdCBhbWRncHVfYm8gKmJvLCB1bnNpZ25lZCBsb25nIGFkZHIpCkBA IC00ODgsMTEgKzQ2NCwxMSBAQCBpbnQgYW1kZ3B1X21uX3JlZ2lzdGVyKHN0cnVjdCBhbWRncHVf Ym8gKmJvLCB1bnNpZ25lZCBsb25nIGFkZHIpCiB9CiAKIC8qKgotICogYW1kZ3B1X21uX3VucmVn aXN0ZXIgLSB1bnJlZ2lzdGVyIGEgQk8gZm9yIG5vdGlmaWVyIHVwZGF0ZXMKKyAqIGFtZGdwdV9t bl91bnJlZ2lzdGVyIC0gdW5yZWdpc3RlciBhIEJPIGZvciBITU0gbWlycm9yIHVwZGF0ZXMKICAq CiAgKiBAYm86IGFtZGdwdSBidWZmZXIgb2JqZWN0CiAgKgotICogUmVtb3ZlIGFueSByZWdpc3Ry YXRpb24gb2YgTU1VIG5vdGlmaWVyIHVwZGF0ZXMgZnJvbSB0aGUgYnVmZmVyIG9iamVjdC4KKyAq IFJlbW92ZSBhbnkgcmVnaXN0cmF0aW9uIG9mIEhNTSBtaXJyb3IgdXBkYXRlcyBmcm9tIHRoZSBi dWZmZXIgb2JqZWN0LgogICovCiB2b2lkIGFtZGdwdV9tbl91bnJlZ2lzdGVyKHN0cnVjdCBhbWRn cHVfYm8gKmJvKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X21uLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW4uaAppbmRleCBl YjBmNDMyZjc4ZmUuLjBhNTFmZDAwMDIxYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X21uLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X21uLmgKQEAgLTM0LDcgKzM0LDcgQEAgZW51bSBhbWRncHVfbW5fdHlwZSB7CiAJQU1ER1BV X01OX1RZUEVfSFNBLAogfTsKIAotI2lmIGRlZmluZWQoQ09ORklHX01NVV9OT1RJRklFUikKKyNp ZiBkZWZpbmVkKENPTkZJR19ITU1fTUlSUk9SKQogdm9pZCBhbWRncHVfbW5fbG9jayhzdHJ1Y3Qg YW1kZ3B1X21uICptbik7CiB2b2lkIGFtZGdwdV9tbl91bmxvY2soc3RydWN0IGFtZGdwdV9tbiAq bW4pOwogc3RydWN0IGFtZGdwdV9tbiAqYW1kZ3B1X21uX2dldChzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwKLS0gCjIuMTcuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQt Z2Z4Cg==