From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jerome Glisse Subject: Re: [Linaro-mm-sig] [PATCH 1/5] dma-buf: add optional invalidate_mappings callback v2 Date: Mon, 26 Mar 2018 11:42:24 -0400 Message-ID: <20180326154224.GA11930@gmail.com> References: <0bd85f69-c64c-70d1-a4a0-10ae0ed8b4e8@gmail.com> <19ed21a5-805d-271f-9120-49e0c00f510f@amd.com> <20180320140810.GU14155@phenom.ffwll.local> <37ba7394-2a5c-a0bc-cc51-c8a0edc2991d@gmail.com> <20180321082839.GA14155@phenom.ffwll.local> <327c4bc1-5813-16e8-62fc-4301b19a1a22@gmail.com> <20180322071804.GH14155@phenom.ffwll.local> <20180326080121.GO14155@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20180326080121.GO14155-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@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: Daniel Vetter Cc: Daniel Vetter , dri-devel , "moderated list:DMA BUFFER SHARING FRAMEWORK" , amd-gfx list , christian.koenig-5C7GfCeVMHo@public.gmane.org, "open list:DMA BUFFER SHARING FRAMEWORK" T24gTW9uLCBNYXIgMjYsIDIwMTggYXQgMTA6MDE6MjFBTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBUaHUsIE1hciAyMiwgMjAxOCBhdCAxMDo1ODo1NUFNICswMTAwLCBDaHJpc3Rp YW4gS8O2bmlnIHdyb3RlOgo+ID4gQW0gMjIuMDMuMjAxOCB1bSAwODoxOCBzY2hyaWViIERhbmll bCBWZXR0ZXI6Cj4gPiA+IE9uIFdlZCwgTWFyIDIxLCAyMDE4IGF0IDEyOjU0OjIwUE0gKzAxMDAs IENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6Cj4gPiA+ID4gQW0gMjEuMDMuMjAxOCB1bSAwOToyOCBz Y2hyaWViIERhbmllbCBWZXR0ZXI6Cj4gPiA+ID4gPiBPbiBUdWUsIE1hciAyMCwgMjAxOCBhdCAw Njo0Nzo1N1BNICswMTAwLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+ID4gPiA+ID4gPiBBbSAy MC4wMy4yMDE4IHVtIDE1OjA4IHNjaHJpZWIgRGFuaWVsIFZldHRlcjoKPiA+ID4gPiA+ID4gPiBb U05JUF0KPiA+ID4gPiA+ID4gPiBGb3IgdGhlIGluLWRyaXZlciByZXNlcnZhdGlvbiBwYXRoIChD UykgaGF2aW5nIGEgc2xvdy1wYXRoIHRoYXQgZ3JhYnMgYQo+ID4gPiA+ID4gPiA+IHRlbXBvcmFy eSByZWZlcmVuY2UsIGRyb3BzIHRoZSB2cmFtIGxvY2sgYW5kIHRoZW4gbG9ja3MgdGhlIHJlc2Vy dmF0aW9uCj4gPiA+ID4gPiA+ID4gbm9ybWFsbHkgKHVzaW5nIHRoZSBhY3F1aXJlIGNvbnRleHQg dXNlZCBhbHJlYWR5IGZvciB0aGUgZW50aXJlIENTKSBpcyBhCj4gPiA+ID4gPiA+ID4gYml0IHRy aWNreSwgYnV0IHRvdGFsbHkgZmVhc2libGUuIFR0bSBkb2Vzbid0IGRvIHRoYXQgdGhvdWdoLgo+ ID4gPiA+ID4gPiBUaGF0IGlzIGV4YWN0bHkgd2hhdCB3ZSBkbyBpbiBhbWRncHUgYXMgd2VsbCwg aXQncyBqdXN0IG5vdCB2ZXJ5IGVmZmljaWVudAo+ID4gPiA+ID4gPiBub3IgcmVsaWFibGUgdG8g cmV0cnkgZ2V0dGluZyB0aGUgcmlnaHQgcGFnZXMgZm9yIGEgc3VibWlzc2lvbiBvdmVyIGFuZCBv dmVyCj4gPiA+ID4gPiA+IGFnYWluLgo+ID4gPiA+ID4gT3V0IG9mIGN1cmlvc2l0eSwgd2hlcmUn cyB0aGF0IGNvZGU/IEkgZGlkIHJlYWQgdGhlIHR0bSBldmljdGlvbiBjb2RlIHdheQo+ID4gPiA+ ID4gYmFjaywgYW5kIHRoYXQgb25lIGRlZmluaXRlbHkgZGlkbid0IGRvIHRoYXQuIFdvdWxkIGJl IGludGVyZXN0aW5nIHRvCj4gPiA+ID4gPiB1cGRhdGUgbXkgdW5kZXJzdGFuZGluZy4KPiA+ID4g PiBUaGF0IGlzIGluIGFtZGdwdV9jcy5jLiBhbWRncHVfY3NfcGFyc2VyX2JvcygpIGRvZXMgYSBo b3JyaWJsZSBkYW5jZSB3aXRoCj4gPiA+ID4gZ3JhYmJpbmcsIHJlbGVhc2luZyBhbmQgcmVncmFi YmluZyBsb2NrcyBpbiBhIGxvb3AuCj4gPiA+ID4gCj4gPiA+ID4gVGhlbiBpbiBhbWRncHVfY3Nf c3VibWl0KCkgd2UgZ3JhYiBhbiBsb2NrIHByZXZlbnRpbmcgcGFnZSB0YWJsZSB1cGRhdGVzIGFu ZAo+ID4gPiA+IGNoZWNrIGlmIGFsbCBwYWdlcyBhcmUgc3RpbGwgdGhlIG9uZSB3ZSB3YW50IHRv IGhhdmU6Cj4gPiA+ID4gPiAgwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X21uX2xvY2socC0+bW4pOwo+ ID4gPiA+ID4gIMKgwqDCoMKgwqDCoMKgIGlmIChwLT5ib19saXN0KSB7Cj4gPiA+ID4gPiAgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZvciAoaSA9IHAtPmJvX2xpc3QtPmZpcnN0X3Vz ZXJwdHI7Cj4gPiA+ID4gPiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBpIDwgcC0+Ym9fbGlzdC0+bnVtX2VudHJpZXM7ICsraSkgewo+ID4gPiA+ID4gIMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9ibyAq Ym8gPSBwLT5ib19saXN0LT5hcnJheVtpXS5yb2JqOwo+ID4gPiA+ID4gCj4gPiA+ID4gPiAgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZgo+ID4gPiA+ID4g KGFtZGdwdV90dG1fdHRfdXNlcnB0cl9uZWVkc19wYWdlcyhiby0+dGJvLnR0bSkpIHsKPiA+ID4g PiA+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBhbWRncHVfbW5fdW5sb2NrKHAtPm1uKTsKPiA+ID4gPiA+ICDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gLUVSRVNUQVJUU1lTOwo+ID4gPiA+ID4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfQo+ID4gPiA+ID4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB9Cj4gPiA+ID4gPiAgwqDCoMKgwqDCoMKgwqAgfQo+ID4gPiA+IElmIGFueXRoaW5nIGNo YW5nZWQgb24gdGhlIHBhZ2UgdGFibGVzIHdlIHJlc3RhcnQgdGhlIHdob2xlIElPQ1RMIHVzaW5n Cj4gPiA+ID4gLUVSRVNUQVJUU1lTIGFuZCB0cnkgYWdhaW4uCj4gPiA+IEknbSBub3QgdGFsa2lu ZyBhYm91dCB1c2VycHRyIGhlcmUsIGJ1dCBnZW5lcmFsIGJvIGV2aWN0aW9uLiBTb3JyeSBmb3Ig dGhlCj4gPiA+IGNvbmZ1c2lvbi4KPiA+ID4gCj4gPiA+IFRoZSByZWFzb24gSSdtIGRyYWdnaW5n IGFsbCB0aGUgZ2VuZXJhbCBibyBtYW5hZ2VtZW50IGludG8gdGhpcwo+ID4gPiBkaXNjdXNzaW9u cyBpcyBiZWNhdXNlIHdlIGRvIHNlZW0gdG8gaGF2ZSBmYWlybHkgZnVuZGFtZW50YWwgZGlmZmVy ZW5jZSBpbgo+ID4gPiBob3cgdGhhdCdzIGRvbmUsIHdpdGggcmVzdWx0aW5nIGNvbnNlcXVlbmNl cyBmb3IgdGhlIGxvY2tpbmcgaGllcmFyY2h5Lgo+ID4gPiAKPiA+ID4gQW5kIGlmIHRoaXMgaW52 YWxpZGF0ZV9tYXBwaW5nIHN0dWZmIHNob3VsZCB3b3JrLCB0b2dldGhlciB3aXRoIHVzZXJwdHIK PiA+ID4gYW5kIGV2ZXJ5dGhpbmcgZWxzZSwgSSB0aGluayB3ZSdyZSByZXF1aXJlZCB0byBhZ3Jl ZSBvbiBob3cgdGhpcyBpcyBhbGwKPiA+ID4gc3VwcG9zZWQgdG8gbmVzdCwgYW5kIGhvdyBleGFj dGx5IHdlIHNob3VsZCBiYWNrIG9mZiBmb3IgdGhlIG90aGVyIHNpZGUKPiA+ID4gdGhhdCBuZWVk cyB0byBicmVhayB0aGUgbG9ja2luZyBjaXJjbGUuCj4gPiA+IAo+ID4gPiBUaGF0IGFzaWRlLCBJ IGRvbid0IGVudGlyZWx5IHVuZGVyc3RhbmQgd2h5IHlvdSBuZWVkIHRvIHJlc3RhcnQgc28gbXVj aC4gSQo+ID4gPiBmaWd1cmVkIHRoYXQgZ2V0X3VzZXJfcGFnZXMgaXMgb3JkZXJlZCBjb3JyZWN0 bHkgYWdhaW5zdCBtbXUKPiA+ID4gaW52YWxpZGF0aW9ucywgYnV0IEkgZ2V0IHRoZSBpbXByZXNz aW9uIHlvdSB0aGluayB0aGF0J3Mgbm90IHRoZSBjYXNlLiBIb3cKPiA+ID4gZG9lcyB0aGF0IGhh cHBlbj8KPiA+IAo+ID4gQ29ycmVjdC4gSSd2ZSBoYWQgdGhlIHNhbWUgYXNzdW1wdGlvbiwgYnV0 IGJvdGggSmVyb21lIGFzIHdlbGwgYXMgb3VyCj4gPiBpbnRlcm5hbCB0ZXN0cyBwcm92ZWQgbWUg d3Jvbmcgb24gdGhhdC4KPiA+IAo+ID4gS2V5IHRha2UgYXdheSBmcm9tIHRoYXQgd2FzIHRoYXQg eW91IGNhbid0IHRha2UgYW55IGxvY2tzIGZyb20gbmVpdGhlciB0aGUKPiA+IE1NVSBub3RpZmll ciBub3IgdGhlIHNocmlua2VyIHlvdSBhbHNvIHRha2Ugd2hpbGUgY2FsbGluZyBrbWFsbG9jIChv cgo+ID4gc2ltcGxlciBzcGVha2luZyBnZXRfdXNlcl9wYWdlcygpKS4KPiA+IAo+ID4gQWRkaXRp b25hbCB0byB0aGF0IGluIHRoZSBNTVUgb3Igc2hyaW5rZXIgY2FsbGJhY2sgYWxsIGRpZmZlcmVu dCBraW5kcyBvZgo+ID4gbG9ja3MgbWlnaHQgYmUgaGVsZCwgc28geW91IGJhc2ljYWxseSBjYW4n dCBhc3N1bWUgdGhhdCB5b3UgZG8gdGhpbmtzIGxpa2UKPiA+IHJlY3Vyc2l2ZSBwYWdlIHRhYmxl IHdhbGtzIG9yIGNhbGwgZG1hX3VubWFwX2FueXRoaW5nLgo+IAo+IFRoYXQgc291bmRzIGxpa2Ug YSBkZXNpZ24gYnVnIGluIG1tdV9ub3RpZmllcnMsIHNpbmNlIGl0IHdvdWxkIHJlbmRlciB0aGVt Cj4gdXNlbGVzcyBmb3IgS1ZNLiBBbmQgdGhleSB3ZXJlIGRldmVsb3BlZCBmb3IgdGhhdCBvcmln aW5hbGx5LiBJIHRoaW5rIEknbGwKPiBjaGF0IHdpdGggSmVyb21lIHRvIHVuZGVyc3RhbmQgdGhp cywgc2luY2UgaXQncyBhbGwgcmF0aGVyIGNvbmZ1c2luZy4KCkRvaW5nIGRtYV91bm1hcCgpIGR1 cmluZyBtbXVfbm90aWZpZXIgY2FsbGJhY2sgc2hvdWxkIGJlIGZpbmUsIGl0IHdhcyBsYXN0CnRp bWUgaSBjaGVjay4gSG93ZXZlciB0aGVyZSBpcyBubyBmb3JtYWwgY29udHJhY3QgdGhhdCBpdCBp cyBvayB0byBkbyBzby4KQnV0IGkgd2FudCB0byByZXZpc2l0IERNQSBBUEkgdG8gc29tZXRoaW5n IHdoZXJlIGRldmljZSBkcml2ZXIgZ2V0IGNvbnRyb2wKcmF0aGVyIHRoYW4gZGVsZWdhdGUuIEhp Z2ggbGV2ZWwgaWRlYXMgYXJlOgogIC0gZGV2aWNlIGRyaXZlciBhbGxvY2F0ZSBETUEgc3BhY2Ug aWUgcmFuZ2Ugb2YgcGh5c2ljYWwgYnVzIGFkZHJlc3MKICAtIGRldmljZSBkcml2ZXIgY29tcGxl dGVseSBtYW5hZ2UgdGhlIHJhbmdlIGluIHdoaWNoZXZlciB3YXlzIGl0IHdhbnRzCiAgICB1bmRl ciBpdHMgb3duIGxvY2tpbmcuCiAgLSBETUEgcHJvdmlkZSBBUEkgdG8gZmx1c2ggdGxiL2NhY2hl IG9mIGEgcmFuZ2Ugb2YgcGh5c2ljYWwgYnVzIGFkZHJlc3MKICAgIHdpdGggdGhlIGV4cGxpY2l0 IGNvbnRyYWN0IHRoYXQgaXQgY2FuIG9ubHkgdGFrZSBzaG9ydCBsaXZlZCBzcGlubG9jawogICAg dG8gZG8gc28gYW5kIG5vdCBhbGxvY2F0ZSBvciBmcmVlIG1lbW9yeSB3aGlsZSBkb2luZyBzbyAo aWUgaXQgc2hvdWxkCiAgICBvbmx5IGJlIGEgYnVuY2ggb2YgcmVnaXN0ZXJzIHdyaXRlcykKCkkg aGF2ZW4ndCBoYWQgdGltZSB0byBwcm90b3R5cGUgdGhpcyBidXQgaSBmbG9hdGVkIHRoZSBpZGVh IGEgd2hpbGUgYmFjawphbmQgaSBhbSBob3BpbmcgdG8gZGlzY3VzcyBpdCBzb21lIG1vcmUgc29v bmVyIHJhdGhlciB0aGFuIGxhdHRlciAoTFNGL01NCmlzIGNvbWluZyBzb29uKS4KCgpTbyBmcm9t IGEgc2FmZXR5IHBvaW50IG9mIHZpZXcgaSB3b3VsZCBhcmd1ZSB0aGF0IHlvdSBtdXN0IGJlIGRv aW5nIGRtYV91bm1hcCgpCmZyb20gaW52YWxpZGF0ZV9yYW5nZV9zdGFydCgpIGNhbGxiYWNrLiBC dXQgaXQgYWxsIGRlcGVuZHMgb24gaG93IGNvbmZpZGVudAp5b3UgYXJlIGluIHlvdXIgaGFyZHdh cmUgbW11IGFuZCB0aGUgSU9NTVUgKElPTU1VIHVzdWFseSBoYXZlIHNtYWxsIGNhY2hlIHNvCnVu bGVzcyB0aGVyZSBpcyBubyBQQ0lFIHRyYWZmaWMgYWxsIHBlbmRpbmcgUENJRSB0cmFuc2FjdGlv biBzaG91bGQgcG9zdApxdWlja2VyIHRoYW4gaXQgdGFrZXMgdGhlIENQVSB0byBmaW5pc2ggeW91 ciBpbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KCkgZnVuY3Rpb24uCgpTbyBmb3Igbm93IGkgd291bGQg c2F5IGl0IGlzIG9rIHRvIG5vdCBkbWFfdW5tYXAoKS4KCgo+ID4gVGhpbmtpbmcgYSBtb21lbnQg YWJvdXQgdGhhdCBpdCBhY3R1YWxseSBzZWVtcyB0byBtYWtlIHBlcmZlY3Qgc2Vuc2UuCj4gPiBT byBpdCBkb2Vzbid0IG1hdHRlciB3aGF0IG9yZGVyIHlvdSBnb3QgYmV0d2VlbiB0aGUgbW1hcF9z ZW0gYW5kIHlvdXIgYnVmZmVyCj4gPiBvciBhbGxvY2F0aW9uIGxvY2ssIGl0IHdpbGwgc2ltcGx5 IGJlIGluY29ycmVjdCB3aXRoIG90aGVyIGxvY2tzIGluIHRoZQo+ID4gc3lzdGVtIGFueXdheS4K PiAKPiBIbSwgZG9lc24ndCBtYWtlIHNlbnNlIHRvIG1lLCBhdCBsZWFzdCBmcm9tIGEgbG9ja2lu ZyAgaW52ZXJzaW9uIHBvdi4gSQo+IHRob3VnaHQgdGhlIG9ubHkgbG9ja3MgdGhhdCBhcmUgZGVm aW5pdGVseSBwYXJ0IG9mIHRoZSBtbXVfbm9maXRpZXIKPiBjYWxsYmFjayBjb250ZXh0cyBhcmUg dGhlIG1tIGxvY2tzLiBXZSdyZSBkZWZpbml0ZWx5IGZpbmUgd2l0aCB0aG9zZSwgYW5kCj4ga21h bGxvYyBkaWRuJ3QgYml0ZSB1cyB5ZXQuIERpcmVjdCByZWNsYWltIGlzIHJlYWxseSBsaW1pdGVk IGluIHdoYXQgaXQKPiBjYW4gYWNjb21wbGlzaCBmb3IgZ29vZCByZWFzb25zLgo+IAo+IFNvIHRo ZSBvbmx5IHRoaW5nIEknbSB3b3JyaWVkIGhlcmUgaXMgdGhhdCB3ZSBoYXZlIGEgcmFjZSBiZXR3 ZWVuIHRoZQo+IGludmFsaWRhdGUgYW5kIHRoZSBndXAgY2FsbHMsIGFuZCBJIHRoaW5rIGZpeGlu ZyB0aGF0IHJhY2Ugd2lsbCBtYWtlIHRoZQo+IGxvY2tpbmcgbW9yZSBmdW4uIEJ1dCBhZ2Fpbiwg aWYgdGhhdCBtZWFucyB5b3UgY2FuJ2QgZG1hX3VubWFwIHN0dWZmIHRoZW4KPiB0aGF0IGZlZWxz IGxpa2UgbW11IG5vdGlmaWVycyBhcmUgYnJva2VuIGJ5IGRlc2lnbi4KPiAtRGFuaWVsCj4gCj4g PiBUaGUgb25seSBzb2x1dGlvbiB0byB0aGF0IHByb2JsZW0gd2UgaGF2ZSBmb3VuZCBpcyB0aGUg ZGFuY2Ugd2UgaGF2ZSBpbgo+ID4gYW1kZ3B1IG5vdzoKPiA+IAo+ID4gMS4gSW5zaWRlIGludmFs aWRhdGVfcmFuZ2Vfc3RhcnQgeW91IGdyYWIgYSByZWN1cnNpdmUgcmVhZCBzaWRlIGxvY2suCj4g PiAyLiBXYWl0IGZvciBhbGwgR1BVIG9wZXJhdGlvbiBvbiB0aGF0IHBhZ2VzIHRvIGZpbmlzaC4K PiA+IDMuIFRoZW4gbWFyayBhbGwgcGFnZXMgYXMgZGlydHkgYW5kIGFjY2Vzc2VkLgo+ID4gNC4g SW5zaWRlIGludmFsaWRhdGVfcmFuZ2VfZW5kIHlvdSByZWxlYXNlIHlvdXIgcmVjdXJzaXZlIHJl YWQgc2lkZSBsb2NrCj4gPiBhZ2Fpbi4KPiA+IAo+ID4gVGhlbiBkdXJpbmcgY29tbWFuZCBzdWJt aXNzaW9uIHlvdSBkbyB0aGUgZm9sbG93aW5nOgo+ID4gCj4gPiAxLiBUYWtlIHRoZSBsb2NrcyBG aWd1cmUgb3V0IGFsbCB0aGUgdXNlcnB0ciBCT3Mgd2hpY2ggbmVlZHMgbmV3IHBhZ2VzLgo+ID4g Mi4gRHJvcCB0aGUgbG9ja3MgYWdhaW4gY2FsbCBnZXRfdXNlcl9wYWdlcygpLgo+ID4gMy4gSW5z dGFsbCB0aGUgbmV3IHBhZ2UgYXJyYXlzIGFuZCByZWl0ZXJhdGUgd2l0aCAjMQo+ID4gNC4gQXMg c29vbiBhcyBldmVyeWJvZHkgaGFzIHBhZ2VzIHVwZGF0ZSB5b3VyIHBhZ2UgdGFibGVzIGFuZCBw cmVwYXJlIGFsbAo+ID4gY29tbWFuZCBzdWJtaXNzaW9uLgo+ID4gNS4gVGFrZSB0aGUgd3JpdGUg c2lkZSBvZiBvdXIgcmVjdXJzaXZlIGxvY2suCj4gPiA2LiBDaGVjayBpZiBhbGwgcGFnZXMgYXJl IHN0aWxsIHZhbGlkLCBpZiBub3QgcmVzdGFydCB0aGUgd2hvbGUgSU9DVEwuCj4gPiA3LiBTdWJt aXQgdGhlIGpvYiB0byB0aGUgaGFyZHdhcmUuCj4gPiA4LiBEcm9wIHRoZSB3cml0ZSBzaWRlIG9m IG91ciByZWN1cnNpdmUgbG9jay4KCkEgc2xpZ2h0bHkgYmV0dGVyIHNvbHV0aW9uIGlzIHVzaW5n IGF0b21pYyBjb3VudGVyOgogIGRyaXZlcl9yYW5nZV9zdGFydCgpIHsKICAgIGF0b21pY19pbmMo Jm15ZGV2LT5ub3RpZmllcl9jb3VudCk7CiAgICBsb2NrKG15ZGV2LT5ib191cHRyKTsgLy8gcHJv dGVjdGluZyBibyBsaXN0L3RyZWUKICAgIGZvcl9lYWNoX3VwdHJfYm8oKSB7CiAgICAgICBpbnZh bGlkYXRlX2JvKGJvLCBzdGFydCwgZW5kKTsKICAgIH0KICAgIHVubG9jayhteWRldi0+Ym9fdXB0 cik7CiAgfQoKICBkcml2ZXJfcmFuZ2VfZW5kKCkgewogICAgYXRvbWljX2luYygmbXlkZXYtPm5v dGlmaWVyX3NlcSk7CiAgICBhdG9taWNfZGVjKCZteWRldi0+bm90aWZpZXJfY291bnQpOwogIH0K CiAgZHJpdmVyX2JvX2d1cF9wYWdlcyhibywgbXlkZXYpIHsKICAgIHVuc2lnbmVkIGN1cnNlcTsK ICAgIGRvIHsKICAgICAgd2FpdF9vbl9tbXVfbm90aWZpZXJfY291bnRfdG9femVybygpOwogICAg ICBjdXJzZXEgPSBhdG9taWNfcmVhZCgmbXlkZXYtPm5vdGlmaWVyX3NlcSk7CiAgICAgIGZvciAo aSA9IDA7IGkgPCBucGFnZXM7IGkrKykgewogICAgICAgIHBhZ2VzW2ldID0gZ3VwKGFkZHIgKyAo aSA8PCBQQUdFX1NISUZUKSk7CiAgICAgIH0KICAgICAgbG9jayhteWRldi0+Ym9fdXB0cik7IC8v IHByb3RlY3RpbmcgYm8gbGlzdC90cmVlCiAgICAgIGlmIChjdXJzZXEgPT0gYXRvbWljX3JlYWQo Jm15ZGV2LT5ub3RpZmllcl9zZXEpICYmCiAgICAgICAgICAhYXRvbWljX3JlYWQobXlkZXYtPm5v dGlmaWVyX2NvdW50KSkgewogICAgICAgICBhZGRfdXB0cl9ibyhibywgcGFnZXMpOwogICAgICAg ICBiby0+c2VxID0gY3Vyc2VxOwogICAgICAgICB1bmxvY2sobXlkZXYtPmJvX3VwdHIpOwogICAg ICAgICByZXR1cm4gMDsKICAgICAgfQogICAgICB1bmxvY2sobXlkZXYtPmJvX3VwdHIpOwogICAg ICBwdXRfYWxsX3BhZ2VzKHBhZ2VzKTsKICAgIH0gd2hpbGUgKDEpOwogIH0KCk1heWJlIHVzZSBL Vk0gYXMgYSByZWFsIGV4YW1wbGUgb2YgaG93IHRvIGRvIHRoaXMgKHNlZSB2aXJ0L2t2bS9rdm1f bWFpbi5jKQoKTm90ZSB0aGF0IGhvd2V2ZXIgbXkgZW5kZ2FtZSBpcyBiaXQgbW9yZSBzaW1wbGVy LiBDb252ZXJ0IGFtZCwgaW50ZWwgdG8gdXNlCkhNTSBDUFUgcGFnZSB0YWJsZSBzbmFwc2hvdCB0 b29sIChhbmQgbm8geW91IGRvIG5vdCBuZWVkIHBhZ2UgZmF1bHQgZm9yIHRoYXQKeW91IGNhbiB1 c2UgdGhhdCBmZWF0dXJlIGluZGVwZW5kZW50bHkpLgoKU28gaXQgd291bGQgYmU6CiAgZHJpdmVy X2JvX2htbV9pbnZhbGlkYXRlKCkgewogICAgbG9jayhteWRldi0+Ym9fdXB0cik7IC8vIHByb3Rl Y3RpbmcgYm8gbGlzdC90cmVlCiAgICBmb3JfZWFjaF91cHRyX2JvKCkgewogICAgICAgaW52YWxp ZGF0ZV9ibyhibywgc3RhcnQsIGVuZCk7CiAgICB9CiAgICB1bmxvY2sobXlkZXYtPmJvX3VwdHIp OwogIH0KCiAgZHJpdmVyX2JvX2d1cF9wYWdlcyhibywgbXlkZXYpIHsKICAgIGRvIHsKICAgICAg aG1tX3ZtYV9mYXVsdChyYW5nZSwgYm8tPnN0YXJ0LCBiby0+ZW5kLCBiby0+cGZucyk7CiAgICAg IGxvY2sobXlkZXYtPmJvX3VwdHIpOwogICAgICBpZiAoaG1tX3ZtYV9yYW5nZV9kb25lKHJhbmdl KSkgewogICAgICAgICBhZGRfdXB0cl9ibyhibywgcGZucyk7CiAgICAgIH0KICAgICAgdW5sb2Nr KG15ZGV2LT5ib191cHRyKTsKICAgIH0gd2hpbGUgKDEpOwogIH0KCkkgd291bGQgbGlrZSB0byBz ZWUgZHJpdmVyIHVzaW5nIHNhbWUgY29kZSwgYXMgaXQgbWVhbnMgb25lIHBsYWNlIHRvIGZpeApp c3N1ZXMuIEkgaGFkIGZvciBhIGxvbmcgdGltZSBvbiBteSBUT0RPIGxpc3QgZG9pbmcgdGhlIGFi b3ZlIGNvbnZlcnNpb24KdG8gYW1kIG9yIHJhZGVvbiBrZXJuZWwgZHJpdmVyLiBJIGFtIHB1c2hp bmcgdXAgbXkgdG9kbyBsaXN0IGhvcGVmdWxseSBpbgpuZXh0IGZldyB3ZWVrcyBpIGNhbiBzZW5k IGFuIHJmYyBzbyBwZW9wbGUgY2FuIGhhdmUgYSByZWFsIHNlbnNlIG9mIGhvdwppdCBjYW4gbG9v ay4KCgpDaGVlcnMsCkrDqXLDtG1lCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1k LWdmeAo=