From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Yang, Philip" Subject: [PATCH 1/2] drm/amdgpu: use HMM mirror callback to replace mmu notifier v5 Date: Mon, 3 Dec 2018 20:19:04 +0000 Message-ID: <20181203201840.25059-1-Philip.Yang@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Language: en-US Content-ID: <7102A4CD6B03B641A536AD50F4E6D619-asWib9pRmPqcE4WynfumptQqCkab/8FMAL8bYrjMMd8@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: "Yang, Philip" UmVwbGFjZSBvdXIgTU1VIG5vdGlmaWVyIHdpdGggaG1tX21pcnJvcl9vcHMuc3luY19jcHVfZGV2 aWNlX3BhZ2V0YWJsZXMNCmNhbGxiYWNrLiBFbmFibGUgQ09ORklHX0hNTSBhbmQgQ09ORklHX0hN TV9NSVJST1IgYXMgYSBkZXBlbmRlbmN5IGluDQpEUk1fQU1ER1BVX1VTRVJQVFIgS2NvbmZpZy4N Cg0KSXQgc3VwcG9ydHMgYm90aCBLRkQgdXNlcnB0ciBhbmQgZ2Z4IHVzZXJwdHIgcGF0aHMuDQoN ClRoZSBkZXBkZW50IEhNTSBwYXRjaHNldHMgZnJvbSBKw6lyw7RtZSBHbGlzc2UgYXJlIGFsbCBt ZXJnZWQgaW50byA0LjIwLjANCmtlcm5lbCBub3cuDQoNCkNoYW5nZS1JZDogSWU2MmMzYzVlM2M1 Yjg1MjFhYjNiNDM4ZDFlZmYyYWEyYTAwMzgzNWUNClNpZ25lZC1vZmYtYnk6IFBoaWxpcCBZYW5n IDxQaGlsaXAuWWFuZ0BhbWQuY29tPg0KLS0tDQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv S2NvbmZpZyAgICAgfCAgIDYgKy0NCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmls ZSAgICB8ICAgMiArLQ0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jIHwg MTI0ICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0NCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfbW4uaCB8ICAgMiArLQ0KIDQgZmlsZXMgY2hhbmdlZCwgNTcgaW5zZXJ0aW9ucygr KSwgNzcgZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZw0KaW5kZXgg OTIyMWU1NDg5MDY5Li45NjBhNjMzNTU3MDUgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9LY29uZmlnDQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29u ZmlnDQpAQCAtMjYsMTAgKzI2LDEwIEBAIGNvbmZpZyBEUk1fQU1ER1BVX0NJSw0KIGNvbmZpZyBE Uk1fQU1ER1BVX1VTRVJQVFINCiAJYm9vbCAiQWx3YXlzIGVuYWJsZSB1c2VycHRyIHdyaXRlIHN1 cHBvcnQiDQogCWRlcGVuZHMgb24gRFJNX0FNREdQVQ0KLQlzZWxlY3QgTU1VX05PVElGSUVSDQor CXNlbGVjdCBITU1fTUlSUk9SDQogCWhlbHANCi0JICBUaGlzIG9wdGlvbiBzZWxlY3RzIENPTkZJ R19NTVVfTk9USUZJRVIgaWYgaXQgaXNuJ3QgYWxyZWFkeQ0KLQkgIHNlbGVjdGVkIHRvIGVuYWJs ZWQgZnVsbCB1c2VycHRyIHN1cHBvcnQuDQorCSAgVGhpcyBvcHRpb24gc2VsZWN0cyBDT05GSUdf SE1NIGFuZCBDT05GSUdfSE1NX01JUlJPUiBpZiBpdA0KKwkgIGlzbid0IGFscmVhZHkgc2VsZWN0 ZWQgdG8gZW5hYmxlZCBmdWxsIHVzZXJwdHIgc3VwcG9ydC4NCiANCiBjb25maWcgRFJNX0FNREdQ VV9HQVJUX0RFQlVHRlMNCiAJYm9vbCAiQWxsb3cgR0FSVCBhY2Nlc3MgdGhyb3VnaCBkZWJ1Z2Zz Ig0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUNCmluZGV4IGY3NmJjYjljNDVlNC4uMDVj YTZkYzM4MWUwIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZp bGUNCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlDQpAQCAtMTcyLDcg KzE3Miw3IEBAIGVuZGlmDQogYW1kZ3B1LSQoQ09ORklHX0NPTVBBVCkgKz0gYW1kZ3B1X2lvYzMy Lm8NCiBhbWRncHUtJChDT05GSUdfVkdBX1NXSVRDSEVST08pICs9IGFtZGdwdV9hdHB4X2hhbmRs ZXIubw0KIGFtZGdwdS0kKENPTkZJR19BQ1BJKSArPSBhbWRncHVfYWNwaS5vDQotYW1kZ3B1LSQo Q09ORklHX01NVV9OT1RJRklFUikgKz0gYW1kZ3B1X21uLm8NCithbWRncHUtJChDT05GSUdfSE1N KSArPSBhbWRncHVfbW4ubw0KIA0KIGluY2x1ZGUgJChGVUxMX0FNRF9QQVRIKS9wb3dlcnBsYXkv TWFrZWZpbGUNCiANCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfbW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jDQppbmRleCBl NTU1MDhiMzk0OTYuLjU2NTk1YjNkOTBkMiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9tbi5jDQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfbW4uYw0KQEAgLTQ1LDcgKzQ1LDcgQEANCiANCiAjaW5jbHVkZSA8bGludXgvZmlybXdh cmUuaD4NCiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQotI2luY2x1ZGUgPGxpbnV4L21tdV9u b3RpZmllci5oPg0KKyNpbmNsdWRlIDxsaW51eC9obW0uaD4NCiAjaW5jbHVkZSA8bGludXgvaW50 ZXJ2YWxfdHJlZS5oPg0KICNpbmNsdWRlIDxkcm0vZHJtUC5oPg0KICNpbmNsdWRlIDxkcm0vZHJt Lmg+DQpAQCAtNTgsNyArNTgsNiBAQA0KICAqDQogICogQGFkZXY6IGFtZGdwdSBkZXZpY2UgcG9p bnRlcg0KICAqIEBtbTogcHJvY2VzcyBhZGRyZXNzIHNwYWNlDQotICogQG1uOiBNTVUgbm90aWZp ZXIgc3RydWN0dXJlDQogICogQHR5cGU6IHR5cGUgb2YgTU1VIG5vdGlmaWVyDQogICogQHdvcms6 IGRlc3RydWN0aW9uIHdvcmsgaXRlbQ0KICAqIEBub2RlOiBoYXNoIHRhYmxlIG5vZGUgdG8gZmlu ZCBzdHJ1Y3R1cmUgYnkgYWRldiBhbmQgbW4NCkBAIC02Niw2ICs2NSw3IEBADQogICogQG9iamVj dHM6IGludGVydmFsIHRyZWUgY29udGFpbmluZyBhbWRncHVfbW5fbm9kZXMNCiAgKiBAcmVhZF9s b2NrOiBtdXRleCBmb3IgcmVjdXJzaXZlIGxvY2tpbmcgb2YgQGxvY2sNCiAgKiBAcmVjdXJzaW9u OiBkZXB0aCBvZiByZWN1cnNpb24NCisgKiBAbWlycm9yOiBITU0gbWlycm9yIGZ1bmN0aW9uIHN1 cHBvcnQNCiAgKg0KICAqIERhdGEgZm9yIGVhY2ggYW1kZ3B1IGRldmljZSBhbmQgcHJvY2VzcyBh ZGRyZXNzIHNwYWNlLg0KICAqLw0KQEAgLTczLDcgKzczLDYgQEAgc3RydWN0IGFtZGdwdV9tbiB7 DQogCS8qIGNvbnN0YW50IGFmdGVyIGluaXRpYWxpc2F0aW9uICovDQogCXN0cnVjdCBhbWRncHVf ZGV2aWNlCSphZGV2Ow0KIAlzdHJ1Y3QgbW1fc3RydWN0CSptbTsNCi0Jc3RydWN0IG1tdV9ub3Rp ZmllcgltbjsNCiAJZW51bSBhbWRncHVfbW5fdHlwZQl0eXBlOw0KIA0KIAkvKiBvbmx5IHVzZWQg b24gZGVzdHJ1Y3Rpb24gKi8NCkBAIC04Nyw2ICs4Niw5IEBAIHN0cnVjdCBhbWRncHVfbW4gew0K IAlzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQJb2JqZWN0czsNCiAJc3RydWN0IG11dGV4CQlyZWFkX2xv Y2s7DQogCWF0b21pY190CQlyZWN1cnNpb247DQorDQorCS8qIEhNTSBtaXJyb3IgKi8NCisJc3Ry dWN0IGhtbV9taXJyb3IJbWlycm9yOw0KIH07DQogDQogLyoqDQpAQCAtMTAzLDcgKzEwNSw3IEBA IHN0cnVjdCBhbWRncHVfbW5fbm9kZSB7DQogfTsNCiANCiAvKioNCi0gKiBhbWRncHVfbW5fZGVz dHJveSAtIGRlc3Ryb3kgdGhlIE1NVSBub3RpZmllcg0KKyAqIGFtZGdwdV9tbl9kZXN0cm95IC0g ZGVzdHJveSB0aGUgSE1NIG1pcnJvcg0KICAqDQogICogQHdvcms6IHByZXZpb3VzbHkgc2hlZHVs ZWQgd29yayBpdGVtDQogICoNCkBAIC0xMjksMjggKzEzMSwyNiBAQCBzdGF0aWMgdm9pZCBhbWRn cHVfbW5fZGVzdHJveShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQogCX0NCiAJdXBfd3JpdGUo JmFtbi0+bG9jayk7DQogCW11dGV4X3VubG9jaygmYWRldi0+bW5fbG9jayk7DQotCW1tdV9ub3Rp Zmllcl91bnJlZ2lzdGVyX25vX3JlbGVhc2UoJmFtbi0+bW4sIGFtbi0+bW0pOw0KKw0KKwlobW1f bWlycm9yX3VucmVnaXN0ZXIoJmFtbi0+bWlycm9yKTsNCiAJa2ZyZWUoYW1uKTsNCiB9DQogDQog LyoqDQotICogYW1kZ3B1X21uX3JlbGVhc2UgLSBjYWxsYmFjayB0byBub3RpZnkgYWJvdXQgbW0g ZGVzdHJ1Y3Rpb24NCisgKiBhbWRncHVfaG1tX21pcnJvcl9yZWxlYXNlIC0gY2FsbGJhY2sgdG8g bm90aWZ5IGFib3V0IG1tIGRlc3RydWN0aW9uDQogICoNCi0gKiBAbW46IG91ciBub3RpZmllcg0K LSAqIEBtbTogdGhlIG1tIHRoaXMgY2FsbGJhY2sgaXMgYWJvdXQNCisgKiBAbWlycm9yOiB0aGUg SE1NIG1pcnJvciAobW0pIHRoaXMgY2FsbGJhY2sgaXMgYWJvdXQNCiAgKg0KLSAqIFNoZWR1bGUg YSB3b3JrIGl0ZW0gdG8gbGF6eSBkZXN0cm95IG91ciBub3RpZmllci4NCisgKiBTaGVkdWxlIGEg d29yayBpdGVtIHRvIGxhenkgZGVzdHJveSBITU0gbWlycm9yLg0KICAqLw0KLXN0YXRpYyB2b2lk IGFtZGdwdV9tbl9yZWxlYXNlKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLA0KLQkJCSAgICAgIHN0 cnVjdCBtbV9zdHJ1Y3QgKm1tKQ0KK3N0YXRpYyB2b2lkIGFtZGdwdV9obW1fbWlycm9yX3JlbGVh c2Uoc3RydWN0IGhtbV9taXJyb3IgKm1pcnJvcikNCiB7DQotCXN0cnVjdCBhbWRncHVfbW4gKmFt biA9IGNvbnRhaW5lcl9vZihtbiwgc3RydWN0IGFtZGdwdV9tbiwgbW4pOw0KKwlzdHJ1Y3QgYW1k Z3B1X21uICphbW4gPSBjb250YWluZXJfb2YobWlycm9yLCBzdHJ1Y3QgYW1kZ3B1X21uLCBtaXJy b3IpOw0KIA0KIAlJTklUX1dPUksoJmFtbi0+d29yaywgYW1kZ3B1X21uX2Rlc3Ryb3kpOw0KIAlz Y2hlZHVsZV93b3JrKCZhbW4tPndvcmspOw0KIH0NCiANCi0NCiAvKioNCiAgKiBhbWRncHVfbW5f bG9jayAtIHRha2UgdGhlIHdyaXRlIHNpZGUgbG9jayBmb3IgdGhpcyBub3RpZmllcg0KICAqDQpA QCAtMjM3LDIxICsyMzcsMTkgQEAgc3RhdGljIHZvaWQgYW1kZ3B1X21uX2ludmFsaWRhdGVfbm9k ZShzdHJ1Y3QgYW1kZ3B1X21uX25vZGUgKm5vZGUsDQogLyoqDQogICogYW1kZ3B1X21uX2ludmFs aWRhdGVfcmFuZ2Vfc3RhcnRfZ2Z4IC0gY2FsbGJhY2sgdG8gbm90aWZ5IGFib3V0IG1tIGNoYW5n ZQ0KICAqDQotICogQG1uOiBvdXIgbm90aWZpZXINCi0gKiBAbW06IHRoZSBtbSB0aGlzIGNhbGxi YWNrIGlzIGFib3V0DQotICogQHN0YXJ0OiBzdGFydCBvZiB1cGRhdGVkIHJhbmdlDQotICogQGVu ZDogZW5kIG9mIHVwZGF0ZWQgcmFuZ2UNCisgKiBAbWlycm9yOiB0aGUgaG1tX21pcnJvciAobW0p IGlzIGFib3V0IHRvIHVwZGF0ZQ0KKyAqIEB1cGRhdGU6IHRoZSB1cGRhdGUgc3RhcnQsIGVuZCBh ZGRyZXNzDQogICoNCiAgKiBCbG9jayBmb3Igb3BlcmF0aW9ucyBvbiBCT3MgdG8gZmluaXNoIGFu ZCBtYXJrIHBhZ2VzIGFzIGFjY2Vzc2VkIGFuZA0KICAqIHBvdGVudGlhbGx5IGRpcnR5Lg0KICAq Lw0KLXN0YXRpYyBpbnQgYW1kZ3B1X21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnRfZ2Z4KHN0cnVj dCBtbXVfbm90aWZpZXIgKm1uLA0KLQkJCQkJCSBzdHJ1Y3QgbW1fc3RydWN0ICptbSwNCi0JCQkJ CQkgdW5zaWduZWQgbG9uZyBzdGFydCwNCi0JCQkJCQkgdW5zaWduZWQgbG9uZyBlbmQsDQotCQkJ CQkJIGJvb2wgYmxvY2thYmxlKQ0KK3N0YXRpYyBpbnQgYW1kZ3B1X21uX2ludmFsaWRhdGVfcmFu Z2Vfc3RhcnRfZ2Z4KHN0cnVjdCBobW1fbWlycm9yICptaXJyb3IsDQorCQkJY29uc3Qgc3RydWN0 IGhtbV91cGRhdGUgKnVwZGF0ZSkNCiB7DQotCXN0cnVjdCBhbWRncHVfbW4gKmFtbiA9IGNvbnRh aW5lcl9vZihtbiwgc3RydWN0IGFtZGdwdV9tbiwgbW4pOw0KKwlzdHJ1Y3QgYW1kZ3B1X21uICph bW4gPSBjb250YWluZXJfb2YobWlycm9yLCBzdHJ1Y3QgYW1kZ3B1X21uLCBtaXJyb3IpOw0KKwl1 bnNpZ25lZCBsb25nIHN0YXJ0ID0gdXBkYXRlLT5zdGFydDsNCisJdW5zaWduZWQgbG9uZyBlbmQg PSB1cGRhdGUtPmVuZDsNCisJYm9vbCBibG9ja2FibGUgPSB1cGRhdGUtPmJsb2NrYWJsZTsNCiAJ c3RydWN0IGludGVydmFsX3RyZWVfbm9kZSAqaXQ7DQogDQogCS8qIG5vdGlmaWNhdGlvbiBpcyBl eGNsdXNpdmUsIGJ1dCBpbnRlcnZhbCBpcyBpbmNsdXNpdmUgKi8NCkBAIC0yNzgsMjggKzI3Niwy OCBAQCBzdGF0aWMgaW50IGFtZGdwdV9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0X2dmeChzdHJ1 Y3QgbW11X25vdGlmaWVyICptbiwNCiAJCWFtZGdwdV9tbl9pbnZhbGlkYXRlX25vZGUobm9kZSwg c3RhcnQsIGVuZCk7DQogCX0NCiANCisJYW1kZ3B1X21uX3JlYWRfdW5sb2NrKGFtbik7DQorDQog CXJldHVybiAwOw0KIH0NCiANCiAvKioNCiAgKiBhbWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9z dGFydF9oc2EgLSBjYWxsYmFjayB0byBub3RpZnkgYWJvdXQgbW0gY2hhbmdlDQogICoNCi0gKiBA bW46IG91ciBub3RpZmllcg0KLSAqIEBtbTogdGhlIG1tIHRoaXMgY2FsbGJhY2sgaXMgYWJvdXQN Ci0gKiBAc3RhcnQ6IHN0YXJ0IG9mIHVwZGF0ZWQgcmFuZ2UNCi0gKiBAZW5kOiBlbmQgb2YgdXBk YXRlZCByYW5nZQ0KKyAqIEBtaXJyb3I6IHRoZSBobW1fbWlycm9yIChtbSkgaXMgYWJvdXQgdG8g dXBkYXRlDQorICogQHVwZGF0ZTogdGhlIHVwZGF0ZSBzdGFydCwgZW5kIGFkZHJlc3MNCiAgKg0K ICAqIFdlIHRlbXBvcmFyaWx5IGV2aWN0IGFsbCBCT3MgYmV0d2VlbiBzdGFydCBhbmQgZW5kLiBU aGlzDQogICogbmVjZXNzaXRhdGVzIGV2aWN0aW5nIGFsbCB1c2VyLW1vZGUgcXVldWVzIG9mIHRo ZSBwcm9jZXNzLiBUaGUgQk9zDQogICogYXJlIHJlc3RvcnRlZCBpbiBhbWRncHVfbW5faW52YWxp ZGF0ZV9yYW5nZV9lbmRfaHNhLg0KICAqLw0KLXN0YXRpYyBpbnQgYW1kZ3B1X21uX2ludmFsaWRh dGVfcmFuZ2Vfc3RhcnRfaHNhKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLA0KLQkJCQkJCSBzdHJ1 Y3QgbW1fc3RydWN0ICptbSwNCi0JCQkJCQkgdW5zaWduZWQgbG9uZyBzdGFydCwNCi0JCQkJCQkg dW5zaWduZWQgbG9uZyBlbmQsDQotCQkJCQkJIGJvb2wgYmxvY2thYmxlKQ0KK3N0YXRpYyBpbnQg YW1kZ3B1X21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnRfaHNhKHN0cnVjdCBobW1fbWlycm9yICpt aXJyb3IsDQorCQkJY29uc3Qgc3RydWN0IGhtbV91cGRhdGUgKnVwZGF0ZSkNCiB7DQotCXN0cnVj dCBhbWRncHVfbW4gKmFtbiA9IGNvbnRhaW5lcl9vZihtbiwgc3RydWN0IGFtZGdwdV9tbiwgbW4p Ow0KKwlzdHJ1Y3QgYW1kZ3B1X21uICphbW4gPSBjb250YWluZXJfb2YobWlycm9yLCBzdHJ1Y3Qg YW1kZ3B1X21uLCBtaXJyb3IpOw0KKwl1bnNpZ25lZCBsb25nIHN0YXJ0ID0gdXBkYXRlLT5zdGFy dDsNCisJdW5zaWduZWQgbG9uZyBlbmQgPSB1cGRhdGUtPmVuZDsNCisJYm9vbCBibG9ja2FibGUg PSB1cGRhdGUtPmJsb2NrYWJsZTsNCiAJc3RydWN0IGludGVydmFsX3RyZWVfbm9kZSAqaXQ7DQog DQogCS8qIG5vdGlmaWNhdGlvbiBpcyBleGNsdXNpdmUsIGJ1dCBpbnRlcnZhbCBpcyBpbmNsdXNp dmUgKi8NCkBAIC0zMjYsNTkgKzMyNCw0MSBAQCBzdGF0aWMgaW50IGFtZGdwdV9tbl9pbnZhbGlk YXRlX3JhbmdlX3N0YXJ0X2hzYShzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwNCiANCiAJCQlpZiAo YW1kZ3B1X3R0bV90dF9hZmZlY3RfdXNlcnB0cihiby0+dGJvLnR0bSwNCiAJCQkJCQkJIHN0YXJ0 LCBlbmQpKQ0KLQkJCQlhbWRncHVfYW1ka2ZkX2V2aWN0X3VzZXJwdHIobWVtLCBtbSk7DQorCQkJ CWFtZGdwdV9hbWRrZmRfZXZpY3RfdXNlcnB0cihtZW0sIGFtbi0+bW0pOw0KIAkJfQ0KIAl9DQog DQorCWFtZGdwdV9tbl9yZWFkX3VubG9jayhhbW4pOw0KKw0KIAlyZXR1cm4gMDsNCiB9DQogDQot LyoqDQotICogYW1kZ3B1X21uX2ludmFsaWRhdGVfcmFuZ2VfZW5kIC0gY2FsbGJhY2sgdG8gbm90 aWZ5IGFib3V0IG1tIGNoYW5nZQ0KLSAqDQotICogQG1uOiBvdXIgbm90aWZpZXINCi0gKiBAbW06 IHRoZSBtbSB0aGlzIGNhbGxiYWNrIGlzIGFib3V0DQotICogQHN0YXJ0OiBzdGFydCBvZiB1cGRh dGVkIHJhbmdlDQotICogQGVuZDogZW5kIG9mIHVwZGF0ZWQgcmFuZ2UNCi0gKg0KLSAqIFJlbGVh c2UgdGhlIGxvY2sgYWdhaW4gdG8gYWxsb3cgbmV3IGNvbW1hbmQgc3VibWlzc2lvbnMuDQorLyog TG93IGJpdHMgb2YgYW55IHJlYXNvbmFibGUgbW0gcG9pbnRlciB3aWxsIGJlIHVudXNlZCBkdWUg dG8gc3RydWN0DQorICogYWxpZ25tZW50LiBVc2UgdGhlc2UgYml0cyB0byBtYWtlIGEgdW5pcXVl IGtleSBmcm9tIHRoZSBtbSBwb2ludGVyDQorICogYW5kIG5vdGlmaWVyIHR5cGUuDQogICovDQot c3RhdGljIHZvaWQgYW1kZ3B1X21uX2ludmFsaWRhdGVfcmFuZ2VfZW5kKHN0cnVjdCBtbXVfbm90 aWZpZXIgKm1uLA0KLQkJCQkJICAgc3RydWN0IG1tX3N0cnVjdCAqbW0sDQotCQkJCQkgICB1bnNp Z25lZCBsb25nIHN0YXJ0LA0KLQkJCQkJICAgdW5zaWduZWQgbG9uZyBlbmQpDQotew0KLQlzdHJ1 Y3QgYW1kZ3B1X21uICphbW4gPSBjb250YWluZXJfb2YobW4sIHN0cnVjdCBhbWRncHVfbW4sIG1u KTsNCi0NCi0JYW1kZ3B1X21uX3JlYWRfdW5sb2NrKGFtbik7DQotfQ0KKyNkZWZpbmUgQU1ER1BV X01OX0tFWShtbSwgdHlwZSkgKCh1bnNpZ25lZCBsb25nKShtbSkgKyAodHlwZSkpDQogDQotc3Rh dGljIGNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJfb3BzIGFtZGdwdV9tbl9vcHNbXSA9IHsNCitz dGF0aWMgc3RydWN0IGhtbV9taXJyb3Jfb3BzIGFtZGdwdV9obW1fbWlycm9yX29wc1tdID0gew0K IAlbQU1ER1BVX01OX1RZUEVfR0ZYXSA9IHsNCi0JCS5yZWxlYXNlID0gYW1kZ3B1X21uX3JlbGVh c2UsDQotCQkuaW52YWxpZGF0ZV9yYW5nZV9zdGFydCA9IGFtZGdwdV9tbl9pbnZhbGlkYXRlX3Jh bmdlX3N0YXJ0X2dmeCwNCi0JCS5pbnZhbGlkYXRlX3JhbmdlX2VuZCA9IGFtZGdwdV9tbl9pbnZh bGlkYXRlX3JhbmdlX2VuZCwNCisJCS5zeW5jX2NwdV9kZXZpY2VfcGFnZXRhYmxlcyA9DQorCQkJ CWFtZGdwdV9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0X2dmeCwNCisJCS5yZWxlYXNlID0gYW1k Z3B1X2htbV9taXJyb3JfcmVsZWFzZQ0KIAl9LA0KIAlbQU1ER1BVX01OX1RZUEVfSFNBXSA9IHsN Ci0JCS5yZWxlYXNlID0gYW1kZ3B1X21uX3JlbGVhc2UsDQotCQkuaW52YWxpZGF0ZV9yYW5nZV9z dGFydCA9IGFtZGdwdV9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0X2hzYSwNCi0JCS5pbnZhbGlk YXRlX3JhbmdlX2VuZCA9IGFtZGdwdV9tbl9pbnZhbGlkYXRlX3JhbmdlX2VuZCwNCisJCS5zeW5j X2NwdV9kZXZpY2VfcGFnZXRhYmxlcyA9DQorCQkJCWFtZGdwdV9tbl9pbnZhbGlkYXRlX3Jhbmdl X3N0YXJ0X2hzYSwNCisJCS5yZWxlYXNlID0gYW1kZ3B1X2htbV9taXJyb3JfcmVsZWFzZQ0KIAl9 LA0KIH07DQogDQotLyogTG93IGJpdHMgb2YgYW55IHJlYXNvbmFibGUgbW0gcG9pbnRlciB3aWxs IGJlIHVudXNlZCBkdWUgdG8gc3RydWN0DQotICogYWxpZ25tZW50LiBVc2UgdGhlc2UgYml0cyB0 byBtYWtlIGEgdW5pcXVlIGtleSBmcm9tIHRoZSBtbSBwb2ludGVyDQotICogYW5kIG5vdGlmaWVy IHR5cGUuDQotICovDQotI2RlZmluZSBBTURHUFVfTU5fS0VZKG1tLCB0eXBlKSAoKHVuc2lnbmVk IGxvbmcpKG1tKSArICh0eXBlKSkNCi0NCiAvKioNCi0gKiBhbWRncHVfbW5fZ2V0IC0gY3JlYXRl IG5vdGlmaWVyIGNvbnRleHQNCisgKiBhbWRncHVfbW5fZ2V0IC0gY3JlYXRlIEhNTSBtaXJyb3Ig Y29udGV4dA0KICAqDQogICogQGFkZXY6IGFtZGdwdSBkZXZpY2UgcG9pbnRlcg0KICAqIEB0eXBl OiB0eXBlIG9mIE1NVSBub3RpZmllciBjb250ZXh0DQogICoNCi0gKiBDcmVhdGVzIGEgbm90aWZp ZXIgY29udGV4dCBmb3IgY3VycmVudC0+bW0uDQorICogQ3JlYXRlcyBhIEhNTSBtaXJyb3IgY29u dGV4dCBmb3IgY3VycmVudC0+bW0uDQogICovDQogc3RydWN0IGFtZGdwdV9tbiAqYW1kZ3B1X21u X2dldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCiAJCQkJZW51bSBhbWRncHVfbW5fdHlw ZSB0eXBlKQ0KQEAgLTQwOCwxMiArMzg4LDEyIEBAIHN0cnVjdCBhbWRncHVfbW4gKmFtZGdwdV9t bl9nZXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQogCWFtbi0+bW0gPSBtbTsNCiAJaW5p dF9yd3NlbSgmYW1uLT5sb2NrKTsNCiAJYW1uLT50eXBlID0gdHlwZTsNCi0JYW1uLT5tbi5vcHMg PSAmYW1kZ3B1X21uX29wc1t0eXBlXTsNCiAJYW1uLT5vYmplY3RzID0gUkJfUk9PVF9DQUNIRUQ7 DQogCW11dGV4X2luaXQoJmFtbi0+cmVhZF9sb2NrKTsNCiAJYXRvbWljX3NldCgmYW1uLT5yZWN1 cnNpb24sIDApOw0KIA0KLQlyID0gX19tbXVfbm90aWZpZXJfcmVnaXN0ZXIoJmFtbi0+bW4sIG1t KTsNCisJYW1uLT5taXJyb3Iub3BzID0gJmFtZGdwdV9obW1fbWlycm9yX29wc1t0eXBlXTsNCisJ ciA9IGhtbV9taXJyb3JfcmVnaXN0ZXIoJmFtbi0+bWlycm9yLCBtbSk7DQogCWlmIChyKQ0KIAkJ Z290byBmcmVlX2FtbjsNCiANCkBAIC00MzksNyArNDE5LDcgQEAgc3RydWN0IGFtZGdwdV9tbiAq YW1kZ3B1X21uX2dldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCiAgKiBAYm86IGFtZGdw dSBidWZmZXIgb2JqZWN0DQogICogQGFkZHI6IHVzZXJwdHIgYWRkciB3ZSBzaG91bGQgbW9uaXRv cg0KICAqDQotICogUmVnaXN0ZXJzIGFuIE1NVSBub3RpZmllciBmb3IgdGhlIGdpdmVuIEJPIGF0 IHRoZSBzcGVjaWZpZWQgYWRkcmVzcy4NCisgKiBSZWdpc3RlcnMgYW4gSE1NIG1pcnJvciBmb3Ig dGhlIGdpdmVuIEJPIGF0IHRoZSBzcGVjaWZpZWQgYWRkcmVzcy4NCiAgKiBSZXR1cm5zIDAgb24g c3VjY2VzcywgLUVSUk5PIGlmIGFueXRoaW5nIGdvZXMgd3JvbmcuDQogICovDQogaW50IGFtZGdw dV9tbl9yZWdpc3RlcihzdHJ1Y3QgYW1kZ3B1X2JvICpibywgdW5zaWduZWQgbG9uZyBhZGRyKQ0K QEAgLTQ5NSwxMSArNDc1LDExIEBAIGludCBhbWRncHVfbW5fcmVnaXN0ZXIoc3RydWN0IGFtZGdw dV9ibyAqYm8sIHVuc2lnbmVkIGxvbmcgYWRkcikNCiB9DQogDQogLyoqDQotICogYW1kZ3B1X21u X3VucmVnaXN0ZXIgLSB1bnJlZ2lzdGVyIGEgQk8gZm9yIG5vdGlmaWVyIHVwZGF0ZXMNCisgKiBh bWRncHVfbW5fdW5yZWdpc3RlciAtIHVucmVnaXN0ZXIgYSBCTyBmb3IgSE1NIG1pcnJvciB1cGRh dGVzDQogICoNCiAgKiBAYm86IGFtZGdwdSBidWZmZXIgb2JqZWN0DQogICoNCi0gKiBSZW1vdmUg YW55IHJlZ2lzdHJhdGlvbiBvZiBNTVUgbm90aWZpZXIgdXBkYXRlcyBmcm9tIHRoZSBidWZmZXIg b2JqZWN0Lg0KKyAqIFJlbW92ZSBhbnkgcmVnaXN0cmF0aW9uIG9mIEhNTSBtaXJyb3IgdXBkYXRl cyBmcm9tIHRoZSBidWZmZXIgb2JqZWN0Lg0KICAqLw0KIHZvaWQgYW1kZ3B1X21uX3VucmVnaXN0 ZXIoc3RydWN0IGFtZGdwdV9ibyAqYm8pDQogew0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X21uLmgNCmluZGV4IGViMGY0MzJmNzhmZS4uMGUyNzUyNjQ2ZTZmIDEwMDY0NA0KLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmgNCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5oDQpAQCAtMzQsNyArMzQsNyBAQCBlbnVtIGFtZGdw dV9tbl90eXBlIHsNCiAJQU1ER1BVX01OX1RZUEVfSFNBLA0KIH07DQogDQotI2lmIGRlZmluZWQo Q09ORklHX01NVV9OT1RJRklFUikNCisjaWYgZGVmaW5lZChDT05GSUdfSE1NKQ0KIHZvaWQgYW1k Z3B1X21uX2xvY2soc3RydWN0IGFtZGdwdV9tbiAqbW4pOw0KIHZvaWQgYW1kZ3B1X21uX3VubG9j ayhzdHJ1Y3QgYW1kZ3B1X21uICptbik7DQogc3RydWN0IGFtZGdwdV9tbiAqYW1kZ3B1X21uX2dl dChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCi0tIA0KMi4xNy4xDQoNCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0 CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=