From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gustavo Padovan Subject: Re: [PATCH v10 3/3] staging/android: refactor SYNC IOCTLs Date: Tue, 5 Apr 2016 11:19:45 -0700 Message-ID: <20160405181945.GA24204@joana> References: <1458307660-31986-1-git-send-email-gustavo@padovan.org> <1458307660-31986-3-git-send-email-gustavo@padovan.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pa0-f41.google.com (mail-pa0-f41.google.com [209.85.220.41]) by gabe.freedesktop.org (Postfix) with ESMTPS id 933A06E26B for ; Tue, 5 Apr 2016 18:19:47 +0000 (UTC) Received: by mail-pa0-f41.google.com with SMTP id tt10so15409699pab.3 for ; Tue, 05 Apr 2016 11:19:47 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1458307660-31986-3-git-send-email-gustavo@padovan.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Greg Kroah-Hartman Cc: devel@driverdev.osuosl.org, Daniel Stone , Daniel Vetter , Riley Andrews , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Arve =?iso-8859-1?B?SGr4bm5lduVn?= , joe@perches.com, akpm@linux-foundation.org, Gustavo Padovan , John Harrison List-Id: dri-devel@lists.freedesktop.org SGkgR3JlZywKCkFueSBjb21tZW50cyBvbiB0aGlzPwoKVGhhbmtzLAoKCUd1c3Rhdm8KCjIwMTYt MDMtMTggR3VzdGF2byBQYWRvdmFuIDxndXN0YXZvQHBhZG92YW4ub3JnPjoKCj4gRnJvbTogR3Vz dGF2byBQYWRvdmFuIDxndXN0YXZvLnBhZG92YW5AY29sbGFib3JhLmNvLnVrPgo+IAo+IENoYW5n ZSBTWU5DX0lPQ19GSUxFX0lORk8gKGZvcm1lciBTWU5DX0lPQ19GRU5DRV9JTkZPKSBiZWhhdmlv dXIgdG8gYXZvaWQKPiBmdXR1cmUgQVBJIGJyZWFrcyBhbmQgb3B0aW1pemUgYnVmZmVyIGFsbG9j YXRpb24uCj4gCj4gTm93IG51bV9mZW5jZXMgY2FuIGJlIGZpbGxlZCBieSB0aGUgY2FsbGVyIHRv IGluZm9ybSBob3cgbWFueSBmZW5jZXMgaXQKPiB3YW50cyB0byByZXRyaWV2ZSBmcm9tIHRoZSBr ZXJuZWwuIElmIHRoZSBudW1fZmVuY2VzIHBhc3NlZCBpcyBncmVhdGVyCj4gdGhhbiB6ZXJvIGlu Zm8tPnN5bmNfZmVuY2VfaW5mbyBzaG91bGQgcG9pbnQgdG8gYSBidWZmZXIgd2l0aCBlbm91Z2gg c3BhY2UKPiB0byBmaXQgYWxsIGZlbmNlcy4KPiAKPiBIb3dldmVyIGlmIG51bV9mZW5jZXMgcGFz c2VkIHRvIHRoZSBrZXJuZWwgaXMgMCwgdGhlIGtlcm5lbCB3aWxsIHJlcGx5Cj4gd2l0aCBudW1i ZXIgb2YgZmVuY2VzIG9mIHRoZSBzeW5jX2ZpbGUuCj4gCj4gU2VuZGluZyBmaXJzdCBhbiBpb2N0 bCB3aXRoIG51bV9mZW5jZXMgPSAwIGNhbiBvcHRpbWl6ZSBidWZmZXIgYWxsb2NhdGlvbiwKPiBp biBhIGZpcnN0IGNhbGwgd2l0aCBudW1fZmVuY2VzID0gMCB1c2Vyc3BhY2Ugd2lsbCByZWNlaXZl IHRoZSBhY3R1YWwKPiBudW1iZXIgb2YgZmVuY2VzIGluIHRoZSBudW1fZmVuY2VzIGZpbGVkLgo+ IAo+IFRoZW4gaXQgY2FuIGFsbG9jYXRlIGEgYnVmZmVyIHdpdGggdGhlIGNvcnJlY3Qgc2l6ZSBv biBzeW5jX2ZlbmNlX2luZm8gYW5kCj4gY2FsbCBTWU5DX0lPQ19GSUxFX0lORk8gYWdhaW4sIGJ1 dCBub3cgd2l0aCB0aGUgYWN0dWFsIHZhbHVlIG9mIG51bV9mZW5jZXMKPiBpbiB0aGUgc3luY19m aWxlLgo+IAo+IGluZm8tPnN5bmNfZmVuY2VfaW5mbyB3YXMgY29udmVydGVkIHRvIF9fdTY0IHBv aW50ZXIgdG8gcHJldmVudCAzMmJpdAo+IGNvbXBhdGliaWxpdHkgaXNzdWVzLiBBbmQgYSBmbGFn cyBtZW1iZXIgd2FzIGFkZGVkLgo+IAo+IEFuIGV4YW1wbGUgdXNlcnNwYWNlIGNvZGUgZm9yIHRo ZSBsYXRlciB3b3VsZCBiZToKPiAKPiAJc3RydWN0IHN5bmNfZmlsZV9pbmZvICppbmZvOwo+IAlp bnQgZXJyLCBzaXplLCBudW1fZmVuY2VzOwo+IAo+IAlpbmZvID0gbWFsbG9jKHNpemVvZigqaW5m bykpOwo+IAo+IAlpbmZvLmZsYWdzID0gMDsKPiAJZXJyID0gaW9jdGwoZmQsIFNZTkNfSU9DX0ZJ TEVfSU5GTywgaW5mbyk7Cj4gCW51bV9mZW5jZXMgPSBpbmZvLT5udW1fZmVuY2VzOwo+IAo+IAlp ZiAobnVtX2ZlbmNlcykgewo+IAkJaW5mby5mbGFncyA9IDA7Cj4gCQlzaXplID0gc2l6ZW9mKHN0 cnVjdCBzeW5jX2ZlbmNlX2luZm8pICogbnVtX2ZlbmNlczsKPiAJCWluZm8tPm51bV9mZW5jZXMg PSBudW1fZmVuY2VzOwo+IAkJaW5mby0+c3luY19mZW5jZV9pbmZvID0gKHVpbnQ2NF90KSBjYWxs b2MobnVtX2ZlbmNlcywKPiAJCQkJCQkJICBzaXplb2Yoc3RydWN0IHN5bmNfZmVuY2VfaW5mbykp Owo+IAo+IAkJZXJyID0gaW9jdGwoZmQsIFNZTkNfSU9DX0ZJTEVfSU5GTywgaW5mbyk7Cj4gCX0K PiAKPiBGaW5hbGx5IHRoZSBJT0NUTHMgbnVtYmVycyB3ZXJlIGNoYW5nZWQgdG8gYXZvaWQgYW55 IHBvdGVudGlhbCBvbGQKPiB1c2Vyc3BhY2UgcnVubmluZyB0aGUgb2xkIEFQSSB0byBnZXQgd2Vp cmQgZXJyb3JzLiBDaGFuZ2luZyB0aGUgb3Bjb2Rlcwo+IHdpbGwgbWFrZSB0aGVtIGZhaWwgcmln aHQgYXdheS4gVGhpcyBpcyBqdXN0IGEgcHJlY2F1dGlvbiwgdGhlcmUgbm8KPiB1cHN0cmVhbSB1 c2VycyBvZiB0aGVzZSBpbnRlcmZhY2VzIHlldCBhbmQgdGhlIG9ubHkgdXNlciBpcyBBbmRyb2lk LCBidXQKPiB3ZSBkb24ndCBleHBlY3QgYW55b25lIHRyeWluZyB0byBydW4gYW5kcm9pZCB1c2Vy c3BhY2UgYW5kIGFsbCBpdAo+IGRlcGVuZGVuY2llcyBvbiB0b3Agb2YgdXBzdHJlYW0ga2VybmVs cy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBHdXN0YXZvIFBhZG92YW4gPGd1c3Rhdm8ucGFkb3ZhbkBj b2xsYWJvcmEuY28udWs+Cj4gUmV2aWV3ZWQtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVu Lmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gQWNrZWQtYnk6IEdyZWcgSGFja21hbm4gPGdo YWNrbWFubkBnb29nbGUuY29tPgo+IEFja2VkLWJ5OiBSb2IgQ2xhcmsgPHJvYmRjbGFya0BnbWFp bC5jb20+Cj4gQWNrZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+ Cj4gCj4gLS0tCj4gdjI6IGZpeCBmZW5jZV9pbmZvIG1lbW9yeSBsZWFrCj4gCj4gdjM6IENvbW1l bnRzIGZyb20gRW1pbCBWZWxpa292Cj4gCS0gaW1wcm92ZSBjb21taXQgbWVzc2FnZQo+IAktIHJl bW92ZSBfX3U2NCBjYXN0Cj4gCS0gcmVtb3ZlIGNoZWNrIGZvciBvdXRwdXQgZmllbGRzIGluIGZp bGVfaW5mbwo+IAktIGNsZWFuIHVwIHN5bmNfZmlsbF9mZW5jZV9pbmZvKCkKPiAKPiAgICAgQ29t bWVudHMgZnJvbSBNYWFydGVuIExhbmtob3JzdAo+IAktIHJlbW92ZSBpbi5udW1fZmVuY2VzICYm ICFpbi5zeW5jX2ZlbmNlX2luZm8gY2hlY2sKPiAJLSByZW1vdmUgaW5mby0+bGVuIGFuZCB1c2Ug b25seSBudW1fZmVuY2VzIHRvIGNhbGN1bGF0ZSBzaXplCj4gCj4gICAgIENvbW1lbnRzIGZyb20g RGFuIENhcnBlbnRlcgo+IAktIGZpeCBpbmZvLT5zeW5jX2ZlbmNlX2luZm8gZG9jdW1lbnRhdGlv bgo+IAo+IHY0OiByZW1vdmUgYWxsb2NhdGVkIHN0cnVjdCBzeW5jX2ZpbGVfaW5mbyAoY29tbWVu dCBmcm9tIE1hYXJ0ZW4pCj4gCj4gdjU6IG1lcmdlIGFsbCBjb21taXRzIHRoYXQgd2VyZSBjaGFu Z2luZyB0aGUgQUJJCj4gCj4gdjY6IGZpeCAtV2ludC10by1wb2ludGVyLWNhc3QgZXJyb3Igb24g aW5mby5zeW5jX2ZlbmNlX2luZm8KPiAtLS0KPiAgZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvc3lu Yy5jICAgICAgfCA3NiArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCj4gIGRy aXZlcnMvc3RhZ2luZy9hbmRyb2lkL3VhcGkvc3luYy5oIHwgMzYgKysrKysrKysrKysrKy0tLS0t Cj4gIDIgZmlsZXMgY2hhbmdlZCwgNjcgaW5zZXJ0aW9ucygrKSwgNDUgZGVsZXRpb25zKC0pCj4g Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL3N5bmMuYyBiL2RyaXZlcnMv c3RhZ2luZy9hbmRyb2lkL3N5bmMuYwo+IGluZGV4IDNhOGYyMTAuLmY5YzYwOTQgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvc3luYy5jCj4gKysrIGIvZHJpdmVycy9zdGFn aW5nL2FuZHJvaWQvc3luYy5jCj4gQEAgLTQ0NSw2ICs0NDUsMTEgQEAgc3RhdGljIGxvbmcgc3lu Y19maWxlX2lvY3RsX21lcmdlKHN0cnVjdCBzeW5jX2ZpbGUgKnN5bmNfZmlsZSwKPiAgCQlnb3Rv IGVycl9wdXRfZmQ7Cj4gIAl9Cj4gIAo+ICsJaWYgKGRhdGEuZmxhZ3MgfHwgZGF0YS5wYWQpIHsK PiArCQllcnIgPSAtRUlOVkFMOwo+ICsJCWdvdG8gZXJyX3B1dF9mZDsKPiArCX0KPiArCj4gIAlm ZW5jZTIgPSBzeW5jX2ZpbGVfZmRnZXQoZGF0YS5mZDIpOwo+ICAJaWYgKCFmZW5jZTIpIHsKPiAg CQllcnIgPSAtRU5PRU5UOwo+IEBAIC00NzksMTMgKzQ4NCw5IEBAIGVycl9wdXRfZmQ6Cj4gIAly ZXR1cm4gZXJyOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50IHN5bmNfZmlsbF9mZW5jZV9pbmZvKHN0 cnVjdCBmZW5jZSAqZmVuY2UsIHZvaWQgKmRhdGEsIGludCBzaXplKQo+ICtzdGF0aWMgdm9pZCBz eW5jX2ZpbGxfZmVuY2VfaW5mbyhzdHJ1Y3QgZmVuY2UgKmZlbmNlLAo+ICsJCQkJc3RydWN0IHN5 bmNfZmVuY2VfaW5mbyAqaW5mbykKPiAgewo+IC0Jc3RydWN0IHN5bmNfZmVuY2VfaW5mbyAqaW5m byA9IGRhdGE7Cj4gLQo+IC0JaWYgKHNpemUgPCBzaXplb2YoKmluZm8pKQo+IC0JCXJldHVybiAt RU5PTUVNOwo+IC0KPiAgCXN0cmxjcHkoaW5mby0+b2JqX25hbWUsIGZlbmNlLT5vcHMtPmdldF90 aW1lbGluZV9uYW1lKGZlbmNlKSwKPiAgCQlzaXplb2YoaW5mby0+b2JqX25hbWUpKTsKPiAgCXN0 cmxjcHkoaW5mby0+ZHJpdmVyX25hbWUsIGZlbmNlLT5vcHMtPmdldF9kcml2ZXJfbmFtZShmZW5j ZSksCj4gQEAgLTQ5NSw1OCArNDk2LDYzIEBAIHN0YXRpYyBpbnQgc3luY19maWxsX2ZlbmNlX2lu Zm8oc3RydWN0IGZlbmNlICpmZW5jZSwgdm9pZCAqZGF0YSwgaW50IHNpemUpCj4gIAllbHNlCj4g IAkJaW5mby0+c3RhdHVzID0gMDsKPiAgCWluZm8tPnRpbWVzdGFtcF9ucyA9IGt0aW1lX3RvX25z KGZlbmNlLT50aW1lc3RhbXApOwo+IC0KPiAtCXJldHVybiBzaXplb2YoKmluZm8pOwo+ICB9Cj4g IAo+ICBzdGF0aWMgbG9uZyBzeW5jX2ZpbGVfaW9jdGxfZmVuY2VfaW5mbyhzdHJ1Y3Qgc3luY19m aWxlICpzeW5jX2ZpbGUsCj4gIAkJCQkJdW5zaWduZWQgbG9uZyBhcmcpCj4gIHsKPiAtCXN0cnVj dCBzeW5jX2ZpbGVfaW5mbyAqaW5mbzsKPiArCXN0cnVjdCBzeW5jX2ZpbGVfaW5mbyBpbmZvOwo+ ICsJc3RydWN0IHN5bmNfZmVuY2VfaW5mbyAqZmVuY2VfaW5mbyA9IE5VTEw7Cj4gIAlfX3UzMiBz aXplOwo+IC0JX191MzIgbGVuID0gMDsKPiAgCWludCByZXQsIGk7Cj4gIAo+IC0JaWYgKGNvcHlf ZnJvbV91c2VyKCZzaXplLCAodm9pZCBfX3VzZXIgKilhcmcsIHNpemVvZihzaXplKSkpCj4gKwlp ZiAoY29weV9mcm9tX3VzZXIoJmluZm8sICh2b2lkIF9fdXNlciAqKWFyZywgc2l6ZW9mKGluZm8p KSkKPiAgCQlyZXR1cm4gLUVGQVVMVDsKPiAgCj4gLQlpZiAoc2l6ZSA8IHNpemVvZihzdHJ1Y3Qg c3luY19maWxlX2luZm8pKQo+ICsJaWYgKGluZm8uZmxhZ3MgfHwgaW5mby5wYWQpCj4gIAkJcmV0 dXJuIC1FSU5WQUw7Cj4gIAo+IC0JaWYgKHNpemUgPiA0MDk2KQo+IC0JCXNpemUgPSA0MDk2Owo+ IC0KPiAtCWluZm8gPSBremFsbG9jKHNpemUsIEdGUF9LRVJORUwpOwo+IC0JaWYgKCFpbmZvKQo+ IC0JCXJldHVybiAtRU5PTUVNOwo+IC0KPiAtCXN0cmxjcHkoaW5mby0+bmFtZSwgc3luY19maWxl LT5uYW1lLCBzaXplb2YoaW5mby0+bmFtZSkpOwo+IC0JaW5mby0+c3RhdHVzID0gYXRvbWljX3Jl YWQoJnN5bmNfZmlsZS0+c3RhdHVzKTsKPiAtCWlmIChpbmZvLT5zdGF0dXMgPj0gMCkKPiAtCQlp bmZvLT5zdGF0dXMgPSAhaW5mby0+c3RhdHVzOwo+IC0KPiAtCWxlbiA9IHNpemVvZihzdHJ1Y3Qg c3luY19maWxlX2luZm8pOwo+ICsJLyoKPiArCSAqIFBhc3NpbmcgbnVtX2ZlbmNlcyA9IDAgbWVh bnMgdGhhdCB1c2Vyc3BhY2UgZG9lc24ndCB3YW50IHRvCj4gKwkgKiByZXRyaWV2ZSBhbnkgc3lu Y19mZW5jZV9pbmZvLiBJZiBudW1fZmVuY2VzID0gMCB3ZSBza2lwIGZpbGxpbmcKPiArCSAqIHN5 bmNfZmVuY2VfaW5mbyBhbmQgcmV0dXJuIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGZlbmNlcyBvbgo+ ICsJICogaW5mby0+bnVtX2ZlbmNlcy4KPiArCSAqLwo+ICsJaWYgKCFpbmZvLm51bV9mZW5jZXMp Cj4gKwkJZ290byBub19mZW5jZXM7Cj4gIAo+IC0JZm9yIChpID0gMDsgaSA8IHN5bmNfZmlsZS0+ bnVtX2ZlbmNlczsgKytpKSB7Cj4gLQkJc3RydWN0IGZlbmNlICpmZW5jZSA9IHN5bmNfZmlsZS0+ Y2JzW2ldLmZlbmNlOwo+ICsJaWYgKGluZm8ubnVtX2ZlbmNlcyA8IHN5bmNfZmlsZS0+bnVtX2Zl bmNlcykKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiAgCj4gLQkJcmV0ID0gc3luY19maWxsX2ZlbmNl X2luZm8oZmVuY2UsICh1OCAqKWluZm8gKyBsZW4sIHNpemUgLSBsZW4pOwo+ICsJc2l6ZSA9IHN5 bmNfZmlsZS0+bnVtX2ZlbmNlcyAqIHNpemVvZigqZmVuY2VfaW5mbyk7Cj4gKwlmZW5jZV9pbmZv ID0ga3phbGxvYyhzaXplLCBHRlBfS0VSTkVMKTsKPiArCWlmICghZmVuY2VfaW5mbykKPiArCQly ZXR1cm4gLUVOT01FTTsKPiAgCj4gLQkJaWYgKHJldCA8IDApCj4gLQkJCWdvdG8gb3V0Owo+ICsJ Zm9yIChpID0gMDsgaSA8IHN5bmNfZmlsZS0+bnVtX2ZlbmNlczsgKytpKQo+ICsJCXN5bmNfZmls bF9mZW5jZV9pbmZvKHN5bmNfZmlsZS0+Y2JzW2ldLmZlbmNlLCAmZmVuY2VfaW5mb1tpXSk7Cj4g IAo+IC0JCWxlbiArPSByZXQ7Cj4gKwlpZiAoY29weV90b191c2VyKHU2NF90b191c2VyX3B0cihp bmZvLnN5bmNfZmVuY2VfaW5mbyksIGZlbmNlX2luZm8sCj4gKwkJCSBzaXplKSkgewo+ICsJCXJl dCA9IC1FRkFVTFQ7Cj4gKwkJZ290byBvdXQ7Cj4gIAl9Cj4gIAo+IC0JaW5mby0+bGVuID0gbGVu Owo+ICtub19mZW5jZXM6Cj4gKwlzdHJsY3B5KGluZm8ubmFtZSwgc3luY19maWxlLT5uYW1lLCBz aXplb2YoaW5mby5uYW1lKSk7Cj4gKwlpbmZvLnN0YXR1cyA9IGF0b21pY19yZWFkKCZzeW5jX2Zp bGUtPnN0YXR1cyk7Cj4gKwlpZiAoaW5mby5zdGF0dXMgPj0gMCkKPiArCQlpbmZvLnN0YXR1cyA9 ICFpbmZvLnN0YXR1czsKPiArCj4gKwlpbmZvLm51bV9mZW5jZXMgPSBzeW5jX2ZpbGUtPm51bV9m ZW5jZXM7Cj4gIAo+IC0JaWYgKGNvcHlfdG9fdXNlcigodm9pZCBfX3VzZXIgKilhcmcsIGluZm8s IGxlbikpCj4gKwlpZiAoY29weV90b191c2VyKCh2b2lkIF9fdXNlciAqKWFyZywgJmluZm8sIHNp emVvZihpbmZvKSkpCj4gIAkJcmV0ID0gLUVGQVVMVDsKPiAgCWVsc2UKPiAgCQlyZXQgPSAwOwo+ ICAKPiAgb3V0Ogo+IC0Ja2ZyZWUoaW5mbyk7Cj4gKwlrZnJlZShmZW5jZV9pbmZvKTsKPiAgCj4g IAlyZXR1cm4gcmV0Owo+ICB9Cj4gQEAgLTU2MCw3ICs1NjYsNyBAQCBzdGF0aWMgbG9uZyBzeW5j X2ZpbGVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsCj4gIAljYXNl IFNZTkNfSU9DX01FUkdFOgo+ICAJCXJldHVybiBzeW5jX2ZpbGVfaW9jdGxfbWVyZ2Uoc3luY19m aWxlLCBhcmcpOwo+ICAKPiAtCWNhc2UgU1lOQ19JT0NfRkVOQ0VfSU5GTzoKPiArCWNhc2UgU1lO Q19JT0NfRklMRV9JTkZPOgo+ICAJCXJldHVybiBzeW5jX2ZpbGVfaW9jdGxfZmVuY2VfaW5mbyhz eW5jX2ZpbGUsIGFyZyk7Cj4gIAo+ICAJZGVmYXVsdDoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9z dGFnaW5nL2FuZHJvaWQvdWFwaS9zeW5jLmggYi9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC91YXBp L3N5bmMuaAo+IGluZGV4IDQ0NjdjNzYuLmZiYWRiOGEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9z dGFnaW5nL2FuZHJvaWQvdWFwaS9zeW5jLmgKPiArKysgYi9kcml2ZXJzL3N0YWdpbmcvYW5kcm9p ZC91YXBpL3N5bmMuaAo+IEBAIC0xNiwxNCArMTYsMTggQEAKPiAgCj4gIC8qKgo+ICAgKiBzdHJ1 Y3Qgc3luY19tZXJnZV9kYXRhIC0gZGF0YSBwYXNzZWQgdG8gbWVyZ2UgaW9jdGwKPiAtICogQGZk MjoJZmlsZSBkZXNjcmlwdG9yIG9mIHNlY29uZCBmZW5jZQo+ICAgKiBAbmFtZToJbmFtZSBvZiBu ZXcgZmVuY2UKPiArICogQGZkMjoJZmlsZSBkZXNjcmlwdG9yIG9mIHNlY29uZCBmZW5jZQo+ICAg KiBAZmVuY2U6CXJldHVybnMgdGhlIGZkIG9mIHRoZSBuZXcgZmVuY2UgdG8gdXNlcnNwYWNlCj4g KyAqIEBmbGFnczoJbWVyZ2VfZGF0YSBmbGFncwo+ICsgKiBAcGFkOglwYWRkaW5nIGZvciA2NC1i aXQgYWxpZ25tZW50LCBzaG91bGQgYWx3YXlzIGJlIHplcm8KPiAgICovCj4gIHN0cnVjdCBzeW5j X21lcmdlX2RhdGEgewo+IC0JX19zMzIJZmQyOwo+ICAJY2hhcgluYW1lWzMyXTsKPiArCV9fczMy CWZkMjsKPiAgCV9fczMyCWZlbmNlOwo+ICsJX191MzIJZmxhZ3M7Cj4gKwlfX3UzMglwYWQ7Cj4g IH07Cj4gIAo+ICAvKioKPiBAQCAtMzEsNDIgKzM1LDU0IEBAIHN0cnVjdCBzeW5jX21lcmdlX2Rh dGEgewo+ICAgKiBAb2JqX25hbWU6CQluYW1lIG9mIHBhcmVudCBzeW5jX3RpbWVsaW5lCj4gICAq IEBkcml2ZXJfbmFtZToJbmFtZSBvZiBkcml2ZXIgaW1wbGVtZW50aW5nIHRoZSBwYXJlbnQKPiAg ICogQHN0YXR1czoJCXN0YXR1cyBvZiB0aGUgZmVuY2UgMDphY3RpdmUgMTpzaWduYWxlZCA8MDpl cnJvcgo+ICsgKiBAZmxhZ3M6CQlmZW5jZV9pbmZvIGZsYWdzCj4gICAqIEB0aW1lc3RhbXBfbnM6 CXRpbWVzdGFtcCBvZiBzdGF0dXMgY2hhbmdlIGluIG5hbm9zZWNvbmRzCj4gICAqLwo+ICBzdHJ1 Y3Qgc3luY19mZW5jZV9pbmZvIHsKPiAgCWNoYXIJb2JqX25hbWVbMzJdOwo+ICAJY2hhcglkcml2 ZXJfbmFtZVszMl07Cj4gIAlfX3MzMglzdGF0dXM7Cj4gKwlfX3UzMglmbGFnczsKPiAgCV9fdTY0 CXRpbWVzdGFtcF9uczsKPiAgfTsKPiAgCj4gIC8qKgo+ICAgKiBzdHJ1Y3Qgc3luY19maWxlX2lu Zm8gLSBkYXRhIHJldHVybmVkIGZyb20gZmVuY2UgaW5mbyBpb2N0bAo+IC0gKiBAbGVuOglpb2N0 bCBjYWxsZXIgd3JpdGVzIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgaXRzIHBhc3NpbmcgaW4uCj4g LSAqCQlpb2N0bCByZXR1cm5zIGxlbmd0aCBvZiBzeW5jX2ZpbGVfaW5mbyByZXR1cm5lZCB0bwo+ IC0gKgkJdXNlcnNwYWNlIGluY2x1ZGluZyBwdF9pbmZvLgo+ICAgKiBAbmFtZToJbmFtZSBvZiBm ZW5jZQo+ICAgKiBAc3RhdHVzOglzdGF0dXMgb2YgZmVuY2UuIDE6IHNpZ25hbGVkIDA6YWN0aXZl IDwwOmVycm9yCj4gLSAqIEBzeW5jX2ZlbmNlX2luZm86IGFycmF5IG9mIHN5bmNfZmVuY2VfaW5m byBmb3IgZXZlcnkgZmVuY2UgaW4gdGhlIHN5bmNfZmlsZQo+ICsgKiBAZmxhZ3M6CXN5bmNfZmls ZV9pbmZvIGZsYWdzCj4gKyAqIEBudW1fZmVuY2VzCW51bWJlciBvZiBmZW5jZXMgaW4gdGhlIHN5 bmNfZmlsZQo+ICsgKiBAcGFkOglwYWRkaW5nIGZvciA2NC1iaXQgYWxpZ25tZW50LCBzaG91bGQg YWx3YXlzIGJlIHplcm8KPiArICogQHN5bmNfZmVuY2VfaW5mbzogcG9pbnRlciB0byBhcnJheSBv ZiBzdHJ1Y3RzIHN5bmNfZmVuY2VfaW5mbyB3aXRoIGFsbAo+ICsgKgkJIGZlbmNlcyBpbiB0aGUg c3luY19maWxlCj4gICAqLwo+ICBzdHJ1Y3Qgc3luY19maWxlX2luZm8gewo+IC0JX191MzIJbGVu Owo+ICAJY2hhcgluYW1lWzMyXTsKPiAgCV9fczMyCXN0YXR1czsKPiArCV9fdTMyCWZsYWdzOwo+ ICsJX191MzIJbnVtX2ZlbmNlczsKPiArCV9fdTMyCXBhZDsKPiAgCj4gLQlfX3U4CXN5bmNfZmVu Y2VfaW5mb1swXTsKPiArCV9fdTY0CXN5bmNfZmVuY2VfaW5mbzsKPiAgfTsKPiAgCj4gICNkZWZp bmUgU1lOQ19JT0NfTUFHSUMJCSc+Jwo+ICAKPiAgLyoqCj4gKyAqIE9wY29kZXMgIDAsIDEgYW5k IDIgd2VyZSBidXJuZWQgZHVyaW5nIGEgQVBJIGNoYW5nZSB0byBhdm9pZCB1c2VycyBvZiB0aGUK PiArICogb2xkIEFQSSB0byBnZXQgd2VpcmQgZXJyb3JzIHdoZW4gdHJ5aW5nIHRvIGhhbmRsaW5n IHN5bmNfZmlsZXMuIFRoZSBBUEkKPiArICogY2hhbmdlIGhhcHBlbmVkIGR1cmluZyB0aGUgZGUt c3RhZ2Ugb2YgdGhlIFN5bmMgRnJhbWV3b3JrIHdoZW4gdGhlcmUgd2FzCj4gKyAqIG5vIHVwc3Ry ZWFtIHVzZXJzIGF2YWlsYWJsZS4KPiArICovCj4gKwo+ICsvKioKPiAgICogRE9DOiBTWU5DX0lP Q19NRVJHRSAtIG1lcmdlIHR3byBmZW5jZXMKPiAgICoKPiAgICogVGFrZXMgYSBzdHJ1Y3Qgc3lu Y19tZXJnZV9kYXRhLiAgQ3JlYXRlcyBhIG5ldyBmZW5jZSBjb250YWluaW5nIGNvcGllcyBvZgo+ ICAgKiB0aGUgc3luY19wdHMgaW4gYm90aCB0aGUgY2FsbGluZyBmZCBhbmQgc3luY19tZXJnZV9k YXRhLmZkMi4gIFJldHVybnMgdGhlCj4gICAqIG5ldyBmZW5jZSdzIGZkIGluIHN5bmNfbWVyZ2Vf ZGF0YS5mZW5jZQo+ICAgKi8KPiAtI2RlZmluZSBTWU5DX0lPQ19NRVJHRQkJX0lPV1IoU1lOQ19J T0NfTUFHSUMsIDEsIHN0cnVjdCBzeW5jX21lcmdlX2RhdGEpCj4gKyNkZWZpbmUgU1lOQ19JT0Nf TUVSR0UJCV9JT1dSKFNZTkNfSU9DX01BR0lDLCAzLCBzdHJ1Y3Qgc3luY19tZXJnZV9kYXRhKQo+ ICAKPiAgLyoqCj4gICAqIERPQzogU1lOQ19JT0NfRkVOQ0VfSU5GTyAtIGdldCBkZXRhaWxlZCBp bmZvcm1hdGlvbiBvbiBhIGZlbmNlCj4gQEAgLTc5LDYgKzk1LDYgQEAgc3RydWN0IHN5bmNfZmls ZV9pbmZvIHsKPiAgICogcHRfaW5mbyBpcyBhIGJ1ZmZlciBjb250YWluaW5nIHN5bmNfcHRfaW5m b3MgZm9yIGV2ZXJ5IHN5bmNfcHQgaW4gdGhlIGZlbmNlLgo+ICAgKiBUbyBpdGVyYXRlIG92ZXIg dGhlIHN5bmNfcHRfaW5mb3MsIHVzZSB0aGUgc3luY19wdF9pbmZvLmxlbiBmaWVsZC4KPiAgICov Cj4gLSNkZWZpbmUgU1lOQ19JT0NfRkVOQ0VfSU5GTwlfSU9XUihTWU5DX0lPQ19NQUdJQywgMiwg c3RydWN0IHN5bmNfZmlsZV9pbmZvKQo+ICsjZGVmaW5lIFNZTkNfSU9DX0ZJTEVfSU5GTwlfSU9X UihTWU5DX0lPQ19NQUdJQywgNCwgc3RydWN0IHN5bmNfZmlsZV9pbmZvKQo+ICAKPiAgI2VuZGlm IC8qIF9VQVBJX0xJTlVYX1NZTkNfSCAqLwo+IC0tIAo+IDIuNS4wCj4gCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QK ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=