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 v6 Date: Mon, 4 Feb 2019 15:06:53 +0000 Message-ID: <20190204150613.5837-2-Philip.Yang@amd.com> References: <20190204150613.5837-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: <20190204150613.5837-1-Philip.Yang-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US Content-ID: 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 aWNlX3BhZ2V0YWJsZXMNCmNhbGxiYWNrLiBFbmFibGUgQ09ORklHX0hNTSBhbmQgQ09ORklHX0hN TV9NSVJST1IgYXMgYSBkZXBlbmRlbmN5IGluDQpEUk1fQU1ER1BVX1VTRVJQVFIgS2NvbmZpZy4N Cg0KSXQgc3VwcG9ydHMgYm90aCBLRkQgdXNlcnB0ciBhbmQgZ2Z4IHVzZXJwdHIgcGF0aHMuDQoN ClRoZSBkZXBkZW50IEhNTSBwYXRjaHNldCBmcm9tIErDqXLDtG1lIEdsaXNzZSBhcmUgYWxsIG1l cmdlZCBpbnRvIDQuMjAuMA0Ka2VybmVsIG5vdy4NCg0KQ2hhbmdlLUlkOiBJZTYyYzNjNWUzYzVi ODUyMWFiM2I0MzhkMWVmZjJhYTJhMDAzODM1ZQ0KU2lnbmVkLW9mZi1ieTogUGhpbGlwIFlhbmcg PFBoaWxpcC5ZYW5nQGFtZC5jb20+DQotLS0NCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9L Y29uZmlnICAgICB8ICAgNiArLQ0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxl ICAgIHwgICAyICstDQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmMgfCAx MzkgKysrKysrKysrKystLS0tLS0tLS0tLS0tLQ0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9tbi5oIHwgICAyICstDQogNCBmaWxlcyBjaGFuZ2VkLCA2NyBpbnNlcnRpb25zKCsp LCA4MiBkZWxldGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnDQppbmRleCA5 MjIxZTU0ODkwNjkuLjk2MGE2MzM1NTcwNSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L0tjb25maWcNCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25m aWcNCkBAIC0yNiwxMCArMjYsMTAgQEAgY29uZmlnIERSTV9BTURHUFVfQ0lLDQogY29uZmlnIERS TV9BTURHUFVfVVNFUlBUUg0KIAlib29sICJBbHdheXMgZW5hYmxlIHVzZXJwdHIgd3JpdGUgc3Vw cG9ydCINCiAJZGVwZW5kcyBvbiBEUk1fQU1ER1BVDQotCXNlbGVjdCBNTVVfTk9USUZJRVINCisJ c2VsZWN0IEhNTV9NSVJST1INCiAJaGVscA0KLQkgIFRoaXMgb3B0aW9uIHNlbGVjdHMgQ09ORklH X01NVV9OT1RJRklFUiBpZiBpdCBpc24ndCBhbHJlYWR5DQotCSAgc2VsZWN0ZWQgdG8gZW5hYmxl ZCBmdWxsIHVzZXJwdHIgc3VwcG9ydC4NCisJICBUaGlzIG9wdGlvbiBzZWxlY3RzIENPTkZJR19I TU0gYW5kIENPTkZJR19ITU1fTUlSUk9SIGlmIGl0DQorCSAgaXNuJ3QgYWxyZWFkeSBzZWxlY3Rl ZCB0byBlbmFibGVkIGZ1bGwgdXNlcnB0ciBzdXBwb3J0Lg0KIA0KIGNvbmZpZyBEUk1fQU1ER1BV X0dBUlRfREVCVUdGUw0KIAlib29sICJBbGxvdyBHQVJUIGFjY2VzcyB0aHJvdWdoIGRlYnVnZnMi DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZQ0KaW5kZXggNDY2ZGE1OTU0YTY4Li44NTEw MDFjZWQ1ZTggMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmls ZQ0KKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUNCkBAIC0xNzIsNyAr MTcyLDcgQEAgZW5kaWYNCiBhbWRncHUtJChDT05GSUdfQ09NUEFUKSArPSBhbWRncHVfaW9jMzIu bw0KIGFtZGdwdS0kKENPTkZJR19WR0FfU1dJVENIRVJPTykgKz0gYW1kZ3B1X2F0cHhfaGFuZGxl ci5vDQogYW1kZ3B1LSQoQ09ORklHX0FDUEkpICs9IGFtZGdwdV9hY3BpLm8NCi1hbWRncHUtJChD T05GSUdfTU1VX05PVElGSUVSKSArPSBhbWRncHVfbW4ubw0KK2FtZGdwdS0kKENPTkZJR19ITU1f TUlSUk9SKSArPSBhbWRncHVfbW4ubw0KIA0KIGluY2x1ZGUgJChGVUxMX0FNRF9QQVRIKS9wb3dl cnBsYXkvTWFrZWZpbGUNCiANCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfbW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jDQpp bmRleCAzZTY4MjNmZGQ5MzkuLjVkNTE4ZDJiYjliZSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jDQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfbW4uYw0KQEAgLTQ1LDcgKzQ1LDcgQEANCiANCiAjaW5jbHVkZSA8bGludXgv ZmlybXdhcmUuaD4NCiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQotI2luY2x1ZGUgPGxpbnV4 L21tdV9ub3RpZmllci5oPg0KKyNpbmNsdWRlIDxsaW51eC9obW0uaD4NCiAjaW5jbHVkZSA8bGlu dXgvaW50ZXJ2YWxfdHJlZS5oPg0KICNpbmNsdWRlIDxkcm0vZHJtUC5oPg0KICNpbmNsdWRlIDxk cm0vZHJtLmg+DQpAQCAtNTgsNyArNTgsNiBAQA0KICAqDQogICogQGFkZXY6IGFtZGdwdSBkZXZp Y2UgcG9pbnRlcg0KICAqIEBtbTogcHJvY2VzcyBhZGRyZXNzIHNwYWNlDQotICogQG1uOiBNTVUg bm90aWZpZXIgc3RydWN0dXJlDQogICogQHR5cGU6IHR5cGUgb2YgTU1VIG5vdGlmaWVyDQogICog QHdvcms6IGRlc3RydWN0aW9uIHdvcmsgaXRlbQ0KICAqIEBub2RlOiBoYXNoIHRhYmxlIG5vZGUg dG8gZmluZCBzdHJ1Y3R1cmUgYnkgYWRldiBhbmQgbW4NCkBAIC02Niw2ICs2NSw3IEBADQogICog QG9iamVjdHM6IGludGVydmFsIHRyZWUgY29udGFpbmluZyBhbWRncHVfbW5fbm9kZXMNCiAgKiBA cmVhZF9sb2NrOiBtdXRleCBmb3IgcmVjdXJzaXZlIGxvY2tpbmcgb2YgQGxvY2sNCiAgKiBAcmVj dXJzaW9uOiBkZXB0aCBvZiByZWN1cnNpb24NCisgKiBAbWlycm9yOiBITU0gbWlycm9yIGZ1bmN0 aW9uIHN1cHBvcnQNCiAgKg0KICAqIERhdGEgZm9yIGVhY2ggYW1kZ3B1IGRldmljZSBhbmQgcHJv Y2VzcyBhZGRyZXNzIHNwYWNlLg0KICAqLw0KQEAgLTczLDcgKzczLDYgQEAgc3RydWN0IGFtZGdw dV9tbiB7DQogCS8qIGNvbnN0YW50IGFmdGVyIGluaXRpYWxpc2F0aW9uICovDQogCXN0cnVjdCBh bWRncHVfZGV2aWNlCSphZGV2Ow0KIAlzdHJ1Y3QgbW1fc3RydWN0CSptbTsNCi0Jc3RydWN0IG1t dV9ub3RpZmllcgltbjsNCiAJZW51bSBhbWRncHVfbW5fdHlwZQl0eXBlOw0KIA0KIAkvKiBvbmx5 IHVzZWQgb24gZGVzdHJ1Y3Rpb24gKi8NCkBAIC04Nyw2ICs4Niw5IEBAIHN0cnVjdCBhbWRncHVf bW4gew0KIAlzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQJb2JqZWN0czsNCiAJc3RydWN0IG11dGV4CQly ZWFkX2xvY2s7DQogCWF0b21pY190CQlyZWN1cnNpb247DQorDQorCS8qIEhNTSBtaXJyb3IgKi8N CisJc3RydWN0IGhtbV9taXJyb3IJbWlycm9yOw0KIH07DQogDQogLyoqDQpAQCAtMTAzLDcgKzEw NSw3IEBAIHN0cnVjdCBhbWRncHVfbW5fbm9kZSB7DQogfTsNCiANCiAvKioNCi0gKiBhbWRncHVf bW5fZGVzdHJveSAtIGRlc3Ryb3kgdGhlIE1NVSBub3RpZmllcg0KKyAqIGFtZGdwdV9tbl9kZXN0 cm95IC0gZGVzdHJveSB0aGUgSE1NIG1pcnJvcg0KICAqDQogICogQHdvcms6IHByZXZpb3VzbHkg c2hlZHVsZWQgd29yayBpdGVtDQogICoNCkBAIC0xMjksMjggKzEzMSwyNiBAQCBzdGF0aWMgdm9p ZCBhbWRncHVfbW5fZGVzdHJveShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQogCX0NCiAJdXBf d3JpdGUoJmFtbi0+bG9jayk7DQogCW11dGV4X3VubG9jaygmYWRldi0+bW5fbG9jayk7DQotCW1t dV9ub3RpZmllcl91bnJlZ2lzdGVyX25vX3JlbGVhc2UoJmFtbi0+bW4sIGFtbi0+bW0pOw0KKw0K KwlobW1fbWlycm9yX3VucmVnaXN0ZXIoJmFtbi0+bWlycm9yKTsNCiAJa2ZyZWUoYW1uKTsNCiB9 DQogDQogLyoqDQotICogYW1kZ3B1X21uX3JlbGVhc2UgLSBjYWxsYmFjayB0byBub3RpZnkgYWJv dXQgbW0gZGVzdHJ1Y3Rpb24NCisgKiBhbWRncHVfaG1tX21pcnJvcl9yZWxlYXNlIC0gY2FsbGJh Y2sgdG8gbm90aWZ5IGFib3V0IG1tIGRlc3RydWN0aW9uDQogICoNCi0gKiBAbW46IG91ciBub3Rp Zmllcg0KLSAqIEBtbTogdGhlIG1tIHRoaXMgY2FsbGJhY2sgaXMgYWJvdXQNCisgKiBAbWlycm9y OiB0aGUgSE1NIG1pcnJvciAobW0pIHRoaXMgY2FsbGJhY2sgaXMgYWJvdXQNCiAgKg0KLSAqIFNo ZWR1bGUgYSB3b3JrIGl0ZW0gdG8gbGF6eSBkZXN0cm95IG91ciBub3RpZmllci4NCisgKiBTaGVk dWxlIGEgd29yayBpdGVtIHRvIGxhenkgZGVzdHJveSBITU0gbWlycm9yLg0KICAqLw0KLXN0YXRp YyB2b2lkIGFtZGdwdV9tbl9yZWxlYXNlKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLA0KLQkJCSAg ICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQ0KK3N0YXRpYyB2b2lkIGFtZGdwdV9obW1fbWlycm9y X3JlbGVhc2Uoc3RydWN0IGhtbV9taXJyb3IgKm1pcnJvcikNCiB7DQotCXN0cnVjdCBhbWRncHVf bW4gKmFtbiA9IGNvbnRhaW5lcl9vZihtbiwgc3RydWN0IGFtZGdwdV9tbiwgbW4pOw0KKwlzdHJ1 Y3QgYW1kZ3B1X21uICphbW4gPSBjb250YWluZXJfb2YobWlycm9yLCBzdHJ1Y3QgYW1kZ3B1X21u LCBtaXJyb3IpOw0KIA0KIAlJTklUX1dPUksoJmFtbi0+d29yaywgYW1kZ3B1X21uX2Rlc3Ryb3kp Ow0KIAlzY2hlZHVsZV93b3JrKCZhbW4tPndvcmspOw0KIH0NCiANCi0NCiAvKioNCiAgKiBhbWRn cHVfbW5fbG9jayAtIHRha2UgdGhlIHdyaXRlIHNpZGUgbG9jayBmb3IgdGhpcyBub3RpZmllcg0K ICAqDQpAQCAtMjM3LDE0MSArMjM3LDEyNiBAQCBzdGF0aWMgdm9pZCBhbWRncHVfbW5faW52YWxp ZGF0ZV9ub2RlKHN0cnVjdCBhbWRncHVfbW5fbm9kZSAqbm9kZSwNCiAvKioNCiAgKiBhbWRncHVf bW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydF9nZnggLSBjYWxsYmFjayB0byBub3RpZnkgYWJvdXQg bW0gY2hhbmdlDQogICoNCi0gKiBAbW46IG91ciBub3RpZmllcg0KLSAqIEByYW5nZTogbW11IG5v dGlmaWVyIGNvbnRleHQNCisgKiBAbWlycm9yOiB0aGUgaG1tX21pcnJvciAobW0pIGlzIGFib3V0 IHRvIHVwZGF0ZQ0KKyAqIEB1cGRhdGU6IHRoZSB1cGRhdGUgc3RhcnQsIGVuZCBhZGRyZXNzDQog ICoNCiAgKiBCbG9jayBmb3Igb3BlcmF0aW9ucyBvbiBCT3MgdG8gZmluaXNoIGFuZCBtYXJrIHBh Z2VzIGFzIGFjY2Vzc2VkIGFuZA0KICAqIHBvdGVudGlhbGx5IGRpcnR5Lg0KICAqLw0KLXN0YXRp YyBpbnQgYW1kZ3B1X21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnRfZ2Z4KHN0cnVjdCBtbXVfbm90 aWZpZXIgKm1uLA0KLQkJCWNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdlKQ0K K3N0YXRpYyBpbnQgYW1kZ3B1X21uX3N5bmNfcGFnZXRhYmxlc19nZngoc3RydWN0IGhtbV9taXJy b3IgKm1pcnJvciwNCisJCQljb25zdCBzdHJ1Y3QgaG1tX3VwZGF0ZSAqdXBkYXRlKQ0KIHsNCi0J c3RydWN0IGFtZGdwdV9tbiAqYW1uID0gY29udGFpbmVyX29mKG1uLCBzdHJ1Y3QgYW1kZ3B1X21u LCBtbik7DQorCXN0cnVjdCBhbWRncHVfbW4gKmFtbiA9IGNvbnRhaW5lcl9vZihtaXJyb3IsIHN0 cnVjdCBhbWRncHVfbW4sIG1pcnJvcik7DQorCXVuc2lnbmVkIGxvbmcgc3RhcnQgPSB1cGRhdGUt PnN0YXJ0Ow0KKwl1bnNpZ25lZCBsb25nIGVuZCA9IHVwZGF0ZS0+ZW5kOw0KKwlib29sIGJsb2Nr YWJsZSA9IHVwZGF0ZS0+YmxvY2thYmxlOw0KIAlzdHJ1Y3QgaW50ZXJ2YWxfdHJlZV9ub2RlICpp dDsNCi0JdW5zaWduZWQgbG9uZyBlbmQ7DQogDQogCS8qIG5vdGlmaWNhdGlvbiBpcyBleGNsdXNp dmUsIGJ1dCBpbnRlcnZhbCBpcyBpbmNsdXNpdmUgKi8NCi0JZW5kID0gcmFuZ2UtPmVuZCAtIDE7 DQorCWVuZCAtPSAxOw0KIA0KIAkvKiBUT0RPIHdlIHNob3VsZCBiZSBhYmxlIHRvIHNwbGl0IGxv Y2tpbmcgZm9yIGludGVydmFsIHRyZWUgYW5kDQogCSAqIGFtZGdwdV9tbl9pbnZhbGlkYXRlX25v ZGUNCiAJICovDQotCWlmIChhbWRncHVfbW5fcmVhZF9sb2NrKGFtbiwgcmFuZ2UtPmJsb2NrYWJs ZSkpDQorCWlmIChhbWRncHVfbW5fcmVhZF9sb2NrKGFtbiwgYmxvY2thYmxlKSkNCiAJCXJldHVy biAtRUFHQUlOOw0KIA0KLQlpdCA9IGludGVydmFsX3RyZWVfaXRlcl9maXJzdCgmYW1uLT5vYmpl Y3RzLCByYW5nZS0+c3RhcnQsIGVuZCk7DQorCWl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX2ZpcnN0 KCZhbW4tPm9iamVjdHMsIHN0YXJ0LCBlbmQpOw0KIAl3aGlsZSAoaXQpIHsNCiAJCXN0cnVjdCBh bWRncHVfbW5fbm9kZSAqbm9kZTsNCiANCi0JCWlmICghcmFuZ2UtPmJsb2NrYWJsZSkgew0KKwkJ aWYgKCFibG9ja2FibGUpIHsNCiAJCQlhbWRncHVfbW5fcmVhZF91bmxvY2soYW1uKTsNCiAJCQly ZXR1cm4gLUVBR0FJTjsNCiAJCX0NCiANCiAJCW5vZGUgPSBjb250YWluZXJfb2YoaXQsIHN0cnVj dCBhbWRncHVfbW5fbm9kZSwgaXQpOw0KLQkJaXQgPSBpbnRlcnZhbF90cmVlX2l0ZXJfbmV4dChp dCwgcmFuZ2UtPnN0YXJ0LCBlbmQpOw0KKwkJaXQgPSBpbnRlcnZhbF90cmVlX2l0ZXJfbmV4dChp dCwgc3RhcnQsIGVuZCk7DQogDQotCQlhbWRncHVfbW5faW52YWxpZGF0ZV9ub2RlKG5vZGUsIHJh bmdlLT5zdGFydCwgZW5kKTsNCisJCWFtZGdwdV9tbl9pbnZhbGlkYXRlX25vZGUobm9kZSwgc3Rh cnQsIGVuZCk7DQogCX0NCiANCisJYW1kZ3B1X21uX3JlYWRfdW5sb2NrKGFtbik7DQorDQogCXJl dHVybiAwOw0KIH0NCiANCiAvKioNCiAgKiBhbWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9zdGFy dF9oc2EgLSBjYWxsYmFjayB0byBub3RpZnkgYWJvdXQgbW0gY2hhbmdlDQogICoNCi0gKiBAbW46 IG91ciBub3RpZmllcg0KLSAqIEBtbTogdGhlIG1tIHRoaXMgY2FsbGJhY2sgaXMgYWJvdXQNCi0g KiBAc3RhcnQ6IHN0YXJ0IG9mIHVwZGF0ZWQgcmFuZ2UNCi0gKiBAZW5kOiBlbmQgb2YgdXBkYXRl ZCByYW5nZQ0KKyAqIEBtaXJyb3I6IHRoZSBobW1fbWlycm9yIChtbSkgaXMgYWJvdXQgdG8gdXBk YXRlDQorICogQHVwZGF0ZTogdGhlIHVwZGF0ZSBzdGFydCwgZW5kIGFkZHJlc3MNCiAgKg0KICAq IFdlIHRlbXBvcmFyaWx5IGV2aWN0IGFsbCBCT3MgYmV0d2VlbiBzdGFydCBhbmQgZW5kLiBUaGlz DQogICogbmVjZXNzaXRhdGVzIGV2aWN0aW5nIGFsbCB1c2VyLW1vZGUgcXVldWVzIG9mIHRoZSBw cm9jZXNzLiBUaGUgQk9zDQogICogYXJlIHJlc3RvcnRlZCBpbiBhbWRncHVfbW5faW52YWxpZGF0 ZV9yYW5nZV9lbmRfaHNhLg0KICAqLw0KLXN0YXRpYyBpbnQgYW1kZ3B1X21uX2ludmFsaWRhdGVf cmFuZ2Vfc3RhcnRfaHNhKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLA0KLQkJCWNvbnN0IHN0cnVj dCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdlKQ0KK3N0YXRpYyBpbnQgYW1kZ3B1X21uX3N5bmNf cGFnZXRhYmxlc19oc2Eoc3RydWN0IGhtbV9taXJyb3IgKm1pcnJvciwNCisJCQljb25zdCBzdHJ1 Y3QgaG1tX3VwZGF0ZSAqdXBkYXRlKQ0KIHsNCi0Jc3RydWN0IGFtZGdwdV9tbiAqYW1uID0gY29u dGFpbmVyX29mKG1uLCBzdHJ1Y3QgYW1kZ3B1X21uLCBtbik7DQorCXN0cnVjdCBhbWRncHVfbW4g KmFtbiA9IGNvbnRhaW5lcl9vZihtaXJyb3IsIHN0cnVjdCBhbWRncHVfbW4sIG1pcnJvcik7DQor CXVuc2lnbmVkIGxvbmcgc3RhcnQgPSB1cGRhdGUtPnN0YXJ0Ow0KKwl1bnNpZ25lZCBsb25nIGVu ZCA9IHVwZGF0ZS0+ZW5kOw0KKwlib29sIGJsb2NrYWJsZSA9IHVwZGF0ZS0+YmxvY2thYmxlOw0K IAlzdHJ1Y3QgaW50ZXJ2YWxfdHJlZV9ub2RlICppdDsNCi0JdW5zaWduZWQgbG9uZyBlbmQ7DQog DQogCS8qIG5vdGlmaWNhdGlvbiBpcyBleGNsdXNpdmUsIGJ1dCBpbnRlcnZhbCBpcyBpbmNsdXNp dmUgKi8NCi0JZW5kID0gcmFuZ2UtPmVuZCAtIDE7DQorCWVuZCAtPSAxOw0KIA0KLQlpZiAoYW1k Z3B1X21uX3JlYWRfbG9jayhhbW4sIHJhbmdlLT5ibG9ja2FibGUpKQ0KKwlpZiAoYW1kZ3B1X21u X3JlYWRfbG9jayhhbW4sIGJsb2NrYWJsZSkpDQogCQlyZXR1cm4gLUVBR0FJTjsNCiANCi0JaXQg PSBpbnRlcnZhbF90cmVlX2l0ZXJfZmlyc3QoJmFtbi0+b2JqZWN0cywgcmFuZ2UtPnN0YXJ0LCBl bmQpOw0KKwlpdCA9IGludGVydmFsX3RyZWVfaXRlcl9maXJzdCgmYW1uLT5vYmplY3RzLCBzdGFy dCwgZW5kKTsNCiAJd2hpbGUgKGl0KSB7DQogCQlzdHJ1Y3QgYW1kZ3B1X21uX25vZGUgKm5vZGU7 DQogCQlzdHJ1Y3QgYW1kZ3B1X2JvICpibzsNCiANCi0JCWlmICghcmFuZ2UtPmJsb2NrYWJsZSkg ew0KKwkJaWYgKCFibG9ja2FibGUpIHsNCiAJCQlhbWRncHVfbW5fcmVhZF91bmxvY2soYW1uKTsN CiAJCQlyZXR1cm4gLUVBR0FJTjsNCiAJCX0NCiANCiAJCW5vZGUgPSBjb250YWluZXJfb2YoaXQs IHN0cnVjdCBhbWRncHVfbW5fbm9kZSwgaXQpOw0KLQkJaXQgPSBpbnRlcnZhbF90cmVlX2l0ZXJf bmV4dChpdCwgcmFuZ2UtPnN0YXJ0LCBlbmQpOw0KKwkJaXQgPSBpbnRlcnZhbF90cmVlX2l0ZXJf bmV4dChpdCwgc3RhcnQsIGVuZCk7DQogDQogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGJvLCAmbm9k ZS0+Ym9zLCBtbl9saXN0KSB7DQogCQkJc3RydWN0IGtnZF9tZW0gKm1lbSA9IGJvLT5rZmRfYm87 DQogDQogCQkJaWYgKGFtZGdwdV90dG1fdHRfYWZmZWN0X3VzZXJwdHIoYm8tPnRiby50dG0sDQot CQkJCQkJCSByYW5nZS0+c3RhcnQsDQotCQkJCQkJCSBlbmQpKQ0KLQkJCQlhbWRncHVfYW1ka2Zk X2V2aWN0X3VzZXJwdHIobWVtLCByYW5nZS0+bW0pOw0KKwkJCQkJCQkgc3RhcnQsIGVuZCkpDQor CQkJCWFtZGdwdV9hbWRrZmRfZXZpY3RfdXNlcnB0cihtZW0sIGFtbi0+bW0pOw0KIAkJfQ0KIAl9 DQogDQorCWFtZGdwdV9tbl9yZWFkX3VubG9jayhhbW4pOw0KKw0KIAlyZXR1cm4gMDsNCiB9DQog DQotLyoqDQotICogYW1kZ3B1X21uX2ludmFsaWRhdGVfcmFuZ2VfZW5kIC0gY2FsbGJhY2sgdG8g bm90aWZ5IGFib3V0IG1tIGNoYW5nZQ0KLSAqDQotICogQG1uOiBvdXIgbm90aWZpZXINCi0gKiBA bW06IHRoZSBtbSB0aGlzIGNhbGxiYWNrIGlzIGFib3V0DQotICogQHN0YXJ0OiBzdGFydCBvZiB1 cGRhdGVkIHJhbmdlDQotICogQGVuZDogZW5kIG9mIHVwZGF0ZWQgcmFuZ2UNCi0gKg0KLSAqIFJl bGVhc2UgdGhlIGxvY2sgYWdhaW4gdG8gYWxsb3cgbmV3IGNvbW1hbmQgc3VibWlzc2lvbnMuDQor LyogTG93IGJpdHMgb2YgYW55IHJlYXNvbmFibGUgbW0gcG9pbnRlciB3aWxsIGJlIHVudXNlZCBk dWUgdG8gc3RydWN0DQorICogYWxpZ25tZW50LiBVc2UgdGhlc2UgYml0cyB0byBtYWtlIGEgdW5p cXVlIGtleSBmcm9tIHRoZSBtbSBwb2ludGVyDQorICogYW5kIG5vdGlmaWVyIHR5cGUuDQogICov DQotc3RhdGljIHZvaWQgYW1kZ3B1X21uX2ludmFsaWRhdGVfcmFuZ2VfZW5kKHN0cnVjdCBtbXVf bm90aWZpZXIgKm1uLA0KLQkJCWNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdl KQ0KLXsNCi0Jc3RydWN0IGFtZGdwdV9tbiAqYW1uID0gY29udGFpbmVyX29mKG1uLCBzdHJ1Y3Qg YW1kZ3B1X21uLCBtbik7DQotDQotCWFtZGdwdV9tbl9yZWFkX3VubG9jayhhbW4pOw0KLX0NCisj ZGVmaW5lIEFNREdQVV9NTl9LRVkobW0sIHR5cGUpICgodW5zaWduZWQgbG9uZykobW0pICsgKHR5 cGUpKQ0KIA0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX29wcyBhbWRncHVfbW5f b3BzW10gPSB7DQorc3RhdGljIHN0cnVjdCBobW1fbWlycm9yX29wcyBhbWRncHVfaG1tX21pcnJv cl9vcHNbXSA9IHsNCiAJW0FNREdQVV9NTl9UWVBFX0dGWF0gPSB7DQotCQkucmVsZWFzZSA9IGFt ZGdwdV9tbl9yZWxlYXNlLA0KLQkJLmludmFsaWRhdGVfcmFuZ2Vfc3RhcnQgPSBhbWRncHVfbW5f aW52YWxpZGF0ZV9yYW5nZV9zdGFydF9nZngsDQotCQkuaW52YWxpZGF0ZV9yYW5nZV9lbmQgPSBh bWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9lbmQsDQorCQkuc3luY19jcHVfZGV2aWNlX3BhZ2V0 YWJsZXMgPSBhbWRncHVfbW5fc3luY19wYWdldGFibGVzX2dmeCwNCisJCS5yZWxlYXNlID0gYW1k Z3B1X2htbV9taXJyb3JfcmVsZWFzZQ0KIAl9LA0KIAlbQU1ER1BVX01OX1RZUEVfSFNBXSA9IHsN Ci0JCS5yZWxlYXNlID0gYW1kZ3B1X21uX3JlbGVhc2UsDQotCQkuaW52YWxpZGF0ZV9yYW5nZV9z dGFydCA9IGFtZGdwdV9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0X2hzYSwNCi0JCS5pbnZhbGlk YXRlX3JhbmdlX2VuZCA9IGFtZGdwdV9tbl9pbnZhbGlkYXRlX3JhbmdlX2VuZCwNCisJCS5zeW5j X2NwdV9kZXZpY2VfcGFnZXRhYmxlcyA9IGFtZGdwdV9tbl9zeW5jX3BhZ2V0YWJsZXNfaHNhLA0K KwkJLnJlbGVhc2UgPSBhbWRncHVfaG1tX21pcnJvcl9yZWxlYXNlDQogCX0sDQogfTsNCiANCi0v KiBMb3cgYml0cyBvZiBhbnkgcmVhc29uYWJsZSBtbSBwb2ludGVyIHdpbGwgYmUgdW51c2VkIGR1 ZSB0byBzdHJ1Y3QNCi0gKiBhbGlnbm1lbnQuIFVzZSB0aGVzZSBiaXRzIHRvIG1ha2UgYSB1bmlx dWUga2V5IGZyb20gdGhlIG1tIHBvaW50ZXINCi0gKiBhbmQgbm90aWZpZXIgdHlwZS4NCi0gKi8N Ci0jZGVmaW5lIEFNREdQVV9NTl9LRVkobW0sIHR5cGUpICgodW5zaWduZWQgbG9uZykobW0pICsg KHR5cGUpKQ0KLQ0KIC8qKg0KLSAqIGFtZGdwdV9tbl9nZXQgLSBjcmVhdGUgbm90aWZpZXIgY29u dGV4dA0KKyAqIGFtZGdwdV9tbl9nZXQgLSBjcmVhdGUgSE1NIG1pcnJvciBjb250ZXh0DQogICoN CiAgKiBAYWRldjogYW1kZ3B1IGRldmljZSBwb2ludGVyDQogICogQHR5cGU6IHR5cGUgb2YgTU1V IG5vdGlmaWVyIGNvbnRleHQNCiAgKg0KLSAqIENyZWF0ZXMgYSBub3RpZmllciBjb250ZXh0IGZv ciBjdXJyZW50LT5tbS4NCisgKiBDcmVhdGVzIGEgSE1NIG1pcnJvciBjb250ZXh0IGZvciBjdXJy ZW50LT5tbS4NCiAgKi8NCiBzdHJ1Y3QgYW1kZ3B1X21uICphbWRncHVfbW5fZ2V0KHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LA0KIAkJCQllbnVtIGFtZGdwdV9tbl90eXBlIHR5cGUpDQpAQCAt NDAxLDEyICszODYsMTIgQEAgc3RydWN0IGFtZGdwdV9tbiAqYW1kZ3B1X21uX2dldChzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwNCiAJYW1uLT5tbSA9IG1tOw0KIAlpbml0X3J3c2VtKCZhbW4t PmxvY2spOw0KIAlhbW4tPnR5cGUgPSB0eXBlOw0KLQlhbW4tPm1uLm9wcyA9ICZhbWRncHVfbW5f b3BzW3R5cGVdOw0KIAlhbW4tPm9iamVjdHMgPSBSQl9ST09UX0NBQ0hFRDsNCiAJbXV0ZXhfaW5p dCgmYW1uLT5yZWFkX2xvY2spOw0KIAlhdG9taWNfc2V0KCZhbW4tPnJlY3Vyc2lvbiwgMCk7DQog DQotCXIgPSBfX21tdV9ub3RpZmllcl9yZWdpc3RlcigmYW1uLT5tbiwgbW0pOw0KKwlhbW4tPm1p cnJvci5vcHMgPSAmYW1kZ3B1X2htbV9taXJyb3Jfb3BzW3R5cGVdOw0KKwlyID0gaG1tX21pcnJv cl9yZWdpc3RlcigmYW1uLT5taXJyb3IsIG1tKTsNCiAJaWYgKHIpDQogCQlnb3RvIGZyZWVfYW1u Ow0KIA0KQEAgLTQzMiw3ICs0MTcsNyBAQCBzdHJ1Y3QgYW1kZ3B1X21uICphbWRncHVfbW5fZ2V0 KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KICAqIEBibzogYW1kZ3B1IGJ1ZmZlciBvYmpl Y3QNCiAgKiBAYWRkcjogdXNlcnB0ciBhZGRyIHdlIHNob3VsZCBtb25pdG9yDQogICoNCi0gKiBS ZWdpc3RlcnMgYW4gTU1VIG5vdGlmaWVyIGZvciB0aGUgZ2l2ZW4gQk8gYXQgdGhlIHNwZWNpZmll ZCBhZGRyZXNzLg0KKyAqIFJlZ2lzdGVycyBhbiBITU0gbWlycm9yIGZvciB0aGUgZ2l2ZW4gQk8g YXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzLg0KICAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCAtRVJS Tk8gaWYgYW55dGhpbmcgZ29lcyB3cm9uZy4NCiAgKi8NCiBpbnQgYW1kZ3B1X21uX3JlZ2lzdGVy KHN0cnVjdCBhbWRncHVfYm8gKmJvLCB1bnNpZ25lZCBsb25nIGFkZHIpDQpAQCAtNDg4LDExICs0 NzMsMTEgQEAgaW50IGFtZGdwdV9tbl9yZWdpc3RlcihzdHJ1Y3QgYW1kZ3B1X2JvICpibywgdW5z aWduZWQgbG9uZyBhZGRyKQ0KIH0NCiANCiAvKioNCi0gKiBhbWRncHVfbW5fdW5yZWdpc3RlciAt IHVucmVnaXN0ZXIgYSBCTyBmb3Igbm90aWZpZXIgdXBkYXRlcw0KKyAqIGFtZGdwdV9tbl91bnJl Z2lzdGVyIC0gdW5yZWdpc3RlciBhIEJPIGZvciBITU0gbWlycm9yIHVwZGF0ZXMNCiAgKg0KICAq IEBibzogYW1kZ3B1IGJ1ZmZlciBvYmplY3QNCiAgKg0KLSAqIFJlbW92ZSBhbnkgcmVnaXN0cmF0 aW9uIG9mIE1NVSBub3RpZmllciB1cGRhdGVzIGZyb20gdGhlIGJ1ZmZlciBvYmplY3QuDQorICog UmVtb3ZlIGFueSByZWdpc3RyYXRpb24gb2YgSE1NIG1pcnJvciB1cGRhdGVzIGZyb20gdGhlIGJ1 ZmZlciBvYmplY3QuDQogICovDQogdm9pZCBhbWRncHVfbW5fdW5yZWdpc3RlcihzdHJ1Y3QgYW1k Z3B1X2JvICpibykNCiB7DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X21uLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW4uaA0KaW5k ZXggZWIwZjQzMmY3OGZlLi4wYTUxZmQwMDAyMWMgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfbW4uaA0KKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X21uLmgNCkBAIC0zNCw3ICszNCw3IEBAIGVudW0gYW1kZ3B1X21uX3R5cGUgew0K IAlBTURHUFVfTU5fVFlQRV9IU0EsDQogfTsNCiANCi0jaWYgZGVmaW5lZChDT05GSUdfTU1VX05P VElGSUVSKQ0KKyNpZiBkZWZpbmVkKENPTkZJR19ITU1fTUlSUk9SKQ0KIHZvaWQgYW1kZ3B1X21u X2xvY2soc3RydWN0IGFtZGdwdV9tbiAqbW4pOw0KIHZvaWQgYW1kZ3B1X21uX3VubG9jayhzdHJ1 Y3QgYW1kZ3B1X21uICptbik7DQogc3RydWN0IGFtZGdwdV9tbiAqYW1kZ3B1X21uX2dldChzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCi0tIA0KMi4xNy4xDQoNCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=