From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jason Gunthorpe Subject: Re: [PATCH hmm 02/15] mm/mmu_notifier: add an interval tree notifier Date: Mon, 21 Oct 2019 18:54:25 +0000 Message-ID: <20191021185421.GG6285@mellanox.com> References: <20191015181242.8343-1-jgg@ziepe.ca> <20191015181242.8343-3-jgg@ziepe.ca> <20191021183056.GA3177@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20191021183056.GA3177@redhat.com> Content-Language: en-US Content-ID: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jerome Glisse Cc: Andrea Arcangeli , Ralph Campbell , "linux-rdma@vger.kernel.org" , John Hubbard , "Felix.Kuehling@amd.com" , "dri-devel@lists.freedesktop.org" , Michal Hocko , "linux-mm@kvack.org" , "amd-gfx@lists.freedesktop.org" , Ben Skeggs List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBPY3QgMjEsIDIwMTkgYXQgMDI6MzA6NTZQTSAtMDQwMCwgSmVyb21lIEdsaXNzZSB3 cm90ZToKCj4gPiArLyoqCj4gPiArICogbW11X3JhbmdlX3JlYWRfcmV0cnkgLSBFbmQgYSByZWFk IHNpZGUgY3JpdGljYWwgc2VjdGlvbiBhZ2FpbnN0IGEgVkEgcmFuZ2UKPiA+ICsgKiBtcm46IFRo ZSByYW5nZSB1bmRlciBsb2NrCj4gPiArICogc2VxOiBUaGUgcmV0dXJuIG9mIHRoZSBwYWlyZWQg bW11X3JhbmdlX3JlYWRfYmVnaW4oKQo+ID4gKyAqCj4gPiArICogVGhpcyBNVVNUIGJlIGNhbGxl ZCB1bmRlciBhIHVzZXIgcHJvdmlkZWQgbG9jayB0aGF0IGlzIGFsc28gaGVsZAo+ID4gKyAqIHVu Y29uZGl0aW9uYWxseSBieSBvcC0+aW52YWxpZGF0ZSgpLiBUaGF0IGxvY2sgcHJvdmlkZXMgdGhl IHJlcXVpcmVkIFNNUAo+ID4gKyAqIGJhcnJpZXIgZm9yIGhhbmRsaW5nIGludmFsaWRhdGVfc2Vx Lgo+ID4gKyAqCj4gPiArICogRWFjaCBjYWxsIHNob3VsZCBiZSBwYWlyZWQgd2l0aCBhIHNpbmds ZSBtbXVfcmFuZ2VfcmVhZF9iZWdpbigpIGFuZAo+ID4gKyAqIHNob3VsZCBiZSB1c2VkIHRvIGNv bmNsdWRlIHRoZSByZWFkIHNpZGUuCj4gPiArICoKPiA+ICsgKiBSZXR1cm5zIHRydWUgaWYgYW4g aW52YWxpZGF0aW9uIGNvbGxpZGVkIHdpdGggdGhpcyBjcml0aWNhbCBzZWN0aW9uLCBhbmQKPiA+ ICsgKiB0aGUgY2FsbGVyIHNob3VsZCByZXRyeS4KPiA+ICsgKi8KPiA+ICtzdGF0aWMgaW5saW5l IGJvb2wgbW11X3JhbmdlX3JlYWRfcmV0cnkoc3RydWN0IG1tdV9yYW5nZV9ub3RpZmllciAqbXJu LAo+ID4gKwkJCQkJdW5zaWduZWQgbG9uZyBzZXEpCj4gPiArewo+ID4gKwlyZXR1cm4gUkVBRF9P TkNFKG1ybi0+aW52YWxpZGF0ZV9zZXEpICE9IHNlcTsKPiA+ICt9Cj4gCj4gV2hhdCBhYm91dCBj YWxsaW5nIHRoaXMgbW11X3JhbmdlX3JlYWRfZW5kKCkgaW5zdGVhZCA/IFRvIG1hdGNoCj4gd2l0 aCB0aGUgbW11X3JhbmdlX3JlYWRfYmVnaW4oKS4KCl9lbmQgbWFrZSBzb21lIHNlbnNlIHRvbywg YnV0IEkgcGlja2VkIF9yZXRyeSBmb3Igc3ltbWV0cnkgd2l0aCB0aGUKc2VxY291bnRfKiBmYW1p bHkgb2YgZnVuY3Rpb25zIHdoaWNoIHVzZWQgcmV0cnkuCgpJIHRoaW5rIHJldHJ5IG1ha2VzIGl0 IGNsZWFyZXIgdGhhdCBpdCBpcyBleHBlY3RlZCB0byBmYWlsIGFuZCByZXRyeQppcyByZXF1aXJl ZC4KCj4gPiArCS8qCj4gPiArCSAqIFRoZSBpbnZfZW5kIGluY29ycG9yYXRlcyBhIGRlZmVycmVk IG1lY2hhbmlzbSBsaWtlIHJ0bmwuIEFkZHMgYW5kCj4gCj4gVGhlIHJ0bmwgcmVmZXJlbmNlIGlz IGxvc3Qgb24gcGVvcGxlIHVuZmFtaWxpYXIgd2l0aCB0aGUgbmV0d29yayA6KQo+IGNvZGUgbWF5 YmUgbGlrZSBydG5sX2xvY2soKS9ydG5sX3VubG9jaygpIHNvIHBlb3BsZSBoYXZlIGEgY2hhbmNl IHRvCj4gZ3JlcCB0aGUgcmlnaHQgZnVuY3Rpb24uIEFzc3VtaW5nIGkgYW0gbXlzZWxmIGdldHRp bmcgdGhlIHJpZ2h0Cj4gcmVmZXJlbmNlIDopCgpZZXAsIHlvdSBnb3QgaXQsIEkgd2lsbCB1cGRh dGUKCj4gPiArCS8qCj4gPiArCSAqIG1ybi0+aW52YWxpZGF0ZV9zZXEgaXMgYWx3YXlzIHNldCB0 byBhbiBvZGQgdmFsdWUuIFRoaXMgZW5zdXJlcwo+ID4gKwkgKiB0aGF0IGlmIHNlcSBkb2VzIHdy YXAgd2Ugd2lsbCBhbHdheXMgY2xlYXIgdGhlIGJlbG93IHNsZWVwIGluIHNvbWUKPiA+ICsJICog cmVhc29uYWJsZSB0aW1lIGFzIG1tbl9tbS0+aW52YWxpZGF0ZV9zZXEgaXMgZXZlbiBpbiB0aGUg aWRsZQo+ID4gKwkgKiBzdGF0ZS4KPiAKPiBJIHRoaW5rIHRoaXMgY29tbWVudCBzaG91bGQgYmUg d2l0aCB0aGUgc3RydWN0IG1tdV9yYW5nZV9ub3RpZmllcgo+IGRlZmluaXRpb24gYW5kIHlvdSBz aG91bGQganVzdCBwb2ludCB0byBpdCBmcm9tIGhlcmUgYXMgdGhlIHNhbWUKPiBjb21tZW50IHdv dWxkIGJlIHVzZWZ1bCBkb3duIGJlbG93LgoKSSBoYWQgaXQgaGVyZSBiZWNhdXNlIGl0IGlzIGNy aXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIHdhaXRfZXZlbnQKYW5kIHdoeSBpdCBkb2Vzbid0 IGp1c3QgYmxvY2sgaW5kZWZpbml0ZWx5LCBidXQgeWVzIHRoaXMgcHJvcGVydHkKY29tZXMgdXAg YmVsb3cgdG9vIHdoaWNoIHJlZmVycyBiYWNrIGhlcmUuCgpGdW5kYW1lbnRhbGx5IHRoaXMgd2Fp dCBldmVudCBpcyB3aHkgdGhpcyBhcHByb2FjaCB0byBrZWVwIGFuIG9kZAp2YWx1ZSBpbiB0aGUg bXJuIGlzIHVzZWQuCgo+ID4gLWludCBfX21tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0 YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdlKQo+ID4gK3N0YXRpYyBpbnQgbW5f aXRyZWVfaW52YWxpZGF0ZShzdHJ1Y3QgbW11X25vdGlmaWVyX21tICptbW5fbW0sCj4gPiArCQkJ CSAgICAgY29uc3Qgc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqcmFuZ2UpCj4gPiArewo+ID4g KwlzdHJ1Y3QgbW11X3JhbmdlX25vdGlmaWVyICptcm47Cj4gPiArCXVuc2lnbmVkIGxvbmcgY3Vy X3NlcTsKPiA+ICsKPiA+ICsJZm9yIChtcm4gPSBtbl9pdHJlZV9pbnZfc3RhcnRfcmFuZ2UobW1u X21tLCByYW5nZSwgJmN1cl9zZXEpOyBtcm47Cj4gPiArCSAgICAgbXJuID0gbW5faXRyZWVfaW52 X25leHQobXJuLCByYW5nZSkpIHsKPiA+ICsJCWJvb2wgcmV0Owo+ID4gKwo+ID4gKwkJV1JJVEVf T05DRShtcm4tPmludmFsaWRhdGVfc2VxLCBjdXJfc2VxKTsKPiA+ICsJCXJldCA9IG1ybi0+b3Bz LT5pbnZhbGlkYXRlKG1ybiwgcmFuZ2UpOwo+ID4gKwkJaWYgKCFyZXQgJiYgIVdBUk5fT04obW11 X25vdGlmaWVyX3JhbmdlX2Jsb2NrYWJsZShyYW5nZSkpKQo+IAo+IElzbid0IHRoZSBsb2dpYyB3 cm9uZyBoZXJlID8gV2Ugd2FudCB0byB3YXJuIGlmIHRoZSByYW5nZQo+IHdhcyBtYXJrIGFzIGJs b2NrYWJsZSBhbmQgaW52YWxpZGF0ZSByZXR1cm5lZCBmYWxzZS4gQWxzbwo+IHdlIHdlbnQgdG8g YmFja29mZiBubyBtYXR0ZXIgd2hhdCBpZiB0aGUgaW52YWxpZGF0ZSByZXR1cm4KPiBmYWxzZSBp ZToKCklmIGludmFsaWRhdGUgcmV0dXJuZWQgZmFsc2UgYW5kIHRoZSBjYWxsZXIgaXMgYmxvY2th YmxlIHRoZW4gd2UgZG8Kbm90IHdhbnQgdG8gcmV0dXJuLCB3ZSBtdXN0IGNvbnRpbnVlIHByb2Nl c3Npbmcgb3RoZXIgcmFuZ2VzIC0gdG8gdHJ5CnRvIGNvcGUgd2l0aCB0aGUgZGVmZWN0aXZlIGRy aXZlci4KCkNhbGxlcnMgaW4gYmxvY2tpbmcgbW9kZSBpZ25vcmUgdGhlIHJldHVybiB2YWx1ZSBh bmQgZ28gYWhlYWQgdG8KaW52YWxpZGF0ZS4uCgpXb3VsZCBpdCBiZSBjbGVhcmVyIGFzIAoKaWYg KCFyZXQpIHsKICAgaWYgKFdBUk5fT04obW11X25vdGlmaWVyX3JhbmdlX2Jsb2NrYWJsZShyYW5n ZSkpKQogICAgICAgY29udGludWU7CiAgIGdvdG8gb3V0X3dvdWxkX2Jsb2NrOwp9Cgo/Cgo+ID4g QEAgLTI4NCwyMSArNTg5LDIyIEBAIGludCBfX21tdV9ub3RpZmllcl9yZWdpc3RlcihzdHJ1Y3Qg bW11X25vdGlmaWVyICptbiwgc3RydWN0IG1tX3N0cnVjdCAqbW0pCj4gPiAgCQkgKiB0aGUgd3Jp dGUgc2lkZSBvZiB0aGUgbW1hcF9zZW0uCj4gPiAgCQkgKi8KPiA+ICAJCW1tdV9ub3RpZmllcl9t bSA9Cj4gPiAtCQkJa21hbGxvYyhzaXplb2Yoc3RydWN0IG1tdV9ub3RpZmllcl9tbSksIEdGUF9L RVJORUwpOwo+ID4gKwkJCWt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBtbXVfbm90aWZpZXJfbW0pLCBH RlBfS0VSTkVMKTsKPiA+ICAJCWlmICghbW11X25vdGlmaWVyX21tKQo+ID4gIAkJCXJldHVybiAt RU5PTUVNOwo+ID4gIAo+ID4gIAkJSU5JVF9ITElTVF9IRUFEKCZtbXVfbm90aWZpZXJfbW0tPmxp c3QpOwo+ID4gIAkJc3Bpbl9sb2NrX2luaXQoJm1tdV9ub3RpZmllcl9tbS0+bG9jayk7Cj4gPiAr CQltbXVfbm90aWZpZXJfbW0tPmludmFsaWRhdGVfc2VxID0gMjsKPiAKPiBXaHkgc3RhcnRpbmcg YXQgMiA/CgpHb29kIHF1ZXN0aW9uLiBJZiBldmVyeXRoaW5nIGlzIGNvZGVkIHByb3Blcmx5IHRo ZSBzdGFydGluZyB2YWx1ZQpkb2Vzbid0IG1hdHRlcgoKSSBsZWZ0IGl0IGxpa2UgdGhpcyBiZWNh dXNlIGl0IG1ha2VzIGRlYnVnZ2luZyBhIHRpbnkgYml0IHNpbXBsZXIsIGllCmlmIHlvdSBwcmlu dCB0aGUgc2VxIG51bWJlciB0aGVuIHRoZSBmaXJzdCBtbXVfcmFuZ2Vfbm90aWZpZmVycyB3aWxs CmdldCAxIGFzIHRoZWlyIGludGlhbCBzZXEgKHNlZSBfX21tdV9yYW5nZV9ub3RpZmllcl9pbnNl cnQpIGluc3RlYWQgb2YKVUxPTkdfTUFYCgo+ID4gKwkJbW11X25vdGlmaWVyX21tLT5pdHJlZSA9 IFJCX1JPT1RfQ0FDSEVEOwo+ID4gKwkJaW5pdF93YWl0cXVldWVfaGVhZCgmbW11X25vdGlmaWVy X21tLT53cSk7Cj4gPiArCQlJTklUX0hMSVNUX0hFQUQoJm1tdV9ub3RpZmllcl9tbS0+ZGVmZXJy ZWRfbGlzdCk7Cj4gPiAgCX0KPiA+ICAKPiA+ICAJcmV0ID0gbW1fdGFrZV9hbGxfbG9ja3MobW0p Owo+ID4gIAlpZiAodW5saWtlbHkocmV0KSkKPiA+ICAJCWdvdG8gb3V0X2NsZWFuOwo+ID4gIAo+ ID4gLQkvKiBQYWlycyB3aXRoIHRoZSBtbWRyb3AgaW4gbW11X25vdGlmaWVyX3VucmVnaXN0ZXJf KiAqLwo+ID4gLQltbWdyYWIobW0pOwo+ID4gLQo+ID4gIAkvKgo+ID4gIAkgKiBTZXJpYWxpemUg dGhlIHVwZGF0ZSBhZ2FpbnN0IG1tdV9ub3RpZmllcl91bnJlZ2lzdGVyLiBBCj4gPiAgCSAqIHNp ZGUgbm90ZTogbW11X25vdGlmaWVyX3JlbGVhc2UgY2FuJ3QgcnVuIGNvbmN1cnJlbnRseSB3aXRo Cj4gPiBAQCAtMzA2LDEzICs2MTIsMjYgQEAgaW50IF9fbW11X25vdGlmaWVyX3JlZ2lzdGVyKHN0 cnVjdCBtbXVfbm90aWZpZXIgKm1uLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSkKPiA+ICAJICogY3Vy cmVudC0+bW0gb3IgZXhwbGljaXRseSB3aXRoIGdldF90YXNrX21tKCkgb3Igc2ltaWxhcikuCj4g PiAgCSAqIFdlIGNhbid0IHJhY2UgYWdhaW5zdCBhbnkgb3RoZXIgbW11IG5vdGlmaWVyIG1ldGhv ZCBlaXRoZXIKPiA+ICAJICogdGhhbmtzIHRvIG1tX3Rha2VfYWxsX2xvY2tzKCkuCj4gPiArCSAq Cj4gPiArCSAqIHJlbGVhc2Ugc2VtYW50aWNzIGFyZSBwcm92aWRlZCBmb3IgdXNlcnMgbm90IGlu c2lkZSBhIGxvY2sgY292ZXJlZAo+ID4gKwkgKiBieSBtbV90YWtlX2FsbF9sb2NrcygpLiBhY3F1 aXJlIGNhbiBvbmx5IGJlIHVzZWQgd2hpbGUgaG9sZGluZyB0aGUKPiA+ICsJICogbW1ncmFiIG9y IG1tZ2V0LCBhbmQgaXMgc2FmZSBiZWNhdXNlIG9uY2UgY3JlYXRlZCB0aGUKPiA+ICsJICogbW11 X25vdGlmaWZlcl9tbSBpcyBub3QgZnJlZWQgdW50aWwgdGhlIG1tIGlzIGRlc3Ryb3llZC4KPiA+ ICAJICovCj4gPiAgCWlmIChtbXVfbm90aWZpZXJfbW0pCj4gPiAtCQltbS0+bW11X25vdGlmaWVy X21tID0gbW11X25vdGlmaWVyX21tOwo+ID4gKwkJc21wX3N0b3JlX3JlbGVhc2UoJm1tLT5tbXVf bm90aWZpZXJfbW0sIG1tdV9ub3RpZmllcl9tbSk7Cj4gCj4gSSBkbyBub3QgdW5kZXJzdGFuZCB3 aHkgeW91IG5lZWQgdGhlIHJlbGVhc2Ugc2VtYW50aWNzIGhlcmUsIHdlCj4gYXJlIHVuZGVyIHRo ZSBtbWFwX3NlbSBpbiB3cml0ZSBtb2RlIHdoZW4gd2UgcmVsZWFzZSBpdCB0aGUgbG9jawo+IGJh cnJpZXIgd2lsbCBtYWtlIHN1cmUgYW55b25lIGVsc2Ugc2VlcyB0aGUgbmV3IG1tdV9ub3RpZmll cl9tbQoKSXQgcGFpcnMgd2l0aCB0aGUgc21wX2xvYWRfYWNxdWlyZSgpIGluIG1tdV9yYW5nZV9u b3RpZmllcl9pbnNlcnQoKQp3aGljaCBpcyBub3QgY2FsbGVkIHdpdGggdGhlIG1tYXBfc2VtIGhl bGQuIAoKU2luY2UgdGhhdCByZWFkZXIgaXMgbm90IGxvY2tlZCB3ZSBuZWVkIHJlbGVhc2Ugc2Vt YW50aWNzIGhlcmUgdG8KZW5zdXJlIHRoZSB1bmxvY2tlZCByZWFkZXIgc2VlcyBhIGZ1bGx5IGlu aXRpbmFsaXplZCBtbXVfbm90aWZpZXJfbW0Kc3RydWN0dXJlIHdoZW4gaXQgb2JzZXJ2ZXMgdGhl IHBvaW50ZXIuCgo+ID4gKy8qKgo+ID4gKyAqIG1tdV9yYW5nZV9ub3RpZmllcl9pbnNlcnQgLSBJ bnNlcnQgYSByYW5nZSBub3RpZmllcgo+ID4gKyAqIEBtcm46IFJhbmdlIG5vdGlmaWVyIHRvIHJl Z2lzdGVyCj4gPiArICogQHN0YXJ0OiBTdGFydGluZyB2aXJ0dWFsIGFkZHJlc3MgdG8gbW9uaXRv cgo+ID4gKyAqIEBsZW5ndGg6IExlbmd0aCBvZiB0aGUgcmFuZ2UgdG8gbW9uaXRvcgo+ID4gKyAq IEBtbSA6IG1tX3N0cnVjdCB0byBhdHRhY2ggdG8KPiA+ICsgKgo+ID4gKyAqIFRoaXMgZnVuY3Rp b24gc3Vic2NyaWJlcyB0aGUgcmFuZ2Ugbm90aWZpZXIgZm9yIG5vdGlmaWNhdGlvbnMgZnJvbSB0 aGUgbW0uCj4gPiArICogVXBvbiByZXR1cm4gdGhlIG9wcyByZWxhdGVkIHRvIG1tdV9yYW5nZV9u b3RpZmllciB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlcgo+ID4gKyAqIGFuIGV2ZW50IHRoYXQgaW50 ZXJzZWN0cyB3aXRoIHRoZSBnaXZlbiByYW5nZSBvY2N1cnMuCj4gPiArICoKPiA+ICsgKiBVcG9u IHJldHVybiB0aGUgcmFuZ2Vfbm90aWZpZXIgbWF5IG5vdCBiZSBwcmVzZW50IGluIHRoZSBpbnRl cnZhbCB0cmVlIHlldC4KPiA+ICsgKiBUaGUgY2FsbGVyIG11c3QgdXNlIHRoZSBub3JtYWwgcmFu Z2Ugbm90aWZpZXIgbG9ja2luZyBmbG93IHZpYQo+ID4gKyAqIG1tdV9yYW5nZV9yZWFkX2JlZ2lu KCkgdG8gZXN0YWJsaXNoIFNQVEVzIGZvciB0aGlzIHJhbmdlLgo+ID4gKyAqLwo+ID4gK2ludCBt bXVfcmFuZ2Vfbm90aWZpZXJfaW5zZXJ0KHN0cnVjdCBtbXVfcmFuZ2Vfbm90aWZpZXIgKm1ybiwK PiA+ICsJCQkgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGxlbmd0aCwK PiA+ICsJCQkgICAgICBzdHJ1Y3QgbW1fc3RydWN0ICptbSkKPiA+ICt7Cj4gPiArCXN0cnVjdCBt bXVfbm90aWZpZXJfbW0gKm1tbl9tbTsKPiA+ICsJaW50IHJldDsKPiA+ICsKPiA+ICsJbWlnaHRf bG9jaygmbW0tPm1tYXBfc2VtKTsKPiA+ICsKPiA+ICsJbW1uX21tID0gc21wX2xvYWRfYWNxdWly ZSgmbW0tPm1tdV9ub3RpZmllcl9tbSk7CgpSaWdodCBoZXJlIHdlIGRvbid0IGhhdmUgdGhlIG1t YXBfc2VtIHNvIHRoaXMgbG9hZCBpcyB1bmxvY2tlZC4KCklmIHdlIG9ic2VydmUgIW1tbl9tbSB3 ZSBtdXN0IGFsc28gb2JzZXJ2ZSBhbGwgc3RvcmVzIGRvbmUgdG8gc2V0IGl0CnVwLiBJZSB3ZSBo YXZlIHRvIG9ic2VydmUgdGhlIHNwaW5fbG9ja19pbml0LCBSQl9ST09UX0NBQ0hFRC9ldGMKCj4g PiArCWlmICghbW1uX21tIHx8ICFtbW5fbW0tPmhhc19pbnRlcnZhbCkgewo+ID4gKwkJcmV0ID0g bW11X25vdGlmaWVyX3JlZ2lzdGVyKE5VTEwsIG1tKTsKPiA+ICsJCWlmIChyZXQpCj4gPiArCQkJ cmV0dXJuIHJldDsKPiA+ICsJCW1tbl9tbSA9IG1tLT5tbXVfbm90aWZpZXJfbW07Cj4gPiArCX0K PiA+ICsJcmV0dXJuIF9fbW11X3JhbmdlX25vdGlmaWVyX2luc2VydChtcm4sIHN0YXJ0LCBsZW5n dGgsIG1tbl9tbSwgbW0pOwo+ID4gK30KPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChtbXVfcmFuZ2Vf bm90aWZpZXJfaW5zZXJ0KTsKPiA+ICsKPiA+ICtpbnQgbW11X3JhbmdlX25vdGlmaWVyX2luc2Vy dF9sb2NrZWQoc3RydWN0IG1tdV9yYW5nZV9ub3RpZmllciAqbXJuLAo+ID4gKwkJCQkgICAgIHVu c2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbGVuZ3RoLAo+ID4gKwkJCQkgICAgIHN0 cnVjdCBtbV9zdHJ1Y3QgKm1tKQo+ID4gK3sKPiA+ICsJc3RydWN0IG1tdV9ub3RpZmllcl9tbSAq bW1uX21tOwo+ID4gKwlpbnQgcmV0Owo+ID4gKwo+ID4gKwlsb2NrZGVwX2Fzc2VydF9oZWxkX3dy aXRlKCZtbS0+bW1hcF9zZW0pOwo+ID4gKwo+ID4gKwltbW5fbW0gPSBtbS0+bW11X25vdGlmaWVy X21tOwo+IAo+IFNob3VsZG4ndCB5b3UgYmUgdXNpbmcgc21wX2xvYWRfYWNxdWlyZSgpID8KClRo aXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoaWxlIGhvbGRpbmcgdGhlIG1tYXBfc2VtLiBBcyB5b3Ug bm90ZWQgYWJvdmUKYWxsIHdyaXRlcnMgdG8gbW0tPm1tdV9ub3RpZmllcl9tbSBob2xkIHRoZSB3 cml0ZSBzaWRlIG9mIG1tYXBfc2VtLAp0aHVzIGhlcmUgdGhlIHJlYWQgc2lkZSBpcyBmdWxseSBs b2NrZWQgYW5kIGRvZXNuJ3QgbmVlZCB0aGUgYWNxdWlyZS4KCk5vdGUgdGhlIGxvY2tkZXAgYW5u b3RhdGlvbnMgbWFya2luZyB0aGUgZXhwZWN0ZWQgbG9ja2luZyBlbnZpcm9tZW50CmZvciB0aGUg dHdvIGZ1bmN0aW9ucy4KClRoYW5rcywKSmFzb24KX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vZHJpLWRldmVs