From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH v3] drm/amdgpu: Transfer fences to dmabuf importer Date: Tue, 7 Aug 2018 15:17:06 +0200 Message-ID: <588f53c8-701f-c00f-2cb1-3671986f2be0@amd.com> References: <20180807104500.31264-1-chris@chris-wilson.co.uk> <20180807110558.3298-1-chris@chris-wilson.co.uk> <76fdc5a1-fc05-cd4b-458f-64fc374cb90a@amd.com> <20180807124322.GV3008@phenom.ffwll.local> <20180807125911.GX3008@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180807125911.GX3008@phenom.ffwll.local> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: Alex Deucher , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org List-Id: amd-gfx.lists.freedesktop.org QW0gMDcuMDguMjAxOCB1bSAxNDo1OSBzY2hyaWViIERhbmllbCBWZXR0ZXI6Cj4gT24gVHVlLCBB dWcgMDcsIDIwMTggYXQgMDI6NTE6NTBQTSArMDIwMCwgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToK Pj4gQW0gMDcuMDguMjAxOCB1bSAxNDo0MyBzY2hyaWViIERhbmllbCBWZXR0ZXI6Cj4+PiBPbiBU dWUsIEF1ZyAwNywgMjAxOCBhdCAwMToyMzoxOVBNICswMjAwLCBDaHJpc3RpYW4gS8O2bmlnIHdy b3RlOgo+Pj4+IEFtIDA3LjA4LjIwMTggdW0gMTM6MDUgc2NocmllYiBDaHJpcyBXaWxzb246Cj4+ Pj4+IGFtZGdwdSBvbmx5IHVzZXMgc2hhcmVkLWZlbmNlcyBpbnRlcm5hbGx5LCBidXQgZG1hYnVm IGltcG9ydGVycyByZWx5IG9uCj4+Pj4+IGltcGxpY2l0IHdyaXRlIGhhemFyZCB0cmFja2luZyB2 aWEgdGhlIHJlc2VydmF0aW9uX29iamVjdC5mZW5jZV9leGNsLgo+Pj4+IFdlbGwgSSB3b3VsZCBy YXRoZXIgc3VnZ2VzdCBhIHNvbHV0aW9uIHdoZXJlIHdlIHN0b3AgZG9pbmcgdGhpcy4KPj4+Pgo+ Pj4+IFRoZSBwcm9ibGVtIGhlcmUgaXMgdGhhdCBpOTE1IGFzc3VtZXMgdGhhdCBhIHdyaXRlIG9w ZXJhdGlvbiBhbHdheXMgbmVlZHMKPj4+PiBleGNsdXNpdmUgYWNjZXNzIHRvIGFuIG9iamVjdCBw cm90ZWN0ZWQgYnkgYW4gcmVzZXJ2YXRpb24gb2JqZWN0Lgo+Pj4+Cj4+Pj4gQXQgbGVhc3QgZm9y IGFtZGdwdSwgcmFkZW9uIGFuZCBub3V2ZWF1IHRoaXMgYXNzdW1wdGlvbiBpcyBpbmNvcnJlY3Qs IGJ1dAo+Pj4+IG9ubHkgYW1kZ3B1IGhhcyBhIGRlc2lnbiB3aGVyZSB1c2Vyc3BhY2UgaXMgbm90 IGx5aW5nIHRvIHRoZSBrZXJuZWwgYWJvdXQKPj4+PiBpdCdzIHJlYWQvd3JpdGUgYWNjZXNzLgo+ Pj4+Cj4+Pj4gV2hhdCB3ZSBzaG91bGQgZG8gaW5zdGVhZCBpcyB0byBhZGQgYSBmbGFnIHRvIGVh Y2ggc2hhcmVkIGZlbmNlIHRvIG5vdGUgaWYKPj4+PiBpdCBpcyBhIHdyaXRlIG9wZXJhdGlvbiBv ciBub3QuIFRoZW4gd2UgY2FuIHRyaXZpYWxseSBhZGQgYSBmdW5jdGlvbiB0byB3YWl0Cj4+Pj4g b24gb24gdGhvc2UgaW4gaTkxNS4KPj4+Pgo+Pj4+IEkgc2hvdWxkIGhhdmUgcHVzaGVkIGhhcmRl ciBmb3IgdGhpcyBzb2x1dGlvbiB3aGVuIHRoZSBwcm9ibGVtIGNhbWUgdXAKPj4+PiBpbml0aWFs bHksCj4+PiBGb3Igc2hhcmVkIGJ1ZmZlcnMgaW4gYW4gaW1wbGljaXQgc3luY2luZyBzZXR1cCBs aWtlIGRyaTIgdGhlIGV4Y2x1c2l2ZQo+Pj4gZmVuY2UgX2lzXyB5b3VyIHdyaXRlIGZlbmNlLgo+ PiBBbmQgZXhhY3RseSB0aGF0IGlzIGFic29sdXRlbHkgbm90IGNvcnJlY3QgaWYgeW91IGFzayBt ZS4KPj4KPj4gVGhlIGV4Y2x1c2l2ZSBmZW5jZSBpcyBmb3IgdHdvIHVzZSBjYXNlcywgdGhlIGZp cnN0IG9uZSBpcyBmb3IgZHJpdmVycyB3aGljaAo+PiBkb24ndCBjYXJlIGFib3V0IGNvbmN1cnJl bnQgYWNjZXNzZXMgYW5kIG9ubHkgdXNlIHNlcmlhbGl6ZWQgYWNjZXNzZXMgYW5kCj4+IHRoZSBz ZWNvbmQgaXMgZm9yIGtlcm5lbCB1c2VzIHVuZGVyIHRoZSBob29kIG9mIHVzZXJzcGFjZSwgZXZp Y3Rpb25zLCBidWZmZXIKPj4gbW92ZXMgZXRjLi4KPj4KPj4gV2hhdCBpOTE1IGRvZXMgaXMgdG8g YWJ1c2UgdGhhdCBjb25jZXB0IGZvciB3cml0ZSBvbmNlIHJlYWQgbWFueSBzaXR1YXRpb25zLAo+ PiBhbmQgdGhhdCBpbiB0dXJuIGlzIHRoZSBidWcgd2UgbmVlZCB0byBmaXggaGVyZS4KPiBBZ2Fp biwgdGhlIGV4Y2x1c2l2ZSBmZW5jZSB3YXMgYWRkZWQgZm9yIGltcGxpY2l0IHN5bmMgdXNhZ2Ug bGlrZSBkcmkyLzMuCj4gX05vdF8gZm9yIHlvdXIgb3duIGJ1ZmZlciBtYW5hZ2VyLiBJZiB5b3Ug d2FudCB0byBzZXBhcmF0ZSB0aGVzZSB0d28KPiB1c2FnZXMsIHRoZW4gSSBndWVzcyB3ZSBjYW4g ZG8gdGhhdCwgYnV0IGNsYWltaW5nIHRoYXQgaTkxNSBpcyB0aGUgb2RkIG9uZQo+IG91dCBqdXN0 IGFpbnQgdHJ1ZS4gWW91J3JlIGFyZ3VpbmcgYWdhaW5zdCBhbGwgb3RoZXIga21zIGRyaXZlcnMg d2UgaGF2ZQo+IGhlcmUuCgpObyBJJ20gbm90LiBJIGRpc2N1c3NlZCBleGFjdGx5IHRoYXQgdXNl IGNhc2Ugd2l0aCBNYWFydGVuIHdoZW4gdGhlIApyZXNlcnZhdGlvbiBvYmplY3Qgd2FzIGludHJv ZHVjZWQuCgpJIHRoaW5rIHRoYXQgTWFhcnRlbiBuYW1lZCB0aGUgZXhwbGljaXQgZmVuY2Ugb24g cHVycG9zZSAiZXhwbGljaXQiIApmZW5jZSBhbmQgbm90ICJ3cml0ZSIgZmVuY2UgdG8gbWFrZSB0 aGF0IGRpc3RpbmN0aW9uIGNsZWFyLgoKSSBoYXZlIHRvIGFkbWl0IHRoYXQgdGhpcyB3YXNuJ3Qg cmVhbGx5IGRvY3VtZW50ZWQsIGJ1dCBpdCBpbmRlZWQgd2FzIAp0aGUgb3JpZ2luYWwgcHVycG9z ZSB0byBnZXQgYXdheSBmcm9tIHRoZSBpZGVhIHRoYXQgd3JpdGVzIG5lZWRzIHRvIGJlIApleGNs dXNpdmUuCgo+Pj4gVGhhdCdzIGhvdyB0aGlzIHN0dWZmIHdvcmtzLiBOb3RlIGl0J3Mgb25seQo+ Pj4gZm9yIGltcGxpY2l0IGZlbmNpbmcgZm9yIGRyaTIgc2hhcmVkIGJ1ZmZlcnMuIGk5MTUgbGll cyBhcyBtdWNoIGFzCj4+PiBldmVyeW9uZSBlbHNlIGZvciBleHBsaWNpdCBzeW5jaW5nLgo+PiBU aGF0IGlzIHJlYWxseSByZWFsbHkgdWdseSBhbmQgc2hvdWxkIGJlIGZpeGVkIGluc3RlYWQuCj4g SXQgd29ya3MgYW5kIGlzIHVhcGkgbm93LiBXaGF0J3MgdGhlIGdhaW4gaW4gImZpeGluZyIgaXQ/ CgpJdCBhbGxvd3MgeW91IHRvIGltcGxlbWVudCBleHBsaWNpdCBmZW5jaW5nIGluIHRoZSB1YXBp IHdpdGhvdXQgYnJlYWtpbmcgCmJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCgpTZWUgdGhlIHNpdHVh dGlvbiB3aXRoIGFtZGdwdSBhbmQgaW50ZWwgaXMgdGhlIHNhbWUgYXMgd2l0aCB1c2Vyc3BhY2Ug CndpdGggbWl4ZWQgaW1wbGljaXQgYW5kIGV4cGxpY2l0IGZlbmNpbmcuCgpJZiB0aGF0IGlzbid0 IGZpeGVkIHdlIHdpbGwgcnVuIGludG8gdGhlIHNhbWUgcHJvYmxlbSB3aGVuIERSSTMgZ2V0cyAK aW1wbGljaXQgZmVuY2luZyBhbmQgc29tZSBhcHBsaWNhdGlvbnMgc3RhcnRzIHRvIHVzZSBpdCB3 aGlsZSBvdGhlcnMgCnN0aWxsIHJlbHkgb24gdGhlIGV4cGxpY2l0IGZlbmNpbmcuCgpSZWdhcmRz LApDaHJpc3RpYW4uCgo+IEFuZCB0aGlzIHdhcwo+IGRpc2N1c3NlZCBhdCBsZW5ndGggd2hlbiBp bnRlbCBhbmQgZnJlZWRyZW5vIGZvbGtzIHRhbGtlZCBhYm91dAo+IGltcGxlbWVudGluZyBleHBs aWNpdCBzeW5jIGFuZCBhbmRyb2lkIHN5bmMgcHRzLgo+Cj4+PiBOb3cgYXMgbG9uZyBhcyB5b3Ug b25seSBzaGFyZSB3aXRoaW4gYW1kZ3B1IHlvdSBjYW4gZG8gd2hhdGV2ZXIgeW91IHdhbnQKPj4+ IHRvLCBidXQgZm9yIGFueXRoaW5nIHNoYXJlZCBvdXRzaWRlIG9mIGFtZGdwdSwgaWYgdGhlIGJ1 ZmZlciBpc24ndCBzaGFyZWQKPj4+IHRocm91Z2ggYW4gZXhwbGljaXQgc3luY2luZyBwcm90b2Nv bCwgdGhlbiB5b3UgZG8gaGF2ZSB0byBzZXQgdGhlCj4+PiBleGNsdXNpdmUgZmVuY2UuIFRoYXQn cyBhdCBsZWFzdCBob3cgdGhpcyBzdHVmZiB3b3JrcyByaWdodCBub3cgd2l0aCBhbGwKPj4+IG90 aGVyIGRyaXZlcnMuCj4+Pgo+Pj4gRm9yIGk5MTUgd2UgaGFkIHRvIGRvIHNvbWUgdWFwaSB0cmlj a2VyeSB0byBtYWtlIHRoaXMgd29yayBpbiBhbGwgY2FzZXMsCj4+PiBzaW5jZSBvbmx5IHJlYWxs eSB1c2Vyc3BhY2Uga25vd3Mgd2hldGhlciBhIHdyaXRlIHNob3VsZCBiZSBhIHNoYXJlZCBvcgo+ Pj4gZXhjbHVzaXZlIHdyaXRlLiBCdXQgdGhhdCdzIHN0cmljbHkgYW4gaXNzdWUgbGltaXRlZCB0 byB5b3VyIGRyaXZlciwgYW5kCj4+PiBkb3NuJ3QgbmVlZCBjaGFuZ2VzIHRvIHJlc2VydmF0aW9u IG9iamVjdCBhbGwgdGhyb3VnaG91dCB0aGUgc3RhY2suCj4+IFlvdSBkb24ndCBuZWVkIHRvIGNo YW5nZSB0aGUgcmVzZXJ2YXRpb24gb2JqZWN0IGFsbCB0aHJvdWdob3V0IHRoZSBzdGFjay4gQQo+ PiBzaW1wbGUgZmxhZyBpZiBhIHNoYXJlZCBmZW5jZSBpcyBhIHdyaXRlIG9yIG5vdCBzaG91bGQg YmUgZG9hYmxlLgo+Pgo+PiBHaXZlIG1lIGEgZGF5IG9yIHR3byB0byBwcm90b3R5cGUgdGhhdCwK PiBTZWUgbXkgb3RoZXIgcmVwbHksIGkgdGhpbmsgdGhhdCdzIG9ubHkgbmVlZGVkIGZvciBhbWRn cHUgaW50ZXJuYWwKPiBib29rLWtlZXBpbmcsIHNvIHRoYXQgeW91IGNhbiBjcmVhdGUgdGhlIGNv cnJlY3QgZXhjbHVzaXZlIGZlbmNlIG9uIGZpcnN0Cj4gZXhwb3J0LiBCdXQgeWVhaCwgYWRkaW5n IGEgYml0ZmllbGQgdG8gdHJhY2sgd2hpY2ggZmVuY2VzIG5lZWQgdG8gYmVjb21lCj4gZXhjbHVz aXZlIHNob3VsZG4ndCBiZSBhIHRyaWNreSBzb2x1dGlvbiB0byBpbXBsZW1lbnQgZm9yIGFtZGdw dS4KPiAtRGFuaWVsCj4KPj4gQ2hyaXN0aWFuLgo+Pgo+Pj4gQXNpZGU6IElmIHlvdSB3YW50IHRv IGF0dGFjaCBtdWx0aXBsZSB3cml0ZSBmZW5jZXMgdG8gdGhlIGV4Y2x1c2l2ZSBmZW5jZSwKPj4+ IHRoYXQgc2hvdWxkIGJlIGRvYWJsZSB3aXRoIHRoZSBhcnJheSBmZW5jZXMuCj4+PiAtRGFuaWVs Cj4+Pgo+Pj4+IENocmlzdGlhbi4KPj4+Pgo+Pj4+PiBGb3IgZXhhbXBsZSwgdGhlIGltcG9ydGVy IHVzZSB0aGUgd3JpdGUgaGF6YXJkIGZvciB0aW1pbmcgYSBwYWdlIGZsaXAgdG8KPj4+Pj4gb25s eSBvY2N1ciBhZnRlciB0aGUgZXhwb3J0ZXIgaGFzIGZpbmlzaGVkIGZsdXNoaW5nIGl0cyB3cml0 ZSBpbnRvIHRoZQo+Pj4+PiBzdXJmYWNlLiBBcyBzdWNoLCBvbiBleHBvcnRpbmcgYSBkbWFidWYs IHdlIG11c3QgZWl0aGVyIGZsdXNoIGFsbAo+Pj4+PiBvdXRzdGFuZGluZyBmZW5jZXMgKGZvciB3 ZSBkbyBub3Qga25vdyB3aGljaCBhcmUgd3JpdGVzIGFuZCBzaG91bGQgaGF2ZQo+Pj4+PiBiZWVu IGV4Y2x1c2l2ZSkgb3IgYWx0ZXJuYXRpdmVseSBjcmVhdGUgYSBuZXcgZXhjbHVzaXZlIGZlbmNl IHRoYXQgaXMKPj4+Pj4gdGhlIGNvbXBvc2l0ZSBvZiBhbGwgdGhlIGV4aXN0aW5nIHNoYXJlZCBm ZW5jZXMsIGFuZCBzbyB3aWxsIG9ubHkgYmUKPj4+Pj4gc2lnbmFsZWQgd2hlbiBhbGwgZWFybGll ciBmZW5jZXMgYXJlIHNpZ25hbGVkIChlbnN1cmluZyB0aGF0IHdlIGNhbiBub3QKPj4+Pj4gYmUg c2lnbmFsZWQgYmVmb3JlIHRoZSBjb21wbGV0aW9uIG9mIGFueSBlYXJsaWVyIHdyaXRlKS4KPj4+ Pj4KPj4+Pj4gdjI6IHJlc2VydmF0aW9uX29iamVjdCBpcyBhbHJlYWR5IGxvY2tlZCBieSBhbWRn cHVfYm9fcmVzZXJ2ZSgpCj4+Pj4+Cj4+Pj4+IFRlc3RjYXNlOiBpZ3QvYW1kX3ByaW1lL2FtZC10 by1pOTE1Cj4+Pj4+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2ls c29uLmNvLnVrPgo+Pj4+PiBDYzogQWxleCBEZXVjaGVyIDxhbGV4YW5kZXIuZGV1Y2hlckBhbWQu Y29tPgo+Pj4+PiBDYzogIkNocmlzdGlhbiBLw7ZuaWciIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5j b20+Cj4+Pj4+IC0tLQo+Pj4+PiAgICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X3ByaW1lLmMgfCA2OCArKysrKysrKysrKysrKysrKysrKy0tLQo+Pj4+PiAgICAgMSBmaWxlIGNo YW5nZWQsIDYwIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCj4+Pj4+Cj4+Pj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHJpbWUuYyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wcmltZS5jCj4+Pj4+IGluZGV4IDFjNWQ5N2Y0 YjRkZC4uNTc2YTgzOTQ2YzI1IDEwMDY0NAo+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfcHJpbWUuYwo+Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfcHJpbWUuYwo+Pj4+PiBAQCAtMzcsNiArMzcsNyBAQAo+Pj4+PiAgICAgI2lu Y2x1ZGUgImFtZGdwdV9kaXNwbGF5LmgiCj4+Pj4+ICAgICAjaW5jbHVkZSA8ZHJtL2FtZGdwdV9k cm0uaD4KPj4+Pj4gICAgICNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+Cj4+Pj4+ICsjaW5jbHVk ZSA8bGludXgvZG1hLWZlbmNlLWFycmF5Lmg+Cj4+Pj4+ICAgICBzdGF0aWMgY29uc3Qgc3RydWN0 IGRtYV9idWZfb3BzIGFtZGdwdV9kbWFidWZfb3BzOwo+Pj4+PiBAQCAtMTg4LDYgKzE4OSw1NyBA QCBhbWRncHVfZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+Pj4+PiAgICAgCXJldHVybiBFUlJfUFRSKHJldCk7Cj4+Pj4+ICAgICB9Cj4+Pj4+ICtzdGF0 aWMgaW50Cj4+Pj4+ICtfX3Jlc2VydmF0aW9uX29iamVjdF9tYWtlX2V4Y2x1c2l2ZShzdHJ1Y3Qg cmVzZXJ2YXRpb25fb2JqZWN0ICpvYmopCj4+Pj4+ICt7Cj4+Pj4+ICsJc3RydWN0IHJlc2VydmF0 aW9uX29iamVjdF9saXN0ICpmb2JqOwo+Pj4+PiArCXN0cnVjdCBkbWFfZmVuY2VfYXJyYXkgKmFy cmF5Owo+Pj4+PiArCXN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZXM7Cj4+Pj4+ICsJdW5zaWduZWQg aW50IGNvdW50LCBpOwo+Pj4+PiArCj4+Pj4+ICsJZm9iaiA9IHJlc2VydmF0aW9uX29iamVjdF9n ZXRfbGlzdChvYmopOwo+Pj4+PiArCWlmICghZm9iaikKPj4+Pj4gKwkJcmV0dXJuIDA7Cj4+Pj4+ ICsKPj4+Pj4gKwljb3VudCA9ICEhcmN1X2FjY2Vzc19wb2ludGVyKG9iai0+ZmVuY2VfZXhjbCk7 Cj4+Pj4+ICsJY291bnQgKz0gZm9iai0+c2hhcmVkX2NvdW50Owo+Pj4+PiArCj4+Pj4+ICsJZmVu Y2VzID0ga21hbGxvY19hcnJheShjb3VudCwgc2l6ZW9mKCpmZW5jZXMpLCBHRlBfS0VSTkVMKTsK Pj4+Pj4gKwlpZiAoIWZlbmNlcykKPj4+Pj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4+Pj4+ICsKPj4+ Pj4gKwlmb3IgKGkgPSAwOyBpIDwgZm9iai0+c2hhcmVkX2NvdW50OyBpKyspIHsKPj4+Pj4gKwkJ c3RydWN0IGRtYV9mZW5jZSAqZiA9Cj4+Pj4+ICsJCQlyY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVk KGZvYmotPnNoYXJlZFtpXSwKPj4+Pj4gKwkJCQkJCSAgcmVzZXJ2YXRpb25fb2JqZWN0X2hlbGQo b2JqKSk7Cj4+Pj4+ICsKPj4+Pj4gKwkJZmVuY2VzW2ldID0gZG1hX2ZlbmNlX2dldChmKTsKPj4+ Pj4gKwl9Cj4+Pj4+ICsKPj4+Pj4gKwlpZiAocmN1X2FjY2Vzc19wb2ludGVyKG9iai0+ZmVuY2Vf ZXhjbCkpIHsKPj4+Pj4gKwkJc3RydWN0IGRtYV9mZW5jZSAqZiA9Cj4+Pj4+ICsJCQlyY3VfZGVy ZWZlcmVuY2VfcHJvdGVjdGVkKG9iai0+ZmVuY2VfZXhjbCwKPj4+Pj4gKwkJCQkJCSAgcmVzZXJ2 YXRpb25fb2JqZWN0X2hlbGQob2JqKSk7Cj4+Pj4+ICsKPj4+Pj4gKwkJZmVuY2VzW2ldID0gZG1h X2ZlbmNlX2dldChmKTsKPj4+Pj4gKwl9Cj4+Pj4+ICsKPj4+Pj4gKwlhcnJheSA9IGRtYV9mZW5j ZV9hcnJheV9jcmVhdGUoY291bnQsIGZlbmNlcywKPj4+Pj4gKwkJCQkgICAgICAgZG1hX2ZlbmNl X2NvbnRleHRfYWxsb2MoMSksIDAsCj4+Pj4+ICsJCQkJICAgICAgIGZhbHNlKTsKPj4+Pj4gKwlp ZiAoIWFycmF5KQo+Pj4+PiArCQlnb3RvIGVycl9mZW5jZXNfcHV0Owo+Pj4+PiArCj4+Pj4+ICsJ cmVzZXJ2YXRpb25fb2JqZWN0X2FkZF9leGNsX2ZlbmNlKG9iaiwgJmFycmF5LT5iYXNlKTsKPj4+ Pj4gKwlyZXR1cm4gMDsKPj4+Pj4gKwo+Pj4+PiArZXJyX2ZlbmNlc19wdXQ6Cj4+Pj4+ICsJZm9y IChpID0gMDsgaSA8IGNvdW50OyBpKyspCj4+Pj4+ICsJCWRtYV9mZW5jZV9wdXQoZmVuY2VzW2ld KTsKPj4+Pj4gKwlrZnJlZShmZW5jZXMpOwo+Pj4+PiArCXJldHVybiAtRU5PTUVNOwo+Pj4+PiAr fQo+Pj4+PiArCj4+Pj4+ICAgICAvKioKPj4+Pj4gICAgICAqIGFtZGdwdV9nZW1fbWFwX2F0dGFj aCAtICZkbWFfYnVmX29wcy5hdHRhY2ggaW1wbGVtZW50YXRpb24KPj4+Pj4gICAgICAqIEBkbWFf YnVmOiBzaGFyZWQgRE1BIGJ1ZmZlcgo+Pj4+PiBAQCAtMjE5LDE2ICsyNzEsMTYgQEAgc3RhdGlj IGludCBhbWRncHVfZ2VtX21hcF9hdHRhY2goc3RydWN0IGRtYV9idWYgKmRtYV9idWYsCj4+Pj4+ ICAgICAJaWYgKGF0dGFjaC0+ZGV2LT5kcml2ZXIgIT0gYWRldi0+ZGV2LT5kcml2ZXIpIHsKPj4+ Pj4gICAgIAkJLyoKPj4+Pj4gLQkJICogV2FpdCBmb3IgYWxsIHNoYXJlZCBmZW5jZXMgdG8gY29t cGxldGUgYmVmb3JlIHdlIHN3aXRjaCB0byBmdXR1cmUKPj4+Pj4gLQkJICogdXNlIG9mIGV4Y2x1 c2l2ZSBmZW5jZSBvbiB0aGlzIHByaW1lIHNoYXJlZCBiby4KPj4+Pj4gKwkJICogV2Ugb25seSBj cmVhdGUgc2hhcmVkIGZlbmNlcyBmb3IgaW50ZXJuYWwgdXNlLCBidXQgaW1wb3J0ZXJzCj4+Pj4+ ICsJCSAqIG9mIHRoZSBkbWFidWYgcmVseSBvbiBleGNsdXNpdmUgZmVuY2VzIGZvciBpbXBsaWNp dGx5Cj4+Pj4+ICsJCSAqIHRyYWNraW5nIHdyaXRlIGhhemFyZHMuIEFzIGFueSBvZiB0aGUgY3Vy cmVudCBmZW5jZXMgbWF5Cj4+Pj4+ICsJCSAqIGNvcnJlc3BvbmQgdG8gYSB3cml0ZSwgd2UgbmVl ZCB0byBjb252ZXJ0IGFsbCBleGlzdGluZwo+Pj4+PiArCQkgKiBmZW5jZXMgb24gdGhlIHJlc2V2 YXRpb24gb2JqZWN0IGludG8gYSBzaW5nbGUgZXhjbHVzaXZlCj4+Pj4+ICsJCSAqIGZlbmNlLgo+ Pj4+PiAgICAgCQkgKi8KPj4+Pj4gLQkJciA9IHJlc2VydmF0aW9uX29iamVjdF93YWl0X3RpbWVv dXRfcmN1KGJvLT50Ym8ucmVzdiwKPj4+Pj4gLQkJCQkJCQl0cnVlLCBmYWxzZSwKPj4+Pj4gLQkJ CQkJCQlNQVhfU0NIRURVTEVfVElNRU9VVCk7Cj4+Pj4+IC0JCWlmICh1bmxpa2VseShyIDwgMCkp IHsKPj4+Pj4gLQkJCURSTV9ERUJVR19QUklNRSgiRmVuY2Ugd2FpdCBmYWlsZWQ6ICVsaVxuIiwg cik7Cj4+Pj4+ICsJCXIgPSBfX3Jlc2VydmF0aW9uX29iamVjdF9tYWtlX2V4Y2x1c2l2ZShiby0+ dGJvLnJlc3YpOwo+Pj4+PiArCQlpZiAocikKPj4+Pj4gICAgIAkJCWdvdG8gZXJyb3JfdW5yZXNl cnZlOwo+Pj4+PiAtCQl9Cj4+Pj4+ICAgICAJfQo+Pj4+PiAgICAgCS8qIHBpbiBidWZmZXIgaW50 byBHVFQgKi8KPj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+Pj4+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPj4+PiBkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCj4+Pj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbAo=