From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 3/4] drm: add ARM flush implementations Date: Tue, 30 Jan 2018 10:09:41 +0100 Message-ID: <20180130090941.GA25930@phenom.ffwll.local> References: <20180117003559.67837-1-gurchetansingh@chromium.org> <20180117003559.67837-3-gurchetansingh@chromium.org> <20180117083105.GG2759@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: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Gurchetan Singh Cc: ML dri-devel , Thierry Reding , Laurent Pinchart , linux-tegra@vger.kernel.org, Daniel Vetter List-Id: linux-tegra@vger.kernel.org T24gVGh1LCBKYW4gMTgsIDIwMTggYXQgMDk6MjA6MTFBTSAtMDgwMCwgR3VyY2hldGFuIFNpbmdo IHdyb3RlOgo+IE9uIFdlZCwgSmFuIDE3LCAyMDE4IGF0IDExOjQyIFBNLCBEYW5pZWwgVmV0dGVy IDxkYW5pZWxAZmZ3bGwuY2g+IHdyb3RlOgo+IAo+ID4gT24gV2VkLCBKYW4gMTcsIDIwMTggYXQg MTE6NDYgUE0sIEd1cmNoZXRhbiBTaW5naAo+ID4gPGd1cmNoZXRhbnNpbmdoQGNocm9taXVtLm9y Zz4gd3JvdGU6Cj4gPiA+PiBkbWEgYXBpIGp1c3QgaXNuJ3QgcXVpdGUgc3VmZmljaWVudCBmb3Ig aW1wbGVtZW50aW5nIGZhc3QgZ3B1IGRyaXZlcnMuCj4gPiA+Cj4gPiA+Cj4gPiA+IENhbiB5b3Ug ZWxhYm9yYXRlPyAgSUlSQyB0aGUgRE1BIEFQSSBoYXMgc3Ryb25nIHN5bmNocm9uaXphdGlvbgo+ ID4gZ3VhcmFudGVlcwo+ID4gPiBhbmQgdGhhdCBjYW4gYmUgcHJvYmxlbWF0aWMgZm9yIEdQVSBk cml2ZXJzLiAgSG93ZXZlciwgdXNpbmcgdGhlIERNQSBBUEkKPiA+IGZvcgo+ID4gPiBmbHVzaGlu ZyBkb2Vzbid0IG5lY2Vzc2FyaWx5IG1lYW4gdGhlIGRyaXZlciBoYXMgdG8gdXNlIHRoZSByZXN0 IG9mIHRoZQo+ID4gRE1BCj4gPiA+IEFQSS4KPiA+ID4KPiA+ID4+IGJ1dCB0aGVuIGl0J2QgbmVl ZCB0byBkaXJlY3RseSBmbHVzaCBjcHUgY2FjaGVzIGFuZCBieXBhc3MgdGhlIGRtYSBhcGkuCj4g PiA+Cj4gPiA+Cj4gPiA+IE9uIEFSTSwgY2FjaGUgZmx1c2hpbmcgc2VlbXMgdG8gdmFyeSBmcm9t IGNoaXBzZXQgdG8gY2hpcHNldC4gIEZvcgo+ID4gZXhhbXBsZSwKPiA+ID4gb24gQVJNMzIgYSB0 eXBpY2FsIGNhbGwtc3RhY2sgZm9yIGRtYV9zeW5jX3NpbmdsZV9mb3JfZGV2aWNlIGxvb2tzIGxp a2U6Cj4gPiA+Cj4gPiA+IGFybV9kbWFfc3luY19zaW5nbGVfZm9yX2RldmljZQo+ID4gPiBfX2Rt YV9wYWdlX2NwdV90b19kZXYKPiA+ID4gb3V0ZXJfY2xlYW5fcmFuZ2UKPiA+ID4gb3V0ZXJfY2Fj aGUuY2xlYW5fcmFuZ2UKPiA+ID4KPiA+ID4gVGhlcmUgYXJlIG11bHRpcGxlIGNsZWFuX3Jhbmdl IGltcGxlbWVudGF0aW9ucyBvdXQgdGhlcmUgKGkuZSwKPiA+ID4gYXVyb3JhX2NsZWFuX3Jhbmdl LCBsMmMyMTBfY2xlYW5fcmFuZ2UsIGZlcm9jZW9uX2wyX2NsZWFuX3JhbmdlKSwgc28KPiA+IHRo YXQncwo+ID4gPiB3aHkgdGhlIERNQSBBUEkgd2FzIHVzZWQgaW4gdGhpcyBjYXNlLiAgT24gQVJN NjQsIHRoaW5ncyBhcmUgYSBsaXR0bGUKPiA+ID4gc2ltcGxlciwgYnV0IHRoZSBETUEgQVBJIHNl ZW1zIHRvIGdvIGRpcmVjdGx5IHRvIGFzc2VtYmx5Cj4gPiAoX19kbWFfbWFwX2FyZWEpCj4gPiA+ IGFmdGVyIGEgbGl0dGxlIGluZGlyZWN0aW9uLiAgV2h5IGRvIHlvdSB0aGluayB0aGF0J3MgaW5l ZmZpY2llbnQ/Cj4gPgo+ID4gSSBuZXZlciBzYWlkIGl0J3MgaW5lZmZpY2llbnQuIE15IG9ubHkg Z3JpcGUgaXMgd2l0aCBhZGRpbmcgdGhlCj4gPiBwb2ludGxlc3Mgc3RydWN0IGRldmljZSAqIGFy Z3VtZW50IHRvIGZsdXNoaW5nIGZ1bmN0aW9ucyB3aGljaCByZWFsbHkKPiA+IGRvbid0IGNhcmUg KG5vciBzaG91bGQgY2FyZSkgYWJvdXQgdGhlIGRldmljZS4gQmVjYXVzZSB3aGF0IHdlIHJlYWxs eQo+ID4gd2FudCB0byBjYWxsIGlzIG91dGVyX2NsZWFuX3JhbmdlIGhlcmUsIGFuZCB0aGF0IGRv ZXNuJ3QgbmVlZCBhIHN0cnVjdAo+ID4gZGV2aWNlICouIEltbyB0aGF0IGZ1bmN0aW9uIChvciBz b21ldGhpbmcgc2ltaWxhcikgbmVlZHMgdG8gYmUKPiA+IGV4cG9ydGVkIGFuZCB0aGVuIHVzZWQg YnkgZHJtX2ZsdXNoXyogZnVuY3Rpb25zLgo+ID4KPiAKPiBPa2F5LCB3ZSBjYW4gZ28gd2l0aCBv dXRlcl9jbGVhbl9yYW5nZSBvbiBBUk0gYW5kCj4gX19kbWFfbWFwX2FyZWEvX19kbWFfZmx1c2hf YXJlYQo+IG9uIEFSTTY0LiAgT25lIGNvbmNlcm4sIG9uIEFSTTY0IGF0LWxlYXN0LCB0aGUgaGVh ZGVyCj4gKGFybTY0L2luY2x1ZGUvYXNtL2NhY2hlZmx1c2guaCkgaW5kaWNhdGVzIHdlIHNob3Vs ZG4ndCBjYWxsIHRoZXNlCj4gZnVuY3Rpb25zIGRpcmVjdGx5IGZvciB3aGF0ZXZlciByZWFzb246 Cj4gCj4gIkNhY2hlIG1haW50ZW5hbmNlIGZ1bmN0aW9ucyB1c2VkIGJ5IHRoZSBETUEgQVBJLiBO byB0byBiZSB1c2VkIGRpcmVjdGx5LiIKPiAKPiBIb3dldmVyLCBpZiBubyBvbmUgb2JqZWN0cywg dGhhdCdzIHRoZSByb3V0ZSB3ZSdsbCBnby4KClllYWgsIGRybV9mbHVzaC5jIGlzIGFsbCBhYm91 dCBub3QgZm9sbG93aW5nIHRoZSBkbWEgYXBpIGFuZCBkaWdnaW5nIGEKZGlyZWN0IHBhdGggdG8g dGhlIHVuZGVybHlpbmcgY29uY2VwdHMuIFNvIHRvdGFsbHkgZmluZS4KCk1heWJlIHdlIHNob3Vs ZCBpbXByb3ZlIHRoZSBrZXJuZWxkb2MgYSBiaXQgYXMgcGFydCBvZiB5b3VyIHBhdGNoIHNlcmll cywKdG8gZXhwbGFpbiB0aGlzIGJldHRlcj8KLURhbmllbAoKPiAKPiA+Cj4gPiBBbHNvIG5vdGUg dGhhdCBhcm0gaGFzIGJvdGggZmx1c2ggYW5kIGludmFsaWRhdGUgZnVuY3Rpb25zLCBidXQgb24g eDg2Cj4gPiB0aG9zZSBhcmUgdGhlIHNhbWUgaW1wbGVtZW50YXRpb24gKGFuZCB3ZSBkb24ndCBo YXZlIGEgc2VwYXJhdGUKPiA+IGRybV9pbnZhbGlkYXRlXyogc2V0IG9mIGZ1bmN0aW9ucykuIFRo YXQgZG9lc24ndCBsb29rIGxpa2UgYSB0b28gZ29vZAo+ID4gaWRlYS4KPiA+Cj4gPiBPZiBjb3Vy c2UgdGhhdCBkb2Vzbid0IHNvbHZlIHRoZSBwcm9ibGVtIG9mIHdobydzIHN1cHBvc2VkIHRvIGNh bGwgaXQKPiA+IGFuZCB3aGVuIGluIHRoZSBkbWEtYnVmIHNoYXJpbmcgc2l0dWF0aW9uLgo+ID4g LURhbmllbAo+ID4KPiA+ID4gT24gV2VkLCBKYW4gMTcsIDIwMTggYXQgMTI6MzEgQU0sIERhbmll bCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4gd3JvdGU6Cj4gPiA+Pgo+ID4gPj4gT24gVHVlLCBK YW4gMTYsIDIwMTggYXQgMDQ6MzU6NThQTSAtMDgwMCwgR3VyY2hldGFuIFNpbmdoIHdyb3RlOgo+ ID4gPj4gPiBUaGUgRE1BIEFQSSBjYW4gYmUgdXNlZCB0byBmbHVzaCBzY2F0dGVyIGdhdGhlciB0 YWJsZXMgYW5kIHBoeXNpY2FsCj4gPiA+PiA+IHBhZ2VzIG9uIEFSTSBkZXZpY2VzLgo+ID4gPj4g Pgo+ID4gPj4gPiBTaWduZWQtb2ZmLWJ5OiBHdXJjaGV0YW4gU2luZ2ggPGd1cmNoZXRhbnNpbmdo QGNocm9taXVtLm9yZz4KPiA+ID4+ID4gLS0tCj4gPiA+PiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJt X2NhY2hlLmMgICAgICAgICAgICAgICAgIHwgMTcgKysrKysrKysrKysrKysrKysKPiA+ID4+ID4g IGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZ2VtLmMgfCAgNyArKy0tLS0t Cj4gPiA+PiA+ICBkcml2ZXJzL2dwdS9kcm0vdGVncmEvZ2VtLmMgICAgICAgICAgICAgICAgIHwg IDYgKy0tLS0tCj4gPiA+PiA+ICAzIGZpbGVzIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDEw IGRlbGV0aW9ucygtKQo+ID4gPj4gPgo+ID4gPj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2RybV9jYWNoZS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jYWNoZS5jCj4gPiA+PiA+IGlu ZGV4IDNkMmJiOWQ3MWE2MC4uOThkNmViYjQwZTk2IDEwMDY0NAo+ID4gPj4gPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2NhY2hlLmMKPiA+ID4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9jYWNoZS5jCj4gPiA+PiA+IEBAIC0xMDUsNiArMTA1LDE4IEBAIGRybV9mbHVzaF9wYWdlcyhz dHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBwYWdlCj4gPiA+PiA+ICpwYWdlc1tdLAo+ID4gPj4g PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylwYWdlX3Zp cnR1YWwgKwo+ID4gPj4gPiBQQUdFX1NJWkUpOwo+ID4gPj4gPiAgICAgICAgICAgICAgIGt1bm1h cF9hdG9taWMocGFnZV92aXJ0dWFsKTsKPiA+ID4+ID4gICAgICAgfQo+ID4gPj4gPiArI2VsaWYg ZGVmaW5lZChDT05GSUdfQVJNKSB8fCBkZWZpbmVkKENPTkZJR19BUk02NCkKPiA+ID4+ID4gKyAg ICAgdW5zaWduZWQgbG9uZyBpOwo+ID4gPj4gPiArICAgICBkbWFfYWRkcl90IGRtYV9oYW5kbGU7 Cj4gPiA+PiA+ICsKPiA+ID4+ID4gKyAgICAgaWYgKCFkZXYpCj4gPiA+PiA+ICsgICAgICAgICAg ICAgcmV0dXJuOwo+ID4gPj4gPiArCj4gPiA+PiA+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBudW1f cGFnZXM7IGkrKykgewo+ID4gPj4gPiArICAgICAgICAgICAgIGRtYV9oYW5kbGUgPSBwaHlzX3Rv X2RtYShkcm0tPmRldiwKPiA+ID4+ID4gcGFnZV90b19waHlzKHBhZ2VzW2ldKSk7Cj4gPiA+PiA+ ICsgICAgICAgICAgICAgZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2UoZGV2LCBkbWFfaGFuZGxl LCBQQUdFX1NJWkUsCj4gPiA+PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRE1BX1RPX0RFVklDRSk7Cj4gPiA+Pgo+ID4gPj4gRXJtIG5vLiBUaGVzZSBmdW5jdGlv bnMgaGVyZSBhcmUgc3VwZXItbG93LWxldmVsIGZ1bmN0aW9ucyB1c2VkIGJ5Cj4gPiBkcml2ZXJz Cj4gPiA+PiB3aGljaCBrbm93IGV4YWN0bHkgd2hhdCB0aGV5J3JlIGRvaW5nLiBXaGljaCBpcyBy ZWltcGxlbWVudGluZyBoYWxmIG9mCj4gPiB0aGUKPiA+ID4+IGRtYSBhcGkgYmVoaW5kIHRoZSBk bWEgYXBpJ3MgYmFjayBiZWNhdXNlIHRoZSBkbWEgYXBpIGp1c3QgaXNuJ3QgcXVpdGUKPiA+ID4+ IHN1ZmZpY2llbnQgZm9yIGltcGxlbWVudGluZyBmYXN0IGdwdSBkcml2ZXJzLgo+ID4gPj4KPiA+ ID4+IElmIGFsbCB5b3UgZW5kIHVwIGRvaW5nIGlzIGNhbGxpbmcgdGhlIGRtYSBhcGkgYWdhaW4s IHRoZW4gcGxzIGp1c3QgY2FsbAo+ID4gPj4gaXQgZGlyZWN0bHkuCj4gPiA+Pgo+ID4gPj4gQW5k IGp1c3QgdG8gbWFrZSBpdCBjbGVhcjogSSdkIGJlIHBlcmZlY3RseSBmaW5lIHdpdGggYWRkaW5n IGFybSBzdXBwb3J0Cj4gPiA+PiBoZXJlLCBidXQgdGhlbiBpdCdkIG5lZWQgdG8gZGlyZWN0bHkg Zmx1c2ggY3B1IGNhY2hlcyBhbmQgYnlwYXNzIHRoZSBkbWEKPiA+ID4+IGFwaS4gT3RoZXJ3aXNl IHRoaXMgaXMgcG9pbnRsZXNzLgo+ID4gPj4gLURhbmllbAo+ID4gPj4KPiA+ID4+ID4gKyAgICAg fQo+ID4gPj4gPiAgI2Vsc2UKPiA+ID4+ID4gICAgICAgcHJfZXJyKCJBcmNoaXRlY3R1cmUgaGFz IG5vIGRybV9jYWNoZS5jIHN1cHBvcnRcbiIpOwo+ID4gPj4gPiAgICAgICBXQVJOX09OX09OQ0Uo MSk7Cj4gPiA+PiA+IEBAIC0xMzYsNiArMTQ4LDExIEBAIGRybV9mbHVzaF9zZyhzdHJ1Y3QgZGV2 aWNlICpkZXYsIHN0cnVjdCBzZ190YWJsZQo+ID4gPj4gPiAqc3QpCj4gPiA+PiA+Cj4gPiA+PiA+ ICAgICAgIGlmICh3YmludmRfb25fYWxsX2NwdXMoKSkKPiA+ID4+ID4gICAgICAgICAgICAgICBw cl9lcnIoIlRpbWVkIG91dCB3YWl0aW5nIGZvciBjYWNoZSBmbHVzaFxuIik7Cj4gPiA+PiA+ICsj ZWxpZiBkZWZpbmVkKENPTkZJR19BUk0pIHx8IGRlZmluZWQoQ09ORklHX0FSTTY0KQo+ID4gPj4g PiArICAgICBpZiAoIWRldikKPiA+ID4+ID4gKyAgICAgICAgICAgICByZXR1cm47Cj4gPiA+PiA+ ICsKPiA+ID4+ID4gKyAgICAgZG1hX3N5bmNfc2dfZm9yX2RldmljZShkZXYsIHN0LT5zZ2wsIHN0 LT5uZW50cywgRE1BX1RPX0RFVklDRSk7Cj4gPiA+PiA+ICAjZWxzZQo+ID4gPj4gPiAgICAgICBw cl9lcnIoIkFyY2hpdGVjdHVyZSBoYXMgbm8gZHJtX2NhY2hlLmMgc3VwcG9ydFxuIik7Cj4gPiA+ PiA+ICAgICAgIFdBUk5fT05fT05DRSgxKTsKPiA+ID4+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZ2VtLmMKPiA+ID4+ID4gYi9kcml2ZXJzL2dw dS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2dlbS5jCj4gPiA+PiA+IGluZGV4IDhhYzdlYjI1 ZTQ2ZC4uMDE1N2Y5MGI1ZDEwIDEwMDY0NAo+ID4gPj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v cm9ja2NoaXAvcm9ja2NoaXBfZHJtX2dlbS5jCj4gPiA+PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZ2VtLmMKPiA+ID4+ID4gQEAgLTE0LDYgKzE0LDcgQEAK PiA+ID4+ID4KPiA+ID4+ID4gICNpbmNsdWRlIDxkcm0vZHJtLmg+Cj4gPiA+PiA+ICAjaW5jbHVk ZSA8ZHJtL2RybVAuaD4KPiA+ID4+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2NhY2hlLmg+Cj4gPiA+ PiA+ICAjaW5jbHVkZSA8ZHJtL2RybV9nZW0uaD4KPiA+ID4+ID4gICNpbmNsdWRlIDxkcm0vZHJt X3ZtYV9tYW5hZ2VyLmg+Cj4gPiA+PiA+ICAjaW5jbHVkZSA8bGludXgvaW9tbXUuaD4KPiA+ID4+ ID4gQEAgLTk5LDE1ICsxMDAsMTEgQEAgc3RhdGljIGludCByb2NrY2hpcF9nZW1fZ2V0X3BhZ2Vz KHN0cnVjdAo+ID4gPj4gPiByb2NrY2hpcF9nZW1fb2JqZWN0ICpya19vYmopCj4gPiA+PiA+ICAg ICAgIC8qCj4gPiA+PiA+ICAgICAgICAqIEZha2UgdXAgdGhlIFNHIHRhYmxlIHNvIHRoYXQgZG1h X3N5bmNfc2dfZm9yX2RldmljZSgpIGNhbiBiZQo+ID4gPj4gPiB1c2VkCj4gPiA+PiA+ICAgICAg ICAqIHRvIGZsdXNoIHRoZSBwYWdlcyBhc3NvY2lhdGVkIHdpdGggaXQuCj4gPiA+PiA+IC0gICAg ICAqCj4gPiA+PiA+IC0gICAgICAqIFRPRE86IFJlcGxhY2UgdGhpcyBieSBkcm1fZmx1c2hfc2co KSBvbmNlIGl0IGNhbiBiZQo+ID4gaW1wbGVtZW50ZWQKPiA+ID4+ID4gLSAgICAgICogd2l0aG91 dCByZWx5aW5nIG9uIHN5bWJvbHMgdGhhdCBhcmUgbm90IGV4cG9ydGVkLgo+ID4gPj4gPiAgICAg ICAgKi8KPiA+ID4+ID4gICAgICAgZm9yX2VhY2hfc2cocmtfb2JqLT5zZ3QtPnNnbCwgcywgcmtf b2JqLT5zZ3QtPm5lbnRzLCBpKQo+ID4gPj4gPiAgICAgICAgICAgICAgIHNnX2RtYV9hZGRyZXNz KHMpID0gc2dfcGh5cyhzKTsKPiA+ID4+ID4KPiA+ID4+ID4gLSAgICAgZG1hX3N5bmNfc2dfZm9y X2RldmljZShkcm0tPmRldiwgcmtfb2JqLT5zZ3QtPnNnbCwKPiA+ID4+ID4gcmtfb2JqLT5zZ3Qt Pm5lbnRzLAo+ID4gPj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIERNQV9UT19ERVZJ Q0UpOwo+ID4gPj4gPiArICAgICBkcm1fZmx1c2hfc2coZHJtLT5kZXYsIHJrX29iai0+c2d0KTsK PiA+ID4+ID4KPiA+ID4+ID4gICAgICAgcmV0dXJuIDA7Cj4gPiA+PiA+Cj4gPiA+PiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vdGVn cmEvZ2VtLmMKPiA+ID4+ID4gaW5kZXggYWIxZTUzZDQzNGU4Li45OTQ1ZmQyZjZiZDYgMTAwNjQ0 Cj4gPiA+PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9nZW0uYwo+ID4gPj4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZ2VtLmMKPiA+ID4+ID4gQEAgLTIzMCwxNSArMjMwLDEx IEBAIHN0YXRpYyBpbnQgdGVncmFfYm9fZ2V0X3BhZ2VzKHN0cnVjdCBkcm1fZGV2aWNlCj4gPiA+ PiA+ICpkcm0sIHN0cnVjdCB0ZWdyYV9ibyAqYm8pCj4gPiA+PiA+ICAgICAgIC8qCj4gPiA+PiA+ ICAgICAgICAqIEZha2UgdXAgdGhlIFNHIHRhYmxlIHNvIHRoYXQgZG1hX3N5bmNfc2dfZm9yX2Rl dmljZSgpIGNhbiBiZQo+ID4gPj4gPiB1c2VkCj4gPiA+PiA+ICAgICAgICAqIHRvIGZsdXNoIHRo ZSBwYWdlcyBhc3NvY2lhdGVkIHdpdGggaXQuCj4gPiA+PiA+IC0gICAgICAqCj4gPiA+PiA+IC0g ICAgICAqIFRPRE86IFJlcGxhY2UgdGhpcyBieSBkcm1fY2xmbGFzaF9zZygpIG9uY2UgaXQgY2Fu IGJlCj4gPiA+PiA+IGltcGxlbWVudGVkCj4gPiA+PiA+IC0gICAgICAqIHdpdGhvdXQgcmVseWlu ZyBvbiBzeW1ib2xzIHRoYXQgYXJlIG5vdCBleHBvcnRlZC4KPiA+ID4+ID4gICAgICAgICovCj4g PiA+PiA+ICAgICAgIGZvcl9lYWNoX3NnKGJvLT5zZ3QtPnNnbCwgcywgYm8tPnNndC0+bmVudHMs IGkpCj4gPiA+PiA+ICAgICAgICAgICAgICAgc2dfZG1hX2FkZHJlc3MocykgPSBzZ19waHlzKHMp Owo+ID4gPj4gPgo+ID4gPj4gPiAtICAgICBkbWFfc3luY19zZ19mb3JfZGV2aWNlKGRybS0+ZGV2 LCBiby0+c2d0LT5zZ2wsIGJvLT5zZ3QtPm5lbnRzLAo+ID4gPj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgIERNQV9UT19ERVZJQ0UpOwo+ID4gPj4gPiArICAgICBkcm1fZmx1c2hfc2co ZHJtLT5kZXYsIGJvLT5zZ3QpOwo+ID4gPj4gPgo+ID4gPj4gPiAgICAgICByZXR1cm4gMDsKPiA+ ID4+ID4KPiA+ID4+ID4gLS0KPiA+ID4+ID4gMi4xMy41Cj4gPiA+PiA+Cj4gPiA+PiA+IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiA+PiA+IGRyaS1k ZXZlbCBtYWlsaW5nIGxpc3QKPiA+ID4+ID4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y Zwo+ID4gPj4gPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbAo+ID4gPj4KPiA+ID4+IC0tCj4gPiA+PiBEYW5pZWwgVmV0dGVyCj4gPiA+PiBT b2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KPiA+ID4+IGh0dHA6Ly9ibG9nLmZm d2xsLmNoCj4gPiA+Cj4gPiA+Cj4gPgo+ID4KPiA+Cj4gPiAtLQo+ID4gRGFuaWVsIFZldHRlcgo+ ID4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4gPiArNDEgKDApIDc5IDM2 NSA1NyA0OCAtIGh0dHA6Ly9ibG9nLmZmd2xsLmNoCj4gPgoKLS0gCkRhbmllbCBWZXR0ZXIKU29m dHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=