From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Herrmann Subject: Re: [PATCH v7 3/5] dma-buf: Add ioctls to allow userspace to flush Date: Tue, 9 Feb 2016 10:26:25 +0100 Message-ID: References: <1450820214-12509-1-git-send-email-tiago.vignatti@intel.com> <1450820214-12509-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 mail-wm0-f67.google.com (mail-wm0-f67.google.com [74.125.82.67]) by gabe.freedesktop.org (Postfix) with ESMTPS id 14A7F6E453 for ; Tue, 9 Feb 2016 01:26:27 -0800 (PST) Received: by mail-wm0-f67.google.com with SMTP id c200so2242073wme.0 for ; Tue, 09 Feb 2016 01:26:27 -0800 (PST) In-Reply-To: <1450820214-12509-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 Cc: daniel.thompson@linaro.org, marcheu@google.com, Daniel Vetter , Thomas Hellstrom , "dri-devel@lists.freedesktop.org" , Jerome Glisse , reveman@google.com, Daniel Vetter List-Id: dri-devel@lists.freedesktop.org SGkKCk9uIFR1ZSwgRGVjIDIyLCAyMDE1IGF0IDEwOjM2IFBNLCBUaWFnbyBWaWduYXR0aQo8dGlh Z28udmlnbmF0dGlAaW50ZWwuY29tPiB3cm90ZToKPiBGcm9tOiBEYW5pZWwgVmV0dGVyIDxkYW5p ZWwudmV0dGVyQGZmd2xsLmNoPgo+Cj4gVGhlIHVzZXJzcGFjZSBtaWdodCBuZWVkIHNvbWUgc29y dCBvZiBjYWNoZSBjb2hlcmVuY3kgbWFuYWdlbWVudCBlLmcuIHdoZW4gQ1BVCj4gYW5kIEdQVSBk b21haW5zIGFyZSBiZWluZyBhY2Nlc3NlZCB0aHJvdWdoIGRtYS1idWYgYXQgdGhlIHNhbWUgdGlt ZS4gVG8KPiBjaXJjdW12ZW50IHRoaXMgcHJvYmxlbSB0aGVyZSBhcmUgYmVnaW4vZW5kIGNvaGVy ZW5jeSBtYXJrZXJzLCB0aGF0IGZvcndhcmQKPiBkaXJlY3RseSB0byBleGlzdGluZyBkbWEtYnVm IGRldmljZSBkcml2ZXJzIHZmdW5jIGhvb2tzLiBVc2Vyc3BhY2UgY2FuIG1ha2UgdXNlCj4gb2Yg dGhvc2UgbWFya2VycyB0aHJvdWdoIHRoZSBETUFfQlVGX0lPQ1RMX1NZTkMgaW9jdGwuIFRoZSBz ZXF1ZW5jZSB3b3VsZCBiZQo+IHVzZWQgbGlrZSBmb2xsb3dpbmc6Cj4gICAgICAtIG1tYXAgZG1h LWJ1ZiBmZAo+ICAgICAgLSBmb3IgZWFjaCBkcmF3aW5nL3VwbG9hZCBjeWNsZSBpbiBDUFUgMS4g U1lOQ19TVEFSVCBpb2N0bCwgMi4gcmVhZC93cml0ZQo+ICAgICAgICB0byBtbWFwIGFyZWEgMy4g U1lOQ19FTkQgaW9jdGwuIFRoaXMgY2FuIGJlIHJlcGVhdGVkIGFzIG9mdGVuIGFzIHlvdQo+ICAg ICAgICB3YW50ICh3aXRoIHRoZSBuZXcgZGF0YSBiZWluZyBjb25zdW1lZCBieSB0aGUgR1BVIG9y IHNheSBzY2Fub3V0IGRldmljZSkKPiAgICAgIC0gbXVubWFwIG9uY2UgeW91IGRvbid0IG5lZWQg dGhlIGJ1ZmZlciBhbnkgbW9yZQo+Cj4gdjIgKFRpYWdvKTogRml4IGhlYWRlciBmaWxlIHR5cGUg bmFtZXMgKHU2NCAtPiBfX3U2NCkKPiB2MyAoVGlhZ28pOiBBZGQgZG9jdW1lbnRhdGlvbi4gVXNl IGVudW0gZG1hX2J1Zl9zeW5jX2ZsYWdzIHRvIHRoZSBiZWdpbi9lbmQKPiBkbWEtYnVmIGZ1bmN0 aW9ucy4gQ2hlY2sgZm9yIG92ZXJmbG93cyBpbiBzdGFydC9sZW5ndGguCj4gdjQgKFRpYWdvKTog dXNlIDJkIHJlZ2lvbnMgZm9yIHN5bmMuCj4gdjUgKFRpYWdvKTogZm9yZ2V0IGFib3V0IDJkIHJl Z2lvbnMgKHY0KTsgdXNlIF9JT1cgaW4gRE1BX0JVRl9JT0NUTF9TWU5DIGFuZAo+IHJlbW92ZSBy YW5nZSBpbmZvcm1hdGlvbiBmcm9tIHN0cnVjdCBkbWFfYnVmX3N5bmMuCj4gdjYgKFRpYWdvKTog dXNlIF9fdTY0IHN0cnVjdHVyZWQgcGFkZGVkIGZsYWdzIGluc3RlYWQgZW51bS4gQWRqdXN0Cj4g ZG9jdW1lbnRhdGlvbiBhYm91dCB0aGUgcmVjb21tZW5kYXRpb24gb24gdXNpbmcgc3luYyBpb2N0 bHMuCj4gdjcgKFRpYWdvKTogQWxleCcgbml0IG9uIGZsYWdzIGRlZmluaXRpb24gYW5kIGJlaW5n IGV2ZW4gbW9yZSB3b3JkaW5nIGluIHRoZQo+IGRvYyBhYm91dCBzeW5jIHVzYWdlLgo+Cj4gQ2M6 IFN1bWl0IFNlbXdhbCA8c3VtaXQuc2Vtd2FsQGxpbmFyby5vcmc+Cj4gU2lnbmVkLW9mZi1ieTog RGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTog VGlhZ28gVmlnbmF0dGkgPHRpYWdvLnZpZ25hdHRpQGludGVsLmNvbT4KPiAtLS0KPiAgRG9jdW1l bnRhdGlvbi9kbWEtYnVmLXNoYXJpbmcudHh0IHwgMjEgKysrKysrKysrKysrKysrKysrLQo+ICBk cml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jICAgICAgICAgfCA0MyArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKPiAgaW5jbHVkZS91YXBpL2xpbnV4L2RtYS1idWYuaCAgICAg IHwgMzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAzIGZpbGVzIGNoYW5n ZWQsIDEwMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBpbmNsdWRlL3VhcGkvbGludXgvZG1hLWJ1Zi5oCj4KPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRh dGlvbi9kbWEtYnVmLXNoYXJpbmcudHh0IGIvRG9jdW1lbnRhdGlvbi9kbWEtYnVmLXNoYXJpbmcu dHh0Cj4gaW5kZXggNGY0YTg0Yi4uMzJhYzMyZSAxMDA2NDQKPiAtLS0gYS9Eb2N1bWVudGF0aW9u L2RtYS1idWYtc2hhcmluZy50eHQKPiArKysgYi9Eb2N1bWVudGF0aW9uL2RtYS1idWYtc2hhcmlu Zy50eHQKPiBAQCAtMzUwLDcgKzM1MCwyNiBAQCBCZWluZyBhYmxlIHRvIG1tYXAgYW4gZXhwb3J0 IGRtYS1idWYgYnVmZmVyIG9iamVjdCBoYXMgMiBtYWluIHVzZS1jYXNlczoKPiAgICAgaGFuZGxl cywgdG9vKS4gU28gaXQncyBiZW5lZmljaWFsIHRvIHN1cHBvcnQgdGhpcyBpbiBhIHNpbWlsYXIg ZmFzaGlvbiBvbgo+ICAgICBkbWEtYnVmIHRvIGhhdmUgYSBnb29kIHRyYW5zaXRpb24gcGF0aCBm b3IgZXhpc3RpbmcgQW5kcm9pZCB1c2Vyc3BhY2UuCj4KPiAtICAgTm8gc3BlY2lhbCBpbnRlcmZh Y2VzLCB1c2Vyc3BhY2Ugc2ltcGx5IGNhbGxzIG1tYXAgb24gdGhlIGRtYS1idWYgZmQuCj4gKyAg IE5vIHNwZWNpYWwgaW50ZXJmYWNlcywgdXNlcnNwYWNlIHNpbXBseSBjYWxscyBtbWFwIG9uIHRo ZSBkbWEtYnVmIGZkLCBtYWtpbmcKPiArICAgc3VyZSB0aGF0IHRoZSBjYWNoZSBzeW5jaHJvbml6 YXRpb24gaW9jdGwgKERNQV9CVUZfSU9DVExfU1lOQykgaXMgKmFsd2F5cyoKPiArICAgdXNlZCB3 aGVuIHRoZSBhY2Nlc3MgaGFwcGVucy4gVGhpcyBpcyBkaXNjdXNzZWQgbmV4dCBwYXJhZ3JhcGhz Lgo+ICsKPiArICAgU29tZSBzeXN0ZW1zIG1pZ2h0IG5lZWQgc29tZSBzb3J0IG9mIGNhY2hlIGNv aGVyZW5jeSBtYW5hZ2VtZW50IGUuZy4gd2hlbgo+ICsgICBDUFUgYW5kIEdQVSBkb21haW5zIGFy ZSBiZWluZyBhY2Nlc3NlZCB0aHJvdWdoIGRtYS1idWYgYXQgdGhlIHNhbWUgdGltZS4gVG8KPiAr ICAgY2lyY3VtdmVudCB0aGlzIHByb2JsZW0gdGhlcmUgYXJlIGJlZ2luL2VuZCBjb2hlcmVuY3kg bWFya2VycywgdGhhdCBmb3J3YXJkCj4gKyAgIGRpcmVjdGx5IHRvIGV4aXN0aW5nIGRtYS1idWYg ZGV2aWNlIGRyaXZlcnMgdmZ1bmMgaG9va3MuIFVzZXJzcGFjZSBjYW4gbWFrZQo+ICsgICB1c2Ug b2YgdGhvc2UgbWFya2VycyB0aHJvdWdoIHRoZSBETUFfQlVGX0lPQ1RMX1NZTkMgaW9jdGwuIFRo ZSBzZXF1ZW5jZQo+ICsgICB3b3VsZCBiZSB1c2VkIGxpa2UgZm9sbG93aW5nOgo+ICsgICAgIC0g bW1hcCBkbWEtYnVmIGZkCj4gKyAgICAgLSBmb3IgZWFjaCBkcmF3aW5nL3VwbG9hZCBjeWNsZSBp biBDUFUgMS4gU1lOQ19TVEFSVCBpb2N0bCwgMi4gcmVhZC93cml0ZQo+ICsgICAgICAgdG8gbW1h cCBhcmVhIDMuIFNZTkNfRU5EIGlvY3RsLiBUaGlzIGNhbiBiZSByZXBlYXRlZCBhcyBvZnRlbiBh cyB5b3UKPiArICAgICAgIHdhbnQgKHdpdGggdGhlIG5ldyBkYXRhIGJlaW5nIGNvbnN1bWVkIGJ5 IHRoZSBHUFUgb3Igc2F5IHNjYW5vdXQgZGV2aWNlKQo+ICsgICAgIC0gbXVubWFwIG9uY2UgeW91 IGRvbid0IG5lZWQgdGhlIGJ1ZmZlciBhbnkgbW9yZQo+ICsKPiArICAgIFRoZXJlZm9yZSwgZm9y IGNvcnJlY3RuZXNzIGFuZCBvcHRpbWFsIHBlcmZvcm1hbmNlLCBzeXN0ZW1zIHdpdGggdGhlIG1l bW9yeQo+ICsgICAgY2FjaGUgc2hhcmVkIGJ5IHRoZSBHUFUgYW5kIENQVSBpLmUuIHRoZSAiY29o ZXJlbnQiIGFuZCBhbHNvIHRoZQo+ICsgICAgImluY29oZXJlbnQiIGFyZSBhbHdheXMgcmVxdWly ZWQgdG8gdXNlIFNZTkNfU1RBUlQgYW5kIFNZTkNfRU5EIGJlZm9yZSBhbmQKPiArICAgIGFmdGVy LCByZXNwZWN0aXZlbHksIHdoZW4gYWNjZXNzaW5nIHRoZSBtYXBwZWQgYWRkcmVzcy4KPgo+ICAy LiBTdXBwb3J0aW5nIGV4aXN0aW5nIG1tYXAgaW50ZXJmYWNlcyBpbiBpbXBvcnRlcnMKPgo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jIGIvZHJpdmVycy9kbWEtYnVmL2Rt YS1idWYuYwo+IGluZGV4IGIyYWMxM2IuLjlhMjk4YmQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9k bWEtYnVmL2RtYS1idWYuYwo+ICsrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVmLmMKPiBAQCAt MzQsNiArMzQsOCBAQAo+ICAjaW5jbHVkZSA8bGludXgvcG9sbC5oPgo+ICAjaW5jbHVkZSA8bGlu dXgvcmVzZXJ2YXRpb24uaD4KPgo+ICsjaW5jbHVkZSA8dWFwaS9saW51eC9kbWEtYnVmLmg+Cj4g Kwo+ICBzdGF0aWMgaW5saW5lIGludCBpc19kbWFfYnVmX2ZpbGUoc3RydWN0IGZpbGUgKik7Cj4K PiAgc3RydWN0IGRtYV9idWZfbGlzdCB7Cj4gQEAgLTI1MSwxMSArMjUzLDUyIEBAIG91dDoKPiAg ICAgICAgIHJldHVybiBldmVudHM7Cj4gIH0KPgo+ICtzdGF0aWMgbG9uZyBkbWFfYnVmX2lvY3Rs KHN0cnVjdCBmaWxlICpmaWxlLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg aW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCj4gK3sKPiArICAgICAgIHN0cnVjdCBkbWFfYnVm ICpkbWFidWY7Cj4gKyAgICAgICBzdHJ1Y3QgZG1hX2J1Zl9zeW5jIHN5bmM7Cj4gKyAgICAgICBl bnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb247Cj4gKwo+ICsgICAgICAgZG1hYnVmID0g ZmlsZS0+cHJpdmF0ZV9kYXRhOwo+ICsKPiArICAgICAgIGlmICghaXNfZG1hX2J1Zl9maWxlKGZp bGUpKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKCldoeT8gVGhpcyBjYW4gbmV2 ZXIgaGFwcGVuLCBhbmQgeW91IGJldHRlciBub3QgdXNlIGRtYV9idWZfaW9jdGwoKQpvdXRzaWRl IG9mIGRtYV9idWZfZm9wcy4uCkkgZ3Vlc3MgaXQncyBzaW1wbHkgY29waWVkIGZyb20gdGhlIG90 aGVyIGZvcCBjYWxsYmFja3MsIGJ1dCBJIGRvbid0CnNlZSB3aHkuIGRtYV9idWZfcG9sbCgpIGRv ZXNuJ3QgZG8gaXQsIG5laXRoZXIgc2hvdWxkIHRoaXMsIG9yIG9uZSBvZgp0aGUgb3RoZXIgMyBj YWxsYmFja3MuCgo+ICsKPiArICAgICAgIHN3aXRjaCAoY21kKSB7Cj4gKyAgICAgICBjYXNlIERN QV9CVUZfSU9DVExfU1lOQzoKPiArICAgICAgICAgICAgICAgaWYgKGNvcHlfZnJvbV91c2VyKCZz eW5jLCAodm9pZCBfX3VzZXIgKikgYXJnLCBzaXplb2Yoc3luYykpKQo+ICsgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiAtRUZBVUxUOwo+ICsKPiArICAgICAgICAgICAgICAgaWYgKHN5bmMu ZmxhZ3MgJiBETUFfQlVGX1NZTkNfUlcpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0 aW9uID0gRE1BX0JJRElSRUNUSU9OQUw7Cj4gKyAgICAgICAgICAgICAgIGVsc2UgaWYgKHN5bmMu ZmxhZ3MgJiBETUFfQlVGX1NZTkNfUkVBRCkKPiArICAgICAgICAgICAgICAgICAgICAgICBkaXJl Y3Rpb24gPSBETUFfRlJPTV9ERVZJQ0U7Cj4gKyAgICAgICAgICAgICAgIGVsc2UgaWYgKHN5bmMu ZmxhZ3MgJiBETUFfQlVGX1NZTkNfV1JJVEUpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGly ZWN0aW9uID0gRE1BX1RPX0RFVklDRTsKPiArICAgICAgICAgICAgICAgZWxzZQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwoKVGhpcyBsb29rcyBib2d1cy4gSXQgYWx3 YXlzIGVuZHMgdXAgYmVpbmcgIkRNQV9CSURJUkVDVElPTkFMIiBvcgpFSU5WQUwuIEkgcmVjb21t ZW5kIGNoYW5naW5nIGl0IHRvOgoKc3dpdGNoIChzeW5jLmZsYWdzICYgRE1BX0JVRl9TWU5DX1JX KSB7CmNhc2UgRE1BX0JVRl9TWU5DX1JFQUQ6CiAgICAgICAgZGlyZWN0aW9uID0gRE1BX0ZST01f REVWSUNFOwogICAgICAgIGJyZWFrOwpjYXNlIERNQV9CVUZfU1lOQ19XUklURToKICAgICAgICBk aXJlY3Rpb24gPSBETUFfVE9fREVWSUNFOwogICAgICAgIGJyZWFrOwpjYXNlIERNQV9CVUZfU1lO Q19SRUFEOgogICAgICAgIGRpcmVjdGlvbiA9IERNQV9CSURJUkVDVElPTkFMOwogICAgICAgIGJy ZWFrOwpkZWZhdWx0OgogICAgICAgIHJldHVybiAtRUlOVkFMOwp9Cgo+ICsKPiArICAgICAgICAg ICAgICAgaWYgKHN5bmMuZmxhZ3MgJiB+RE1BX0JVRl9TWU5DX1ZBTElEX0ZMQUdTX01BU0spCj4g KyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CgpXaHkgaXNuJ3QgdGhpcyBk b25lIGltbWVkaWF0ZWx5IGFmdGVyIGNvcHlfZnJvbV91c2VyKCk/Cgo+ICsKPiArICAgICAgICAg ICAgICAgaWYgKHN5bmMuZmxhZ3MgJiBETUFfQlVGX1NZTkNfRU5EKQo+ICsgICAgICAgICAgICAg ICAgICAgICAgIGRtYV9idWZfZW5kX2NwdV9hY2Nlc3MoZG1hYnVmLCBkaXJlY3Rpb24pOwo+ICsg ICAgICAgICAgICAgICBlbHNlCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZG1hX2J1Zl9iZWdp bl9jcHVfYWNjZXNzKGRtYWJ1ZiwgZGlyZWN0aW9uKTsKCldoeSBhcmUgU1lOQ19TVEFSVCBhbmQg U1lOQ19FTkQgZXhjbHVzaXZlPyBJdCBmZWVscyB2ZXJ5IG5hdHVyYWwgdG8gbWUKdG8gaW52b2tl IGJvdGggYXQgdGhlIHNhbWUgdGltZSAoZXNwZWNpYWxseSBpZiB0d28gb2JqZWN0cyBhcmUgc3Rv cmVkCmluIHRoZSBzYW1lIGRtYS1idWYpLgoKPiArCj4gKyAgICAgICAgICAgICAgIHJldHVybiAw Owo+ICsgICAgICAgZGVmYXVsdDoKPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9UVFk7Cj4g KyAgICAgICB9Cj4gK30KPiArCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25z IGRtYV9idWZfZm9wcyA9IHsKPiAgICAgICAgIC5yZWxlYXNlICAgICAgICA9IGRtYV9idWZfcmVs ZWFzZSwKPiAgICAgICAgIC5tbWFwICAgICAgICAgICA9IGRtYV9idWZfbW1hcF9pbnRlcm5hbCwK PiAgICAgICAgIC5sbHNlZWsgICAgICAgICA9IGRtYV9idWZfbGxzZWVrLAo+ICAgICAgICAgLnBv bGwgICAgICAgICAgID0gZG1hX2J1Zl9wb2xsLAo+ICsgICAgICAgLnVubG9ja2VkX2lvY3RsID0g ZG1hX2J1Zl9pb2N0bCwKPiAgfTsKPgo+ICAvKgo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkv bGludXgvZG1hLWJ1Zi5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2RtYS1idWYuaAo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNGE5YjM2Ygo+IC0tLSAvZGV2L251bGwKPiAr KysgYi9pbmNsdWRlL3VhcGkvbGludXgvZG1hLWJ1Zi5oCj4gQEAgLTAsMCArMSwzOCBAQAo+ICsv Kgo+ICsgKiBGcmFtZXdvcmsgZm9yIGJ1ZmZlciBvYmplY3RzIHRoYXQgY2FuIGJlIHNoYXJlZCBh Y3Jvc3MgZGV2aWNlcy9zdWJzeXN0ZW1zLgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQoQykgMjAxNSBJ bnRlbCBMdGQKPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKPiArICogdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMgcHVibGlzaGVk IGJ5Cj4gKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCj4gKyAqCj4gKyAqIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LCBidXQgV0lUSE9VVAo+ICsgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKPiArICogRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgo+ ICsgKiBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgKPiArICog dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ Lgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX0RNQV9CVUZfVUFQSV9IXwo+ICsjZGVmaW5lIF9ETUFf QlVGX1VBUElfSF8KPiArCj4gKy8qIGJlZ2luL2VuZCBkbWEtYnVmIGZ1bmN0aW9ucyB1c2VkIGZv ciB1c2Vyc3BhY2UgbW1hcC4gKi8KPiArc3RydWN0IGRtYV9idWZfc3luYyB7Cj4gKyAgICAgICBf X3U2NCBmbGFnczsKPiArfTsKClBsZWFzZSBhZGQgJyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPics IG90aGVyd2lzZSB0aGlzIGhlYWRlciBjYW5ub3QgYmUKY29tcGlsZWQgb24gaXRzIG93biAobWlz c2luZyBfX3U2NCkuCgo+ICsKPiArI2RlZmluZSBETUFfQlVGX1NZTkNfUkVBRCAgICAgICgxIDw8 IDApCj4gKyNkZWZpbmUgRE1BX0JVRl9TWU5DX1dSSVRFICAgICAoMiA8PCAwKQo+ICsjZGVmaW5l IERNQV9CVUZfU1lOQ19SVyAgICAgICAgKERNQV9CVUZfU1lOQ19SRUFEIHwgRE1BX0JVRl9TWU5D X1dSSVRFKQo+ICsjZGVmaW5lIERNQV9CVUZfU1lOQ19TVEFSVCAgICAgKDAgPDwgMikKPiArI2Rl ZmluZSBETUFfQlVGX1NZTkNfRU5EICAgICAgICgxIDw8IDIpCj4gKyNkZWZpbmUgRE1BX0JVRl9T WU5DX1ZBTElEX0ZMQUdTX01BU0sgXAo+ICsgICAgICAgKERNQV9CVUZfU1lOQ19SVyB8IERNQV9C VUZfU1lOQ19FTkQpCj4gKwo+ICsjZGVmaW5lIERNQV9CVUZfQkFTRSAgICAgICAgICAgJ2InCj4g KyNkZWZpbmUgRE1BX0JVRl9JT0NUTF9TWU5DICAgICBfSU9XKERNQV9CVUZfQkFTRSwgMCwgc3Ry dWN0IGRtYV9idWZfc3luYykKCldoeSBfSU9XPyBBIHJlYWQtb25seSBpb2N0bCBzaG91bGQgYmUg YWJsZSB0byBjYWxsIERNQV9CVUZfU1lOQ19SRUFELCByaWdodD8KClRoYW5rcwpEYXZpZAoKPiAr Cj4gKyNlbmRpZgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK