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: Wed, 6 Feb 2019 16:26:12 +0000 Message-ID: <20190206162556.11512-2-Philip.Yang@amd.com> References: <20190206162556.11512-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: <20190206162556.11512-1-Philip.Yang-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US Content-ID: <0C245A6DA60E9C4EA4694EF490110BB4-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 CkNoYW5nZS1JZDogSWU2MmMzYzVlM2M1Yjg1MjFhYjNiNDM4ZDFlZmYyYWEyYTAwMzgzNWUNClNp Z25lZC1vZmYtYnk6IFBoaWxpcCBZYW5nIDxQaGlsaXAuWWFuZ0BhbWQuY29tPg0KUmV2aWV3ZWQt Ynk6IEZlbGl4IEt1ZWhsaW5nIDxGZWxpeC5LdWVobGluZ0BhbWQuY29tPg0KUmV2aWV3ZWQtYnk6 IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4NCi0tLQ0KIGRyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWcgICAgIHwgICA2ICstDQogZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUgICAgfCAgIDIgKy0NCiBkcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfbW4uYyB8IDE1NCArKysrKysrKysrKy0tLS0tLS0tLS0tLS0tDQogZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmggfCAgIDIgKy0NCiA0IGZpbGVzIGNo YW5nZWQsIDcwIGluc2VydGlvbnMoKyksIDk0IGRlbGV0aW9ucygtKQ0KDQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L0tjb25maWcNCmluZGV4IDkyMjFlNTQ4OTA2OS4uOTYwYTYzMzU1NzA1IDEwMDY0NA0K LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZw0KKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZw0KQEAgLTI2LDEwICsyNiwxMCBAQCBjb25maWcgRFJN X0FNREdQVV9DSUsNCiBjb25maWcgRFJNX0FNREdQVV9VU0VSUFRSDQogCWJvb2wgIkFsd2F5cyBl bmFibGUgdXNlcnB0ciB3cml0ZSBzdXBwb3J0Ig0KIAlkZXBlbmRzIG9uIERSTV9BTURHUFUNCi0J c2VsZWN0IE1NVV9OT1RJRklFUg0KKwlzZWxlY3QgSE1NX01JUlJPUg0KIAloZWxwDQotCSAgVGhp cyBvcHRpb24gc2VsZWN0cyBDT05GSUdfTU1VX05PVElGSUVSIGlmIGl0IGlzbid0IGFscmVhZHkN Ci0JICBzZWxlY3RlZCB0byBlbmFibGVkIGZ1bGwgdXNlcnB0ciBzdXBwb3J0Lg0KKwkgIFRoaXMg b3B0aW9uIHNlbGVjdHMgQ09ORklHX0hNTSBhbmQgQ09ORklHX0hNTV9NSVJST1IgaWYgaXQNCisJ ICBpc24ndCBhbHJlYWR5IHNlbGVjdGVkIHRvIGVuYWJsZWQgZnVsbCB1c2VycHRyIHN1cHBvcnQu DQogDQogY29uZmlnIERSTV9BTURHUFVfR0FSVF9ERUJVR0ZTDQogCWJvb2wgIkFsbG93IEdBUlQg YWNjZXNzIHRocm91Z2ggZGVidWdmcyINCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlDQpp bmRleCA0NjZkYTU5NTRhNjguLjg1MTAwMWNlZDVlOCAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlDQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9NYWtlZmlsZQ0KQEAgLTE3Miw3ICsxNzIsNyBAQCBlbmRpZg0KIGFtZGdwdS0kKENPTkZJR19D T01QQVQpICs9IGFtZGdwdV9pb2MzMi5vDQogYW1kZ3B1LSQoQ09ORklHX1ZHQV9TV0lUQ0hFUk9P KSArPSBhbWRncHVfYXRweF9oYW5kbGVyLm8NCiBhbWRncHUtJChDT05GSUdfQUNQSSkgKz0gYW1k Z3B1X2FjcGkubw0KLWFtZGdwdS0kKENPTkZJR19NTVVfTk9USUZJRVIpICs9IGFtZGdwdV9tbi5v DQorYW1kZ3B1LSQoQ09ORklHX0hNTV9NSVJST1IpICs9IGFtZGdwdV9tbi5vDQogDQogaW5jbHVk ZSAkKEZVTExfQU1EX1BBVEgpL3Bvd2VycGxheS9NYWtlZmlsZQ0KIA0KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X21uLmMNCmluZGV4IDNlNjgyM2ZkZDkzOS4uZTM1Njg2N2QyMzA4IDEw MDY0NA0KLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmMNCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jDQpAQCAtNDUsNyArNDUsNyBA QA0KIA0KICNpbmNsdWRlIDxsaW51eC9maXJtd2FyZS5oPg0KICNpbmNsdWRlIDxsaW51eC9tb2R1 bGUuaD4NCi0jaW5jbHVkZSA8bGludXgvbW11X25vdGlmaWVyLmg+DQorI2luY2x1ZGUgPGxpbnV4 L2htbS5oPg0KICNpbmNsdWRlIDxsaW51eC9pbnRlcnZhbF90cmVlLmg+DQogI2luY2x1ZGUgPGRy bS9kcm1QLmg+DQogI2luY2x1ZGUgPGRybS9kcm0uaD4NCkBAIC01OCw3ICs1OCw2IEBADQogICoN CiAgKiBAYWRldjogYW1kZ3B1IGRldmljZSBwb2ludGVyDQogICogQG1tOiBwcm9jZXNzIGFkZHJl c3Mgc3BhY2UNCi0gKiBAbW46IE1NVSBub3RpZmllciBzdHJ1Y3R1cmUNCiAgKiBAdHlwZTogdHlw ZSBvZiBNTVUgbm90aWZpZXINCiAgKiBAd29yazogZGVzdHJ1Y3Rpb24gd29yayBpdGVtDQogICog QG5vZGU6IGhhc2ggdGFibGUgbm9kZSB0byBmaW5kIHN0cnVjdHVyZSBieSBhZGV2IGFuZCBtbg0K QEAgLTY2LDYgKzY1LDcgQEANCiAgKiBAb2JqZWN0czogaW50ZXJ2YWwgdHJlZSBjb250YWluaW5n IGFtZGdwdV9tbl9ub2Rlcw0KICAqIEByZWFkX2xvY2s6IG11dGV4IGZvciByZWN1cnNpdmUgbG9j a2luZyBvZiBAbG9jaw0KICAqIEByZWN1cnNpb246IGRlcHRoIG9mIHJlY3Vyc2lvbg0KKyAqIEBt aXJyb3I6IEhNTSBtaXJyb3IgZnVuY3Rpb24gc3VwcG9ydA0KICAqDQogICogRGF0YSBmb3IgZWFj aCBhbWRncHUgZGV2aWNlIGFuZCBwcm9jZXNzIGFkZHJlc3Mgc3BhY2UuDQogICovDQpAQCAtNzMs NyArNzMsNiBAQCBzdHJ1Y3QgYW1kZ3B1X21uIHsNCiAJLyogY29uc3RhbnQgYWZ0ZXIgaW5pdGlh bGlzYXRpb24gKi8NCiAJc3RydWN0IGFtZGdwdV9kZXZpY2UJKmFkZXY7DQogCXN0cnVjdCBtbV9z dHJ1Y3QJKm1tOw0KLQlzdHJ1Y3QgbW11X25vdGlmaWVyCW1uOw0KIAllbnVtIGFtZGdwdV9tbl90 eXBlCXR5cGU7DQogDQogCS8qIG9ubHkgdXNlZCBvbiBkZXN0cnVjdGlvbiAqLw0KQEAgLTg1LDgg Kzg0LDkgQEAgc3RydWN0IGFtZGdwdV9tbiB7DQogCS8qIG9iamVjdHMgcHJvdGVjdGVkIGJ5IGxv Y2sgKi8NCiAJc3RydWN0IHJ3X3NlbWFwaG9yZQlsb2NrOw0KIAlzdHJ1Y3QgcmJfcm9vdF9jYWNo ZWQJb2JqZWN0czsNCi0Jc3RydWN0IG11dGV4CQlyZWFkX2xvY2s7DQotCWF0b21pY190CQlyZWN1 cnNpb247DQorDQorCS8qIEhNTSBtaXJyb3IgKi8NCisJc3RydWN0IGhtbV9taXJyb3IJbWlycm9y Ow0KIH07DQogDQogLyoqDQpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0cnVjdCBhbWRncHVfbW5fbm9k ZSB7DQogfTsNCiANCiAvKioNCi0gKiBhbWRncHVfbW5fZGVzdHJveSAtIGRlc3Ryb3kgdGhlIE1N VSBub3RpZmllcg0KKyAqIGFtZGdwdV9tbl9kZXN0cm95IC0gZGVzdHJveSB0aGUgSE1NIG1pcnJv cg0KICAqDQogICogQHdvcms6IHByZXZpb3VzbHkgc2hlZHVsZWQgd29yayBpdGVtDQogICoNCkBA IC0xMjksMjggKzEyOSwyNiBAQCBzdGF0aWMgdm9pZCBhbWRncHVfbW5fZGVzdHJveShzdHJ1Y3Qg d29ya19zdHJ1Y3QgKndvcmspDQogCX0NCiAJdXBfd3JpdGUoJmFtbi0+bG9jayk7DQogCW11dGV4 X3VubG9jaygmYWRldi0+bW5fbG9jayk7DQotCW1tdV9ub3RpZmllcl91bnJlZ2lzdGVyX25vX3Jl bGVhc2UoJmFtbi0+bW4sIGFtbi0+bW0pOw0KKw0KKwlobW1fbWlycm9yX3VucmVnaXN0ZXIoJmFt bi0+bWlycm9yKTsNCiAJa2ZyZWUoYW1uKTsNCiB9DQogDQogLyoqDQotICogYW1kZ3B1X21uX3Jl bGVhc2UgLSBjYWxsYmFjayB0byBub3RpZnkgYWJvdXQgbW0gZGVzdHJ1Y3Rpb24NCisgKiBhbWRn cHVfaG1tX21pcnJvcl9yZWxlYXNlIC0gY2FsbGJhY2sgdG8gbm90aWZ5IGFib3V0IG1tIGRlc3Ry dWN0aW9uDQogICoNCi0gKiBAbW46IG91ciBub3RpZmllcg0KLSAqIEBtbTogdGhlIG1tIHRoaXMg Y2FsbGJhY2sgaXMgYWJvdXQNCisgKiBAbWlycm9yOiB0aGUgSE1NIG1pcnJvciAobW0pIHRoaXMg Y2FsbGJhY2sgaXMgYWJvdXQNCiAgKg0KLSAqIFNoZWR1bGUgYSB3b3JrIGl0ZW0gdG8gbGF6eSBk ZXN0cm95IG91ciBub3RpZmllci4NCisgKiBTaGVkdWxlIGEgd29yayBpdGVtIHRvIGxhenkgZGVz dHJveSBITU0gbWlycm9yLg0KICAqLw0KLXN0YXRpYyB2b2lkIGFtZGdwdV9tbl9yZWxlYXNlKHN0 cnVjdCBtbXVfbm90aWZpZXIgKm1uLA0KLQkJCSAgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQ0K K3N0YXRpYyB2b2lkIGFtZGdwdV9obW1fbWlycm9yX3JlbGVhc2Uoc3RydWN0IGhtbV9taXJyb3Ig Km1pcnJvcikNCiB7DQotCXN0cnVjdCBhbWRncHVfbW4gKmFtbiA9IGNvbnRhaW5lcl9vZihtbiwg c3RydWN0IGFtZGdwdV9tbiwgbW4pOw0KKwlzdHJ1Y3QgYW1kZ3B1X21uICphbW4gPSBjb250YWlu ZXJfb2YobWlycm9yLCBzdHJ1Y3QgYW1kZ3B1X21uLCBtaXJyb3IpOw0KIA0KIAlJTklUX1dPUkso JmFtbi0+d29yaywgYW1kZ3B1X21uX2Rlc3Ryb3kpOw0KIAlzY2hlZHVsZV93b3JrKCZhbW4tPndv cmspOw0KIH0NCiANCi0NCiAvKioNCiAgKiBhbWRncHVfbW5fbG9jayAtIHRha2UgdGhlIHdyaXRl IHNpZGUgbG9jayBmb3IgdGhpcyBub3RpZmllcg0KICAqDQpAQCAtMTgxLDE0ICsxNzksMTAgQEAg dm9pZCBhbWRncHVfbW5fdW5sb2NrKHN0cnVjdCBhbWRncHVfbW4gKm1uKQ0KIHN0YXRpYyBpbnQg YW1kZ3B1X21uX3JlYWRfbG9jayhzdHJ1Y3QgYW1kZ3B1X21uICphbW4sIGJvb2wgYmxvY2thYmxl KQ0KIHsNCiAJaWYgKGJsb2NrYWJsZSkNCi0JCW11dGV4X2xvY2soJmFtbi0+cmVhZF9sb2NrKTsN Ci0JZWxzZSBpZiAoIW11dGV4X3RyeWxvY2soJmFtbi0+cmVhZF9sb2NrKSkNCisJCWRvd25fcmVh ZCgmYW1uLT5sb2NrKTsNCisJZWxzZSBpZiAoIWRvd25fcmVhZF90cnlsb2NrKCZhbW4tPmxvY2sp KQ0KIAkJcmV0dXJuIC1FQUdBSU47DQogDQotCWlmIChhdG9taWNfaW5jX3JldHVybigmYW1uLT5y ZWN1cnNpb24pID09IDEpDQotCQlkb3duX3JlYWRfbm9uX293bmVyKCZhbW4tPmxvY2spOw0KLQlt dXRleF91bmxvY2soJmFtbi0+cmVhZF9sb2NrKTsNCi0NCiAJcmV0dXJuIDA7DQogfQ0KIA0KQEAg LTE5OSw4ICsxOTMsNyBAQCBzdGF0aWMgaW50IGFtZGdwdV9tbl9yZWFkX2xvY2soc3RydWN0IGFt ZGdwdV9tbiAqYW1uLCBib29sIGJsb2NrYWJsZSkNCiAgKi8NCiBzdGF0aWMgdm9pZCBhbWRncHVf bW5fcmVhZF91bmxvY2soc3RydWN0IGFtZGdwdV9tbiAqYW1uKQ0KIHsNCi0JaWYgKGF0b21pY19k ZWNfcmV0dXJuKCZhbW4tPnJlY3Vyc2lvbikgPT0gMCkNCi0JCXVwX3JlYWRfbm9uX293bmVyKCZh bW4tPmxvY2spOw0KKwl1cF9yZWFkKCZhbW4tPmxvY2spOw0KIH0NCiANCiAvKioNCkBAIC0yMzcs MTQxICsyMzAsMTI2IEBAIHN0YXRpYyB2b2lkIGFtZGdwdV9tbl9pbnZhbGlkYXRlX25vZGUoc3Ry dWN0IGFtZGdwdV9tbl9ub2RlICpub2RlLA0KIC8qKg0KICAqIGFtZGdwdV9tbl9pbnZhbGlkYXRl X3JhbmdlX3N0YXJ0X2dmeCAtIGNhbGxiYWNrIHRvIG5vdGlmeSBhYm91dCBtbSBjaGFuZ2UNCiAg Kg0KLSAqIEBtbjogb3VyIG5vdGlmaWVyDQotICogQHJhbmdlOiBtbXUgbm90aWZpZXIgY29udGV4 dA0KKyAqIEBtaXJyb3I6IHRoZSBobW1fbWlycm9yIChtbSkgaXMgYWJvdXQgdG8gdXBkYXRlDQor ICogQHVwZGF0ZTogdGhlIHVwZGF0ZSBzdGFydCwgZW5kIGFkZHJlc3MNCiAgKg0KICAqIEJsb2Nr IGZvciBvcGVyYXRpb25zIG9uIEJPcyB0byBmaW5pc2ggYW5kIG1hcmsgcGFnZXMgYXMgYWNjZXNz ZWQgYW5kDQogICogcG90ZW50aWFsbHkgZGlydHkuDQogICovDQotc3RhdGljIGludCBhbWRncHVf bW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydF9nZngoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sDQot CQkJY29uc3Qgc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqcmFuZ2UpDQorc3RhdGljIGludCBh bWRncHVfbW5fc3luY19wYWdldGFibGVzX2dmeChzdHJ1Y3QgaG1tX21pcnJvciAqbWlycm9yLA0K KwkJCWNvbnN0IHN0cnVjdCBobW1fdXBkYXRlICp1cGRhdGUpDQogew0KLQlzdHJ1Y3QgYW1kZ3B1 X21uICphbW4gPSBjb250YWluZXJfb2YobW4sIHN0cnVjdCBhbWRncHVfbW4sIG1uKTsNCisJc3Ry dWN0IGFtZGdwdV9tbiAqYW1uID0gY29udGFpbmVyX29mKG1pcnJvciwgc3RydWN0IGFtZGdwdV9t biwgbWlycm9yKTsNCisJdW5zaWduZWQgbG9uZyBzdGFydCA9IHVwZGF0ZS0+c3RhcnQ7DQorCXVu c2lnbmVkIGxvbmcgZW5kID0gdXBkYXRlLT5lbmQ7DQorCWJvb2wgYmxvY2thYmxlID0gdXBkYXRl LT5ibG9ja2FibGU7DQogCXN0cnVjdCBpbnRlcnZhbF90cmVlX25vZGUgKml0Ow0KLQl1bnNpZ25l ZCBsb25nIGVuZDsNCiANCiAJLyogbm90aWZpY2F0aW9uIGlzIGV4Y2x1c2l2ZSwgYnV0IGludGVy dmFsIGlzIGluY2x1c2l2ZSAqLw0KLQllbmQgPSByYW5nZS0+ZW5kIC0gMTsNCisJZW5kIC09IDE7 DQogDQogCS8qIFRPRE8gd2Ugc2hvdWxkIGJlIGFibGUgdG8gc3BsaXQgbG9ja2luZyBmb3IgaW50 ZXJ2YWwgdHJlZSBhbmQNCiAJICogYW1kZ3B1X21uX2ludmFsaWRhdGVfbm9kZQ0KIAkgKi8NCi0J aWYgKGFtZGdwdV9tbl9yZWFkX2xvY2soYW1uLCByYW5nZS0+YmxvY2thYmxlKSkNCisJaWYgKGFt ZGdwdV9tbl9yZWFkX2xvY2soYW1uLCBibG9ja2FibGUpKQ0KIAkJcmV0dXJuIC1FQUdBSU47DQog DQotCWl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX2ZpcnN0KCZhbW4tPm9iamVjdHMsIHJhbmdlLT5z dGFydCwgZW5kKTsNCisJaXQgPSBpbnRlcnZhbF90cmVlX2l0ZXJfZmlyc3QoJmFtbi0+b2JqZWN0 cywgc3RhcnQsIGVuZCk7DQogCXdoaWxlIChpdCkgew0KIAkJc3RydWN0IGFtZGdwdV9tbl9ub2Rl ICpub2RlOw0KIA0KLQkJaWYgKCFyYW5nZS0+YmxvY2thYmxlKSB7DQorCQlpZiAoIWJsb2NrYWJs ZSkgew0KIAkJCWFtZGdwdV9tbl9yZWFkX3VubG9jayhhbW4pOw0KIAkJCXJldHVybiAtRUFHQUlO Ow0KIAkJfQ0KIA0KIAkJbm9kZSA9IGNvbnRhaW5lcl9vZihpdCwgc3RydWN0IGFtZGdwdV9tbl9u b2RlLCBpdCk7DQotCQlpdCA9IGludGVydmFsX3RyZWVfaXRlcl9uZXh0KGl0LCByYW5nZS0+c3Rh cnQsIGVuZCk7DQorCQlpdCA9IGludGVydmFsX3RyZWVfaXRlcl9uZXh0KGl0LCBzdGFydCwgZW5k KTsNCiANCi0JCWFtZGdwdV9tbl9pbnZhbGlkYXRlX25vZGUobm9kZSwgcmFuZ2UtPnN0YXJ0LCBl bmQpOw0KKwkJYW1kZ3B1X21uX2ludmFsaWRhdGVfbm9kZShub2RlLCBzdGFydCwgZW5kKTsNCiAJ fQ0KIA0KKwlhbWRncHVfbW5fcmVhZF91bmxvY2soYW1uKTsNCisNCiAJcmV0dXJuIDA7DQogfQ0K IA0KIC8qKg0KICAqIGFtZGdwdV9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0X2hzYSAtIGNhbGxi YWNrIHRvIG5vdGlmeSBhYm91dCBtbSBjaGFuZ2UNCiAgKg0KLSAqIEBtbjogb3VyIG5vdGlmaWVy DQotICogQG1tOiB0aGUgbW0gdGhpcyBjYWxsYmFjayBpcyBhYm91dA0KLSAqIEBzdGFydDogc3Rh cnQgb2YgdXBkYXRlZCByYW5nZQ0KLSAqIEBlbmQ6IGVuZCBvZiB1cGRhdGVkIHJhbmdlDQorICog QG1pcnJvcjogdGhlIGhtbV9taXJyb3IgKG1tKSBpcyBhYm91dCB0byB1cGRhdGUNCisgKiBAdXBk YXRlOiB0aGUgdXBkYXRlIHN0YXJ0LCBlbmQgYWRkcmVzcw0KICAqDQogICogV2UgdGVtcG9yYXJp bHkgZXZpY3QgYWxsIEJPcyBiZXR3ZWVuIHN0YXJ0IGFuZCBlbmQuIFRoaXMNCiAgKiBuZWNlc3Np dGF0ZXMgZXZpY3RpbmcgYWxsIHVzZXItbW9kZSBxdWV1ZXMgb2YgdGhlIHByb2Nlc3MuIFRoZSBC T3MNCiAgKiBhcmUgcmVzdG9ydGVkIGluIGFtZGdwdV9tbl9pbnZhbGlkYXRlX3JhbmdlX2VuZF9o c2EuDQogICovDQotc3RhdGljIGludCBhbWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydF9o c2Eoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sDQotCQkJY29uc3Qgc3RydWN0IG1tdV9ub3RpZmll cl9yYW5nZSAqcmFuZ2UpDQorc3RhdGljIGludCBhbWRncHVfbW5fc3luY19wYWdldGFibGVzX2hz YShzdHJ1Y3QgaG1tX21pcnJvciAqbWlycm9yLA0KKwkJCWNvbnN0IHN0cnVjdCBobW1fdXBkYXRl ICp1cGRhdGUpDQogew0KLQlzdHJ1Y3QgYW1kZ3B1X21uICphbW4gPSBjb250YWluZXJfb2YobW4s IHN0cnVjdCBhbWRncHVfbW4sIG1uKTsNCisJc3RydWN0IGFtZGdwdV9tbiAqYW1uID0gY29udGFp bmVyX29mKG1pcnJvciwgc3RydWN0IGFtZGdwdV9tbiwgbWlycm9yKTsNCisJdW5zaWduZWQgbG9u ZyBzdGFydCA9IHVwZGF0ZS0+c3RhcnQ7DQorCXVuc2lnbmVkIGxvbmcgZW5kID0gdXBkYXRlLT5l bmQ7DQorCWJvb2wgYmxvY2thYmxlID0gdXBkYXRlLT5ibG9ja2FibGU7DQogCXN0cnVjdCBpbnRl cnZhbF90cmVlX25vZGUgKml0Ow0KLQl1bnNpZ25lZCBsb25nIGVuZDsNCiANCiAJLyogbm90aWZp Y2F0aW9uIGlzIGV4Y2x1c2l2ZSwgYnV0IGludGVydmFsIGlzIGluY2x1c2l2ZSAqLw0KLQllbmQg PSByYW5nZS0+ZW5kIC0gMTsNCisJZW5kIC09IDE7DQogDQotCWlmIChhbWRncHVfbW5fcmVhZF9s b2NrKGFtbiwgcmFuZ2UtPmJsb2NrYWJsZSkpDQorCWlmIChhbWRncHVfbW5fcmVhZF9sb2NrKGFt biwgYmxvY2thYmxlKSkNCiAJCXJldHVybiAtRUFHQUlOOw0KIA0KLQlpdCA9IGludGVydmFsX3Ry ZWVfaXRlcl9maXJzdCgmYW1uLT5vYmplY3RzLCByYW5nZS0+c3RhcnQsIGVuZCk7DQorCWl0ID0g aW50ZXJ2YWxfdHJlZV9pdGVyX2ZpcnN0KCZhbW4tPm9iamVjdHMsIHN0YXJ0LCBlbmQpOw0KIAl3 aGlsZSAoaXQpIHsNCiAJCXN0cnVjdCBhbWRncHVfbW5fbm9kZSAqbm9kZTsNCiAJCXN0cnVjdCBh bWRncHVfYm8gKmJvOw0KIA0KLQkJaWYgKCFyYW5nZS0+YmxvY2thYmxlKSB7DQorCQlpZiAoIWJs b2NrYWJsZSkgew0KIAkJCWFtZGdwdV9tbl9yZWFkX3VubG9jayhhbW4pOw0KIAkJCXJldHVybiAt RUFHQUlOOw0KIAkJfQ0KIA0KIAkJbm9kZSA9IGNvbnRhaW5lcl9vZihpdCwgc3RydWN0IGFtZGdw dV9tbl9ub2RlLCBpdCk7DQotCQlpdCA9IGludGVydmFsX3RyZWVfaXRlcl9uZXh0KGl0LCByYW5n ZS0+c3RhcnQsIGVuZCk7DQorCQlpdCA9IGludGVydmFsX3RyZWVfaXRlcl9uZXh0KGl0LCBzdGFy dCwgZW5kKTsNCiANCiAJCWxpc3RfZm9yX2VhY2hfZW50cnkoYm8sICZub2RlLT5ib3MsIG1uX2xp c3QpIHsNCiAJCQlzdHJ1Y3Qga2dkX21lbSAqbWVtID0gYm8tPmtmZF9ibzsNCiANCiAJCQlpZiAo YW1kZ3B1X3R0bV90dF9hZmZlY3RfdXNlcnB0cihiby0+dGJvLnR0bSwNCi0JCQkJCQkJIHJhbmdl LT5zdGFydCwNCi0JCQkJCQkJIGVuZCkpDQotCQkJCWFtZGdwdV9hbWRrZmRfZXZpY3RfdXNlcnB0 cihtZW0sIHJhbmdlLT5tbSk7DQorCQkJCQkJCSBzdGFydCwgZW5kKSkNCisJCQkJYW1kZ3B1X2Ft ZGtmZF9ldmljdF91c2VycHRyKG1lbSwgYW1uLT5tbSk7DQogCQl9DQogCX0NCiANCisJYW1kZ3B1 X21uX3JlYWRfdW5sb2NrKGFtbik7DQorDQogCXJldHVybiAwOw0KIH0NCiANCi0vKioNCi0gKiBh bWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9lbmQgLSBjYWxsYmFjayB0byBub3RpZnkgYWJvdXQg bW0gY2hhbmdlDQotICoNCi0gKiBAbW46IG91ciBub3RpZmllcg0KLSAqIEBtbTogdGhlIG1tIHRo aXMgY2FsbGJhY2sgaXMgYWJvdXQNCi0gKiBAc3RhcnQ6IHN0YXJ0IG9mIHVwZGF0ZWQgcmFuZ2UN Ci0gKiBAZW5kOiBlbmQgb2YgdXBkYXRlZCByYW5nZQ0KLSAqDQotICogUmVsZWFzZSB0aGUgbG9j ayBhZ2FpbiB0byBhbGxvdyBuZXcgY29tbWFuZCBzdWJtaXNzaW9ucy4NCisvKiBMb3cgYml0cyBv ZiBhbnkgcmVhc29uYWJsZSBtbSBwb2ludGVyIHdpbGwgYmUgdW51c2VkIGR1ZSB0byBzdHJ1Y3QN CisgKiBhbGlnbm1lbnQuIFVzZSB0aGVzZSBiaXRzIHRvIG1ha2UgYSB1bmlxdWUga2V5IGZyb20g dGhlIG1tIHBvaW50ZXINCisgKiBhbmQgbm90aWZpZXIgdHlwZS4NCiAgKi8NCi1zdGF0aWMgdm9p ZCBhbWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9lbmQoc3RydWN0IG1tdV9ub3RpZmllciAqbW4s DQotCQkJY29uc3Qgc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqcmFuZ2UpDQotew0KLQlzdHJ1 Y3QgYW1kZ3B1X21uICphbW4gPSBjb250YWluZXJfb2YobW4sIHN0cnVjdCBhbWRncHVfbW4sIG1u KTsNCi0NCi0JYW1kZ3B1X21uX3JlYWRfdW5sb2NrKGFtbik7DQotfQ0KKyNkZWZpbmUgQU1ER1BV X01OX0tFWShtbSwgdHlwZSkgKCh1bnNpZ25lZCBsb25nKShtbSkgKyAodHlwZSkpDQogDQotc3Rh dGljIGNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJfb3BzIGFtZGdwdV9tbl9vcHNbXSA9IHsNCitz dGF0aWMgc3RydWN0IGhtbV9taXJyb3Jfb3BzIGFtZGdwdV9obW1fbWlycm9yX29wc1tdID0gew0K IAlbQU1ER1BVX01OX1RZUEVfR0ZYXSA9IHsNCi0JCS5yZWxlYXNlID0gYW1kZ3B1X21uX3JlbGVh c2UsDQotCQkuaW52YWxpZGF0ZV9yYW5nZV9zdGFydCA9IGFtZGdwdV9tbl9pbnZhbGlkYXRlX3Jh bmdlX3N0YXJ0X2dmeCwNCi0JCS5pbnZhbGlkYXRlX3JhbmdlX2VuZCA9IGFtZGdwdV9tbl9pbnZh bGlkYXRlX3JhbmdlX2VuZCwNCisJCS5zeW5jX2NwdV9kZXZpY2VfcGFnZXRhYmxlcyA9IGFtZGdw dV9tbl9zeW5jX3BhZ2V0YWJsZXNfZ2Z4LA0KKwkJLnJlbGVhc2UgPSBhbWRncHVfaG1tX21pcnJv cl9yZWxlYXNlDQogCX0sDQogCVtBTURHUFVfTU5fVFlQRV9IU0FdID0gew0KLQkJLnJlbGVhc2Ug PSBhbWRncHVfbW5fcmVsZWFzZSwNCi0JCS5pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0ID0gYW1kZ3B1 X21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnRfaHNhLA0KLQkJLmludmFsaWRhdGVfcmFuZ2VfZW5k ID0gYW1kZ3B1X21uX2ludmFsaWRhdGVfcmFuZ2VfZW5kLA0KKwkJLnN5bmNfY3B1X2RldmljZV9w YWdldGFibGVzID0gYW1kZ3B1X21uX3N5bmNfcGFnZXRhYmxlc19oc2EsDQorCQkucmVsZWFzZSA9 IGFtZGdwdV9obW1fbWlycm9yX3JlbGVhc2UNCiAJfSwNCiB9Ow0KIA0KLS8qIExvdyBiaXRzIG9m IGFueSByZWFzb25hYmxlIG1tIHBvaW50ZXIgd2lsbCBiZSB1bnVzZWQgZHVlIHRvIHN0cnVjdA0K LSAqIGFsaWdubWVudC4gVXNlIHRoZXNlIGJpdHMgdG8gbWFrZSBhIHVuaXF1ZSBrZXkgZnJvbSB0 aGUgbW0gcG9pbnRlcg0KLSAqIGFuZCBub3RpZmllciB0eXBlLg0KLSAqLw0KLSNkZWZpbmUgQU1E R1BVX01OX0tFWShtbSwgdHlwZSkgKCh1bnNpZ25lZCBsb25nKShtbSkgKyAodHlwZSkpDQotDQog LyoqDQotICogYW1kZ3B1X21uX2dldCAtIGNyZWF0ZSBub3RpZmllciBjb250ZXh0DQorICogYW1k Z3B1X21uX2dldCAtIGNyZWF0ZSBITU0gbWlycm9yIGNvbnRleHQNCiAgKg0KICAqIEBhZGV2OiBh bWRncHUgZGV2aWNlIHBvaW50ZXINCiAgKiBAdHlwZTogdHlwZSBvZiBNTVUgbm90aWZpZXIgY29u dGV4dA0KICAqDQotICogQ3JlYXRlcyBhIG5vdGlmaWVyIGNvbnRleHQgZm9yIGN1cnJlbnQtPm1t Lg0KKyAqIENyZWF0ZXMgYSBITU0gbWlycm9yIGNvbnRleHQgZm9yIGN1cnJlbnQtPm1tLg0KICAq Lw0KIHN0cnVjdCBhbWRncHVfbW4gKmFtZGdwdV9tbl9nZXQoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsDQogCQkJCWVudW0gYW1kZ3B1X21uX3R5cGUgdHlwZSkNCkBAIC00MDEsMTIgKzM3OSwx MCBAQCBzdHJ1Y3QgYW1kZ3B1X21uICphbWRncHVfbW5fZ2V0KHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LA0KIAlhbW4tPm1tID0gbW07DQogCWluaXRfcndzZW0oJmFtbi0+bG9jayk7DQogCWFt bi0+dHlwZSA9IHR5cGU7DQotCWFtbi0+bW4ub3BzID0gJmFtZGdwdV9tbl9vcHNbdHlwZV07DQog CWFtbi0+b2JqZWN0cyA9IFJCX1JPT1RfQ0FDSEVEOw0KLQltdXRleF9pbml0KCZhbW4tPnJlYWRf bG9jayk7DQotCWF0b21pY19zZXQoJmFtbi0+cmVjdXJzaW9uLCAwKTsNCiANCi0JciA9IF9fbW11 X25vdGlmaWVyX3JlZ2lzdGVyKCZhbW4tPm1uLCBtbSk7DQorCWFtbi0+bWlycm9yLm9wcyA9ICZh bWRncHVfaG1tX21pcnJvcl9vcHNbdHlwZV07DQorCXIgPSBobW1fbWlycm9yX3JlZ2lzdGVyKCZh bW4tPm1pcnJvciwgbW0pOw0KIAlpZiAocikNCiAJCWdvdG8gZnJlZV9hbW47DQogDQpAQCAtNDMy LDcgKzQwOCw3IEBAIHN0cnVjdCBhbWRncHVfbW4gKmFtZGdwdV9tbl9nZXQoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsDQogICogQGJvOiBhbWRncHUgYnVmZmVyIG9iamVjdA0KICAqIEBhZGRy OiB1c2VycHRyIGFkZHIgd2Ugc2hvdWxkIG1vbml0b3INCiAgKg0KLSAqIFJlZ2lzdGVycyBhbiBN TVUgbm90aWZpZXIgZm9yIHRoZSBnaXZlbiBCTyBhdCB0aGUgc3BlY2lmaWVkIGFkZHJlc3MuDQor ICogUmVnaXN0ZXJzIGFuIEhNTSBtaXJyb3IgZm9yIHRoZSBnaXZlbiBCTyBhdCB0aGUgc3BlY2lm aWVkIGFkZHJlc3MuDQogICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIC1FUlJOTyBpZiBhbnl0aGlu ZyBnb2VzIHdyb25nLg0KICAqLw0KIGludCBhbWRncHVfbW5fcmVnaXN0ZXIoc3RydWN0IGFtZGdw dV9ibyAqYm8sIHVuc2lnbmVkIGxvbmcgYWRkcikNCkBAIC00ODgsMTEgKzQ2NCwxMSBAQCBpbnQg YW1kZ3B1X21uX3JlZ2lzdGVyKHN0cnVjdCBhbWRncHVfYm8gKmJvLCB1bnNpZ25lZCBsb25nIGFk ZHIpDQogfQ0KIA0KIC8qKg0KLSAqIGFtZGdwdV9tbl91bnJlZ2lzdGVyIC0gdW5yZWdpc3RlciBh IEJPIGZvciBub3RpZmllciB1cGRhdGVzDQorICogYW1kZ3B1X21uX3VucmVnaXN0ZXIgLSB1bnJl Z2lzdGVyIGEgQk8gZm9yIEhNTSBtaXJyb3IgdXBkYXRlcw0KICAqDQogICogQGJvOiBhbWRncHUg YnVmZmVyIG9iamVjdA0KICAqDQotICogUmVtb3ZlIGFueSByZWdpc3RyYXRpb24gb2YgTU1VIG5v dGlmaWVyIHVwZGF0ZXMgZnJvbSB0aGUgYnVmZmVyIG9iamVjdC4NCisgKiBSZW1vdmUgYW55IHJl Z2lzdHJhdGlvbiBvZiBITU0gbWlycm9yIHVwZGF0ZXMgZnJvbSB0aGUgYnVmZmVyIG9iamVjdC4N CiAgKi8NCiB2b2lkIGFtZGdwdV9tbl91bnJlZ2lzdGVyKHN0cnVjdCBhbWRncHVfYm8gKmJvKQ0K IHsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW4uaCBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5oDQppbmRleCBlYjBmNDMyZjc4 ZmUuLjBhNTFmZDAwMDIxYyAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9tbi5oDQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW4u aA0KQEAgLTM0LDcgKzM0LDcgQEAgZW51bSBhbWRncHVfbW5fdHlwZSB7DQogCUFNREdQVV9NTl9U WVBFX0hTQSwNCiB9Ow0KIA0KLSNpZiBkZWZpbmVkKENPTkZJR19NTVVfTk9USUZJRVIpDQorI2lm IGRlZmluZWQoQ09ORklHX0hNTV9NSVJST1IpDQogdm9pZCBhbWRncHVfbW5fbG9jayhzdHJ1Y3Qg YW1kZ3B1X21uICptbik7DQogdm9pZCBhbWRncHVfbW5fdW5sb2NrKHN0cnVjdCBhbWRncHVfbW4g Km1uKTsNCiBzdHJ1Y3QgYW1kZ3B1X21uICphbWRncHVfbW5fZ2V0KHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LA0KLS0gDQoyLjE3LjENCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9hbWQtZ2Z4Cg==