From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v3] drm/amdgpu: Transfer fences to dmabuf importer Date: Tue, 7 Aug 2018 14:59:11 +0200 Message-ID: <20180807125911.GX3008@phenom.ffwll.local> 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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Christian =?iso-8859-1?Q?K=F6nig?= Cc: intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Chris Wilson , amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Daniel Vetter , Alex Deucher List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBBdWcgMDcsIDIwMTggYXQgMDI6NTE6NTBQTSArMDIwMCwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToKPiBBbSAwNy4wOC4yMDE4IHVtIDE0OjQzIHNjaHJpZWIgRGFuaWVsIFZldHRlcjoK PiA+IE9uIFR1ZSwgQXVnIDA3LCAyMDE4IGF0IDAxOjIzOjE5UE0gKzAyMDAsIENocmlzdGlhbiBL w7ZuaWcgd3JvdGU6Cj4gPiA+IEFtIDA3LjA4LjIwMTggdW0gMTM6MDUgc2NocmllYiBDaHJpcyBX aWxzb246Cj4gPiA+ID4gYW1kZ3B1IG9ubHkgdXNlcyBzaGFyZWQtZmVuY2VzIGludGVybmFsbHks IGJ1dCBkbWFidWYgaW1wb3J0ZXJzIHJlbHkgb24KPiA+ID4gPiBpbXBsaWNpdCB3cml0ZSBoYXph cmQgdHJhY2tpbmcgdmlhIHRoZSByZXNlcnZhdGlvbl9vYmplY3QuZmVuY2VfZXhjbC4KPiA+ID4g V2VsbCBJIHdvdWxkIHJhdGhlciBzdWdnZXN0IGEgc29sdXRpb24gd2hlcmUgd2Ugc3RvcCBkb2lu ZyB0aGlzLgo+ID4gPiAKPiA+ID4gVGhlIHByb2JsZW0gaGVyZSBpcyB0aGF0IGk5MTUgYXNzdW1l cyB0aGF0IGEgd3JpdGUgb3BlcmF0aW9uIGFsd2F5cyBuZWVkcwo+ID4gPiBleGNsdXNpdmUgYWNj ZXNzIHRvIGFuIG9iamVjdCBwcm90ZWN0ZWQgYnkgYW4gcmVzZXJ2YXRpb24gb2JqZWN0Lgo+ID4g PiAKPiA+ID4gQXQgbGVhc3QgZm9yIGFtZGdwdSwgcmFkZW9uIGFuZCBub3V2ZWF1IHRoaXMgYXNz dW1wdGlvbiBpcyBpbmNvcnJlY3QsIGJ1dAo+ID4gPiBvbmx5IGFtZGdwdSBoYXMgYSBkZXNpZ24g d2hlcmUgdXNlcnNwYWNlIGlzIG5vdCBseWluZyB0byB0aGUga2VybmVsIGFib3V0Cj4gPiA+IGl0 J3MgcmVhZC93cml0ZSBhY2Nlc3MuCj4gPiA+IAo+ID4gPiBXaGF0IHdlIHNob3VsZCBkbyBpbnN0 ZWFkIGlzIHRvIGFkZCBhIGZsYWcgdG8gZWFjaCBzaGFyZWQgZmVuY2UgdG8gbm90ZSBpZgo+ID4g PiBpdCBpcyBhIHdyaXRlIG9wZXJhdGlvbiBvciBub3QuIFRoZW4gd2UgY2FuIHRyaXZpYWxseSBh ZGQgYSBmdW5jdGlvbiB0byB3YWl0Cj4gPiA+IG9uIG9uIHRob3NlIGluIGk5MTUuCj4gPiA+IAo+ ID4gPiBJIHNob3VsZCBoYXZlIHB1c2hlZCBoYXJkZXIgZm9yIHRoaXMgc29sdXRpb24gd2hlbiB0 aGUgcHJvYmxlbSBjYW1lIHVwCj4gPiA+IGluaXRpYWxseSwKPiA+IEZvciBzaGFyZWQgYnVmZmVy cyBpbiBhbiBpbXBsaWNpdCBzeW5jaW5nIHNldHVwIGxpa2UgZHJpMiB0aGUgZXhjbHVzaXZlCj4g PiBmZW5jZSBfaXNfIHlvdXIgd3JpdGUgZmVuY2UuCj4gCj4gQW5kIGV4YWN0bHkgdGhhdCBpcyBh YnNvbHV0ZWx5IG5vdCBjb3JyZWN0IGlmIHlvdSBhc2sgbWUuCj4gCj4gVGhlIGV4Y2x1c2l2ZSBm ZW5jZSBpcyBmb3IgdHdvIHVzZSBjYXNlcywgdGhlIGZpcnN0IG9uZSBpcyBmb3IgZHJpdmVycyB3 aGljaAo+IGRvbid0IGNhcmUgYWJvdXQgY29uY3VycmVudCBhY2Nlc3NlcyBhbmQgb25seSB1c2Ug c2VyaWFsaXplZCBhY2Nlc3NlcyBhbmQKPiB0aGUgc2Vjb25kIGlzIGZvciBrZXJuZWwgdXNlcyB1 bmRlciB0aGUgaG9vZCBvZiB1c2Vyc3BhY2UsIGV2aWN0aW9ucywgYnVmZmVyCj4gbW92ZXMgZXRj Li4KPiAKPiBXaGF0IGk5MTUgZG9lcyBpcyB0byBhYnVzZSB0aGF0IGNvbmNlcHQgZm9yIHdyaXRl IG9uY2UgcmVhZCBtYW55IHNpdHVhdGlvbnMsCj4gYW5kIHRoYXQgaW4gdHVybiBpcyB0aGUgYnVn IHdlIG5lZWQgdG8gZml4IGhlcmUuCgpBZ2FpbiwgdGhlIGV4Y2x1c2l2ZSBmZW5jZSB3YXMgYWRk ZWQgZm9yIGltcGxpY2l0IHN5bmMgdXNhZ2UgbGlrZSBkcmkyLzMuCl9Ob3RfIGZvciB5b3VyIG93 biBidWZmZXIgbWFuYWdlci4gSWYgeW91IHdhbnQgdG8gc2VwYXJhdGUgdGhlc2UgdHdvCnVzYWdl cywgdGhlbiBJIGd1ZXNzIHdlIGNhbiBkbyB0aGF0LCBidXQgY2xhaW1pbmcgdGhhdCBpOTE1IGlz IHRoZSBvZGQgb25lCm91dCBqdXN0IGFpbnQgdHJ1ZS4gWW91J3JlIGFyZ3VpbmcgYWdhaW5zdCBh bGwgb3RoZXIga21zIGRyaXZlcnMgd2UgaGF2ZQpoZXJlLgoKPiA+IFRoYXQncyBob3cgdGhpcyBz dHVmZiB3b3Jrcy4gTm90ZSBpdCdzIG9ubHkKPiA+IGZvciBpbXBsaWNpdCBmZW5jaW5nIGZvciBk cmkyIHNoYXJlZCBidWZmZXJzLiBpOTE1IGxpZXMgYXMgbXVjaCBhcwo+ID4gZXZlcnlvbmUgZWxz ZSBmb3IgZXhwbGljaXQgc3luY2luZy4KPiAKPiBUaGF0IGlzIHJlYWxseSByZWFsbHkgdWdseSBh bmQgc2hvdWxkIGJlIGZpeGVkIGluc3RlYWQuCgpJdCB3b3JrcyBhbmQgaXMgdWFwaSBub3cuIFdo YXQncyB0aGUgZ2FpbiBpbiAiZml4aW5nIiBpdD8gQW5kIHRoaXMgd2FzCmRpc2N1c3NlZCBhdCBs ZW5ndGggd2hlbiBpbnRlbCBhbmQgZnJlZWRyZW5vIGZvbGtzIHRhbGtlZCBhYm91dAppbXBsZW1l bnRpbmcgZXhwbGljaXQgc3luYyBhbmQgYW5kcm9pZCBzeW5jIHB0cy4KCj4gPiBOb3cgYXMgbG9u ZyBhcyB5b3Ugb25seSBzaGFyZSB3aXRoaW4gYW1kZ3B1IHlvdSBjYW4gZG8gd2hhdGV2ZXIgeW91 IHdhbnQKPiA+IHRvLCBidXQgZm9yIGFueXRoaW5nIHNoYXJlZCBvdXRzaWRlIG9mIGFtZGdwdSwg aWYgdGhlIGJ1ZmZlciBpc24ndCBzaGFyZWQKPiA+IHRocm91Z2ggYW4gZXhwbGljaXQgc3luY2lu ZyBwcm90b2NvbCwgdGhlbiB5b3UgZG8gaGF2ZSB0byBzZXQgdGhlCj4gPiBleGNsdXNpdmUgZmVu Y2UuIFRoYXQncyBhdCBsZWFzdCBob3cgdGhpcyBzdHVmZiB3b3JrcyByaWdodCBub3cgd2l0aCBh bGwKPiA+IG90aGVyIGRyaXZlcnMuCj4gPiAKPiA+IEZvciBpOTE1IHdlIGhhZCB0byBkbyBzb21l IHVhcGkgdHJpY2tlcnkgdG8gbWFrZSB0aGlzIHdvcmsgaW4gYWxsIGNhc2VzLAo+ID4gc2luY2Ug b25seSByZWFsbHkgdXNlcnNwYWNlIGtub3dzIHdoZXRoZXIgYSB3cml0ZSBzaG91bGQgYmUgYSBz aGFyZWQgb3IKPiA+IGV4Y2x1c2l2ZSB3cml0ZS4gQnV0IHRoYXQncyBzdHJpY2x5IGFuIGlzc3Vl IGxpbWl0ZWQgdG8geW91ciBkcml2ZXIsIGFuZAo+ID4gZG9zbid0IG5lZWQgY2hhbmdlcyB0byBy ZXNlcnZhdGlvbiBvYmplY3QgYWxsIHRocm91Z2hvdXQgdGhlIHN0YWNrLgo+IAo+IFlvdSBkb24n dCBuZWVkIHRvIGNoYW5nZSB0aGUgcmVzZXJ2YXRpb24gb2JqZWN0IGFsbCB0aHJvdWdob3V0IHRo ZSBzdGFjay4gQQo+IHNpbXBsZSBmbGFnIGlmIGEgc2hhcmVkIGZlbmNlIGlzIGEgd3JpdGUgb3Ig bm90IHNob3VsZCBiZSBkb2FibGUuCj4gCj4gR2l2ZSBtZSBhIGRheSBvciB0d28gdG8gcHJvdG90 eXBlIHRoYXQsCgpTZWUgbXkgb3RoZXIgcmVwbHksIGkgdGhpbmsgdGhhdCdzIG9ubHkgbmVlZGVk IGZvciBhbWRncHUgaW50ZXJuYWwKYm9vay1rZWVwaW5nLCBzbyB0aGF0IHlvdSBjYW4gY3JlYXRl IHRoZSBjb3JyZWN0IGV4Y2x1c2l2ZSBmZW5jZSBvbiBmaXJzdApleHBvcnQuIEJ1dCB5ZWFoLCBh ZGRpbmcgYSBiaXRmaWVsZCB0byB0cmFjayB3aGljaCBmZW5jZXMgbmVlZCB0byBiZWNvbWUKZXhj bHVzaXZlIHNob3VsZG4ndCBiZSBhIHRyaWNreSBzb2x1dGlvbiB0byBpbXBsZW1lbnQgZm9yIGFt ZGdwdS4KLURhbmllbAoKPiBDaHJpc3RpYW4uCj4gCj4gPiBBc2lkZTogSWYgeW91IHdhbnQgdG8g YXR0YWNoIG11bHRpcGxlIHdyaXRlIGZlbmNlcyB0byB0aGUgZXhjbHVzaXZlIGZlbmNlLAo+ID4g dGhhdCBzaG91bGQgYmUgZG9hYmxlIHdpdGggdGhlIGFycmF5IGZlbmNlcy4KPiA+IC1EYW5pZWwK PiA+IAo+ID4gPiBDaHJpc3RpYW4uCj4gPiA+IAo+ID4gPiA+IEZvciBleGFtcGxlLCB0aGUgaW1w b3J0ZXIgdXNlIHRoZSB3cml0ZSBoYXphcmQgZm9yIHRpbWluZyBhIHBhZ2UgZmxpcCB0bwo+ID4g PiA+IG9ubHkgb2NjdXIgYWZ0ZXIgdGhlIGV4cG9ydGVyIGhhcyBmaW5pc2hlZCBmbHVzaGluZyBp dHMgd3JpdGUgaW50byB0aGUKPiA+ID4gPiBzdXJmYWNlLiBBcyBzdWNoLCBvbiBleHBvcnRpbmcg YSBkbWFidWYsIHdlIG11c3QgZWl0aGVyIGZsdXNoIGFsbAo+ID4gPiA+IG91dHN0YW5kaW5nIGZl bmNlcyAoZm9yIHdlIGRvIG5vdCBrbm93IHdoaWNoIGFyZSB3cml0ZXMgYW5kIHNob3VsZCBoYXZl Cj4gPiA+ID4gYmVlbiBleGNsdXNpdmUpIG9yIGFsdGVybmF0aXZlbHkgY3JlYXRlIGEgbmV3IGV4 Y2x1c2l2ZSBmZW5jZSB0aGF0IGlzCj4gPiA+ID4gdGhlIGNvbXBvc2l0ZSBvZiBhbGwgdGhlIGV4 aXN0aW5nIHNoYXJlZCBmZW5jZXMsIGFuZCBzbyB3aWxsIG9ubHkgYmUKPiA+ID4gPiBzaWduYWxl ZCB3aGVuIGFsbCBlYXJsaWVyIGZlbmNlcyBhcmUgc2lnbmFsZWQgKGVuc3VyaW5nIHRoYXQgd2Ug Y2FuIG5vdAo+ID4gPiA+IGJlIHNpZ25hbGVkIGJlZm9yZSB0aGUgY29tcGxldGlvbiBvZiBhbnkg ZWFybGllciB3cml0ZSkuCj4gPiA+ID4gCj4gPiA+ID4gdjI6IHJlc2VydmF0aW9uX29iamVjdCBp cyBhbHJlYWR5IGxvY2tlZCBieSBhbWRncHVfYm9fcmVzZXJ2ZSgpCj4gPiA+ID4gCj4gPiA+ID4g VGVzdGNhc2U6IGlndC9hbWRfcHJpbWUvYW1kLXRvLWk5MTUKPiA+ID4gPiBTaWduZWQtb2ZmLWJ5 OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiA+ID4gPiBDYzogQWxl eCBEZXVjaGVyIDxhbGV4YW5kZXIuZGV1Y2hlckBhbWQuY29tPgo+ID4gPiA+IENjOiAiQ2hyaXN0 aWFuIEvDtm5pZyIgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KPiA+ID4gPiAtLS0KPiA+ID4g PiAgICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHJpbWUuYyB8IDY4ICsrKysr KysrKysrKysrKysrKysrLS0tCj4gPiA+ID4gICAgMSBmaWxlIGNoYW5nZWQsIDYwIGluc2VydGlv bnMoKyksIDggZGVsZXRpb25zKC0pCj4gPiA+ID4gCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wcmltZS5jIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3ByaW1lLmMKPiA+ID4gPiBpbmRleCAxYzVkOTdmNGI0ZGQuLjU3NmE4 Mzk0NmMyNSAxMDA2NDQKPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfcHJpbWUuYwo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9wcmltZS5jCj4gPiA+ID4gQEAgLTM3LDYgKzM3LDcgQEAKPiA+ID4gPiAgICAjaW5jbHVk ZSAiYW1kZ3B1X2Rpc3BsYXkuaCIKPiA+ID4gPiAgICAjaW5jbHVkZSA8ZHJtL2FtZGdwdV9kcm0u aD4KPiA+ID4gPiAgICAjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgo+ID4gPiA+ICsjaW5jbHVk ZSA8bGludXgvZG1hLWZlbmNlLWFycmF5Lmg+Cj4gPiA+ID4gICAgc3RhdGljIGNvbnN0IHN0cnVj dCBkbWFfYnVmX29wcyBhbWRncHVfZG1hYnVmX29wczsKPiA+ID4gPiBAQCAtMTg4LDYgKzE4OSw1 NyBAQCBhbWRncHVfZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAo+ID4gPiA+ICAgIAlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ID4gPiA+ICAgIH0KPiA+ID4g PiArc3RhdGljIGludAo+ID4gPiA+ICtfX3Jlc2VydmF0aW9uX29iamVjdF9tYWtlX2V4Y2x1c2l2 ZShzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpvYmopCj4gPiA+ID4gK3sKPiA+ID4gPiArCXN0 cnVjdCByZXNlcnZhdGlvbl9vYmplY3RfbGlzdCAqZm9iajsKPiA+ID4gPiArCXN0cnVjdCBkbWFf ZmVuY2VfYXJyYXkgKmFycmF5Owo+ID4gPiA+ICsJc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlczsK PiA+ID4gPiArCXVuc2lnbmVkIGludCBjb3VudCwgaTsKPiA+ID4gPiArCj4gPiA+ID4gKwlmb2Jq ID0gcmVzZXJ2YXRpb25fb2JqZWN0X2dldF9saXN0KG9iaik7Cj4gPiA+ID4gKwlpZiAoIWZvYmop Cj4gPiA+ID4gKwkJcmV0dXJuIDA7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJY291bnQgPSAhIXJjdV9h Y2Nlc3NfcG9pbnRlcihvYmotPmZlbmNlX2V4Y2wpOwo+ID4gPiA+ICsJY291bnQgKz0gZm9iai0+ c2hhcmVkX2NvdW50Owo+ID4gPiA+ICsKPiA+ID4gPiArCWZlbmNlcyA9IGttYWxsb2NfYXJyYXko Y291bnQsIHNpemVvZigqZmVuY2VzKSwgR0ZQX0tFUk5FTCk7Cj4gPiA+ID4gKwlpZiAoIWZlbmNl cykKPiA+ID4gPiArCQlyZXR1cm4gLUVOT01FTTsKPiA+ID4gPiArCj4gPiA+ID4gKwlmb3IgKGkg PSAwOyBpIDwgZm9iai0+c2hhcmVkX2NvdW50OyBpKyspIHsKPiA+ID4gPiArCQlzdHJ1Y3QgZG1h X2ZlbmNlICpmID0KPiA+ID4gPiArCQkJcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChmb2JqLT5z aGFyZWRbaV0sCj4gPiA+ID4gKwkJCQkJCSAgcmVzZXJ2YXRpb25fb2JqZWN0X2hlbGQob2JqKSk7 Cj4gPiA+ID4gKwo+ID4gPiA+ICsJCWZlbmNlc1tpXSA9IGRtYV9mZW5jZV9nZXQoZik7Cj4gPiA+ ID4gKwl9Cj4gPiA+ID4gKwo+ID4gPiA+ICsJaWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihvYmotPmZl bmNlX2V4Y2wpKSB7Cj4gPiA+ID4gKwkJc3RydWN0IGRtYV9mZW5jZSAqZiA9Cj4gPiA+ID4gKwkJ CXJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQob2JqLT5mZW5jZV9leGNsLAo+ID4gPiA+ICsJCQkJ CQkgIHJlc2VydmF0aW9uX29iamVjdF9oZWxkKG9iaikpOwo+ID4gPiA+ICsKPiA+ID4gPiArCQlm ZW5jZXNbaV0gPSBkbWFfZmVuY2VfZ2V0KGYpOwo+ID4gPiA+ICsJfQo+ID4gPiA+ICsKPiA+ID4g PiArCWFycmF5ID0gZG1hX2ZlbmNlX2FycmF5X2NyZWF0ZShjb3VudCwgZmVuY2VzLAo+ID4gPiA+ ICsJCQkJICAgICAgIGRtYV9mZW5jZV9jb250ZXh0X2FsbG9jKDEpLCAwLAo+ID4gPiA+ICsJCQkJ ICAgICAgIGZhbHNlKTsKPiA+ID4gPiArCWlmICghYXJyYXkpCj4gPiA+ID4gKwkJZ290byBlcnJf ZmVuY2VzX3B1dDsKPiA+ID4gPiArCj4gPiA+ID4gKwlyZXNlcnZhdGlvbl9vYmplY3RfYWRkX2V4 Y2xfZmVuY2Uob2JqLCAmYXJyYXktPmJhc2UpOwo+ID4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ID4g Kwo+ID4gPiA+ICtlcnJfZmVuY2VzX3B1dDoKPiA+ID4gPiArCWZvciAoaSA9IDA7IGkgPCBjb3Vu dDsgaSsrKQo+ID4gPiA+ICsJCWRtYV9mZW5jZV9wdXQoZmVuY2VzW2ldKTsKPiA+ID4gPiArCWtm cmVlKGZlbmNlcyk7Cj4gPiA+ID4gKwlyZXR1cm4gLUVOT01FTTsKPiA+ID4gPiArfQo+ID4gPiA+ ICsKPiA+ID4gPiAgICAvKioKPiA+ID4gPiAgICAgKiBhbWRncHVfZ2VtX21hcF9hdHRhY2ggLSAm ZG1hX2J1Zl9vcHMuYXR0YWNoIGltcGxlbWVudGF0aW9uCj4gPiA+ID4gICAgICogQGRtYV9idWY6 IHNoYXJlZCBETUEgYnVmZmVyCj4gPiA+ID4gQEAgLTIxOSwxNiArMjcxLDE2IEBAIHN0YXRpYyBp bnQgYW1kZ3B1X2dlbV9tYXBfYXR0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLAo+ID4gPiA+ ICAgIAlpZiAoYXR0YWNoLT5kZXYtPmRyaXZlciAhPSBhZGV2LT5kZXYtPmRyaXZlcikgewo+ID4g PiA+ICAgIAkJLyoKPiA+ID4gPiAtCQkgKiBXYWl0IGZvciBhbGwgc2hhcmVkIGZlbmNlcyB0byBj b21wbGV0ZSBiZWZvcmUgd2Ugc3dpdGNoIHRvIGZ1dHVyZQo+ID4gPiA+IC0JCSAqIHVzZSBvZiBl eGNsdXNpdmUgZmVuY2Ugb24gdGhpcyBwcmltZSBzaGFyZWQgYm8uCj4gPiA+ID4gKwkJICogV2Ug b25seSBjcmVhdGUgc2hhcmVkIGZlbmNlcyBmb3IgaW50ZXJuYWwgdXNlLCBidXQgaW1wb3J0ZXJz Cj4gPiA+ID4gKwkJICogb2YgdGhlIGRtYWJ1ZiByZWx5IG9uIGV4Y2x1c2l2ZSBmZW5jZXMgZm9y IGltcGxpY2l0bHkKPiA+ID4gPiArCQkgKiB0cmFja2luZyB3cml0ZSBoYXphcmRzLiBBcyBhbnkg b2YgdGhlIGN1cnJlbnQgZmVuY2VzIG1heQo+ID4gPiA+ICsJCSAqIGNvcnJlc3BvbmQgdG8gYSB3 cml0ZSwgd2UgbmVlZCB0byBjb252ZXJ0IGFsbCBleGlzdGluZwo+ID4gPiA+ICsJCSAqIGZlbmNl cyBvbiB0aGUgcmVzZXZhdGlvbiBvYmplY3QgaW50byBhIHNpbmdsZSBleGNsdXNpdmUKPiA+ID4g PiArCQkgKiBmZW5jZS4KPiA+ID4gPiAgICAJCSAqLwo+ID4gPiA+IC0JCXIgPSByZXNlcnZhdGlv bl9vYmplY3Rfd2FpdF90aW1lb3V0X3JjdShiby0+dGJvLnJlc3YsCj4gPiA+ID4gLQkJCQkJCQl0 cnVlLCBmYWxzZSwKPiA+ID4gPiAtCQkJCQkJCU1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKPiA+ID4g PiAtCQlpZiAodW5saWtlbHkociA8IDApKSB7Cj4gPiA+ID4gLQkJCURSTV9ERUJVR19QUklNRSgi RmVuY2Ugd2FpdCBmYWlsZWQ6ICVsaVxuIiwgcik7Cj4gPiA+ID4gKwkJciA9IF9fcmVzZXJ2YXRp b25fb2JqZWN0X21ha2VfZXhjbHVzaXZlKGJvLT50Ym8ucmVzdik7Cj4gPiA+ID4gKwkJaWYgKHIp Cj4gPiA+ID4gICAgCQkJZ290byBlcnJvcl91bnJlc2VydmU7Cj4gPiA+ID4gLQkJfQo+ID4gPiA+ ICAgIAl9Cj4gPiA+ID4gICAgCS8qIHBpbiBidWZmZXIgaW50byBHVFQgKi8KPiA+ID4gX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+ID4gZHJpLWRldmVs IG1haWxpbmcgbGlzdAo+ID4gPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiA+ IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs Cj4gCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRp b24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9h bWQtZ2Z4Cg==