From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH] drm/amdgpu: use HMM mirror callback to replace mmu notifier v4 Date: Fri, 14 Sep 2018 09:51:57 +0200 Message-ID: <58bc3bb9-b7b1-a32f-e355-c78a23d95215@gmail.com> References: <1536871954-8451-1-git-send-email-Philip.Yang@amd.com> <9d6717ac-23f0-7beb-6e41-58c6e32acdf8@amd.com> Reply-To: christian.koenig-5C7GfCeVMHo@public.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <9d6717ac-23f0-7beb-6e41-58c6e32acdf8-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: Felix Kuehling , Philip Yang , amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: =?UTF-8?Q?Christian_K=c3=b6nig?= QW0gMTMuMDkuMjAxOCB1bSAyMzo1MSBzY2hyaWViIEZlbGl4IEt1ZWhsaW5nOgo+IE9uIDIwMTgt MDktMTMgMDQ6NTIgUE0sIFBoaWxpcCBZYW5nIHdyb3RlOgo+PiBSZXBsYWNlIG91ciBNTVUgbm90 aWZpZXIgd2l0aCBobW1fbWlycm9yX29wcy5zeW5jX2NwdV9kZXZpY2VfcGFnZXRhYmxlcwo+PiBj YWxsYmFjay4gRW5hYmxlIENPTkZJR19ITU0gYW5kIENPTkZJR19ITU1fTUlSUk9SIGFzIGEgZGVw ZW5kZW5jeSBpbgo+PiBEUk1fQU1ER1BVX1VTRVJQVFIgS2NvbmZpZy4KPj4KPj4gSXQgc3VwcG9y dHMgYm90aCBLRkQgdXNlcnB0ciBhbmQgZ2Z4IHVzZXJwdHIgcGF0aHMuCj4+Cj4+IFRoaXMgZGVw ZW5kcyBvbiBzZXZlcmFsIEhNTSBwYXRjaHNldCBmcm9tIErDqXLDtG1lIEdsaXNzZSBxdWV1ZWQg Zm9yCj4+IHVwc3RyZWFtLgo+Pgo+PiBDaGFuZ2UtSWQ6IEllNjJjM2M1ZTNjNWI4NTIxYWIzYjQz OGQxZWZmMmFhMmEwMDM4MzVlCj4+IFNpZ25lZC1vZmYtYnk6IFBoaWxpcCBZYW5nIDxQaGlsaXAu WWFuZ0BhbWQuY29tPgo+PiAtLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29u ZmlnICAgICB8ICAgNiArLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxl ICAgIHwgICAyICstCj4+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmMg fCAxMjEgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCj4+ICAgZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmggfCAgIDIgKy0KPj4gICA0IGZpbGVzIGNoYW5nZWQs IDU2IGluc2VydGlvbnMoKyksIDc1IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L0tjb25maWcKPj4gaW5kZXggOTIyMWU1NC4uOTYwYTYzMyAxMDA2NDQKPj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9LY29uZmlnCj4+IEBAIC0yNiwxMCArMjYsMTAgQEAgY29uZmlnIERSTV9BTURH UFVfQ0lLCj4+ICAgY29uZmlnIERSTV9BTURHUFVfVVNFUlBUUgo+PiAgIAlib29sICJBbHdheXMg ZW5hYmxlIHVzZXJwdHIgd3JpdGUgc3VwcG9ydCIKPj4gICAJZGVwZW5kcyBvbiBEUk1fQU1ER1BV Cj4+IC0Jc2VsZWN0IE1NVV9OT1RJRklFUgo+PiArCXNlbGVjdCBITU1fTUlSUk9SCj4+ICAgCWhl bHAKPj4gLQkgIFRoaXMgb3B0aW9uIHNlbGVjdHMgQ09ORklHX01NVV9OT1RJRklFUiBpZiBpdCBp c24ndCBhbHJlYWR5Cj4+IC0JICBzZWxlY3RlZCB0byBlbmFibGVkIGZ1bGwgdXNlcnB0ciBzdXBw b3J0Lgo+PiArCSAgVGhpcyBvcHRpb24gc2VsZWN0cyBDT05GSUdfSE1NIGFuZCBDT05GSUdfSE1N X01JUlJPUiBpZiBpdAo+PiArCSAgaXNuJ3QgYWxyZWFkeSBzZWxlY3RlZCB0byBlbmFibGVkIGZ1 bGwgdXNlcnB0ciBzdXBwb3J0Lgo+PiAgIAo+PiAgIGNvbmZpZyBEUk1fQU1ER1BVX0dBUlRfREVC VUdGUwo+PiAgIAlib29sICJBbGxvdyBHQVJUIGFjY2VzcyB0aHJvdWdoIGRlYnVnZnMiCj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZSBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlCj4+IGluZGV4IDEzOGNiNzguLmMxZTVkNDMgMTAw NjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlCj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlCj4+IEBAIC0xNzEsNyArMTcxLDcg QEAgZW5kaWYKPj4gICBhbWRncHUtJChDT05GSUdfQ09NUEFUKSArPSBhbWRncHVfaW9jMzIubwo+ PiAgIGFtZGdwdS0kKENPTkZJR19WR0FfU1dJVENIRVJPTykgKz0gYW1kZ3B1X2F0cHhfaGFuZGxl ci5vCj4+ICAgYW1kZ3B1LSQoQ09ORklHX0FDUEkpICs9IGFtZGdwdV9hY3BpLm8KPj4gLWFtZGdw dS0kKENPTkZJR19NTVVfTk9USUZJRVIpICs9IGFtZGdwdV9tbi5vCj4+ICthbWRncHUtJChDT05G SUdfSE1NKSArPSBhbWRncHVfbW4ubwo+PiAgIAo+PiAgIGluY2x1ZGUgJChGVUxMX0FNRF9QQVRI KS9wb3dlcnBsYXkvTWFrZWZpbGUKPj4gICAKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X21uLmMKPj4gaW5kZXggZTU1NTA4Yi4uYWQ1MmYzNCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X21uLmMKPj4gQEAgLTQ1LDcgKzQ1LDcgQEAKPj4gICAKPj4gICAj aW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4KPj4gICAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+ Cj4+IC0jaW5jbHVkZSA8bGludXgvbW11X25vdGlmaWVyLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgv aG1tLmg+Cj4+ICAgI2luY2x1ZGUgPGxpbnV4L2ludGVydmFsX3RyZWUuaD4KPj4gICAjaW5jbHVk ZSA8ZHJtL2RybVAuaD4KPj4gICAjaW5jbHVkZSA8ZHJtL2RybS5oPgo+PiBAQCAtNjYsNiArNjYs NyBAQAo+IE5lZWQgdG8gcmVtb3ZlIEBtbiBkb2N1bWVudGF0aW9uLgo+Cj4+ICAgICogQG9iamVj dHM6IGludGVydmFsIHRyZWUgY29udGFpbmluZyBhbWRncHVfbW5fbm9kZXMKPj4gICAgKiBAcmVh ZF9sb2NrOiBtdXRleCBmb3IgcmVjdXJzaXZlIGxvY2tpbmcgb2YgQGxvY2sKPj4gICAgKiBAcmVj dXJzaW9uOiBkZXB0aCBvZiByZWN1cnNpb24KPj4gKyAqIEBtaXJyb3I6IEhNTSBtaXJyb3IgZnVu Y3Rpb24gc3VwcG9ydAo+PiAgICAqCj4+ICAgICogRGF0YSBmb3IgZWFjaCBhbWRncHUgZGV2aWNl IGFuZCBwcm9jZXNzIGFkZHJlc3Mgc3BhY2UuCj4+ICAgICovCj4+IEBAIC03Myw3ICs3NCw2IEBA IHN0cnVjdCBhbWRncHVfbW4gewo+PiAgIAkvKiBjb25zdGFudCBhZnRlciBpbml0aWFsaXNhdGlv biAqLwo+PiAgIAlzdHJ1Y3QgYW1kZ3B1X2RldmljZQkqYWRldjsKPj4gICAJc3RydWN0IG1tX3N0 cnVjdAkqbW07Cj4+IC0Jc3RydWN0IG1tdV9ub3RpZmllcgltbjsKPj4gICAJZW51bSBhbWRncHVf bW5fdHlwZQl0eXBlOwo+PiAgIAo+PiAgIAkvKiBvbmx5IHVzZWQgb24gZGVzdHJ1Y3Rpb24gKi8K Pj4gQEAgLTg3LDYgKzg3LDkgQEAgc3RydWN0IGFtZGdwdV9tbiB7Cj4+ICAgCXN0cnVjdCByYl9y b290X2NhY2hlZAlvYmplY3RzOwo+PiAgIAlzdHJ1Y3QgbXV0ZXgJCXJlYWRfbG9jazsKPj4gICAJ YXRvbWljX3QJCXJlY3Vyc2lvbjsKPj4gKwo+PiArCS8qIEhNTSBtaXJyb3IgKi8KPj4gKwlzdHJ1 Y3QgaG1tX21pcnJvcgltaXJyb3I7Cj4+ICAgfTsKPj4gICAKPj4gICAvKioKPj4gQEAgLTEwMyw3 ICsxMDYsNyBAQCBzdHJ1Y3QgYW1kZ3B1X21uX25vZGUgewo+PiAgIH07Cj4+ICAgCj4+ICAgLyoq Cj4+IC0gKiBhbWRncHVfbW5fZGVzdHJveSAtIGRlc3Ryb3kgdGhlIE1NVSBub3RpZmllcgo+PiAr ICogYW1kZ3B1X21uX2Rlc3Ryb3kgLSBkZXN0cm95IHRoZSBITU0gbWlycm9yCj4+ICAgICoKPj4g ICAgKiBAd29yazogcHJldmlvdXNseSBzaGVkdWxlZCB3b3JrIGl0ZW0KPj4gICAgKgo+PiBAQCAt MTI5LDI4ICsxMzIsMjYgQEAgc3RhdGljIHZvaWQgYW1kZ3B1X21uX2Rlc3Ryb3koc3RydWN0IHdv cmtfc3RydWN0ICp3b3JrKQo+PiAgIAl9Cj4+ICAgCXVwX3dyaXRlKCZhbW4tPmxvY2spOwo+PiAg IAltdXRleF91bmxvY2soJmFkZXYtPm1uX2xvY2spOwo+PiAtCW1tdV9ub3RpZmllcl91bnJlZ2lz dGVyX25vX3JlbGVhc2UoJmFtbi0+bW4sIGFtbi0+bW0pOwo+PiArCWhtbV9taXJyb3JfdW5yZWdp c3RlcigmYW1uLT5taXJyb3IpOwo+PiArCj4+ICAgCWtmcmVlKGFtbik7Cj4+ICAgfQo+PiAgIAo+ PiAgIC8qKgo+PiAgICAqIGFtZGdwdV9tbl9yZWxlYXNlIC0gY2FsbGJhY2sgdG8gbm90aWZ5IGFi b3V0IG1tIGRlc3RydWN0aW9uCj4gVXBkYXRlIHRoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBjb21t ZW50Lgo+Cj4+ICAgICoKPj4gLSAqIEBtbjogb3VyIG5vdGlmaWVyCj4+IC0gKiBAbW06IHRoZSBt bSB0aGlzIGNhbGxiYWNrIGlzIGFib3V0Cj4+ICsgKiBAbWlycm9yOiB0aGUgSE1NIG1pcnJvciAo bW0pIHRoaXMgY2FsbGJhY2sgaXMgYWJvdXQKPj4gICAgKgo+PiAtICogU2hlZHVsZSBhIHdvcmsg aXRlbSB0byBsYXp5IGRlc3Ryb3kgb3VyIG5vdGlmaWVyLgo+PiArICogU2hlZHVsZSBhIHdvcmsg aXRlbSB0byBsYXp5IGRlc3Ryb3kgSE1NIG1pcnJvci4KPj4gICAgKi8KPj4gLXN0YXRpYyB2b2lk IGFtZGdwdV9tbl9yZWxlYXNlKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAo+PiAtCQkJICAgICAg c3RydWN0IG1tX3N0cnVjdCAqbW0pCj4+ICtzdGF0aWMgdm9pZCBhbWRncHVfaG1tX21pcnJvcl9y ZWxlYXNlKHN0cnVjdCBobW1fbWlycm9yICptaXJyb3IpCj4+ICAgewo+PiAtCXN0cnVjdCBhbWRn cHVfbW4gKmFtbiA9IGNvbnRhaW5lcl9vZihtbiwgc3RydWN0IGFtZGdwdV9tbiwgbW4pOwo+PiAr CXN0cnVjdCBhbWRncHVfbW4gKmFtbiA9IGNvbnRhaW5lcl9vZihtaXJyb3IsIHN0cnVjdCBhbWRn cHVfbW4sIG1pcnJvcik7Cj4+ICAgCj4+ICAgCUlOSVRfV09SSygmYW1uLT53b3JrLCBhbWRncHVf bW5fZGVzdHJveSk7Cj4+ICAgCXNjaGVkdWxlX3dvcmsoJmFtbi0+d29yayk7Cj4+ICAgfQo+PiAg IAo+PiAtCj4+ICAgLyoqCj4+ICAgICogYW1kZ3B1X21uX2xvY2sgLSB0YWtlIHRoZSB3cml0ZSBz aWRlIGxvY2sgZm9yIHRoaXMgbm90aWZpZXIKPj4gICAgKgo+PiBAQCAtMjM3LDIxICsyMzgsMTkg QEAgc3RhdGljIHZvaWQgYW1kZ3B1X21uX2ludmFsaWRhdGVfbm9kZShzdHJ1Y3QgYW1kZ3B1X21u X25vZGUgKm5vZGUsCj4+ICAgLyoqCj4+ICAgICogYW1kZ3B1X21uX2ludmFsaWRhdGVfcmFuZ2Vf c3RhcnRfZ2Z4IC0gY2FsbGJhY2sgdG8gbm90aWZ5IGFib3V0IG1tIGNoYW5nZQo+PiAgICAqCj4+ IC0gKiBAbW46IG91ciBub3RpZmllcgo+PiAtICogQG1tOiB0aGUgbW0gdGhpcyBjYWxsYmFjayBp cyBhYm91dAo+PiAtICogQHN0YXJ0OiBzdGFydCBvZiB1cGRhdGVkIHJhbmdlCj4+IC0gKiBAZW5k OiBlbmQgb2YgdXBkYXRlZCByYW5nZQo+PiArICogQG1pcnJvcjogdGhlIGhtbV9taXJyb3IgKG1t KSBpcyBhYm91dCB0byB1cGRhdGUKPj4gKyAqIEB1cGRhdGU6IHRoZSB1cGRhdGUgc3RhcnQsIGVu ZCBhZGRyZXNzCj4+ICAgICoKPj4gICAgKiBCbG9jayBmb3Igb3BlcmF0aW9ucyBvbiBCT3MgdG8g ZmluaXNoIGFuZCBtYXJrIHBhZ2VzIGFzIGFjY2Vzc2VkIGFuZAo+PiAgICAqIHBvdGVudGlhbGx5 IGRpcnR5Lgo+PiAgICAqLwo+PiAtc3RhdGljIGludCBhbWRncHVfbW5faW52YWxpZGF0ZV9yYW5n ZV9zdGFydF9nZngoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCj4+IC0JCQkJCQkgc3RydWN0IG1t X3N0cnVjdCAqbW0sCj4+IC0JCQkJCQkgdW5zaWduZWQgbG9uZyBzdGFydCwKPj4gLQkJCQkJCSB1 bnNpZ25lZCBsb25nIGVuZCwKPj4gLQkJCQkJCSBib29sIGJsb2NrYWJsZSkKPj4gK3N0YXRpYyBp bnQgYW1kZ3B1X21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnRfZ2Z4KHN0cnVjdCBobW1fbWlycm9y ICptaXJyb3IsCj4+ICsJCQljb25zdCBzdHJ1Y3QgaG1tX3VwZGF0ZSAqdXBkYXRlKQo+PiAgIHsK Pj4gLQlzdHJ1Y3QgYW1kZ3B1X21uICphbW4gPSBjb250YWluZXJfb2YobW4sIHN0cnVjdCBhbWRn cHVfbW4sIG1uKTsKPj4gKwlzdHJ1Y3QgYW1kZ3B1X21uICphbW4gPSBjb250YWluZXJfb2YobWly cm9yLCBzdHJ1Y3QgYW1kZ3B1X21uLCBtaXJyb3IpOwo+PiArCXVuc2lnbmVkIGxvbmcgc3RhcnQg PSB1cGRhdGUtPnN0YXJ0Owo+PiArCXVuc2lnbmVkIGxvbmcgZW5kID0gdXBkYXRlLT5lbmQ7Cj4+ ICsJYm9vbCBibG9ja2FibGUgPSB1cGRhdGUtPmJsb2NrYWJsZTsKPj4gICAJc3RydWN0IGludGVy dmFsX3RyZWVfbm9kZSAqaXQ7Cj4+ICAgCj4+ICAgCS8qIG5vdGlmaWNhdGlvbiBpcyBleGNsdXNp dmUsIGJ1dCBpbnRlcnZhbCBpcyBpbmNsdXNpdmUgKi8KPj4gQEAgLTI3OCwyOCArMjc3LDI4IEBA IHN0YXRpYyBpbnQgYW1kZ3B1X21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnRfZ2Z4KHN0cnVjdCBt bXVfbm90aWZpZXIgKm1uLAo+PiAgIAkJYW1kZ3B1X21uX2ludmFsaWRhdGVfbm9kZShub2RlLCBz dGFydCwgZW5kKTsKPj4gICAJfQo+PiAgIAo+PiArCWFtZGdwdV9tbl9yZWFkX3VubG9jayhhbW4p Owo+PiArCj4gYW1kZ3B1X21uX3JlYWRfbG9jay91bmxvY2sgc3VwcG9ydCByZWN1cnNpdmUgbG9j a2luZyBmb3IgbXVsdGlwbGUKPiBvdmVybGFwcGluZyBvciBuZXN0ZWQgaW52YWxpZGF0aW9uIHJh bmdlcy4gQnV0IGlmIHlvdSdyIGxvY2tpbmcgYW5kCj4gdW5sb2NraW5nIGluIHRoZSBzYW1lIGZ1 bmN0aW9uLiBJcyB0aGF0IHN0aWxsIGEgY29uY2Vybj8KCldlbGwgdGhlIHJlYWwgcHJvYmxlbSBp cyB0aGF0IHVubG9ja2luZyB0aGVtIGhlcmUgd29uJ3Qgd29yay4KCldlIG5lZWQgdG8gaG9sZCB0 aGUgbG9jayB1bnRpbCB3ZSBhcmUgc3VyZSB0aGF0IHRoZSBvcGVyYXRpb24gd2hpY2ggCnVwZGF0 ZXMgdGhlIHBhZ2UgdGFibGVzIGlzIGNvbXBsZXRlZC4KCkNocmlzdGlhbi4KCj4KPj4gICAJcmV0 dXJuIDA7Cj4+ICAgfQo+PiAgIAo+PiAgIC8qKgo+PiAgICAqIGFtZGdwdV9tbl9pbnZhbGlkYXRl X3JhbmdlX3N0YXJ0X2hzYSAtIGNhbGxiYWNrIHRvIG5vdGlmeSBhYm91dCBtbSBjaGFuZ2UKPj4g ICAgKgo+PiAtICogQG1uOiBvdXIgbm90aWZpZXIKPj4gLSAqIEBtbTogdGhlIG1tIHRoaXMgY2Fs bGJhY2sgaXMgYWJvdXQKPj4gLSAqIEBzdGFydDogc3RhcnQgb2YgdXBkYXRlZCByYW5nZQo+PiAt ICogQGVuZDogZW5kIG9mIHVwZGF0ZWQgcmFuZ2UKPj4gKyAqIEBtaXJyb3I6IHRoZSBobW1fbWly cm9yIChtbSkgaXMgYWJvdXQgdG8gdXBkYXRlCj4+ICsgKiBAdXBkYXRlOiB0aGUgdXBkYXRlIHN0 YXJ0LCBlbmQgYWRkcmVzcwo+PiAgICAqCj4+ICAgICogV2UgdGVtcG9yYXJpbHkgZXZpY3QgYWxs IEJPcyBiZXR3ZWVuIHN0YXJ0IGFuZCBlbmQuIFRoaXMKPj4gICAgKiBuZWNlc3NpdGF0ZXMgZXZp Y3RpbmcgYWxsIHVzZXItbW9kZSBxdWV1ZXMgb2YgdGhlIHByb2Nlc3MuIFRoZSBCT3MKPj4gICAg KiBhcmUgcmVzdG9ydGVkIGluIGFtZGdwdV9tbl9pbnZhbGlkYXRlX3JhbmdlX2VuZF9oc2EuCj4+ ICAgICovCj4+IC1zdGF0aWMgaW50IGFtZGdwdV9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0X2hz YShzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKPj4gLQkJCQkJCSBzdHJ1Y3QgbW1fc3RydWN0ICpt bSwKPj4gLQkJCQkJCSB1bnNpZ25lZCBsb25nIHN0YXJ0LAo+PiAtCQkJCQkJIHVuc2lnbmVkIGxv bmcgZW5kLAo+PiAtCQkJCQkJIGJvb2wgYmxvY2thYmxlKQo+PiArc3RhdGljIGludCBhbWRncHVf bW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydF9oc2Eoc3RydWN0IGhtbV9taXJyb3IgKm1pcnJvciwK Pj4gKwkJCWNvbnN0IHN0cnVjdCBobW1fdXBkYXRlICp1cGRhdGUpCj4+ICAgewo+PiAtCXN0cnVj dCBhbWRncHVfbW4gKmFtbiA9IGNvbnRhaW5lcl9vZihtbiwgc3RydWN0IGFtZGdwdV9tbiwgbW4p Owo+PiArCXN0cnVjdCBhbWRncHVfbW4gKmFtbiA9IGNvbnRhaW5lcl9vZihtaXJyb3IsIHN0cnVj dCBhbWRncHVfbW4sIG1pcnJvcik7Cj4+ICsJdW5zaWduZWQgbG9uZyBzdGFydCA9IHVwZGF0ZS0+ c3RhcnQ7Cj4+ICsJdW5zaWduZWQgbG9uZyBlbmQgPSB1cGRhdGUtPmVuZDsKPj4gKwlib29sIGJs b2NrYWJsZSA9IHVwZGF0ZS0+YmxvY2thYmxlOwo+PiAgIAlzdHJ1Y3QgaW50ZXJ2YWxfdHJlZV9u b2RlICppdDsKPj4gICAKPj4gICAJLyogbm90aWZpY2F0aW9uIGlzIGV4Y2x1c2l2ZSwgYnV0IGlu dGVydmFsIGlzIGluY2x1c2l2ZSAqLwo+PiBAQCAtMzI2LDU5ICszMjUsNDEgQEAgc3RhdGljIGlu dCBhbWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydF9oc2Eoc3RydWN0IG1tdV9ub3RpZmll ciAqbW4sCj4+ICAgCj4+ICAgCQkJaWYgKGFtZGdwdV90dG1fdHRfYWZmZWN0X3VzZXJwdHIoYm8t PnRiby50dG0sCj4+ICAgCQkJCQkJCSBzdGFydCwgZW5kKSkKPj4gLQkJCQlhbWRncHVfYW1ka2Zk X2V2aWN0X3VzZXJwdHIobWVtLCBtbSk7Cj4+ICsJCQkJYW1kZ3B1X2FtZGtmZF9ldmljdF91c2Vy cHRyKG1lbSwgYW1uLT5tbSk7Cj4+ICAgCQl9Cj4+ICAgCX0KPj4gICAKPj4gKwlhbWRncHVfbW5f cmVhZF91bmxvY2soYW1uKTsKPj4gKwo+PiAgIAlyZXR1cm4gMDsKPj4gICB9Cj4+ICAgCj4+IC0v KioKPj4gLSAqIGFtZGdwdV9tbl9pbnZhbGlkYXRlX3JhbmdlX2VuZCAtIGNhbGxiYWNrIHRvIG5v dGlmeSBhYm91dCBtbSBjaGFuZ2UKPj4gLSAqCj4+IC0gKiBAbW46IG91ciBub3RpZmllcgo+PiAt ICogQG1tOiB0aGUgbW0gdGhpcyBjYWxsYmFjayBpcyBhYm91dAo+PiAtICogQHN0YXJ0OiBzdGFy dCBvZiB1cGRhdGVkIHJhbmdlCj4+IC0gKiBAZW5kOiBlbmQgb2YgdXBkYXRlZCByYW5nZQo+PiAt ICoKPj4gLSAqIFJlbGVhc2UgdGhlIGxvY2sgYWdhaW4gdG8gYWxsb3cgbmV3IGNvbW1hbmQgc3Vi bWlzc2lvbnMuCj4+ICsvKiBMb3cgYml0cyBvZiBhbnkgcmVhc29uYWJsZSBtbSBwb2ludGVyIHdp bGwgYmUgdW51c2VkIGR1ZSB0byBzdHJ1Y3QKPj4gKyAqIGFsaWdubWVudC4gVXNlIHRoZXNlIGJp dHMgdG8gbWFrZSBhIHVuaXF1ZSBrZXkgZnJvbSB0aGUgbW0gcG9pbnRlcgo+PiArICogYW5kIG5v dGlmaWVyIHR5cGUuCj4+ICAgICovCj4+IC1zdGF0aWMgdm9pZCBhbWRncHVfbW5faW52YWxpZGF0 ZV9yYW5nZV9lbmQoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCj4+IC0JCQkJCSAgIHN0cnVjdCBt bV9zdHJ1Y3QgKm1tLAo+PiAtCQkJCQkgICB1bnNpZ25lZCBsb25nIHN0YXJ0LAo+PiAtCQkJCQkg ICB1bnNpZ25lZCBsb25nIGVuZCkKPj4gLXsKPj4gLQlzdHJ1Y3QgYW1kZ3B1X21uICphbW4gPSBj b250YWluZXJfb2YobW4sIHN0cnVjdCBhbWRncHVfbW4sIG1uKTsKPj4gLQo+PiAtCWFtZGdwdV9t bl9yZWFkX3VubG9jayhhbW4pOwo+PiAtfQo+PiArI2RlZmluZSBBTURHUFVfTU5fS0VZKG1tLCB0 eXBlKSAoKHVuc2lnbmVkIGxvbmcpKG1tKSArICh0eXBlKSkKPj4gICAKPj4gLXN0YXRpYyBjb25z dCBzdHJ1Y3QgbW11X25vdGlmaWVyX29wcyBhbWRncHVfbW5fb3BzW10gPSB7Cj4+ICtzdGF0aWMg c3RydWN0IGhtbV9taXJyb3Jfb3BzIGFtZGdwdV9obW1fbWlycm9yX29wc1tdID0gewo+PiAgIAlb QU1ER1BVX01OX1RZUEVfR0ZYXSA9IHsKPj4gLQkJLnJlbGVhc2UgPSBhbWRncHVfbW5fcmVsZWFz ZSwKPj4gLQkJLmludmFsaWRhdGVfcmFuZ2Vfc3RhcnQgPSBhbWRncHVfbW5faW52YWxpZGF0ZV9y YW5nZV9zdGFydF9nZngsCj4+IC0JCS5pbnZhbGlkYXRlX3JhbmdlX2VuZCA9IGFtZGdwdV9tbl9p bnZhbGlkYXRlX3JhbmdlX2VuZCwKPj4gKwkJLnN5bmNfY3B1X2RldmljZV9wYWdldGFibGVzID0K Pj4gKwkJCQlhbWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydF9nZngsCj4+ICsJCS5yZWxl YXNlID0gYW1kZ3B1X2htbV9taXJyb3JfcmVsZWFzZQo+PiAgIAl9LAo+PiAgIAlbQU1ER1BVX01O X1RZUEVfSFNBXSA9IHsKPj4gLQkJLnJlbGVhc2UgPSBhbWRncHVfbW5fcmVsZWFzZSwKPj4gLQkJ LmludmFsaWRhdGVfcmFuZ2Vfc3RhcnQgPSBhbWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9zdGFy dF9oc2EsCj4+IC0JCS5pbnZhbGlkYXRlX3JhbmdlX2VuZCA9IGFtZGdwdV9tbl9pbnZhbGlkYXRl X3JhbmdlX2VuZCwKPj4gKwkJLnN5bmNfY3B1X2RldmljZV9wYWdldGFibGVzID0KPj4gKwkJCQlh bWRncHVfbW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydF9oc2EsCj4+ICsJCS5yZWxlYXNlID0gYW1k Z3B1X2htbV9taXJyb3JfcmVsZWFzZQo+PiAgIAl9LAo+PiAgIH07Cj4+ICAgCj4+IC0vKiBMb3cg Yml0cyBvZiBhbnkgcmVhc29uYWJsZSBtbSBwb2ludGVyIHdpbGwgYmUgdW51c2VkIGR1ZSB0byBz dHJ1Y3QKPj4gLSAqIGFsaWdubWVudC4gVXNlIHRoZXNlIGJpdHMgdG8gbWFrZSBhIHVuaXF1ZSBr ZXkgZnJvbSB0aGUgbW0gcG9pbnRlcgo+PiAtICogYW5kIG5vdGlmaWVyIHR5cGUuCj4+IC0gKi8K Pj4gLSNkZWZpbmUgQU1ER1BVX01OX0tFWShtbSwgdHlwZSkgKCh1bnNpZ25lZCBsb25nKShtbSkg KyAodHlwZSkpCj4+IC0KPj4gICAvKioKPj4gLSAqIGFtZGdwdV9tbl9nZXQgLSBjcmVhdGUgbm90 aWZpZXIgY29udGV4dAo+PiArICogYW1kZ3B1X21uX2dldCAtIGNyZWF0ZSBITU0gbWlycm9yIGNv bnRleHQKPj4gICAgKgo+PiAgICAqIEBhZGV2OiBhbWRncHUgZGV2aWNlIHBvaW50ZXIKPj4gICAg KiBAdHlwZTogdHlwZSBvZiBNTVUgbm90aWZpZXIgY29udGV4dAo+PiAgICAqCj4+IC0gKiBDcmVh dGVzIGEgbm90aWZpZXIgY29udGV4dCBmb3IgY3VycmVudC0+bW0uCj4+ICsgKiBDcmVhdGVzIGEg SE1NIG1pcnJvciBjb250ZXh0IGZvciBjdXJyZW50LT5tbS4KPj4gICAgKi8KPj4gICBzdHJ1Y3Qg YW1kZ3B1X21uICphbWRncHVfbW5fZ2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+PiAg IAkJCQllbnVtIGFtZGdwdV9tbl90eXBlIHR5cGUpCj4+IEBAIC00MDgsMTIgKzM4OSwxMiBAQCBz dHJ1Y3QgYW1kZ3B1X21uICphbWRncHVfbW5fZ2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LAo+PiAgIAlhbW4tPm1tID0gbW07Cj4+ICAgCWluaXRfcndzZW0oJmFtbi0+bG9jayk7Cj4+ICAg CWFtbi0+dHlwZSA9IHR5cGU7Cj4+IC0JYW1uLT5tbi5vcHMgPSAmYW1kZ3B1X21uX29wc1t0eXBl XTsKPj4gICAJYW1uLT5vYmplY3RzID0gUkJfUk9PVF9DQUNIRUQ7Cj4+ICAgCW11dGV4X2luaXQo JmFtbi0+cmVhZF9sb2NrKTsKPj4gICAJYXRvbWljX3NldCgmYW1uLT5yZWN1cnNpb24sIDApOwo+ PiAgIAo+PiAtCXIgPSBfX21tdV9ub3RpZmllcl9yZWdpc3RlcigmYW1uLT5tbiwgbW0pOwo+PiAr CWFtbi0+bWlycm9yLm9wcyA9ICZhbWRncHVfaG1tX21pcnJvcl9vcHNbdHlwZV07Cj4+ICsJciA9 IGhtbV9taXJyb3JfcmVnaXN0ZXIoJmFtbi0+bWlycm9yLCBtbSk7Cj4+ICAgCWlmIChyKQo+PiAg IAkJZ290byBmcmVlX2FtbjsKPj4gICAKPj4gQEAgLTQzOSw3ICs0MjAsNyBAQCBzdHJ1Y3QgYW1k Z3B1X21uICphbWRncHVfbW5fZ2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+PiAgICAq IEBibzogYW1kZ3B1IGJ1ZmZlciBvYmplY3QKPj4gICAgKiBAYWRkcjogdXNlcnB0ciBhZGRyIHdl IHNob3VsZCBtb25pdG9yCj4+ICAgICoKPj4gLSAqIFJlZ2lzdGVycyBhbiBNTVUgbm90aWZpZXIg Zm9yIHRoZSBnaXZlbiBCTyBhdCB0aGUgc3BlY2lmaWVkIGFkZHJlc3MuCj4+ICsgKiBSZWdpc3Rl cnMgYW4gSE1NIG1pcnJvciBmb3IgdGhlIGdpdmVuIEJPIGF0IHRoZSBzcGVjaWZpZWQgYWRkcmVz cy4KPj4gICAgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgLUVSUk5PIGlmIGFueXRoaW5nIGdvZXMg d3JvbmcuCj4+ICAgICovCj4+ICAgaW50IGFtZGdwdV9tbl9yZWdpc3RlcihzdHJ1Y3QgYW1kZ3B1 X2JvICpibywgdW5zaWduZWQgbG9uZyBhZGRyKQo+PiBAQCAtNDk1LDExICs0NzYsMTEgQEAgaW50 IGFtZGdwdV9tbl9yZWdpc3RlcihzdHJ1Y3QgYW1kZ3B1X2JvICpibywgdW5zaWduZWQgbG9uZyBh ZGRyKQo+PiAgIH0KPj4gICAKPj4gICAvKioKPj4gLSAqIGFtZGdwdV9tbl91bnJlZ2lzdGVyIC0g dW5yZWdpc3RlciBhIEJPIGZvciBub3RpZmllciB1cGRhdGVzCj4+ICsgKiBhbWRncHVfbW5fdW5y ZWdpc3RlciAtIHVucmVnaXN0ZXIgYSBCTyBmb3IgSE1NIG1pcnJvciB1cGRhdGVzCj4+ICAgICoK Pj4gICAgKiBAYm86IGFtZGdwdSBidWZmZXIgb2JqZWN0Cj4+ICAgICoKPj4gLSAqIFJlbW92ZSBh bnkgcmVnaXN0cmF0aW9uIG9mIE1NVSBub3RpZmllciB1cGRhdGVzIGZyb20gdGhlIGJ1ZmZlciBv YmplY3QuCj4+ICsgKiBSZW1vdmUgYW55IHJlZ2lzdHJhdGlvbiBvZiBITU0gbWlycm9yIHVwZGF0 ZXMgZnJvbSB0aGUgYnVmZmVyIG9iamVjdC4KPj4gICAgKi8KPj4gICB2b2lkIGFtZGdwdV9tbl91 bnJlZ2lzdGVyKHN0cnVjdCBhbWRncHVfYm8gKmJvKQo+PiAgIHsKPj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5oIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X21uLmgKPj4gaW5kZXggZWIwZjQzMi4uMGUyNzUyNiAxMDA2NDQKPj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmgKPj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmgKPj4gQEAgLTM0LDcgKzM0LDcgQEAg ZW51bSBhbWRncHVfbW5fdHlwZSB7Cj4+ICAgCUFNREdQVV9NTl9UWVBFX0hTQSwKPj4gICB9Owo+ PiAgIAo+PiAtI2lmIGRlZmluZWQoQ09ORklHX01NVV9OT1RJRklFUikKPj4gKyNpZiBkZWZpbmVk KENPTkZJR19ITU0pCj4+ICAgdm9pZCBhbWRncHVfbW5fbG9jayhzdHJ1Y3QgYW1kZ3B1X21uICpt bik7Cj4+ICAgdm9pZCBhbWRncHVfbW5fdW5sb2NrKHN0cnVjdCBhbWRncHVfbW4gKm1uKTsKPj4g ICBzdHJ1Y3QgYW1kZ3B1X21uICphbWRncHVfbW5fZ2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4g YW1kLWdmeCBtYWlsaW5nIGxpc3QKPiBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWls aW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==