From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Hellstrom Subject: Re: [PATCH v6 3/5] dma-buf: Add ioctls to allow userspace to flush Date: Thu, 17 Dec 2015 22:58:20 +0100 Message-ID: <56732FFC.4080907@vmware.com> References: <1450304743-6571-1-git-send-email-tiago.vignatti@intel.com> <1450304743-6571-4-git-send-email-tiago.vignatti@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from smtp-outbound-2.vmware.com (smtp-outbound-2.vmware.com [208.91.2.13]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8E6146E0E7 for ; Thu, 17 Dec 2015 13:58:27 -0800 (PST) In-Reply-To: <1450304743-6571-4-git-send-email-tiago.vignatti@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Tiago Vignatti , dri-devel@lists.freedesktop.org Cc: jglisse@redhat.com, daniel.vetter@ffwll.ch, daniel.thompson@linaro.org, Daniel Vetter List-Id: dri-devel@lists.freedesktop.org T24gMTIvMTYvMjAxNSAxMToyNSBQTSwgVGlhZ28gVmlnbmF0dGkgd3JvdGU6Cj4gRnJvbTogRGFu aWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KPgo+IFRoZSB1c2Vyc3BhY2UgbWln aHQgbmVlZCBzb21lIHNvcnQgb2YgY2FjaGUgY29oZXJlbmN5IG1hbmFnZW1lbnQgZS5nLiB3aGVu IENQVQo+IGFuZCBHUFUgZG9tYWlucyBhcmUgYmVpbmcgYWNjZXNzZWQgdGhyb3VnaCBkbWEtYnVm IGF0IHRoZSBzYW1lIHRpbWUuIFRvCj4gY2lyY3VtdmVudCB0aGlzIHByb2JsZW0gdGhlcmUgYXJl IGJlZ2luL2VuZCBjb2hlcmVuY3kgbWFya2VycywgdGhhdCBmb3J3YXJkCj4gZGlyZWN0bHkgdG8g ZXhpc3RpbmcgZG1hLWJ1ZiBkZXZpY2UgZHJpdmVycyB2ZnVuYyBob29rcy4gVXNlcnNwYWNlIGNh biBtYWtlIHVzZQo+IG9mIHRob3NlIG1hcmtlcnMgdGhyb3VnaCB0aGUgRE1BX0JVRl9JT0NUTF9T WU5DIGlvY3RsLiBUaGUgc2VxdWVuY2Ugd291bGQgYmUKPiB1c2VkIGxpa2UgZm9sbG93aW5nOgo+ ICAgICAgLSBtbWFwIGRtYS1idWYgZmQKPiAgICAgIC0gZm9yIGVhY2ggZHJhd2luZy91cGxvYWQg Y3ljbGUgaW4gQ1BVIDEuIFNZTkNfU1RBUlQgaW9jdGwsIDIuIHJlYWQvd3JpdGUKPiAgICAgICAg dG8gbW1hcCBhcmVhIDMuIFNZTkNfRU5EIGlvY3RsLiBUaGlzIGNhbiBiZSByZXBlYXRlZCBhcyBv ZnRlbiBhcyB5b3UKPiAgICAgICAgd2FudCAod2l0aCB0aGUgbmV3IGRhdGEgYmVpbmcgY29uc3Vt ZWQgYnkgdGhlIEdQVSBvciBzYXkgc2Nhbm91dCBkZXZpY2UpCj4gICAgICAtIG11bm1hcCBvbmNl IHlvdSBkb24ndCBuZWVkIHRoZSBidWZmZXIgYW55IG1vcmUKPgo+IHYyIChUaWFnbyk6IEZpeCBo ZWFkZXIgZmlsZSB0eXBlIG5hbWVzICh1NjQgLT4gX191NjQpCj4gdjMgKFRpYWdvKTogQWRkIGRv Y3VtZW50YXRpb24uIFVzZSBlbnVtIGRtYV9idWZfc3luY19mbGFncyB0byB0aGUgYmVnaW4vZW5k Cj4gZG1hLWJ1ZiBmdW5jdGlvbnMuIENoZWNrIGZvciBvdmVyZmxvd3MgaW4gc3RhcnQvbGVuZ3Ro Lgo+IHY0IChUaWFnbyk6IHVzZSAyZCByZWdpb25zIGZvciBzeW5jLgo+IHY1IChUaWFnbyk6IGZv cmdldCBhYm91dCAyZCByZWdpb25zICh2NCk7IHVzZSBfSU9XIGluIERNQV9CVUZfSU9DVExfU1lO QyBhbmQKPiByZW1vdmUgcmFuZ2UgaW5mb3JtYXRpb24gZnJvbSBzdHJ1Y3QgZG1hX2J1Zl9zeW5j Lgo+IHY2IChUaWFnbyk6IHVzZSBfX3U2NCBzdHJ1Y3R1cmVkIHBhZGRlZCBmbGFncyBpbnN0ZWFk IGVudW0uIEFkanVzdAo+IGRvY3VtZW50YXRpb24gYWJvdXQgdGhlIHJlY29tbWVuZGF0aW9uIG9u IHVzaW5nIHN5bmMgaW9jdGxzLgo+Cj4gQ2M6IFN1bWl0IFNlbXdhbCA8c3VtaXQuc2Vtd2FsQGxp bmFyby5vcmc+Cj4gU2lnbmVkLW9mZi1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBp bnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogVGlhZ28gVmlnbmF0dGkgPHRpYWdvLnZpZ25hdHRp QGludGVsLmNvbT4KPiAtLS0KPiAgRG9jdW1lbnRhdGlvbi9kbWEtYnVmLXNoYXJpbmcudHh0IHwg MjIgKysrKysrKysrKysrKysrKysrKy0KPiAgZHJpdmVycy9kbWEtYnVmL2RtYS1idWYuYyAgICAg ICAgIHwgNDMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIGluY2x1 ZGUvdWFwaS9saW51eC9kbWEtYnVmLmggICAgICB8IDM4ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKPiAgMyBmaWxlcyBjaGFuZ2VkLCAxMDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxl dGlvbigtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS91YXBpL2xpbnV4L2RtYS1idWYu aAo+Cj4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZG1hLWJ1Zi1zaGFyaW5nLnR4dCBiL0Rv Y3VtZW50YXRpb24vZG1hLWJ1Zi1zaGFyaW5nLnR4dAo+IGluZGV4IDRmNGE4NGIuLjJkZGQ0YjIg MTAwNjQ0Cj4gLS0tIGEvRG9jdW1lbnRhdGlvbi9kbWEtYnVmLXNoYXJpbmcudHh0Cj4gKysrIGIv RG9jdW1lbnRhdGlvbi9kbWEtYnVmLXNoYXJpbmcudHh0Cj4gQEAgLTM1MCw3ICszNTAsMjcgQEAg QmVpbmcgYWJsZSB0byBtbWFwIGFuIGV4cG9ydCBkbWEtYnVmIGJ1ZmZlciBvYmplY3QgaGFzIDIg bWFpbiB1c2UtY2FzZXM6Cj4gICAgIGhhbmRsZXMsIHRvbykuIFNvIGl0J3MgYmVuZWZpY2lhbCB0 byBzdXBwb3J0IHRoaXMgaW4gYSBzaW1pbGFyIGZhc2hpb24gb24KPiAgICAgZG1hLWJ1ZiB0byBo YXZlIGEgZ29vZCB0cmFuc2l0aW9uIHBhdGggZm9yIGV4aXN0aW5nIEFuZHJvaWQgdXNlcnNwYWNl Lgo+ICAKPiAtICAgTm8gc3BlY2lhbCBpbnRlcmZhY2VzLCB1c2Vyc3BhY2Ugc2ltcGx5IGNhbGxz IG1tYXAgb24gdGhlIGRtYS1idWYgZmQuCj4gKyAgIE5vIHNwZWNpYWwgaW50ZXJmYWNlcywgdXNl cnNwYWNlIHNpbXBseSBjYWxscyBtbWFwIG9uIHRoZSBkbWEtYnVmIGZkLiBWZXJ5Cj4gKyAgIGlt cG9ydGFudCB0byBub3RlIHRob3VnaCBpcyB0aGF0LCBldmVuIGlmIGl0IGlzIG5vdCBtYW5kYXRv cnksIHRoZSB1c2Vyc3BhY2UKPiArICAgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQgdG8gYWx3YXlz IHVzZSB0aGUgY2FjaGUgc3luY2hyb25pemF0aW9uIGlvY3RsCj4gKyAgIChETUFfQlVGX0lPQ1RM X1NZTkMpIGRpc2N1c3NlZCBuZXh0Lgo+ICsKPiArICAgU29tZSBzeXN0ZW1zIG1pZ2h0IG5lZWQg c29tZSBzb3J0IG9mIGNhY2hlIGNvaGVyZW5jeSBtYW5hZ2VtZW50IGUuZy4gd2hlbgo+ICsgICBD UFUgYW5kIEdQVSBkb21haW5zIGFyZSBiZWluZyBhY2Nlc3NlZCB0aHJvdWdoIGRtYS1idWYgYXQg dGhlIHNhbWUgdGltZS4gVG8KPiArICAgY2lyY3VtdmVudCB0aGlzIHByb2JsZW0gdGhlcmUgYXJl IGJlZ2luL2VuZCBjb2hlcmVuY3kgbWFya2VycywgdGhhdCBmb3J3YXJkCj4gKyAgIGRpcmVjdGx5 IHRvIGV4aXN0aW5nIGRtYS1idWYgZGV2aWNlIGRyaXZlcnMgdmZ1bmMgaG9va3MuIFVzZXJzcGFj ZSBjYW4gbWFrZQo+ICsgICB1c2Ugb2YgdGhvc2UgbWFya2VycyB0aHJvdWdoIHRoZSBETUFfQlVG X0lPQ1RMX1NZTkMgaW9jdGwuIFRoZSBzZXF1ZW5jZQo+ICsgICB3b3VsZCBiZSB1c2VkIGxpa2Ug Zm9sbG93aW5nOgo+ICsgICAgIC0gbW1hcCBkbWEtYnVmIGZkCj4gKyAgICAgLSBmb3IgZWFjaCBk cmF3aW5nL3VwbG9hZCBjeWNsZSBpbiBDUFUgMS4gU1lOQ19TVEFSVCBpb2N0bCwgMi4gcmVhZC93 cml0ZQo+ICsgICAgICAgdG8gbW1hcCBhcmVhIDMuIFNZTkNfRU5EIGlvY3RsLiBUaGlzIGNhbiBi ZSByZXBlYXRlZCBhcyBvZnRlbiBhcyB5b3UKPiArICAgICAgIHdhbnQgKHdpdGggdGhlIG5ldyBk YXRhIGJlaW5nIGNvbnN1bWVkIGJ5IHRoZSBHUFUgb3Igc2F5IHNjYW5vdXQgZGV2aWNlKQo+ICsg ICAgIC0gbXVubWFwIG9uY2UgeW91IGRvbid0IG5lZWQgdGhlIGJ1ZmZlciBhbnkgbW9yZQo+ICsK PiArICAgIEluIHByaW5jaXBsZSBzeXN0ZW1zIHdpdGggdGhlIG1lbW9yeSBjYWNoZSBzaGFyZWQg YnkgdGhlIEdQVSBhbmQgQ1BVIG1heQo+ICsgICAgbm90IG5lZWQgU1lOQ19TVEFSVCBhbmQgU1lO Q19FTkQgYnV0IHN0aWxsLCB1c2Vyc3BhY2UgaXMgYWx3YXlzIGVuY291cmFnZWQKPiArICAgIHRv IHVzZSB0aGVzZSBpb2N0bHMgYmVmb3JlIGFuZCBhZnRlciwgcmVzcGVjdGl2ZWx5LCB3aGVuIGFj Y2Vzc2luZyB0aGUKPiArICAgIG1hcHBlZCBhZGRyZXNzLgo+ICAKCkkgdGhpbmsgdGhlIHdvcmRp bmcgaGVyZSBpcyBmYXIgdG9vIHdlYWsuIElmIHRoaXMgaXMgYSBnZW5lcmljCnVzZXItc3BhY2Ug aW50ZXJmYWNlIGFuZCBzeW5jaW5nCmlzIHJlcXVpcmVkIGZvcgphKSBDb3JyZWN0bmVzczogdGhl biBzeW5jaW5nIG11c3QgYmUgbWFuZGF0b3J5LgpiKSBPcHRpbWFsIHBlcmZvcm1hbmNlIHRoZW4g YW4gaW1wbGVtZW50YXRpb24gbXVzdCBnZW5lcmF0ZSBleHBlY3RlZApyZXN1bHRzIGFsc28gaW4g dGhlIGFic2VuY2Ugb2YgU1lOQyBpb2N0bHMsIGJ1dCBpcyBhbGxvd2VkIHRvIHJlbHkgb24KY29y cmVjdCBwYWlyaW5nIG9mIFNZTkNfU1RBUlQgYW5kIFNZTkNfRU5EIHRvIHJlbmRlciBjb3JyZWN0 bHkuCgoKQWxzbyByZWNhbGxpbmcgdGhlIGRpc2N1c3Npb24gb2YgbXVsdGlkaW1lbnNpb25hbCBz eW5jLCB3aGljaCB3ZSBzYWlkIHdlCndvdWxkIGFkZCB3aGVuIGl0IHdhcyBuZWVkZWQsIG15IHdv cnN0IG5pZ2h0bWFyZSBpcyB3aGVuIChub3QgaWYpIHRoZXJlCmFyZSBhIG51bWJlciBvZiBpbXBv cnRhbnQgYXBwbGljYXRpb25zIHN0YXJ0aW5nIHRvIGFidXNlIHRoaXMgaW50ZXJmYWNlCmZvciBz bWFsbCB3cml0ZXMgb3IgcmVhZHMgdG8gbGFyZ2UgRE1BIGJ1ZmZlcnMuIEl0IHdpbGwgd29yayBm bGF3bGVzc2x5Cm9uIGNvaGVyZW50IGFyY2hpdGVjdHVyZXMsIGFuZCBwcm9iYWJseSBzb21lIGlu Y29oZXJlbnQgYXJjaGl0ZWN0dXJlcyBhcwp3ZWxsLCBidXQgd2lsbCBwcm9iYWJseSAgYmUgbW9z dGx5IHVzZWxlc3Mgb24gVk13YXJlLiBXaGF0IGlzIHRoZSBwbGFuCmZvciBhZGRpbmcgMkQgc3lu YyB0byBtYWtlIGl0IHdvcms/IEhvdyBkbyB3ZSBwdXJzdWFkZSBhcHAgZGV2ZWxvcGVycyB0bwp0 aGluayBvZiBkYW1hZ2UgcmVnaW9ucywgYW5kIGNhbiB3ZSBjb3VudCBvbiBzdXBwb3J0IGZyb20g dGhlIERSTQpjb21tdW5pdHkgd2hlbiB0aGlzIGhhcHBlbnM/CgovVGhvbWFzCgoKCgoKCgo+ICAy LiBTdXBwb3J0aW5nIGV4aXN0aW5nIG1tYXAgaW50ZXJmYWNlcyBpbiBpbXBvcnRlcnMKPiAgCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVmLmMgYi9kcml2ZXJzL2RtYS1idWYv ZG1hLWJ1Zi5jCj4gaW5kZXggYjJhYzEzYi4uOWEyOThiZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2RtYS1idWYvZG1hLWJ1Zi5jCj4gKysrIGIvZHJpdmVycy9kbWEtYnVmL2RtYS1idWYuYwo+IEBA IC0zNCw2ICszNCw4IEBACj4gICNpbmNsdWRlIDxsaW51eC9wb2xsLmg+Cj4gICNpbmNsdWRlIDxs aW51eC9yZXNlcnZhdGlvbi5oPgo+ICAKPiArI2luY2x1ZGUgPHVhcGkvbGludXgvZG1hLWJ1Zi5o Pgo+ICsKPiAgc3RhdGljIGlubGluZSBpbnQgaXNfZG1hX2J1Zl9maWxlKHN0cnVjdCBmaWxlICop Owo+ICAKPiAgc3RydWN0IGRtYV9idWZfbGlzdCB7Cj4gQEAgLTI1MSwxMSArMjUzLDUyIEBAIG91 dDoKPiAgCXJldHVybiBldmVudHM7Cj4gIH0KPiAgCj4gK3N0YXRpYyBsb25nIGRtYV9idWZfaW9j dGwoc3RydWN0IGZpbGUgKmZpbGUsCj4gKwkJCSAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQg bG9uZyBhcmcpCj4gK3sKPiArCXN0cnVjdCBkbWFfYnVmICpkbWFidWY7Cj4gKwlzdHJ1Y3QgZG1h X2J1Zl9zeW5jIHN5bmM7Cj4gKwllbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb247Cj4g Kwo+ICsJZG1hYnVmID0gZmlsZS0+cHJpdmF0ZV9kYXRhOwo+ICsKPiArCWlmICghaXNfZG1hX2J1 Zl9maWxlKGZpbGUpKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCXN3aXRjaCAoY21kKSB7 Cj4gKwljYXNlIERNQV9CVUZfSU9DVExfU1lOQzoKPiArCQlpZiAoY29weV9mcm9tX3VzZXIoJnN5 bmMsICh2b2lkIF9fdXNlciAqKSBhcmcsIHNpemVvZihzeW5jKSkpCj4gKwkJCXJldHVybiAtRUZB VUxUOwo+ICsKPiArCQlpZiAoc3luYy5mbGFncyAmIERNQV9CVUZfU1lOQ19SVykKPiArCQkJZGly ZWN0aW9uID0gRE1BX0JJRElSRUNUSU9OQUw7Cj4gKwkJZWxzZSBpZiAoc3luYy5mbGFncyAmIERN QV9CVUZfU1lOQ19SRUFEKQo+ICsJCQlkaXJlY3Rpb24gPSBETUFfRlJPTV9ERVZJQ0U7Cj4gKwkJ ZWxzZSBpZiAoc3luYy5mbGFncyAmIERNQV9CVUZfU1lOQ19XUklURSkKPiArCQkJZGlyZWN0aW9u ID0gRE1BX1RPX0RFVklDRTsKPiArCQllbHNlCj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ICsKPiAr CQlpZiAoc3luYy5mbGFncyAmIH5ETUFfQlVGX1NZTkNfVkFMSURfRkxBR1NfTUFTSykKPiArCQkJ cmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJCWlmIChzeW5jLmZsYWdzICYgRE1BX0JVRl9TWU5DX0VO RCkKPiArCQkJZG1hX2J1Zl9lbmRfY3B1X2FjY2VzcyhkbWFidWYsIGRpcmVjdGlvbik7Cj4gKwkJ ZWxzZQo+ICsJCQlkbWFfYnVmX2JlZ2luX2NwdV9hY2Nlc3MoZG1hYnVmLCBkaXJlY3Rpb24pOwo+ ICsKPiArCQlyZXR1cm4gMDsKPiArCWRlZmF1bHQ6Cj4gKwkJcmV0dXJuIC1FTk9UVFk7Cj4gKwl9 Cj4gK30KPiArCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGRtYV9idWZf Zm9wcyA9IHsKPiAgCS5yZWxlYXNlCT0gZG1hX2J1Zl9yZWxlYXNlLAo+ICAJLm1tYXAJCT0gZG1h X2J1Zl9tbWFwX2ludGVybmFsLAo+ICAJLmxsc2VlawkJPSBkbWFfYnVmX2xsc2VlaywKPiAgCS5w b2xsCQk9IGRtYV9idWZfcG9sbCwKPiArCS51bmxvY2tlZF9pb2N0bAk9IGRtYV9idWZfaW9jdGws Cj4gIH07Cj4gIAo+ICAvKgo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvZG1hLWJ1 Zi5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2RtYS1idWYuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Cj4gaW5kZXggMDAwMDAwMC4uYmQxOTVmMgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9pbmNsdWRl L3VhcGkvbGludXgvZG1hLWJ1Zi5oCj4gQEAgLTAsMCArMSwzOCBAQAo+ICsvKgo+ICsgKiBGcmFt ZXdvcmsgZm9yIGJ1ZmZlciBvYmplY3RzIHRoYXQgY2FuIGJlIHNoYXJlZCBhY3Jvc3MgZGV2aWNl cy9zdWJzeXN0ZW1zLgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQoQykgMjAxNSBJbnRlbCBMdGQKPiAr ICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKPiArICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5Cj4gKyAqIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9V VAo+ICsgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZiBNRVJDSEFOVEFCSUxJVFkgb3IKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgo+ICsgKiBtb3JlIGRl dGFpbHMuCj4gKyAqCj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgKPiArICogdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgo+ICsgKi8KPiAr Cj4gKyNpZm5kZWYgX0RNQV9CVUZfVUFQSV9IXwo+ICsjZGVmaW5lIF9ETUFfQlVGX1VBUElfSF8K PiArCj4gKy8qIGJlZ2luL2VuZCBkbWEtYnVmIGZ1bmN0aW9ucyB1c2VkIGZvciB1c2Vyc3BhY2Ug bW1hcC4gKi8KPiArc3RydWN0IGRtYV9idWZfc3luYyB7Cj4gKwlfX3U2NCBmbGFnczsKPiArfTsK PiArCj4gKyNkZWZpbmUgRE1BX0JVRl9TWU5DX1JFQUQgICAgICAoMSA8PCAwKQo+ICsjZGVmaW5l IERNQV9CVUZfU1lOQ19XUklURSAgICAgKDIgPDwgMCkKPiArI2RlZmluZSBETUFfQlVGX1NZTkNf UlcgICAgICAgICgzIDw8IDApCj4gKyNkZWZpbmUgRE1BX0JVRl9TWU5DX1NUQVJUICAgICAoMCA8 PCAyKQo+ICsjZGVmaW5lIERNQV9CVUZfU1lOQ19FTkQgICAgICAgKDEgPDwgMikKPiArI2RlZmlu ZSBETUFfQlVGX1NZTkNfVkFMSURfRkxBR1NfTUFTSyBcCj4gKwkoRE1BX0JVRl9TWU5DX1JXIHwg RE1BX0JVRl9TWU5DX0VORCkKPiArCj4gKyNkZWZpbmUgRE1BX0JVRl9CQVNFCQknYicKPiArI2Rl ZmluZSBETUFfQlVGX0lPQ1RMX1NZTkMJX0lPVyhETUFfQlVGX0JBU0UsIDAsIHN0cnVjdCBkbWFf YnVmX3N5bmMpCj4gKwo+ICsjZW5kaWYKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo=