From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH 1/2] dma-buf: add reservation_context for deadlock handling Date: Tue, 25 Jun 2019 16:36:28 +0200 Message-ID: <9d64929c-0343-e6b0-a4fe-3af541abbd6a@gmail.com> References: <20190625135507.80548-1-christian.koenig@amd.com> <20190625141624.GU12905@phenom.ffwll.local> Reply-To: christian.koenig@amd.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr1-x442.google.com (mail-wr1-x442.google.com [IPv6:2a00:1450:4864:20::442]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7628D6E128 for ; Tue, 25 Jun 2019 14:36:33 +0000 (UTC) Received: by mail-wr1-x442.google.com with SMTP id p11so18157988wre.7 for ; Tue, 25 Jun 2019 07:36:33 -0700 (PDT) In-Reply-To: <20190625141624.GU12905@phenom.ffwll.local> 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: peterz@infradead.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org QW0gMjUuMDYuMTkgdW0gMTY6MTYgc2NocmllYiBEYW5pZWwgVmV0dGVyOgo+IE9uIFR1ZSwgSnVu IDI1LCAyMDE5IGF0IDAzOjU1OjA2UE0gKzAyMDAsIENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6Cj4+ IFRoZSB3d19tdXRleCBmcmFtZXdvcmsgYWxsb3dzIGZvciBkZXRlY3RpbmcgZGVhZGxvY2tzIHdo ZW4gbXVsdGlwbGUKPj4gdGhyZWFkcyB0cnkgdG8gYWNxdWlyZSB0aGUgc2FtZSBzZXQgb2YgbG9j a3MgaW4gZGlmZmVyZW50IG9yZGVyLgo+Pgo+PiBUaGUgcHJvYmxlbSBpcyB0aGF0IGhhbmRsaW5n IHRob3NlIGRlYWRsb2NrcyB3YXMgdGhlIGJ1cmRlbiBvZiB0aGUgdXNlciBvZgo+PiB0aGUgd3df bXV0ZXggaW1wbGVtZW50YXRpb24gYW5kIGF0IGxlYXN0IHNvbWUgdXNlcnMgZGlkbid0IGdvdCB0 aGF0IHJpZ2h0Cj4+IG9uIHRoZSBmaXJzdCB0cnkuCj4+Cj4+IFNvIGludHJvZHVjZSBhIG5ldyBy ZXNlcnZhdGlvbl9jb250ZXh0IG9iamVjdCB3aGljaCBjYW4gYmUgdXNlZCB0bwo+PiBzaW1wbGlm eSB0aGUgZGVhZGxvY2sgaGFuZGxpbmcuIFRoaXMgaXMgZG9uZSBieSB0cmFja2luZyBhbGwgbG9j a2VkCj4+IHJlc2VydmF0aW9uIG9iamVjdHMgaW4gdGhlIGNvbnRleHQgYXMgd2VsbCBhcyB0aGUg bGFzdCBjb250ZW5kZWQKPj4gcmVzZXJ2YXRpb24gb2JqZWN0Lgo+Pgo+PiBXaGVuIGEgZGVhZGxv Y2sgb2NjdXJzZSB3ZSBub3cgdW5sb2NrIGFsbCBwcmV2aW91c2x5IGxvY2tlZCBvYmplY3QgYW5k Cj4+IGFjcXVpcmUgdGhlIGNvbnRlbmRlZCBsb2NrIGluIHRoZSBzbG93IHBhdGguIEFmdGVyIHRo aXMgaXMgZG9uZSAtRURFQURMSwo+PiBpcyBzdGlsbCByZXR1cm5lZCB0byBzaWduYWwgdGhhdCBh bGwgb3RoZXIgbG9ja3Mgbm93IG5lZWQgdG8gYmUKPj4gcmUtYWNxdWlyZWQgYWdhaW4uCj4+Cj4+ IFNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNv bT4KPj4gLS0tCj4+ICAgZHJpdmVycy9kbWEtYnVmL3Jlc2VydmF0aW9uLmMgfCA4MiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+PiAgIGluY2x1ZGUvbGludXgvcmVzZXJ2YXRp b24uaCAgIHwgMzggKysrKysrKysrKysrKysrKwo+PiAgIDIgZmlsZXMgY2hhbmdlZCwgMTIwIGlu c2VydGlvbnMoKykKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9yZXNlcnZhdGlv bi5jIGIvZHJpdmVycy9kbWEtYnVmL3Jlc2VydmF0aW9uLmMKPj4gaW5kZXggNGQzMmUyYzY3ODYy Li45ZTUzZTQyYjA1M2EgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZG1hLWJ1Zi9yZXNlcnZhdGlv bi5jCj4+ICsrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9yZXNlcnZhdGlvbi5jCj4+IEBAIC01NSw2ICs1 NSw4OCBAQCBFWFBPUlRfU1lNQk9MKHJlc2VydmF0aW9uX3NlcWNvdW50X2NsYXNzKTsKPj4gICBj b25zdCBjaGFyIHJlc2VydmF0aW9uX3NlcWNvdW50X3N0cmluZ1tdID0gInJlc2VydmF0aW9uX3Nl cWNvdW50IjsKPj4gICBFWFBPUlRfU1lNQk9MKHJlc2VydmF0aW9uX3NlcWNvdW50X3N0cmluZyk7 Cj4+ICAgCj4+ICsvKioKPj4gKyAqIHJlc2VydmF0aW9uX2NvbnRleHRfaW5pdCAtIGluaXRpYWxp emUgYSByZXNlcnZhdGlvbiBjb250ZXh0Cj4+ICsgKiBAY3R4OiB0aGUgY29udGV4dCB0byBpbml0 aWFsaXplCj4+ICsgKgo+PiArICogU3RhcnQgdXNpbmcgdGhpcyByZXNlcnZhdGlvbiBjb250ZXh0 IHRvIGxvY2sgcmVzZXJ2YXRpb24gb2JqZWN0cyBmb3IgdXBkYXRlLgo+IEJ1bmNoIG9mIGh5cGVy bGlua3MgaGVyZSBmb3IgbW9yZSBjb25zaXN0ZW50IHN0b3J5IHdvdWxkIGJlIHJlYWxseSBuaWNl IGluCj4gdGhlIGtlcm5lbGRvYy4KPgo+PiArICovCj4+ICt2b2lkIHJlc2VydmF0aW9uX2NvbnRl eHRfaW5pdChzdHJ1Y3QgcmVzZXJ2YXRpb25fY29udGV4dCAqY3R4KQo+PiArewo+PiArCXd3X2Fj cXVpcmVfaW5pdCgmY3R4LT5jdHgsICZyZXNlcnZhdGlvbl93d19jbGFzcyk7Cj4+ICsJaW5pdF9s bGlzdF9oZWFkKCZjdHgtPmxvY2tlZCk7Cj4+ICsJY3R4LT5jb250ZW5kZWQgPSBOVUxMOwo+PiAr fQo+PiArRVhQT1JUX1NZTUJPTChyZXNlcnZhdGlvbl9jb250ZXh0X2luaXQpOwo+PiArCj4+ICsv KioKPj4gKyAqIHJlc2VydmF0aW9uX2NvbnRleHRfdW5sb2NrX2FsbCAtIHVubG9jayBhbGwgcmVz ZXJ2YXRpb24gb2JqZWN0cwo+PiArICogQGN0eDogdGhlIGNvbnRleHQgd2hpY2ggaG9sZHMgdGhl IHJlc2VydmF0aW9uIG9iamVjdHMKPj4gKyAqCj4+ICsgKiBVbmxvY2tzIGFsbCByZXNlcnZhdGlv biBvYmplY3RzIGxvY2tlZCB3aXRoIHRoaXMgY29udGV4dC4KPj4gKyAqLwo+PiArdm9pZCByZXNl cnZhdGlvbl9jb250ZXh0X3VubG9ja19hbGwoc3RydWN0IHJlc2VydmF0aW9uX2NvbnRleHQgKmN0 eCkKPiBJJ2QganVzdCBjYWxsIHRoaXMgcmVzZXJ2YXRpb25fdW5sb2NrX2FsbCBvciBzby4gRmVl bCBmcmVlIHRvIGlnbm9yZSB0aGUKPiBiaWtlc2hlZC4KPgo+PiArewo+PiArCXN0cnVjdCByZXNl cnZhdGlvbl9vYmplY3QgKm9iaiwgKm5leHQ7Cj4+ICsKPj4gKwlpZiAoY3R4LT5jb250ZW5kZWQp Cj4+ICsJCXd3X211dGV4X3VubG9jaygmY3R4LT5jb250ZW5kZWQtPmxvY2spOwo+PiArCWN0eC0+ Y29udGVuZGVkID0gTlVMTDsKPj4gKwo+PiArCWxsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUob2Jq LCBuZXh0LCBjdHgtPmxvY2tlZC5maXJzdCwgbG9ja2VkKQo+PiArCQl3d19tdXRleF91bmxvY2so Jm9iai0+bG9jayk7Cj4+ICsJaW5pdF9sbGlzdF9oZWFkKCZjdHgtPmxvY2tlZCk7Cj4+ICt9Cj4+ ICtFWFBPUlRfU1lNQk9MKHJlc2VydmF0aW9uX2NvbnRleHRfdW5sb2NrX2FsbCk7Cj4+ICsKPj4g Ky8qKgo+PiArICogcmVzZXJ2YXRpb25fY29udGV4dF9sb2NrIC0gbG9jayBhIHJlc2VydmF0aW9u IG9iamVjdCB3aXRoIGRlYWRsb2NrIGhhbmRsaW5nCj4+ICsgKiBAY3R4OiB0aGUgY29udGV4dCB3 aGljaCBzaG91bGQgYmUgdXNlZCB0byBsb2NrIHRoZSBvYmplY3QKPj4gKyAqIEBvYmo6IHRoZSBv YmplY3Qgd2hpY2ggbmVlZHMgdG8gYmUgbG9ja2VkCj4+ICsgKiBAaW50ZXJydXB0aWJsZTogaWYg d2Ugc2hvdWxkIHdhaXQgaW50ZXJydXB0aWJsZSBvciBub3QKPj4gKyAqCj4+ICsgKiBVc2UgQGN0 eCB0byBsb2NrIHRoZSByZXNlcnZhdGlvbiBvYmplY3QuIElmIGEgZGVhZGxvY2sgaXMgZGV0ZWN0 ZWQgd2UgYmFja29mZgo+PiArICogYnkgcmVsZWFzaW5nIGFsbCBsb2NrZWQgb2JqZWN0cyBhbmQg dXNlIHRoZSBzbG93IHBhdGggdG8gbG9jayB0aGUgcmVzZXJ2YXRpb24KPj4gKyAqIG9iamVjdC4g QWZ0ZXIgc3VjY2Vzc2Z1bGx5IGxvY2tpbmcgaW4gdGhlIHNsb3cgcGF0aCAtRURFQURMSyBpcyBy ZXR1cm5lZCB0bwo+PiArICogc2lnbmFsIHRoYXQgYWxsIG90aGVyIGxvY2tzIG11c3QgYmUgcmUt dGFrZW4gYXMgd2VsbC4KPj4gKyAqLwo+PiAraW50IHJlc2VydmF0aW9uX2NvbnRleHRfbG9jayhz dHJ1Y3QgcmVzZXJ2YXRpb25fY29udGV4dCAqY3R4LAo+PiArCQkJICAgICBzdHJ1Y3QgcmVzZXJ2 YXRpb25fb2JqZWN0ICpvYmosCj4+ICsJCQkgICAgIGJvb2wgaW50ZXJydXB0aWJsZSkKPiByZXNl cnZhdGlvbl9sb2NrX2N0eCBpcyB3aGF0IHdlIGdlbmVyYWxseSB1c2VkIGluIGRybV9tb2Rlc2V0 X2xvY2ssIEkgbGlrZQo+IHRoYXQgYmlrZXNoZWQgYSBiaXQgYmV0dGVyLgoKQWN0dWFsbHkgZG9l c24ndCBzb3VuZCB0aGF0IGdvb2QgaWYgeW91IGFzayBtZS4KCklzIHJlc2VydmF0aW9uX2xvY2tf Y3R4IHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiBvciB0aGUgbmFtZSBvZiB0aGUgCnN0cnVjdHVy ZT8KCj4gQWxzbyB0byBzdGF5IGluIHN0eWxlIEkgdGhpbmsgdGhlIGV4cGxpY2l0IHNldCBvZiBm dW5jdGlvbnMgaXMgbXVjaAo+IGJldHRlciwgaS5lLiByZXNlcnZhdGlvbl9sb2NrX2N0eCwgcmVz ZXJ2YXRpb25fbG9ja19pbnRlcnJ1cHRpYmxlX2N0eCBhbmQKPiByZXNlcnZhdGlvbl90cnlsb2Nr X2N0eCAobGF0ZXIgdXNlZnVsIGZvciBscnUgYXBwbGljYXRpb25zIHdoZXJlIHlvdSBzdGlsbAo+ IHdhbnQgdG8gZHJvcCB0aGUgZW50aXJlIHBpbGUgd2l0aCByZXNydmF0aW9uX3VubG9ja19jdHgp LgoKVGhlIHByb2JsZW0gaXMgdGhhdCBJIHRoZW4gd2lsbCBkdXBsaWNhdGUgYSBsb3Qgb2YgbG9n aWMgYmV0d2VlbiAKcmVzZXJ2YXRpb25fbG9ja19jdHggYW5kIHJlc2VydmF0aW9uX2xvY2tfaW50 ZXJydXB0aWJsZV9jdHguCgo+IFRoYXQncyB3aGF0IGFsbCB0aGUgb3RoZXIgbG9ja2luZyB0aGlu Z3MgZG8uIHR0bV9ib19yZXNlcnZlIGhhcyBhIGxvbmcKPiBsaXN0IG9mIHBhcmFtZXRlcnMsIGFu ZCBJIGNhbiBuZXZlciByZW1lbWJlciB3aGljaCBpcyB3aGljaC4gSSBkb24ndCB0aGluawo+IHRo YXQncyBhIGdyZWF0IHN0eWxlLgoKWWVhaCwgSSBkb24ndCByZWFsbHkgbGlrZSB0aGF0IGVpdGhl ci4gSXQgaXMgb25lIG9mIHRoZSByZWFzb25zIHdoeSBJIAp3YW50IHRvIGdldCByaWQgb2YgaXQu CgpCdXQgZHVwbGljYXRpbmcgaW1wbGVtZW50YXRpb25zIGlzIG5vdCBhIGdvb2QgaWRlYSBlaXRo ZXIuIFdlIGNvdWxkIGdvIApkb3duIHRoZSB3YWl0X2V2ZW50Xyogd2FpdCBvZiBkb2luZyB0aGlu cyBhbmQgaW1wbGVtZW50IGV2ZXJ5dGhpbmcgaW4gCm1hY3JvcywgYnV0IEkgZG9uJ3QgcmVhbGx5 IGxpa2UgdGhhdCBlaXRoZXIuCgo+IEFub3RoZXIgb3B0aW9uIGZvciBpbnRlcnJ1cHRpYmxlIHZz LiBub3QgaXMgdG8gc3RvcmUgdGhhdCBpbiB0aGUKPiByZXNlcnZhdGlvbl9jb250ZXh0IGFuZCBk dHJ0LiBTaW5jZSBnZW5lcmFsbHkgaW50ZXJydXB0aWJsZSBvciBub3QgaXMgYQo+IHByb3Blcnkg b2YgdGhlIHRvcC1sZXZlbCBoYW5kbGVyIC0geW91IG5lZWQgYmUgYWJsZSB0byBwYXNzIEVERUFE TENLIGFsbAo+IHRoZSB3YXkgdXAgYW55d2F5Lgo+Cj4+ICt7Cj4+ICsJaW50IHJldCA9IDA7Cj4+ ICsKPj4gKwlpZiAodW5saWtlbHkoY3R4LT5jb250ZW5kZWQgPT0gb2JqKSkKPj4gKwkJY3R4LT5j b250ZW5kZWQgPSBOVUxMOwo+IEltbyBjbGVhbmVyIHRvIGhhbmRsZSB0aGF0IHdpdGggRUFMUkVB RFkgZmlsdGVyaW5nIGZyb20gdGhlIHd3X211dGV4X2xvY2suCgpIb3cgZG8geW91IHdhbnQgdG8g ZG8gdGhpcz8gRUFMUkVBRFkgaGFuZGxpbmcgaXMgZGlmZmVyZW50IGZvciBkaWZmZXJlbnQgCnVz ZXJzIG9mIHRoaXMgQVBJLgoKQ2hyaXN0aWFuLgoKPgo+PiArCWVsc2UgaWYgKGludGVycnVwdGli bGUpCj4+ICsJCXJldCA9IHd3X211dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmb2JqLT5sb2NrLCAm Y3R4LT5jdHgpOwo+PiArCWVsc2UKPj4gKwkJcmV0ID0gd3dfbXV0ZXhfbG9jaygmb2JqLT5sb2Nr LCAmY3R4LT5jdHgpOwo+PiArCj4+ICsJaWYgKGxpa2VseSghcmV0KSkgewo+PiArCQkvKiBkb24n dCB1c2UgbGxpc3RfYWRkIGhlcmUsIHdlIGhhdmUgc2VwYXJhdGUgbG9ja2luZyAqLwo+PiArCQlv YmotPmxvY2tlZC5uZXh0ID0gY3R4LT5sb2NrZWQuZmlyc3Q7Cj4+ICsJCWN0eC0+bG9ja2VkLmZp cnN0ID0gJm9iai0+bG9ja2VkOwo+PiArCQlyZXR1cm4gMDsKPj4gKwl9Cj4+ICsJaWYgKHVubGlr ZWx5KHJldCAhPSAtRURFQURMSykpCj4+ICsJCXJldHVybiByZXQ7Cj4+ICsKPj4gKwlyZXNlcnZh dGlvbl9jb250ZXh0X3VubG9ja19hbGwoY3R4KTsKPj4gKwo+PiArCWlmIChpbnRlcnJ1cHRpYmxl KSB7Cj4+ICsJCXJldCA9IHd3X211dGV4X2xvY2tfc2xvd19pbnRlcnJ1cHRpYmxlKCZvYmotPmxv Y2ssICZjdHgtPmN0eCk7Cj4+ICsJCWlmICh1bmxpa2VseShyZXQpKQo+PiArCQkJcmV0dXJuIHJl dDsKPj4gKwl9IGVsc2Ugewo+PiArCQl3d19tdXRleF9sb2NrX3Nsb3coJm9iai0+bG9jaywgJmN0 eC0+Y3R4KTsKPj4gKwl9Cj4+ICsKPj4gKwljdHgtPmNvbnRlbmRlZCA9IG9iajsKPj4gKwlyZXR1 cm4gLUVERUFETEs7Cj4+ICt9Cj4+ICtFWFBPUlRfU1lNQk9MKHJlc2VydmF0aW9uX2NvbnRleHRf bG9jayk7Cj4+ICsKPj4gICAvKioKPj4gICAgKiByZXNlcnZhdGlvbl9vYmplY3RfcmVzZXJ2ZV9z aGFyZWQgLSBSZXNlcnZlIHNwYWNlIHRvIGFkZCBzaGFyZWQgZmVuY2VzIHRvCj4+ICAgICogYSBy ZXNlcnZhdGlvbl9vYmplY3QuCj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3Jlc2VydmF0 aW9uLmggYi9pbmNsdWRlL2xpbnV4L3Jlc2VydmF0aW9uLmgKPj4gaW5kZXggZWU3NTA3NjVjYzk0 Li5hOGE1MmU1ZDNlODAgMTAwNjQ0Cj4+IC0tLSBhL2luY2x1ZGUvbGludXgvcmVzZXJ2YXRpb24u aAo+PiArKysgYi9pbmNsdWRlL2xpbnV4L3Jlc2VydmF0aW9uLmgKPj4gQEAgLTQ0LDExICs0NCw0 OCBAQAo+PiAgICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4+ICAgI2luY2x1ZGUgPGxpbnV4L3Nl cWxvY2suaD4KPj4gICAjaW5jbHVkZSA8bGludXgvcmN1cGRhdGUuaD4KPj4gKyNpbmNsdWRlIDxs aW51eC9sbGlzdC5oPgo+PiAgIAo+PiAgIGV4dGVybiBzdHJ1Y3Qgd3dfY2xhc3MgcmVzZXJ2YXRp b25fd3dfY2xhc3M7Cj4+ICAgZXh0ZXJuIHN0cnVjdCBsb2NrX2NsYXNzX2tleSByZXNlcnZhdGlv bl9zZXFjb3VudF9jbGFzczsKPj4gICBleHRlcm4gY29uc3QgY2hhciByZXNlcnZhdGlvbl9zZXFj b3VudF9zdHJpbmdbXTsKPj4gICAKPj4gKy8qKgo+PiArICogc3RydWN0IHJlc2VydmF0aW9uX2Nv bnRleHQgLSBjb250ZXh0IHRvIGxvY2sgcmVzZXJ2YXRpb24gb2JqZWN0cwo+PiArICogQGN0eDog d3dfYWNxdWlyZV9jdHggdXNlZCBmb3IgZGVhZGxvY2sgZGV0ZWN0aW9uCj4+ICsgKiBAbG9ja2Vk OiBsaXN0IG9mIHJlc2VydmF0aW9uIG9iamVjdHMgbG9ja2VkIGluIHRoaXMgY29udGV4dAo+PiAr ICogQGNvbnRlbmRlZDogY29udGVuZGVkIHJlc2VydmF0aW9uIG9iamVjdAo+PiArICovCj4+ICtz dHJ1Y3QgcmVzZXJ2YXRpb25fY29udGV4dCB7Cj4+ICsJc3RydWN0IHd3X2FjcXVpcmVfY3R4IGN0 eDsKPj4gKwlzdHJ1Y3QgbGxpc3RfaGVhZCBsb2NrZWQ7Cj4+ICsJc3RydWN0IHJlc2VydmF0aW9u X29iamVjdCAqY29udGVuZGVkOwo+PiArfTsKPj4gKwo+PiArLyoqCj4+ICsgKiByZXNlcnZhdGlv bl9jb250ZXh0X2RvbmUgLSB3cmFwcGVyIGZvciB3d19hY3F1aXJlX2RvbmUKPj4gKyAqIEBjdHg6 IHRoZSByZXNlcnZhdGlvbiBjb250ZXh0IHdoaWNoIGlzIGRvbmUgd2l0aCBsb2NraW5nCj4+ICsg Ki8KPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCByZXNlcnZhdGlvbl9jb250ZXh0X2RvbmUoc3RydWN0 IHJlc2VydmF0aW9uX2NvbnRleHQgKmN0eCkKPj4gK3sKPj4gKwl3d19hY3F1aXJlX2RvbmUoJmN0 eC0+Y3R4KTsKPj4gK30KPj4gKwo+PiArLyoqCj4+ICsgKiByZXNlcnZhdGlvbl9jb250ZXh0X2Zp bmkgLSB3cmFwcGVyIGZvciB3d19hY3F1aXJlX2ZpbmkKPj4gKyAqIEBjdHg6IHRoZSByZXNlcnZh dGlvbiBjb250ZXh0IHdoaWNoIGlzIGZpbmlzaGVkCj4+ICsgKi8KPj4gK3N0YXRpYyBpbmxpbmUg dm9pZCByZXNlcnZhdGlvbl9jb250ZXh0X2Zpbmkoc3RydWN0IHJlc2VydmF0aW9uX2NvbnRleHQg KmN0eCkKPj4gK3sKPj4gKwl3d19hY3F1aXJlX2ZpbmkoJmN0eC0+Y3R4KTsKPj4gK30KPj4gKwo+ PiArdm9pZCByZXNlcnZhdGlvbl9jb250ZXh0X2luaXQoc3RydWN0IHJlc2VydmF0aW9uX2NvbnRl eHQgKmN0eCk7Cj4+ICt2b2lkIHJlc2VydmF0aW9uX2NvbnRleHRfdW5sb2NrX2FsbChzdHJ1Y3Qg cmVzZXJ2YXRpb25fY29udGV4dCAqY3R4KTsKPj4gK2ludCByZXNlcnZhdGlvbl9jb250ZXh0X2xv Y2soc3RydWN0IHJlc2VydmF0aW9uX2NvbnRleHQgKmN0eCwKPj4gKwkJCSAgICAgc3RydWN0IHJl c2VydmF0aW9uX29iamVjdCAqb2JqLAo+PiArCQkJICAgICBib29sIGludGVycnVwdGlibGUpOwo+ IE5lZWRzIGEgX19tdXN0X2NoZWNrLgo+Cj4+ICsKPj4gICAvKioKPj4gICAgKiBzdHJ1Y3QgcmVz ZXJ2YXRpb25fb2JqZWN0X2xpc3QgLSBhIGxpc3Qgb2Ygc2hhcmVkIGZlbmNlcwo+PiAgICAqIEBy Y3U6IGZvciBpbnRlcm5hbCB1c2UKPj4gQEAgLTcxLDYgKzEwOCw3IEBAIHN0cnVjdCByZXNlcnZh dGlvbl9vYmplY3RfbGlzdCB7Cj4+ICAgICovCj4+ICAgc3RydWN0IHJlc2VydmF0aW9uX29iamVj dCB7Cj4+ICAgCXN0cnVjdCB3d19tdXRleCBsb2NrOwo+PiArCXN0cnVjdCBsbGlzdF9ub2RlIGxv Y2tlZDsKPj4gICAJc2VxY291bnRfdCBzZXE7Cj4+ICAgCj4+ICAgCXN0cnVjdCBkbWFfZmVuY2Ug X19yY3UgKmZlbmNlX2V4Y2w7Cj4gQXNpZGUgZnJvbSB0aGUgbml0cyZiaWtlc2hlZHMsIEkgbGlr ZS4KPiAtRGFuaWVsCj4KPj4gLS0gCj4+IDIuMTcuMQo+PgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2 ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vZHJpLWRldmVs