From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laura Abbott Subject: Re: [PATCH] staging: android: ion: add buffer flag update ioctl Date: Thu, 3 Jan 2019 17:52:57 -0800 Message-ID: References: <1545239943-15414-1-git-send-email-prime.zeng@hisilicon.com> <678F3D1BB717D949B966B68EAEB446ED24E2926A@dggemm526-mbx.china.huawei.com> <786ad55f-4651-56ce-cd5c-ca02f7ac4093@redhat.com> <678F3D1BB717D949B966B68EAEB446ED24E2B495@dggemm526-mbx.china.huawei.com> <58278bab-413c-ef5e-3074-5afbcc1b86de@redhat.com> <678F3D1BB717D949B966B68EAEB446ED24E31270@dggemm526-mbx.china.huawei.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qt1-f194.google.com (mail-qt1-f194.google.com [209.85.160.194]) by gabe.freedesktop.org (Postfix) with ESMTPS id AF68F6EBBA for ; Fri, 4 Jan 2019 01:53:00 +0000 (UTC) Received: by mail-qt1-f194.google.com with SMTP id n32so38926177qte.11 for ; Thu, 03 Jan 2019 17:53:00 -0800 (PST) In-Reply-To: <678F3D1BB717D949B966B68EAEB446ED24E31270@dggemm526-mbx.china.huawei.com> 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: "Zengtao (B)" , "sumit.semwal@linaro.org" Cc: "devel@driverdev.osuosl.org" , Todd Kjos , Greg Kroah-Hartman , "linux-kernel@vger.kernel.org" , "dri-devel@lists.freedesktop.org" , "linaro-mm-sig@lists.linaro.org" , =?UTF-8?Q?Arve_Hj=c3=b8nnev=c3=a5g?= , Joel Fernandes , Martijn Coenen List-Id: dri-devel@lists.freedesktop.org T24gMS8zLzE5IDU6NDIgUE0sIFplbmd0YW8gKEIpIHdyb3RlOgo+PiAtLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQo+PiBGcm9tOiBMYXVyYSBBYmJvdHQgW21haWx0bzpsYWJib3R0QHJlZGhhdC5j b21dCj4+IFNlbnQ6IFRodXJzZGF5LCBKYW51YXJ5IDAzLCAyMDE5IDY6MzEgQU0KPj4gVG86IFpl bmd0YW8gKEIpIDxwcmltZS56ZW5nQGhpc2lsaWNvbi5jb20+OyBzdW1pdC5zZW13YWxAbGluYXJv Lm9yZwo+PiBDYzogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9y Zz47IEFydmUgSGrDuG5uZXbDpWcKPj4gPGFydmVAYW5kcm9pZC5jb20+OyBUb2RkIEtqb3MgPHRr am9zQGFuZHJvaWQuY29tPjsgTWFydGlqbiBDb2VuZW4KPj4gPG1hY29AYW5kcm9pZC5jb20+OyBK b2VsIEZlcm5hbmRlcyA8am9lbEBqb2VsZmVybmFuZGVzLm9yZz47Cj4+IGRldmVsQGRyaXZlcmRl di5vc3Vvc2wub3JnOyBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnOwo+PiBsaW5hcm8t bW0tc2lnQGxpc3RzLmxpbmFyby5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKPj4g U3ViamVjdDogUmU6IFtQQVRDSF0gc3RhZ2luZzogYW5kcm9pZDogaW9uOiBhZGQgYnVmZmVyIGZs YWcgdXBkYXRlIGlvY3RsCj4+Cj4+IE9uIDEyLzIzLzE4IDY6NDcgUE0sIFplbmd0YW8gKEIpIHdy b3RlOgo+Pj4gSGkgbGF1cmE6Cj4+Pgo+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4+ Pj4gRnJvbTogTGF1cmEgQWJib3R0IFttYWlsdG86bGFiYm90dEByZWRoYXQuY29tXQo+Pj4+IFNl bnQ6IEZyaWRheSwgRGVjZW1iZXIgMjEsIDIwMTggNDo1MCBBTQo+Pj4+IFRvOiBaZW5ndGFvIChC KSA8cHJpbWUuemVuZ0BoaXNpbGljb24uY29tPjsKPj4gc3VtaXQuc2Vtd2FsQGxpbmFyby5vcmcK Pj4+PiBDYzogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz47 IEFydmUKPj4gSGrDuG5uZXbDpWcKPj4+PiA8YXJ2ZUBhbmRyb2lkLmNvbT47IFRvZGQgS2pvcyA8 dGtqb3NAYW5kcm9pZC5jb20+OyBNYXJ0aWpuCj4+IENvZW5lbgo+Pj4+IDxtYWNvQGFuZHJvaWQu Y29tPjsgSm9lbCBGZXJuYW5kZXMgPGpvZWxAam9lbGZlcm5hbmRlcy5vcmc+Owo+Pj4+IGRldmVs QGRyaXZlcmRldi5vc3Vvc2wub3JnOyBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnOwo+ Pj4+IGxpbmFyby1tbS1zaWdAbGlzdHMubGluYXJvLm9yZzsgbGludXgta2VybmVsQHZnZXIua2Vy bmVsLm9yZwo+Pj4+IFN1YmplY3Q6IFJlOiBbUEFUQ0hdIHN0YWdpbmc6IGFuZHJvaWQ6IGlvbjog YWRkIGJ1ZmZlciBmbGFnIHVwZGF0ZQo+Pj4+IGlvY3RsCj4+Pj4KPj4+PiBPbiAxMi8xOS8xOCA1 OjM5IFBNLCBaZW5ndGFvIChCKSB3cm90ZToKPj4+Pj4gSGkgbGF1cmE6Cj4+Pj4+Cj4+Pj4+PiAt LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+Pj4+Pj4gRnJvbTogTGF1cmEgQWJib3R0IFttYWls dG86bGFiYm90dEByZWRoYXQuY29tXQo+Pj4+Pj4gU2VudDogVGh1cnNkYXksIERlY2VtYmVyIDIw LCAyMDE4IDI6MTAgQU0KPj4+Pj4+IFRvOiBaZW5ndGFvIChCKSA8cHJpbWUuemVuZ0BoaXNpbGlj b24uY29tPjsKPj4+PiBzdW1pdC5zZW13YWxAbGluYXJvLm9yZwo+Pj4+Pj4gQ2M6IEdyZWcgS3Jv YWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+OyBBcnZlCj4+Pj4gSGrDuG5u ZXbDpWcKPj4+Pj4+IDxhcnZlQGFuZHJvaWQuY29tPjsgVG9kZCBLam9zIDx0a2pvc0BhbmRyb2lk LmNvbT47IE1hcnRpam4KPj4+PiBDb2VuZW4KPj4+Pj4+IDxtYWNvQGFuZHJvaWQuY29tPjsgSm9l bCBGZXJuYW5kZXMgPGpvZWxAam9lbGZlcm5hbmRlcy5vcmc+Owo+Pj4+Pj4gZGV2ZWxAZHJpdmVy ZGV2Lm9zdW9zbC5vcmc7IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7Cj4+Pj4+PiBs aW5hcm8tbW0tc2lnQGxpc3RzLmxpbmFyby5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5v cmcKPj4+Pj4+IFN1YmplY3Q6IFJlOiBbUEFUQ0hdIHN0YWdpbmc6IGFuZHJvaWQ6IGlvbjogYWRk IGJ1ZmZlciBmbGFnIHVwZGF0ZQo+Pj4+Pj4gaW9jdGwKPj4+Pj4+Cj4+Pj4+PiBPbiAxMi8xOS8x OCA5OjE5IEFNLCBaZW5nIFRhbyB3cm90ZToKPj4+Pj4+PiBJbiBzb21lIHVzZWNhc2VzLCB0aGUg YnVmZmVyIGNhY2hlZCBhdHRyaWJ1dGUgaXMgbm90IGRldGVybWluZWQgYXQKPj4+Pj4+PiBhbGxv Y2F0aW9uIHRpbWUsIGl0J3MgZGV0ZXJtaW5lZCBqdXN0IGJlZm9yZSB0aGUgcmVhbCBjcHUgbWFw cGluZy4KPj4+Pj4+PiBBbmQgZnJvbSB0aGUgbWVtb3J5IHZpZXcgb2YgcG9pbnQsIGEgYnVmZmVy IHNob3VsZCBub3QgaGF2ZSB0aGUKPj4+Pj4+IGNhY2hlZAo+Pj4+Pj4+IGF0dHJpYnV0ZSB1dGls IGlzIHJlYWxseSBtYXBwZWQgYnkgdGhlIGNwdS4gU28gaW4gdGhpcyBwYXRjaCwgd2UKPj4+Pj4+ PiBpbnRyb2R1Y2VkIHRoZSBuZXcgaW9jdGwgY29tbWFuZCB0byB0YXJnZXQgdGhlIHJlcXVpcmVt ZW50Lgo+Pj4+Pj4+Cj4+Pj4+Pgo+Pj4+Pj4gVGhpcyBpcyByYWN5IGFuZCBlcnJvciBwcm9uZS4g Q2FuIHlvdSBleHBsYWluIG1vcmUgd2hhdCBwcm9ibGVtCj4+IHlvdQo+Pj4+Pj4gYXJlIHRyeWlu ZyB0byBzb2x2ZT8KPj4+Pj4KPj4+Pj4gTXkgdXNlIGNhc2UgaXMgbGlrZSB0aGlzOgo+Pj4+PiAx LiAgVGhlcmUgYXJlIHR3byBwcm9jZXNzIEEgYW5kIEIsIEEgdGFrZXMgY2FzZSBvZiBpb24gYnVm ZmVyCj4+Pj4+IGFsbG9jYXRpb24sCj4+Pj4gYW5kCj4+Pj4+ICAgICBwYXNzIHRoZSBidWZmZXIg ZmQgdG8gQiwgdGhlbiBCIG1hcHMgYW5kIHVzZXMgaXQuCj4+Pj4+IDIuICBQcm9jZXNzIEIgbmVl ZCB0byBtYXAgdGhlIGJ1ZmZlciB3aXRoIGRpZmZlcmVudCBjYWNoZWQgYXR0cmlidXRlCj4+Pj4+ IGZvciBkaWZmZXJlbnQgdXNlIGNhc2UsIGZvciBleGFtcGxlLCBpZiB0aGUgYnVmZmVyIGlzIHVz ZWQgZm9yIHB1cmUKPj4+Pj4gc29mdHdhcmUgYWxnb3JpdGhtLCB0aGVuIHdlIG5lZWQgdG8gbWFw IGl0IGFzIGNhY2hlZCwgb3RoZXJ3aXNlCj4+Pj4+IG5vbi1jYWNoZWQsIGFuZCBCIG5lZWRzIHRv IGRlYWwgd2l0aCBib3RoIGNhc2VzLgo+Pj4+PiBBbmQgdW5mb3J0dW5hdGVseSB0aGUgbW1hcCBz eXNjYWxsIHRha2VzIG5vIGNhY2hlZCBmbGFncyBhbmQgd2UKPj4+Pj4gY2FuJ3QgZGVjaWRlIHRo ZSBjYWNoZSBhdHRyaWJ1dGUgd2hlbiB3ZSBhcmUgZG9pbmcgdGhlIG1tYXAsIHNvIEkKPj4+Pj4g aW50cm9kdWNlIG5ldyB0aGUgaW9jdGwgZXZlbiB0aG91Z2ggSSB0aGluayB0aGUgc29sdXRpb24g aXMgbm90IGFzCj4+IGdvb2QuCj4+Pj4+Cj4+Pj4+Cj4+Pj4KPj4+PiBUaGFua3MgZm9yIHRoZSBl eHBsYW5hdGlvbiwgdGhpcyB3YXMgYWJvdXQgdGhlIHVzZSBjYXNlIEkgZXhwZWN0ZWQuCj4+Pj4g SSdtIHByZXR0eSBzdXJlIEkgaGFkIHRoaXMgZXhhY3QgcHJvYmxlbSBvbmNlIHVwb24gYSB0aW1l IGFuZCB3ZQo+Pj4+IGRpZG4ndCBjb21lIHVwIHdpdGggYSBzb2x1dGlvbi4gSSdkIHN0aWxsIGxp a2UgdG8gZ2V0IHJpZCBvZiB1bmNhY2hlZAo+Pj4+IGJ1ZmZlcnMgaW4gZ2VuZXJhbCBhbmQganVz dCB1c2UgY2FjaGVkIGJ1ZmZlcnMgKHNlZQo+Pj4+IGh0dHA6Ly9kcml2ZXJkZXYubGludXhkcml2 ZXJwcm9qZWN0Lm9yZy9waXBlcm1haWwvZHJpdmVyZGV2LWRldmVsLzIwMQo+Pj4+IDgtTgo+Pj4+ IG92ZW1iZXIvMTI4ODQyLmh0bWwpCj4+Pj4gV2hhdCdzIHlvdXIgdXNlY2FzZSBmb3IgdW5jYWNo ZWQgYnVmZmVycz8KPj4+Cj4+PiBTb21lIGJ1ZmZlcnMgYXJlIG9ubHkgdXNlZCBieSBIVywgaW4g dGhpcyBjYXNlLCB3ZSB0ZW5kIHRvIHVzZQo+PiB1bmNhY2hlZCBidWZmZXJzLgo+Pj4gQnV0IHNv bWV0aW1lcyB0aGUgU1cgbmVlZCB0byByZWFkIGZldyBidWZmZXIgY29udGVudHMgZm9yIGRlYnVn Cj4+PiBwdXJwb3NlIGFuZCBubyBzeW5jaHJvbml6YXRpb24gaXMgbmVlZGVkLgo+Pj4KPj4KPj4g SWYgdGhpcyBpcyBwcmltYXJpbHkgZm9yIGRlYnVnLCB0aGF0J3Mgbm90IHJlYWxseSBhIGNvbXBl bGxpbmcgcmVhc29uIHRvCj4+IHN1cHBvcnQgdW5jYWNoZWQgYnVmZmVycy4gSXQncyBpbmNyZWRp Ymx5IGRpZmZpY3VsdCB0byBkbyB1bmNhY2hlZCBidWZmZXJzCj4+IGNvcnJlY3RseSBJJ2QgcmF0 aGVyIHNwZW5kIGVmZm9ydCBvbiBtYWtpbmcgdGhlIGNhY2hlZCB1c2UgY2FzZXMgd29yawo+PiBi ZXR0ZXIuCj4+Cj4gTm8sIG5vdCBvbmx5IGZvciBkZWJ1ZywgSSBtZWFudCBpZiB0aGUgYnVmZmVy cyBhcmUgdW5jYWNoZWQsIHRoZSBTVyB3aWxsIG9ubHkgbW1hcAo+IHRoZW0gZm9yIGRlYnVnIG9y IGV2ZW4gZG9uJ3QgbmVlZCB0byBtbWFwIHRoZW0uCj4gU28gZm9yIHRoZSB0d28ga2luZHMgb2Yg YnVmZmVyczoKPiAxLiAgdW5jYWNoZWQ6IG9ubHkgdGhlIEhXIG5lZWQgdG8gYWNjZXNzIGl0LCB0 aGUgU1cgZG9uJ3QgbmVlZCB0byBtbWFwIGl0IG9yIGp1c3QgZm9yIGRlYnVnLgo+IDIuICBjYWNo ZWQ6IGJvdGggdGhlIEhXIGFuZCB0aGUgU1cgbmVlZCB0byBhY2Nlc3MgaXQuCj4gVGhlIElPTiBp cyBkZXNpZ25lZCBhcyBhIGdlbmVyYWxpemVkIG1lbW9yeSBtYW5hZ2VyLCBJIHRoaW5rIHdlIHNo b3VsZCBjb3ZlciBhcyBtYW55Cj4gcmVxdWlyZW1lbnRzIGFzIHdlIGNhbiBpbiB0aGUgSU9OIGRl c2lnbiwgc28gSSAnZCByYXRoZXIgdGhhdCB3ZSBrZWVwIHRoZSB1bmNhY2hlZCBzdXBwb3J0Lgo+ IEFuZCBJIGRvbuKAmXQgcXVpdGUgdW5kZXJzdGFuZCB0aGUgZGlmZmljdWx0eSB5b3UgbWVudGlv bmVkIHRvIHN1cHBvcnQgdGhlIHVuY2FjaGVkIGJ1ZmZlcnMsIHdvdWxkCj4geW91IGV4cGxhaW4g YSBsaXR0bGUgbW9yZSBhYm91dCBpdC4KPiAKCldlIGVuZCB1cCB3aXRoIGFsaWFzaW5nIHByb2Js ZW1zLiBFYWNoIGtlcm5lbCBwYWdlIHN0aWxsIGhhcyBhIGNhY2hlZAptYXBwaW5nIHNvIGl0J3Mg dmVyeSBkaWZmaWN1bHQgdG8ga2VlcCB0aGUgdHdvIG1hcHBpbmdzIGluIHN5bmMuCmh0dHBzOi8v bG9yZS5rZXJuZWwub3JnL2xrbWwvMjAxODExMjAxNjQ2MzYuamN3N2xpMnVhYTNjbXdjM0BERVNL VE9QLUUxTlRWVlAubG9jYWxkb21haW4vClRoaXMgdGhyZWFkIGRvZXMgYSBiZXR0ZXIgam9iIG9m IGV4cGxhaW5pbmcgdGhlIHByb2JsZW0gYW5kIHRoZQpvYmplY3Rpb25zIHRvIHVuY2FjaGVkIGJ1 ZmZlcnMuCgpBbmQgaWYgdGhlIHNvZnR3YXJlIG5ldmVyIHRvdWNoZXMgdGhlIGJ1ZmZlciwgd2h5 IGRvZXMgaXQKbWF0dGVyIGlmIHRoZSBidWZmZXIgaXMgdW5jYWNoZWQ/CgpMYXVyYQoKPiBUaGFu a3MKPiBaZW5ndGFvCj4gCj4+Cj4+Pj4KPj4+Pj4+Cj4+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogWmVu ZyBUYW8gPHByaW1lLnplbmdAaGlzaWxpY29uLmNvbT4KPj4+Pj4+PiAtLS0KPj4+Pj4+PiAgICAg IGRyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9pb24taW9jdGwuYyB8ICA0ICsrKysKPj4+Pj4+ PiAgICAgIGRyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9pb24uYyAgICAgICB8IDE3Cj4+Pj4g KysrKysrKysrKysrKysrKysKPj4+Pj4+PiAgICAgIGRyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lv bi9pb24uaCAgICAgICB8ICAxICsKPj4+Pj4+PiAgICAgIGRyaXZlcnMvc3RhZ2luZy9hbmRyb2lk L3VhcGkvaW9uLmggICAgICB8IDIyCj4+Pj4+PiArKysrKysrKysrKysrKysrKysrKysrCj4+Pj4+ Pj4gICAgICA0IGZpbGVzIGNoYW5nZWQsIDQ0IGluc2VydGlvbnMoKykKPj4+Pj4+Pgo+Pj4+Pj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9pb24vaW9uLWlvY3RsLmMKPj4+ Pj4+PiBiL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9pb24taW9jdGwuYwo+Pj4+Pj4+IGlu ZGV4IGE4ZDNjYzQuLjYwYmI3MDIgMTAwNjQ0Cj4+Pj4+Pj4gLS0tIGEvZHJpdmVycy9zdGFnaW5n L2FuZHJvaWQvaW9uL2lvbi1pb2N0bC5jCj4+Pj4+Pj4gKysrIGIvZHJpdmVycy9zdGFnaW5nL2Fu ZHJvaWQvaW9uL2lvbi1pb2N0bC5jCj4+Pj4+Pj4gQEAgLTEyLDYgKzEyLDcgQEAKPj4+Pj4+Pgo+ Pj4+Pj4+ICAgICAgdW5pb24gaW9uX2lvY3RsX2FyZyB7Cj4+Pj4+Pj4gICAgICAJc3RydWN0IGlv bl9hbGxvY2F0aW9uX2RhdGEgYWxsb2NhdGlvbjsKPj4+Pj4+PiArCXN0cnVjdCBpb25fYnVmZmVy X2ZsYWdfZGF0YSB1cGRhdGU7Cj4+Pj4+Pj4gICAgICAJc3RydWN0IGlvbl9oZWFwX3F1ZXJ5IHF1 ZXJ5Owo+Pj4+Pj4+ICAgICAgfTsKPj4+Pj4+Pgo+Pj4+Pj4+IEBAIC04Myw2ICs4NCw5IEBAIGxv bmcgaW9uX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQKPj4+Pj4+PiBjbWQs IHVuc2lnbmVkIGxvbmcgYXJnKQo+Pj4+Pj4+Cj4+Pj4+Pj4gICAgICAJCWJyZWFrOwo+Pj4+Pj4+ ICAgICAgCX0KPj4+Pj4+PiArCWNhc2UgSU9OX0lPQ19CVUZGRVJfVVBEQVRFOgo+Pj4+Pj4+ICsJ CXJldCA9IGlvbl9idWZmZXJfdXBkYXRlKGRhdGEudXBkYXRlLmZkLCBkYXRhLnVwZGF0ZS5mbGFn cyk7Cj4+Pj4+Pj4gKwkJYnJlYWs7Cj4+Pj4+Pj4gICAgICAJY2FzZSBJT05fSU9DX0hFQVBfUVVF Ulk6Cj4+Pj4+Pj4gICAgICAJCXJldCA9IGlvbl9xdWVyeV9oZWFwcygmZGF0YS5xdWVyeSk7Cj4+ Pj4+Pj4gICAgICAJCWJyZWFrOwo+Pj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcv YW5kcm9pZC9pb24vaW9uLmMKPj4+Pj4+PiBiL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9p b24uYwo+Pj4+Pj4+IGluZGV4IDk5MDczMzIuLmYxNDA0ZGMgMTAwNjQ0Cj4+Pj4+Pj4gLS0tIGEv ZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvaW9uL2lvbi5jCj4+Pj4+Pj4gKysrIGIvZHJpdmVycy9z dGFnaW5nL2FuZHJvaWQvaW9uL2lvbi5jCj4+Pj4+Pj4gQEAgLTQzNiw2ICs0MzYsMjMgQEAgaW50 IGlvbl9hbGxvYyhzaXplX3QgbGVuLCB1bnNpZ25lZCBpbnQKPj4+Pj4+IGhlYXBfaWRfbWFzaywg dW5zaWduZWQgaW50IGZsYWdzKQo+Pj4+Pj4+ICAgICAgCXJldHVybiBmZDsKPj4+Pj4+PiAgICAg IH0KPj4+Pj4+Pgo+Pj4+Pj4+ICtpbnQgaW9uX2J1ZmZlcl91cGRhdGUodW5zaWduZWQgaW50IGZk LCB1bnNpZ25lZCBpbnQgZmxhZ3MpIHsKPj4+Pj4+PiArCXN0cnVjdCBkbWFfYnVmICpkbWFidWY7 Cj4+Pj4+Pj4gKwlzdHJ1Y3QgaW9uX2J1ZmZlciAqYnVmZmVyOwo+Pj4+Pj4+ICsKPj4+Pj4+PiAr CWRtYWJ1ZiA9IGRtYV9idWZfZ2V0KGZkKTsKPj4+Pj4+PiArCj4+Pj4+Pj4gKwlpZiAoIWRtYWJ1 ZikKPj4+Pj4+PiArCQlyZXR1cm4gLUVJTlZBTDsKPj4+Pj4+PiArCj4+Pj4+Pj4gKwlidWZmZXIg PSBkbWFidWYtPnByaXY7Cj4+Pj4+Pj4gKwlidWZmZXItPmZsYWdzID0gZmxhZ3M7Cj4+Pj4+Pj4g KwlkbWFfYnVmX3B1dChkbWFidWYpOwo+Pj4+Pj4+ICsKPj4+Pj4+PiArCXJldHVybiAwOwo+Pj4+ Pj4+ICt9Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICAgICAgaW50IGlvbl9xdWVyeV9oZWFwcyhzdHJ1Y3Qg aW9uX2hlYXBfcXVlcnkgKnF1ZXJ5KQo+Pj4+Pj4+ICAgICAgewo+Pj4+Pj4+ICAgICAgCXN0cnVj dCBpb25fZGV2aWNlICpkZXYgPSBpbnRlcm5hbF9kZXY7IGRpZmYgLS1naXQKPj4+Pj4+PiBhL2Ry aXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9pb24uaAo+Pj4+Pj4+IGIvZHJpdmVycy9zdGFnaW5n L2FuZHJvaWQvaW9uL2lvbi5oCj4+Pj4+Pj4gaW5kZXggYzAwNmZjMS4uOTliZjlhYiAxMDA2NDQK Pj4+Pj4+PiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9pb24vaW9uLmgKPj4+Pj4+PiAr KysgYi9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9pb24vaW9uLmgKPj4+Pj4+PiBAQCAtMTk5LDYg KzE5OSw3IEBAIGludCBpb25faGVhcF9wYWdlc196ZXJvKHN0cnVjdCBwYWdlCj4+ICpwYWdlLAo+ Pj4+Pj4gc2l6ZV90IHNpemUsIHBncHJvdF90IHBncHJvdCk7Cj4+Pj4+Pj4gICAgICBpbnQgaW9u X2FsbG9jKHNpemVfdCBsZW4sCj4+Pj4+Pj4gICAgICAJICAgICAgdW5zaWduZWQgaW50IGhlYXBf aWRfbWFzaywKPj4+Pj4+PiAgICAgIAkgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpOwo+Pj4+Pj4+ ICtpbnQgaW9uX2J1ZmZlcl91cGRhdGUodW5zaWduZWQgaW50IGZkLCB1bnNpZ25lZCBpbnQgZmxh Z3MpOwo+Pj4+Pj4+Cj4+Pj4+Pj4gICAgICAvKioKPj4+Pj4+PiAgICAgICAqIGlvbl9oZWFwX2lu aXRfc2hyaW5rZXIKPj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQv dWFwaS9pb24uaAo+Pj4+Pj4+IGIvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvdWFwaS9pb24uaAo+ Pj4+Pj4+IGluZGV4IDVkNzAwOTguLjk5NzUzZmMgMTAwNjQ0Cj4+Pj4+Pj4gLS0tIGEvZHJpdmVy cy9zdGFnaW5nL2FuZHJvaWQvdWFwaS9pb24uaAo+Pj4+Pj4+ICsrKyBiL2RyaXZlcnMvc3RhZ2lu Zy9hbmRyb2lkL3VhcGkvaW9uLmgKPj4+Pj4+PiBAQCAtNzQsNiArNzQsMjAgQEAgc3RydWN0IGlv bl9hbGxvY2F0aW9uX2RhdGEgewo+Pj4+Pj4+ICAgICAgCV9fdTMyIHVudXNlZDsKPj4+Pj4+PiAg ICAgIH07Cj4+Pj4+Pj4KPj4+Pj4+PiArLyoqCj4+Pj4+Pj4gKyAqIHN0cnVjdCBpb25fYnVmZmVy X2ZsYWdfZGF0YSAtIG1ldGFkYXRhIHBhc3NlZCBmcm9tIHVzZXJzcGFjZQo+Pj4+Pj4+ICtmb3Ig dXBkYXRlCj4+Pj4+Pj4gKyAqIGJ1ZmZlciBmbGFncwo+Pj4+Pj4+ICsgKiBAZmQ6CQkJZmlsZSBk ZXNjcmlwdG9yIG9mIHRoZSBidWZmZXIKPj4+Pj4+PiArICogQGZsYWdzOgkJZmxhZ3MgcGFzc2Vk IHRvIHRoZSBidWZmZXIKPj4+Pj4+PiArICoKPj4+Pj4+PiArICogUHJvdmlkZWQgYnkgdXNlcnNw YWNlIGFzIGFuIGFyZ3VtZW50IHRvIHRoZSBpb2N0bCAgKi8KPj4+Pj4+PiArCj4+Pj4+Pj4gK3N0 cnVjdCBpb25fYnVmZmVyX2ZsYWdfZGF0YSB7Cj4+Pj4+Pj4gKwlfX3UzMiBmZDsKPj4+Pj4+PiAr CV9fdTMyIGZsYWdzOwo+Pj4+Pj4+ICt9Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICAgICAgI2RlZmluZSBN QVhfSEVBUF9OQU1FCQkJMzIKPj4+Pj4+Pgo+Pj4+Pj4+ICAgICAgLyoqCj4+Pj4+Pj4gQEAgLTEx Niw2ICsxMzAsMTQgQEAgc3RydWN0IGlvbl9oZWFwX3F1ZXJ5IHsKPj4+Pj4+PiAgICAgIAkJCQkg ICAgICBzdHJ1Y3QgaW9uX2FsbG9jYXRpb25fZGF0YSkKPj4+Pj4+Pgo+Pj4+Pj4+ICAgICAgLyoq Cj4+Pj4+Pj4gKyAqIERPQzogSU9OX0lPQ19CVUZGRVJfVVBEQVRFIC0gdXBkYXRlIHRoZSBzcGVj aWZpZWQgaW9uCj4+IGJ1ZmZlcgo+Pj4+Pj4gZmxhZ3MKPj4+Pj4+PiArICoKPj4+Pj4+PiArICog VGFrZXMgYW4gaW9uX2J1ZmZlcl9mbGFnX2RhdGEgc3RydWN0dXJlIGFuZCByZXR1cm5zIHRoZSBy ZXN1bHQKPj4+Pj4+PiArb2YgdGhlCj4+Pj4+Pj4gKyAqIGJ1ZmZlciBmbGFnIHVwZGF0ZSBvcGVy YXRpb24uCj4+Pj4+Pj4gKyAqLwo+Pj4+Pj4+ICsjZGVmaW5lIElPTl9JT0NfQlVGRkVSX1VQREFU RQlfSU9XUihJT05fSU9DX01BR0lDLCAxLCBcCj4+Pj4+Pj4gKwkJCQkgICAgICBzdHJ1Y3QgaW9u X2J1ZmZlcl9mbGFnX2RhdGEpCj4+Pj4+Pj4gKy8qKgo+Pj4+Pj4+ICAgICAgICogRE9DOiBJT05f SU9DX0hFQVBfUVVFUlkgLSBpbmZvcm1hdGlvbiBhYm91dCBhdmFpbGFibGUKPj4+PiBoZWFwcwo+ Pj4+Pj4+ICAgICAgICoKPj4+Pj4+PiAgICAgICAqIFRha2VzIGFuIGlvbl9oZWFwX3F1ZXJ5IHN0 cnVjdHVyZSBhbmQgcG9wdWxhdGVzCj4+IGluZm9ybWF0aW9uCj4+Pj4+PiBhYm91dAo+Pj4+Pj4+ Cj4+Pj4+Cj4+Pgo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRl dmVsCg==