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: Wed, 17 Oct 2018 02:56:34 +0000 Message-ID: <1539744965-9103-1-git-send-email-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: <28D902FB3C84F744848B8B7F6348907E-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 ClRoaXMgZGVwZW5kcyBvbiBzZXZlcmFsIEhNTSBwYXRjaHNldCBmcm9tIErDqXLDtG1lIEdsaXNz ZSBxdWV1ZWQgZm9yDQp1cHN0cmVhbS4NCg0KQ2hhbmdlLUlkOiBJZTYyYzNjNWUzYzViODUyMWFi M2I0MzhkMWVmZjJhYTJhMDAzODM1ZQ0KU2lnbmVkLW9mZi1ieTogUGhpbGlwIFlhbmcgPFBoaWxp cC5ZYW5nQGFtZC5jb20+DQotLS0NCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmln ICAgICB8ICAgNiArLQ0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlICAgIHwg ICAyICstDQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmMgfCAxMjQgKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tDQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X21uLmggfCAgIDIgKy0NCiA0IGZpbGVzIGNoYW5nZWQsIDU3IGluc2VydGlvbnMo KyksIDc3IGRlbGV0aW9ucygtKQ0KDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWcNCmluZGV4 IDkyMjFlNTQuLjk2MGE2MzMgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9LY29uZmlnDQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnDQpAQCAt MjYsMTAgKzI2LDEwIEBAIGNvbmZpZyBEUk1fQU1ER1BVX0NJSw0KIGNvbmZpZyBEUk1fQU1ER1BV X1VTRVJQVFINCiAJYm9vbCAiQWx3YXlzIGVuYWJsZSB1c2VycHRyIHdyaXRlIHN1cHBvcnQiDQog CWRlcGVuZHMgb24gRFJNX0FNREdQVQ0KLQlzZWxlY3QgTU1VX05PVElGSUVSDQorCXNlbGVjdCBI TU1fTUlSUk9SDQogCWhlbHANCi0JICBUaGlzIG9wdGlvbiBzZWxlY3RzIENPTkZJR19NTVVfTk9U SUZJRVIgaWYgaXQgaXNuJ3QgYWxyZWFkeQ0KLQkgIHNlbGVjdGVkIHRvIGVuYWJsZWQgZnVsbCB1 c2VycHRyIHN1cHBvcnQuDQorCSAgVGhpcyBvcHRpb24gc2VsZWN0cyBDT05GSUdfSE1NIGFuZCBD T05GSUdfSE1NX01JUlJPUiBpZiBpdA0KKwkgIGlzbid0IGFscmVhZHkgc2VsZWN0ZWQgdG8gZW5h YmxlZCBmdWxsIHVzZXJwdHIgc3VwcG9ydC4NCiANCiBjb25maWcgRFJNX0FNREdQVV9HQVJUX0RF QlVHRlMNCiAJYm9vbCAiQWxsb3cgR0FSVCBhY2Nlc3MgdGhyb3VnaCBkZWJ1Z2ZzIg0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUNCmluZGV4IDEzOGNiNzguLmMxZTVkNDMgMTAwNjQ0DQot LS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZQ0KKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUNCkBAIC0xNzEsNyArMTcxLDcgQEAgZW5kaWYNCiBh bWRncHUtJChDT05GSUdfQ09NUEFUKSArPSBhbWRncHVfaW9jMzIubw0KIGFtZGdwdS0kKENPTkZJ R19WR0FfU1dJVENIRVJPTykgKz0gYW1kZ3B1X2F0cHhfaGFuZGxlci5vDQogYW1kZ3B1LSQoQ09O RklHX0FDUEkpICs9IGFtZGdwdV9hY3BpLm8NCi1hbWRncHUtJChDT05GSUdfTU1VX05PVElGSUVS KSArPSBhbWRncHVfbW4ubw0KK2FtZGdwdS0kKENPTkZJR19ITU0pICs9IGFtZGdwdV9tbi5vDQog DQogaW5jbHVkZSAkKEZVTExfQU1EX1BBVEgpL3Bvd2VycGxheS9NYWtlZmlsZQ0KIA0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmMNCmluZGV4IGU1NTUwOGIuLjU2NTk1YjMgMTAw NjQ0DQotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW4uYw0KKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmMNCkBAIC00NSw3ICs0NSw3IEBA DQogDQogI2luY2x1ZGUgPGxpbnV4L2Zpcm13YXJlLmg+DQogI2luY2x1ZGUgPGxpbnV4L21vZHVs ZS5oPg0KLSNpbmNsdWRlIDxsaW51eC9tbXVfbm90aWZpZXIuaD4NCisjaW5jbHVkZSA8bGludXgv aG1tLmg+DQogI2luY2x1ZGUgPGxpbnV4L2ludGVydmFsX3RyZWUuaD4NCiAjaW5jbHVkZSA8ZHJt L2RybVAuaD4NCiAjaW5jbHVkZSA8ZHJtL2RybS5oPg0KQEAgLTU4LDcgKzU4LDYgQEANCiAgKg0K ICAqIEBhZGV2OiBhbWRncHUgZGV2aWNlIHBvaW50ZXINCiAgKiBAbW06IHByb2Nlc3MgYWRkcmVz cyBzcGFjZQ0KLSAqIEBtbjogTU1VIG5vdGlmaWVyIHN0cnVjdHVyZQ0KICAqIEB0eXBlOiB0eXBl IG9mIE1NVSBub3RpZmllcg0KICAqIEB3b3JrOiBkZXN0cnVjdGlvbiB3b3JrIGl0ZW0NCiAgKiBA bm9kZTogaGFzaCB0YWJsZSBub2RlIHRvIGZpbmQgc3RydWN0dXJlIGJ5IGFkZXYgYW5kIG1uDQpA QCAtNjYsNiArNjUsNyBAQA0KICAqIEBvYmplY3RzOiBpbnRlcnZhbCB0cmVlIGNvbnRhaW5pbmcg YW1kZ3B1X21uX25vZGVzDQogICogQHJlYWRfbG9jazogbXV0ZXggZm9yIHJlY3Vyc2l2ZSBsb2Nr aW5nIG9mIEBsb2NrDQogICogQHJlY3Vyc2lvbjogZGVwdGggb2YgcmVjdXJzaW9uDQorICogQG1p cnJvcjogSE1NIG1pcnJvciBmdW5jdGlvbiBzdXBwb3J0DQogICoNCiAgKiBEYXRhIGZvciBlYWNo IGFtZGdwdSBkZXZpY2UgYW5kIHByb2Nlc3MgYWRkcmVzcyBzcGFjZS4NCiAgKi8NCkBAIC03Myw3 ICs3Myw2IEBAIHN0cnVjdCBhbWRncHVfbW4gew0KIAkvKiBjb25zdGFudCBhZnRlciBpbml0aWFs aXNhdGlvbiAqLw0KIAlzdHJ1Y3QgYW1kZ3B1X2RldmljZQkqYWRldjsNCiAJc3RydWN0IG1tX3N0 cnVjdAkqbW07DQotCXN0cnVjdCBtbXVfbm90aWZpZXIJbW47DQogCWVudW0gYW1kZ3B1X21uX3R5 cGUJdHlwZTsNCiANCiAJLyogb25seSB1c2VkIG9uIGRlc3RydWN0aW9uICovDQpAQCAtODcsNiAr ODYsOSBAQCBzdHJ1Y3QgYW1kZ3B1X21uIHsNCiAJc3RydWN0IHJiX3Jvb3RfY2FjaGVkCW9iamVj dHM7DQogCXN0cnVjdCBtdXRleAkJcmVhZF9sb2NrOw0KIAlhdG9taWNfdAkJcmVjdXJzaW9uOw0K Kw0KKwkvKiBITU0gbWlycm9yICovDQorCXN0cnVjdCBobW1fbWlycm9yCW1pcnJvcjsNCiB9Ow0K IA0KIC8qKg0KQEAgLTEwMyw3ICsxMDUsNyBAQCBzdHJ1Y3QgYW1kZ3B1X21uX25vZGUgew0KIH07 DQogDQogLyoqDQotICogYW1kZ3B1X21uX2Rlc3Ryb3kgLSBkZXN0cm95IHRoZSBNTVUgbm90aWZp ZXINCisgKiBhbWRncHVfbW5fZGVzdHJveSAtIGRlc3Ryb3kgdGhlIEhNTSBtaXJyb3INCiAgKg0K ICAqIEB3b3JrOiBwcmV2aW91c2x5IHNoZWR1bGVkIHdvcmsgaXRlbQ0KICAqDQpAQCAtMTI5LDI4 ICsxMzEsMjYgQEAgc3RhdGljIHZvaWQgYW1kZ3B1X21uX2Rlc3Ryb3koc3RydWN0IHdvcmtfc3Ry dWN0ICp3b3JrKQ0KIAl9DQogCXVwX3dyaXRlKCZhbW4tPmxvY2spOw0KIAltdXRleF91bmxvY2so JmFkZXYtPm1uX2xvY2spOw0KLQltbXVfbm90aWZpZXJfdW5yZWdpc3Rlcl9ub19yZWxlYXNlKCZh bW4tPm1uLCBhbW4tPm1tKTsNCisNCisJaG1tX21pcnJvcl91bnJlZ2lzdGVyKCZhbW4tPm1pcnJv cik7DQogCWtmcmVlKGFtbik7DQogfQ0KIA0KIC8qKg0KLSAqIGFtZGdwdV9tbl9yZWxlYXNlIC0g Y2FsbGJhY2sgdG8gbm90aWZ5IGFib3V0IG1tIGRlc3RydWN0aW9uDQorICogYW1kZ3B1X2htbV9t aXJyb3JfcmVsZWFzZSAtIGNhbGxiYWNrIHRvIG5vdGlmeSBhYm91dCBtbSBkZXN0cnVjdGlvbg0K ICAqDQotICogQG1uOiBvdXIgbm90aWZpZXINCi0gKiBAbW06IHRoZSBtbSB0aGlzIGNhbGxiYWNr IGlzIGFib3V0DQorICogQG1pcnJvcjogdGhlIEhNTSBtaXJyb3IgKG1tKSB0aGlzIGNhbGxiYWNr IGlzIGFib3V0DQogICoNCi0gKiBTaGVkdWxlIGEgd29yayBpdGVtIHRvIGxhenkgZGVzdHJveSBv dXIgbm90aWZpZXIuDQorICogU2hlZHVsZSBhIHdvcmsgaXRlbSB0byBsYXp5IGRlc3Ryb3kgSE1N IG1pcnJvci4NCiAgKi8NCi1zdGF0aWMgdm9pZCBhbWRncHVfbW5fcmVsZWFzZShzdHJ1Y3QgbW11 X25vdGlmaWVyICptbiwNCi0JCQkgICAgICBzdHJ1Y3QgbW1fc3RydWN0ICptbSkNCitzdGF0aWMg dm9pZCBhbWRncHVfaG1tX21pcnJvcl9yZWxlYXNlKHN0cnVjdCBobW1fbWlycm9yICptaXJyb3Ip DQogew0KLQlzdHJ1Y3QgYW1kZ3B1X21uICphbW4gPSBjb250YWluZXJfb2YobW4sIHN0cnVjdCBh bWRncHVfbW4sIG1uKTsNCisJc3RydWN0IGFtZGdwdV9tbiAqYW1uID0gY29udGFpbmVyX29mKG1p cnJvciwgc3RydWN0IGFtZGdwdV9tbiwgbWlycm9yKTsNCiANCiAJSU5JVF9XT1JLKCZhbW4tPndv cmssIGFtZGdwdV9tbl9kZXN0cm95KTsNCiAJc2NoZWR1bGVfd29yaygmYW1uLT53b3JrKTsNCiB9 DQogDQotDQogLyoqDQogICogYW1kZ3B1X21uX2xvY2sgLSB0YWtlIHRoZSB3cml0ZSBzaWRlIGxv Y2sgZm9yIHRoaXMgbm90aWZpZXINCiAgKg0KQEAgLTIzNywyMSArMjM3LDE5IEBAIHN0YXRpYyB2 b2lkIGFtZGdwdV9tbl9pbnZhbGlkYXRlX25vZGUoc3RydWN0IGFtZGdwdV9tbl9ub2RlICpub2Rl LA0KIC8qKg0KICAqIGFtZGdwdV9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0X2dmeCAtIGNhbGxi YWNrIHRvIG5vdGlmeSBhYm91dCBtbSBjaGFuZ2UNCiAgKg0KLSAqIEBtbjogb3VyIG5vdGlmaWVy DQotICogQG1tOiB0aGUgbW0gdGhpcyBjYWxsYmFjayBpcyBhYm91dA0KLSAqIEBzdGFydDogc3Rh cnQgb2YgdXBkYXRlZCByYW5nZQ0KLSAqIEBlbmQ6IGVuZCBvZiB1cGRhdGVkIHJhbmdlDQorICog QG1pcnJvcjogdGhlIGhtbV9taXJyb3IgKG1tKSBpcyBhYm91dCB0byB1cGRhdGUNCisgKiBAdXBk YXRlOiB0aGUgdXBkYXRlIHN0YXJ0LCBlbmQgYWRkcmVzcw0KICAqDQogICogQmxvY2sgZm9yIG9w ZXJhdGlvbnMgb24gQk9zIHRvIGZpbmlzaCBhbmQgbWFyayBwYWdlcyBhcyBhY2Nlc3NlZCBhbmQN CiAgKiBwb3RlbnRpYWxseSBkaXJ0eS4NCiAgKi8NCi1zdGF0aWMgaW50IGFtZGdwdV9tbl9pbnZh bGlkYXRlX3JhbmdlX3N0YXJ0X2dmeChzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwNCi0JCQkJCQkg c3RydWN0IG1tX3N0cnVjdCAqbW0sDQotCQkJCQkJIHVuc2lnbmVkIGxvbmcgc3RhcnQsDQotCQkJ CQkJIHVuc2lnbmVkIGxvbmcgZW5kLA0KLQkJCQkJCSBib29sIGJsb2NrYWJsZSkNCitzdGF0aWMg aW50IGFtZGdwdV9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0X2dmeChzdHJ1Y3QgaG1tX21pcnJv ciAqbWlycm9yLA0KKwkJCWNvbnN0IHN0cnVjdCBobW1fdXBkYXRlICp1cGRhdGUpDQogew0KLQlz dHJ1Y3QgYW1kZ3B1X21uICphbW4gPSBjb250YWluZXJfb2YobW4sIHN0cnVjdCBhbWRncHVfbW4s IG1uKTsNCisJc3RydWN0IGFtZGdwdV9tbiAqYW1uID0gY29udGFpbmVyX29mKG1pcnJvciwgc3Ry dWN0IGFtZGdwdV9tbiwgbWlycm9yKTsNCisJdW5zaWduZWQgbG9uZyBzdGFydCA9IHVwZGF0ZS0+ c3RhcnQ7DQorCXVuc2lnbmVkIGxvbmcgZW5kID0gdXBkYXRlLT5lbmQ7DQorCWJvb2wgYmxvY2th YmxlID0gdXBkYXRlLT5ibG9ja2FibGU7DQogCXN0cnVjdCBpbnRlcnZhbF90cmVlX25vZGUgKml0 Ow0KIA0KIAkvKiBub3RpZmljYXRpb24gaXMgZXhjbHVzaXZlLCBidXQgaW50ZXJ2YWwgaXMgaW5j bHVzaXZlICovDQpAQCAtMjc4LDI4ICsyNzYsMjggQEAgc3RhdGljIGludCBhbWRncHVfbW5faW52 YWxpZGF0ZV9yYW5nZV9zdGFydF9nZngoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sDQogCQlhbWRn cHVfbW5faW52YWxpZGF0ZV9ub2RlKG5vZGUsIHN0YXJ0LCBlbmQpOw0KIAl9DQogDQorCWFtZGdw dV9tbl9yZWFkX3VubG9jayhhbW4pOw0KKw0KIAlyZXR1cm4gMDsNCiB9DQogDQogLyoqDQogICog YW1kZ3B1X21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnRfaHNhIC0gY2FsbGJhY2sgdG8gbm90aWZ5 IGFib3V0IG1tIGNoYW5nZQ0KICAqDQotICogQG1uOiBvdXIgbm90aWZpZXINCi0gKiBAbW06IHRo ZSBtbSB0aGlzIGNhbGxiYWNrIGlzIGFib3V0DQotICogQHN0YXJ0OiBzdGFydCBvZiB1cGRhdGVk IHJhbmdlDQotICogQGVuZDogZW5kIG9mIHVwZGF0ZWQgcmFuZ2UNCisgKiBAbWlycm9yOiB0aGUg aG1tX21pcnJvciAobW0pIGlzIGFib3V0IHRvIHVwZGF0ZQ0KKyAqIEB1cGRhdGU6IHRoZSB1cGRh dGUgc3RhcnQsIGVuZCBhZGRyZXNzDQogICoNCiAgKiBXZSB0ZW1wb3JhcmlseSBldmljdCBhbGwg Qk9zIGJldHdlZW4gc3RhcnQgYW5kIGVuZC4gVGhpcw0KICAqIG5lY2Vzc2l0YXRlcyBldmljdGlu ZyBhbGwgdXNlci1tb2RlIHF1ZXVlcyBvZiB0aGUgcHJvY2Vzcy4gVGhlIEJPcw0KICAqIGFyZSBy ZXN0b3J0ZWQgaW4gYW1kZ3B1X21uX2ludmFsaWRhdGVfcmFuZ2VfZW5kX2hzYS4NCiAgKi8NCi1z dGF0aWMgaW50IGFtZGdwdV9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0X2hzYShzdHJ1Y3QgbW11 X25vdGlmaWVyICptbiwNCi0JCQkJCQkgc3RydWN0IG1tX3N0cnVjdCAqbW0sDQotCQkJCQkJIHVu c2lnbmVkIGxvbmcgc3RhcnQsDQotCQkJCQkJIHVuc2lnbmVkIGxvbmcgZW5kLA0KLQkJCQkJCSBi b29sIGJsb2NrYWJsZSkNCitzdGF0aWMgaW50IGFtZGdwdV9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0 YXJ0X2hzYShzdHJ1Y3QgaG1tX21pcnJvciAqbWlycm9yLA0KKwkJCWNvbnN0IHN0cnVjdCBobW1f dXBkYXRlICp1cGRhdGUpDQogew0KLQlzdHJ1Y3QgYW1kZ3B1X21uICphbW4gPSBjb250YWluZXJf b2YobW4sIHN0cnVjdCBhbWRncHVfbW4sIG1uKTsNCisJc3RydWN0IGFtZGdwdV9tbiAqYW1uID0g Y29udGFpbmVyX29mKG1pcnJvciwgc3RydWN0IGFtZGdwdV9tbiwgbWlycm9yKTsNCisJdW5zaWdu ZWQgbG9uZyBzdGFydCA9IHVwZGF0ZS0+c3RhcnQ7DQorCXVuc2lnbmVkIGxvbmcgZW5kID0gdXBk YXRlLT5lbmQ7DQorCWJvb2wgYmxvY2thYmxlID0gdXBkYXRlLT5ibG9ja2FibGU7DQogCXN0cnVj dCBpbnRlcnZhbF90cmVlX25vZGUgKml0Ow0KIA0KIAkvKiBub3RpZmljYXRpb24gaXMgZXhjbHVz aXZlLCBidXQgaW50ZXJ2YWwgaXMgaW5jbHVzaXZlICovDQpAQCAtMzI2LDU5ICszMjQsNDEgQEAg c3RhdGljIGludCBhbWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydF9oc2Eoc3RydWN0IG1t dV9ub3RpZmllciAqbW4sDQogDQogCQkJaWYgKGFtZGdwdV90dG1fdHRfYWZmZWN0X3VzZXJwdHIo Ym8tPnRiby50dG0sDQogCQkJCQkJCSBzdGFydCwgZW5kKSkNCi0JCQkJYW1kZ3B1X2FtZGtmZF9l dmljdF91c2VycHRyKG1lbSwgbW0pOw0KKwkJCQlhbWRncHVfYW1ka2ZkX2V2aWN0X3VzZXJwdHIo bWVtLCBhbW4tPm1tKTsNCiAJCX0NCiAJfQ0KIA0KKwlhbWRncHVfbW5fcmVhZF91bmxvY2soYW1u KTsNCisNCiAJcmV0dXJuIDA7DQogfQ0KIA0KLS8qKg0KLSAqIGFtZGdwdV9tbl9pbnZhbGlkYXRl X3JhbmdlX2VuZCAtIGNhbGxiYWNrIHRvIG5vdGlmeSBhYm91dCBtbSBjaGFuZ2UNCi0gKg0KLSAq IEBtbjogb3VyIG5vdGlmaWVyDQotICogQG1tOiB0aGUgbW0gdGhpcyBjYWxsYmFjayBpcyBhYm91 dA0KLSAqIEBzdGFydDogc3RhcnQgb2YgdXBkYXRlZCByYW5nZQ0KLSAqIEBlbmQ6IGVuZCBvZiB1 cGRhdGVkIHJhbmdlDQotICoNCi0gKiBSZWxlYXNlIHRoZSBsb2NrIGFnYWluIHRvIGFsbG93IG5l dyBjb21tYW5kIHN1Ym1pc3Npb25zLg0KKy8qIExvdyBiaXRzIG9mIGFueSByZWFzb25hYmxlIG1t IHBvaW50ZXIgd2lsbCBiZSB1bnVzZWQgZHVlIHRvIHN0cnVjdA0KKyAqIGFsaWdubWVudC4gVXNl IHRoZXNlIGJpdHMgdG8gbWFrZSBhIHVuaXF1ZSBrZXkgZnJvbSB0aGUgbW0gcG9pbnRlcg0KKyAq IGFuZCBub3RpZmllciB0eXBlLg0KICAqLw0KLXN0YXRpYyB2b2lkIGFtZGdwdV9tbl9pbnZhbGlk YXRlX3JhbmdlX2VuZChzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwNCi0JCQkJCSAgIHN0cnVjdCBt bV9zdHJ1Y3QgKm1tLA0KLQkJCQkJICAgdW5zaWduZWQgbG9uZyBzdGFydCwNCi0JCQkJCSAgIHVu c2lnbmVkIGxvbmcgZW5kKQ0KLXsNCi0Jc3RydWN0IGFtZGdwdV9tbiAqYW1uID0gY29udGFpbmVy X29mKG1uLCBzdHJ1Y3QgYW1kZ3B1X21uLCBtbik7DQotDQotCWFtZGdwdV9tbl9yZWFkX3VubG9j ayhhbW4pOw0KLX0NCisjZGVmaW5lIEFNREdQVV9NTl9LRVkobW0sIHR5cGUpICgodW5zaWduZWQg bG9uZykobW0pICsgKHR5cGUpKQ0KIA0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVy X29wcyBhbWRncHVfbW5fb3BzW10gPSB7DQorc3RhdGljIHN0cnVjdCBobW1fbWlycm9yX29wcyBh bWRncHVfaG1tX21pcnJvcl9vcHNbXSA9IHsNCiAJW0FNREdQVV9NTl9UWVBFX0dGWF0gPSB7DQot CQkucmVsZWFzZSA9IGFtZGdwdV9tbl9yZWxlYXNlLA0KLQkJLmludmFsaWRhdGVfcmFuZ2Vfc3Rh cnQgPSBhbWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydF9nZngsDQotCQkuaW52YWxpZGF0 ZV9yYW5nZV9lbmQgPSBhbWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9lbmQsDQorCQkuc3luY19j cHVfZGV2aWNlX3BhZ2V0YWJsZXMgPQ0KKwkJCQlhbWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9z dGFydF9nZngsDQorCQkucmVsZWFzZSA9IGFtZGdwdV9obW1fbWlycm9yX3JlbGVhc2UNCiAJfSwN CiAJW0FNREdQVV9NTl9UWVBFX0hTQV0gPSB7DQotCQkucmVsZWFzZSA9IGFtZGdwdV9tbl9yZWxl YXNlLA0KLQkJLmludmFsaWRhdGVfcmFuZ2Vfc3RhcnQgPSBhbWRncHVfbW5faW52YWxpZGF0ZV9y YW5nZV9zdGFydF9oc2EsDQotCQkuaW52YWxpZGF0ZV9yYW5nZV9lbmQgPSBhbWRncHVfbW5faW52 YWxpZGF0ZV9yYW5nZV9lbmQsDQorCQkuc3luY19jcHVfZGV2aWNlX3BhZ2V0YWJsZXMgPQ0KKwkJ CQlhbWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydF9oc2EsDQorCQkucmVsZWFzZSA9IGFt ZGdwdV9obW1fbWlycm9yX3JlbGVhc2UNCiAJfSwNCiB9Ow0KIA0KLS8qIExvdyBiaXRzIG9mIGFu eSByZWFzb25hYmxlIG1tIHBvaW50ZXIgd2lsbCBiZSB1bnVzZWQgZHVlIHRvIHN0cnVjdA0KLSAq IGFsaWdubWVudC4gVXNlIHRoZXNlIGJpdHMgdG8gbWFrZSBhIHVuaXF1ZSBrZXkgZnJvbSB0aGUg bW0gcG9pbnRlcg0KLSAqIGFuZCBub3RpZmllciB0eXBlLg0KLSAqLw0KLSNkZWZpbmUgQU1ER1BV X01OX0tFWShtbSwgdHlwZSkgKCh1bnNpZ25lZCBsb25nKShtbSkgKyAodHlwZSkpDQotDQogLyoq DQotICogYW1kZ3B1X21uX2dldCAtIGNyZWF0ZSBub3RpZmllciBjb250ZXh0DQorICogYW1kZ3B1 X21uX2dldCAtIGNyZWF0ZSBITU0gbWlycm9yIGNvbnRleHQNCiAgKg0KICAqIEBhZGV2OiBhbWRn cHUgZGV2aWNlIHBvaW50ZXINCiAgKiBAdHlwZTogdHlwZSBvZiBNTVUgbm90aWZpZXIgY29udGV4 dA0KICAqDQotICogQ3JlYXRlcyBhIG5vdGlmaWVyIGNvbnRleHQgZm9yIGN1cnJlbnQtPm1tLg0K KyAqIENyZWF0ZXMgYSBITU0gbWlycm9yIGNvbnRleHQgZm9yIGN1cnJlbnQtPm1tLg0KICAqLw0K IHN0cnVjdCBhbWRncHVfbW4gKmFtZGdwdV9tbl9nZXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsDQogCQkJCWVudW0gYW1kZ3B1X21uX3R5cGUgdHlwZSkNCkBAIC00MDgsMTIgKzM4OCwxMiBA QCBzdHJ1Y3QgYW1kZ3B1X21uICphbWRncHVfbW5fZ2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LA0KIAlhbW4tPm1tID0gbW07DQogCWluaXRfcndzZW0oJmFtbi0+bG9jayk7DQogCWFtbi0+ dHlwZSA9IHR5cGU7DQotCWFtbi0+bW4ub3BzID0gJmFtZGdwdV9tbl9vcHNbdHlwZV07DQogCWFt bi0+b2JqZWN0cyA9IFJCX1JPT1RfQ0FDSEVEOw0KIAltdXRleF9pbml0KCZhbW4tPnJlYWRfbG9j ayk7DQogCWF0b21pY19zZXQoJmFtbi0+cmVjdXJzaW9uLCAwKTsNCiANCi0JciA9IF9fbW11X25v dGlmaWVyX3JlZ2lzdGVyKCZhbW4tPm1uLCBtbSk7DQorCWFtbi0+bWlycm9yLm9wcyA9ICZhbWRn cHVfaG1tX21pcnJvcl9vcHNbdHlwZV07DQorCXIgPSBobW1fbWlycm9yX3JlZ2lzdGVyKCZhbW4t Pm1pcnJvciwgbW0pOw0KIAlpZiAocikNCiAJCWdvdG8gZnJlZV9hbW47DQogDQpAQCAtNDM5LDcg KzQxOSw3IEBAIHN0cnVjdCBhbWRncHVfbW4gKmFtZGdwdV9tbl9nZXQoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYsDQogICogQGJvOiBhbWRncHUgYnVmZmVyIG9iamVjdA0KICAqIEBhZGRyOiB1 c2VycHRyIGFkZHIgd2Ugc2hvdWxkIG1vbml0b3INCiAgKg0KLSAqIFJlZ2lzdGVycyBhbiBNTVUg bm90aWZpZXIgZm9yIHRoZSBnaXZlbiBCTyBhdCB0aGUgc3BlY2lmaWVkIGFkZHJlc3MuDQorICog UmVnaXN0ZXJzIGFuIEhNTSBtaXJyb3IgZm9yIHRoZSBnaXZlbiBCTyBhdCB0aGUgc3BlY2lmaWVk IGFkZHJlc3MuDQogICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIC1FUlJOTyBpZiBhbnl0aGluZyBn b2VzIHdyb25nLg0KICAqLw0KIGludCBhbWRncHVfbW5fcmVnaXN0ZXIoc3RydWN0IGFtZGdwdV9i byAqYm8sIHVuc2lnbmVkIGxvbmcgYWRkcikNCkBAIC00OTUsMTEgKzQ3NSwxMSBAQCBpbnQgYW1k Z3B1X21uX3JlZ2lzdGVyKHN0cnVjdCBhbWRncHVfYm8gKmJvLCB1bnNpZ25lZCBsb25nIGFkZHIp DQogfQ0KIA0KIC8qKg0KLSAqIGFtZGdwdV9tbl91bnJlZ2lzdGVyIC0gdW5yZWdpc3RlciBhIEJP IGZvciBub3RpZmllciB1cGRhdGVzDQorICogYW1kZ3B1X21uX3VucmVnaXN0ZXIgLSB1bnJlZ2lz dGVyIGEgQk8gZm9yIEhNTSBtaXJyb3IgdXBkYXRlcw0KICAqDQogICogQGJvOiBhbWRncHUgYnVm ZmVyIG9iamVjdA0KICAqDQotICogUmVtb3ZlIGFueSByZWdpc3RyYXRpb24gb2YgTU1VIG5vdGlm aWVyIHVwZGF0ZXMgZnJvbSB0aGUgYnVmZmVyIG9iamVjdC4NCisgKiBSZW1vdmUgYW55IHJlZ2lz dHJhdGlvbiBvZiBITU0gbWlycm9yIHVwZGF0ZXMgZnJvbSB0aGUgYnVmZmVyIG9iamVjdC4NCiAg Ki8NCiB2b2lkIGFtZGdwdV9tbl91bnJlZ2lzdGVyKHN0cnVjdCBhbWRncHVfYm8gKmJvKQ0KIHsN CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW4uaCBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5oDQppbmRleCBlYjBmNDMyLi4wZTI3 NTI2IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmgN CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5oDQpAQCAtMzQsNyAr MzQsNyBAQCBlbnVtIGFtZGdwdV9tbl90eXBlIHsNCiAJQU1ER1BVX01OX1RZUEVfSFNBLA0KIH07 DQogDQotI2lmIGRlZmluZWQoQ09ORklHX01NVV9OT1RJRklFUikNCisjaWYgZGVmaW5lZChDT05G SUdfSE1NKQ0KIHZvaWQgYW1kZ3B1X21uX2xvY2soc3RydWN0IGFtZGdwdV9tbiAqbW4pOw0KIHZv aWQgYW1kZ3B1X21uX3VubG9jayhzdHJ1Y3QgYW1kZ3B1X21uICptbik7DQogc3RydWN0IGFtZGdw dV9tbiAqYW1kZ3B1X21uX2dldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCi0tIA0KMi43 LjQNCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1k LWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==