From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 1/2] dma-buf: add reservation_context for deadlock handling Date: Tue, 25 Jun 2019 16:41:21 +0200 Message-ID: <20190625144121.GY12905@phenom.ffwll.local> References: <20190625135507.80548-1-christian.koenig@amd.com> <20190625141624.GU12905@phenom.ffwll.local> <9d64929c-0343-e6b0-a4fe-3af541abbd6a@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x543.google.com (mail-ed1-x543.google.com [IPv6:2a00:1450:4864:20::543]) by gabe.freedesktop.org (Postfix) with ESMTPS id 252F96E12F for ; Tue, 25 Jun 2019 14:41:25 +0000 (UTC) Received: by mail-ed1-x543.google.com with SMTP id m10so27526320edv.6 for ; Tue, 25 Jun 2019 07:41:25 -0700 (PDT) Content-Disposition: inline In-Reply-To: <9d64929c-0343-e6b0-a4fe-3af541abbd6a@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: christian.koenig@amd.com Cc: peterz@infradead.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBKdW4gMjUsIDIwMTkgYXQgMDQ6MzY6MjhQTSArMDIwMCwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToKPiBBbSAyNS4wNi4xOSB1bSAxNjoxNiBzY2hyaWViIERhbmllbCBWZXR0ZXI6Cj4g PiBPbiBUdWUsIEp1biAyNSwgMjAxOSBhdCAwMzo1NTowNlBNICswMjAwLCBDaHJpc3RpYW4gS8O2 bmlnIHdyb3RlOgo+ID4gPiBUaGUgd3dfbXV0ZXggZnJhbWV3b3JrIGFsbG93cyBmb3IgZGV0ZWN0 aW5nIGRlYWRsb2NrcyB3aGVuIG11bHRpcGxlCj4gPiA+IHRocmVhZHMgdHJ5IHRvIGFjcXVpcmUg dGhlIHNhbWUgc2V0IG9mIGxvY2tzIGluIGRpZmZlcmVudCBvcmRlci4KPiA+ID4gCj4gPiA+IFRo ZSBwcm9ibGVtIGlzIHRoYXQgaGFuZGxpbmcgdGhvc2UgZGVhZGxvY2tzIHdhcyB0aGUgYnVyZGVu IG9mIHRoZSB1c2VyIG9mCj4gPiA+IHRoZSB3d19tdXRleCBpbXBsZW1lbnRhdGlvbiBhbmQgYXQg bGVhc3Qgc29tZSB1c2VycyBkaWRuJ3QgZ290IHRoYXQgcmlnaHQKPiA+ID4gb24gdGhlIGZpcnN0 IHRyeS4KPiA+ID4gCj4gPiA+IFNvIGludHJvZHVjZSBhIG5ldyByZXNlcnZhdGlvbl9jb250ZXh0 IG9iamVjdCB3aGljaCBjYW4gYmUgdXNlZCB0bwo+ID4gPiBzaW1wbGlmeSB0aGUgZGVhZGxvY2sg aGFuZGxpbmcuIFRoaXMgaXMgZG9uZSBieSB0cmFja2luZyBhbGwgbG9ja2VkCj4gPiA+IHJlc2Vy dmF0aW9uIG9iamVjdHMgaW4gdGhlIGNvbnRleHQgYXMgd2VsbCBhcyB0aGUgbGFzdCBjb250ZW5k ZWQKPiA+ID4gcmVzZXJ2YXRpb24gb2JqZWN0Lgo+ID4gPiAKPiA+ID4gV2hlbiBhIGRlYWRsb2Nr IG9jY3Vyc2Ugd2Ugbm93IHVubG9jayBhbGwgcHJldmlvdXNseSBsb2NrZWQgb2JqZWN0IGFuZAo+ ID4gPiBhY3F1aXJlIHRoZSBjb250ZW5kZWQgbG9jayBpbiB0aGUgc2xvdyBwYXRoLiBBZnRlciB0 aGlzIGlzIGRvbmUgLUVERUFETEsKPiA+ID4gaXMgc3RpbGwgcmV0dXJuZWQgdG8gc2lnbmFsIHRo YXQgYWxsIG90aGVyIGxvY2tzIG5vdyBuZWVkIHRvIGJlCj4gPiA+IHJlLWFjcXVpcmVkIGFnYWlu Lgo+ID4gPiAKPiA+ID4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFu LmtvZW5pZ0BhbWQuY29tPgo+ID4gPiAtLS0KPiA+ID4gICBkcml2ZXJzL2RtYS1idWYvcmVzZXJ2 YXRpb24uYyB8IDgyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiA+ICAg aW5jbHVkZS9saW51eC9yZXNlcnZhdGlvbi5oICAgfCAzOCArKysrKysrKysrKysrKysrCj4gPiA+ ICAgMiBmaWxlcyBjaGFuZ2VkLCAxMjAgaW5zZXJ0aW9ucygrKQo+ID4gPiAKPiA+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9yZXNlcnZhdGlvbi5jIGIvZHJpdmVycy9kbWEtYnVmL3Jl c2VydmF0aW9uLmMKPiA+ID4gaW5kZXggNGQzMmUyYzY3ODYyLi45ZTUzZTQyYjA1M2EgMTAwNjQ0 Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZG1hLWJ1Zi9yZXNlcnZhdGlvbi5jCj4gPiA+ICsrKyBiL2Ry aXZlcnMvZG1hLWJ1Zi9yZXNlcnZhdGlvbi5jCj4gPiA+IEBAIC01NSw2ICs1NSw4OCBAQCBFWFBP UlRfU1lNQk9MKHJlc2VydmF0aW9uX3NlcWNvdW50X2NsYXNzKTsKPiA+ID4gICBjb25zdCBjaGFy IHJlc2VydmF0aW9uX3NlcWNvdW50X3N0cmluZ1tdID0gInJlc2VydmF0aW9uX3NlcWNvdW50IjsK PiA+ID4gICBFWFBPUlRfU1lNQk9MKHJlc2VydmF0aW9uX3NlcWNvdW50X3N0cmluZyk7Cj4gPiA+ ICsvKioKPiA+ID4gKyAqIHJlc2VydmF0aW9uX2NvbnRleHRfaW5pdCAtIGluaXRpYWxpemUgYSBy ZXNlcnZhdGlvbiBjb250ZXh0Cj4gPiA+ICsgKiBAY3R4OiB0aGUgY29udGV4dCB0byBpbml0aWFs aXplCj4gPiA+ICsgKgo+ID4gPiArICogU3RhcnQgdXNpbmcgdGhpcyByZXNlcnZhdGlvbiBjb250 ZXh0IHRvIGxvY2sgcmVzZXJ2YXRpb24gb2JqZWN0cyBmb3IgdXBkYXRlLgo+ID4gQnVuY2ggb2Yg aHlwZXJsaW5rcyBoZXJlIGZvciBtb3JlIGNvbnNpc3RlbnQgc3Rvcnkgd291bGQgYmUgcmVhbGx5 IG5pY2UgaW4KPiA+IHRoZSBrZXJuZWxkb2MuCj4gPiAKPiA+ID4gKyAqLwo+ID4gPiArdm9pZCBy ZXNlcnZhdGlvbl9jb250ZXh0X2luaXQoc3RydWN0IHJlc2VydmF0aW9uX2NvbnRleHQgKmN0eCkK PiA+ID4gK3sKPiA+ID4gKwl3d19hY3F1aXJlX2luaXQoJmN0eC0+Y3R4LCAmcmVzZXJ2YXRpb25f d3dfY2xhc3MpOwo+ID4gPiArCWluaXRfbGxpc3RfaGVhZCgmY3R4LT5sb2NrZWQpOwo+ID4gPiAr CWN0eC0+Y29udGVuZGVkID0gTlVMTDsKPiA+ID4gK30KPiA+ID4gK0VYUE9SVF9TWU1CT0wocmVz ZXJ2YXRpb25fY29udGV4dF9pbml0KTsKPiA+ID4gKwo+ID4gPiArLyoqCj4gPiA+ICsgKiByZXNl cnZhdGlvbl9jb250ZXh0X3VubG9ja19hbGwgLSB1bmxvY2sgYWxsIHJlc2VydmF0aW9uIG9iamVj dHMKPiA+ID4gKyAqIEBjdHg6IHRoZSBjb250ZXh0IHdoaWNoIGhvbGRzIHRoZSByZXNlcnZhdGlv biBvYmplY3RzCj4gPiA+ICsgKgo+ID4gPiArICogVW5sb2NrcyBhbGwgcmVzZXJ2YXRpb24gb2Jq ZWN0cyBsb2NrZWQgd2l0aCB0aGlzIGNvbnRleHQuCj4gPiA+ICsgKi8KPiA+ID4gK3ZvaWQgcmVz ZXJ2YXRpb25fY29udGV4dF91bmxvY2tfYWxsKHN0cnVjdCByZXNlcnZhdGlvbl9jb250ZXh0ICpj dHgpCj4gPiBJJ2QganVzdCBjYWxsIHRoaXMgcmVzZXJ2YXRpb25fdW5sb2NrX2FsbCBvciBzby4g RmVlbCBmcmVlIHRvIGlnbm9yZSB0aGUKPiA+IGJpa2VzaGVkLgo+ID4gCj4gPiA+ICt7Cj4gPiA+ ICsJc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqb2JqLCAqbmV4dDsKPiA+ID4gKwo+ID4gPiAr CWlmIChjdHgtPmNvbnRlbmRlZCkKPiA+ID4gKwkJd3dfbXV0ZXhfdW5sb2NrKCZjdHgtPmNvbnRl bmRlZC0+bG9jayk7Cj4gPiA+ICsJY3R4LT5jb250ZW5kZWQgPSBOVUxMOwo+ID4gPiArCj4gPiA+ ICsJbGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShvYmosIG5leHQsIGN0eC0+bG9ja2VkLmZpcnN0 LCBsb2NrZWQpCj4gPiA+ICsJCXd3X211dGV4X3VubG9jaygmb2JqLT5sb2NrKTsKPiA+ID4gKwlp bml0X2xsaXN0X2hlYWQoJmN0eC0+bG9ja2VkKTsKPiA+ID4gK30KPiA+ID4gK0VYUE9SVF9TWU1C T0wocmVzZXJ2YXRpb25fY29udGV4dF91bmxvY2tfYWxsKTsKPiA+ID4gKwo+ID4gPiArLyoqCj4g PiA+ICsgKiByZXNlcnZhdGlvbl9jb250ZXh0X2xvY2sgLSBsb2NrIGEgcmVzZXJ2YXRpb24gb2Jq ZWN0IHdpdGggZGVhZGxvY2sgaGFuZGxpbmcKPiA+ID4gKyAqIEBjdHg6IHRoZSBjb250ZXh0IHdo aWNoIHNob3VsZCBiZSB1c2VkIHRvIGxvY2sgdGhlIG9iamVjdAo+ID4gPiArICogQG9iajogdGhl IG9iamVjdCB3aGljaCBuZWVkcyB0byBiZSBsb2NrZWQKPiA+ID4gKyAqIEBpbnRlcnJ1cHRpYmxl OiBpZiB3ZSBzaG91bGQgd2FpdCBpbnRlcnJ1cHRpYmxlIG9yIG5vdAo+ID4gPiArICoKPiA+ID4g KyAqIFVzZSBAY3R4IHRvIGxvY2sgdGhlIHJlc2VydmF0aW9uIG9iamVjdC4gSWYgYSBkZWFkbG9j ayBpcyBkZXRlY3RlZCB3ZSBiYWNrb2ZmCj4gPiA+ICsgKiBieSByZWxlYXNpbmcgYWxsIGxvY2tl ZCBvYmplY3RzIGFuZCB1c2UgdGhlIHNsb3cgcGF0aCB0byBsb2NrIHRoZSByZXNlcnZhdGlvbgo+ ID4gPiArICogb2JqZWN0LiBBZnRlciBzdWNjZXNzZnVsbHkgbG9ja2luZyBpbiB0aGUgc2xvdyBw YXRoIC1FREVBRExLIGlzIHJldHVybmVkIHRvCj4gPiA+ICsgKiBzaWduYWwgdGhhdCBhbGwgb3Ro ZXIgbG9ja3MgbXVzdCBiZSByZS10YWtlbiBhcyB3ZWxsLgo+ID4gPiArICovCj4gPiA+ICtpbnQg cmVzZXJ2YXRpb25fY29udGV4dF9sb2NrKHN0cnVjdCByZXNlcnZhdGlvbl9jb250ZXh0ICpjdHgs Cj4gPiA+ICsJCQkgICAgIHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKm9iaiwKPiA+ID4gKwkJ CSAgICAgYm9vbCBpbnRlcnJ1cHRpYmxlKQo+ID4gcmVzZXJ2YXRpb25fbG9ja19jdHggaXMgd2hh dCB3ZSBnZW5lcmFsbHkgdXNlZCBpbiBkcm1fbW9kZXNldF9sb2NrLCBJIGxpa2UKPiA+IHRoYXQg YmlrZXNoZWQgYSBiaXQgYmV0dGVyLgo+IAo+IEFjdHVhbGx5IGRvZXNuJ3Qgc291bmQgdGhhdCBn b29kIGlmIHlvdSBhc2sgbWUuCj4gCj4gSXMgcmVzZXJ2YXRpb25fbG9ja19jdHggdGhlIG5hbWUg b2YgdGhlIGZ1bmN0aW9uIG9yIHRoZSBuYW1lIG9mIHRoZQo+IHN0cnVjdHVyZT8KCkFoIHdlIHB1 dCB0aGUgY3R4IGFyZ3VtZW50IGxhc3QgZm9yIGV2ZXJ5dGhpbmcsIGkuZS4gb3BlcmF0ZXMgb24g dGhlCnJlc2VydmF0aW9uX29iamVjdCBhcyB0aGUgbWFpbiB0aGluZywgYnV0IHdpdGggdGhlIGNv bnRleHQtYXdhcmUgdmFyaWFudC4KCj4gCj4gPiBBbHNvIHRvIHN0YXkgaW4gc3R5bGUgSSB0aGlu ayB0aGUgZXhwbGljaXQgc2V0IG9mIGZ1bmN0aW9ucyBpcyBtdWNoCj4gPiBiZXR0ZXIsIGkuZS4g cmVzZXJ2YXRpb25fbG9ja19jdHgsIHJlc2VydmF0aW9uX2xvY2tfaW50ZXJydXB0aWJsZV9jdHgg YW5kCj4gPiByZXNlcnZhdGlvbl90cnlsb2NrX2N0eCAobGF0ZXIgdXNlZnVsIGZvciBscnUgYXBw bGljYXRpb25zIHdoZXJlIHlvdSBzdGlsbAo+ID4gd2FudCB0byBkcm9wIHRoZSBlbnRpcmUgcGls ZSB3aXRoIHJlc3J2YXRpb25fdW5sb2NrX2N0eCkuCj4gCj4gVGhlIHByb2JsZW0gaXMgdGhhdCBJ IHRoZW4gd2lsbCBkdXBsaWNhdGUgYSBsb3Qgb2YgbG9naWMgYmV0d2Vlbgo+IHJlc2VydmF0aW9u X2xvY2tfY3R4IGFuZCByZXNlcnZhdGlvbl9sb2NrX2ludGVycnVwdGlibGVfY3R4LgoKWWVhaCBJ IGtub3csIGJ1dCB0aGF0IHNlZW1zIHRvIGJlIHRoZSBzdHlsZSBmb3IgbG9ja2luZyBmdW5jdGlv bnMuIEl0J3MKbWlsZGx5IHRlZGlvdXMgaW4gdGhlIHNoYXJlZCBjb2RlLCBidXQgSSBkbyB0aGlu ayBjbGVhbmVyIGFuZCBlYXNpZXIgdG8KcmVhZCBpbiB0aGUgYWN0dWFsIHVzZXJzLgoKPiA+IFRo YXQncyB3aGF0IGFsbCB0aGUgb3RoZXIgbG9ja2luZyB0aGluZ3MgZG8uIHR0bV9ib19yZXNlcnZl IGhhcyBhIGxvbmcKPiA+IGxpc3Qgb2YgcGFyYW1ldGVycywgYW5kIEkgY2FuIG5ldmVyIHJlbWVt YmVyIHdoaWNoIGlzIHdoaWNoLiBJIGRvbid0IHRoaW5rCj4gPiB0aGF0J3MgYSBncmVhdCBzdHls ZS4KPiAKPiBZZWFoLCBJIGRvbid0IHJlYWxseSBsaWtlIHRoYXQgZWl0aGVyLiBJdCBpcyBvbmUg b2YgdGhlIHJlYXNvbnMgd2h5IEkgd2FudAo+IHRvIGdldCByaWQgb2YgaXQuCj4gCj4gQnV0IGR1 cGxpY2F0aW5nIGltcGxlbWVudGF0aW9ucyBpcyBub3QgYSBnb29kIGlkZWEgZWl0aGVyLiBXZSBj b3VsZCBnbyBkb3duCj4gdGhlIHdhaXRfZXZlbnRfKiB3YWl0IG9mIGRvaW5nIHRoaW5zIGFuZCBp bXBsZW1lbnQgZXZlcnl0aGluZyBpbiBtYWNyb3MsIGJ1dAo+IEkgZG9uJ3QgcmVhbGx5IGxpa2Ug dGhhdCBlaXRoZXIuCj4gCj4gPiBBbm90aGVyIG9wdGlvbiBmb3IgaW50ZXJydXB0aWJsZSB2cy4g bm90IGlzIHRvIHN0b3JlIHRoYXQgaW4gdGhlCj4gPiByZXNlcnZhdGlvbl9jb250ZXh0IGFuZCBk dHJ0LiBTaW5jZSBnZW5lcmFsbHkgaW50ZXJydXB0aWJsZSBvciBub3QgaXMgYQo+ID4gcHJvcGVy eSBvZiB0aGUgdG9wLWxldmVsIGhhbmRsZXIgLSB5b3UgbmVlZCBiZSBhYmxlIHRvIHBhc3MgRURF QURMQ0sgYWxsCj4gPiB0aGUgd2F5IHVwIGFueXdheS4KCl5eIHRoaXMgaXMgd2hhdCBJIHJlY29t bWVuZCBpZiB5b3UgbGlrZSBuZWl0aGVyLgoKPiA+IAo+ID4gPiArewo+ID4gPiArCWludCByZXQg PSAwOwo+ID4gPiArCj4gPiA+ICsJaWYgKHVubGlrZWx5KGN0eC0+Y29udGVuZGVkID09IG9iaikp Cj4gPiA+ICsJCWN0eC0+Y29udGVuZGVkID0gTlVMTDsKPiA+IEltbyBjbGVhbmVyIHRvIGhhbmRs ZSB0aGF0IHdpdGggRUFMUkVBRFkgZmlsdGVyaW5nIGZyb20gdGhlIHd3X211dGV4X2xvY2suCj4g Cj4gSG93IGRvIHlvdSB3YW50IHRvIGRvIHRoaXM/IEVBTFJFQURZIGhhbmRsaW5nIGlzIGRpZmZl cmVudCBmb3IgZGlmZmVyZW50Cj4gdXNlcnMgb2YgdGhpcyBBUEkuCgpPaCByaWdodCB0aGUgYW1k Z3B1IENTIHNlbWFudGljcyBvZiB0aHJvd2luZyBhbiBlcnJubyBpZiBhIGJvIGlzIGxpc3RlZAp0 d2ljZS4gSW4gZHJtX21vZGVzZXRfbG9jayB3ZSBjb3VsZCByZWx5IG9uIHRoaXMgZnVsbHkuIE1h eWJlIGFkZCBhCmNvbW1lbnQgdGhhdCBleGNlcHQgZm9yIHRoZSBjb250ZW5kZWQgY2FzZSB3ZSBo YXZlIHRvIHBhc3MgRUFMUkVBRFkgYmFjawp0byBjYWxsZXJzIGZvciByZWFzb25zPyBZb3VyIGtl cm5lbGRvYyBpcyBsYWNraW5nIGEgIlJldHVybnM6IiBwYXJhZ3JhcGgKYW55d2F5LCBnb29kIHRv IGxpc3QgdGhlIG9wdGlvbnMgdGhlcmUuCgpDaGVlcnMsIERhbmllbAoKCj4gCj4gQ2hyaXN0aWFu Lgo+IAo+ID4gCj4gPiA+ICsJZWxzZSBpZiAoaW50ZXJydXB0aWJsZSkKPiA+ID4gKwkJcmV0ID0g d3dfbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZvYmotPmxvY2ssICZjdHgtPmN0eCk7Cj4gPiA+ ICsJZWxzZQo+ID4gPiArCQlyZXQgPSB3d19tdXRleF9sb2NrKCZvYmotPmxvY2ssICZjdHgtPmN0 eCk7Cj4gPiA+ICsKPiA+ID4gKwlpZiAobGlrZWx5KCFyZXQpKSB7Cj4gPiA+ICsJCS8qIGRvbid0 IHVzZSBsbGlzdF9hZGQgaGVyZSwgd2UgaGF2ZSBzZXBhcmF0ZSBsb2NraW5nICovCj4gPiA+ICsJ CW9iai0+bG9ja2VkLm5leHQgPSBjdHgtPmxvY2tlZC5maXJzdDsKPiA+ID4gKwkJY3R4LT5sb2Nr ZWQuZmlyc3QgPSAmb2JqLT5sb2NrZWQ7Cj4gPiA+ICsJCXJldHVybiAwOwo+ID4gPiArCX0KPiA+ ID4gKwlpZiAodW5saWtlbHkocmV0ICE9IC1FREVBRExLKSkKPiA+ID4gKwkJcmV0dXJuIHJldDsK PiA+ID4gKwo+ID4gPiArCXJlc2VydmF0aW9uX2NvbnRleHRfdW5sb2NrX2FsbChjdHgpOwo+ID4g PiArCj4gPiA+ICsJaWYgKGludGVycnVwdGlibGUpIHsKPiA+ID4gKwkJcmV0ID0gd3dfbXV0ZXhf bG9ja19zbG93X2ludGVycnVwdGlibGUoJm9iai0+bG9jaywgJmN0eC0+Y3R4KTsKPiA+ID4gKwkJ aWYgKHVubGlrZWx5KHJldCkpCj4gPiA+ICsJCQlyZXR1cm4gcmV0Owo+ID4gPiArCX0gZWxzZSB7 Cj4gPiA+ICsJCXd3X211dGV4X2xvY2tfc2xvdygmb2JqLT5sb2NrLCAmY3R4LT5jdHgpOwo+ID4g PiArCX0KPiA+ID4gKwo+ID4gPiArCWN0eC0+Y29udGVuZGVkID0gb2JqOwo+ID4gPiArCXJldHVy biAtRURFQURMSzsKPiA+ID4gK30KPiA+ID4gK0VYUE9SVF9TWU1CT0wocmVzZXJ2YXRpb25fY29u dGV4dF9sb2NrKTsKPiA+ID4gKwo+ID4gPiAgIC8qKgo+ID4gPiAgICAqIHJlc2VydmF0aW9uX29i amVjdF9yZXNlcnZlX3NoYXJlZCAtIFJlc2VydmUgc3BhY2UgdG8gYWRkIHNoYXJlZCBmZW5jZXMg dG8KPiA+ID4gICAgKiBhIHJlc2VydmF0aW9uX29iamVjdC4KPiA+ID4gZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvbGludXgvcmVzZXJ2YXRpb24uaCBiL2luY2x1ZGUvbGludXgvcmVzZXJ2YXRpb24uaAo+ ID4gPiBpbmRleCBlZTc1MDc2NWNjOTQuLmE4YTUyZTVkM2U4MCAxMDA2NDQKPiA+ID4gLS0tIGEv aW5jbHVkZS9saW51eC9yZXNlcnZhdGlvbi5oCj4gPiA+ICsrKyBiL2luY2x1ZGUvbGludXgvcmVz ZXJ2YXRpb24uaAo+ID4gPiBAQCAtNDQsMTEgKzQ0LDQ4IEBACj4gPiA+ICAgI2luY2x1ZGUgPGxp bnV4L3NsYWIuaD4KPiA+ID4gICAjaW5jbHVkZSA8bGludXgvc2VxbG9jay5oPgo+ID4gPiAgICNp bmNsdWRlIDxsaW51eC9yY3VwZGF0ZS5oPgo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2xsaXN0Lmg+ Cj4gPiA+ICAgZXh0ZXJuIHN0cnVjdCB3d19jbGFzcyByZXNlcnZhdGlvbl93d19jbGFzczsKPiA+ ID4gICBleHRlcm4gc3RydWN0IGxvY2tfY2xhc3Nfa2V5IHJlc2VydmF0aW9uX3NlcWNvdW50X2Ns YXNzOwo+ID4gPiAgIGV4dGVybiBjb25zdCBjaGFyIHJlc2VydmF0aW9uX3NlcWNvdW50X3N0cmlu Z1tdOwo+ID4gPiArLyoqCj4gPiA+ICsgKiBzdHJ1Y3QgcmVzZXJ2YXRpb25fY29udGV4dCAtIGNv bnRleHQgdG8gbG9jayByZXNlcnZhdGlvbiBvYmplY3RzCj4gPiA+ICsgKiBAY3R4OiB3d19hY3F1 aXJlX2N0eCB1c2VkIGZvciBkZWFkbG9jayBkZXRlY3Rpb24KPiA+ID4gKyAqIEBsb2NrZWQ6IGxp c3Qgb2YgcmVzZXJ2YXRpb24gb2JqZWN0cyBsb2NrZWQgaW4gdGhpcyBjb250ZXh0Cj4gPiA+ICsg KiBAY29udGVuZGVkOiBjb250ZW5kZWQgcmVzZXJ2YXRpb24gb2JqZWN0Cj4gPiA+ICsgKi8KPiA+ ID4gK3N0cnVjdCByZXNlcnZhdGlvbl9jb250ZXh0IHsKPiA+ID4gKwlzdHJ1Y3Qgd3dfYWNxdWly ZV9jdHggY3R4Owo+ID4gPiArCXN0cnVjdCBsbGlzdF9oZWFkIGxvY2tlZDsKPiA+ID4gKwlzdHJ1 Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpjb250ZW5kZWQ7Cj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ ICsvKioKPiA+ID4gKyAqIHJlc2VydmF0aW9uX2NvbnRleHRfZG9uZSAtIHdyYXBwZXIgZm9yIHd3 X2FjcXVpcmVfZG9uZQo+ID4gPiArICogQGN0eDogdGhlIHJlc2VydmF0aW9uIGNvbnRleHQgd2hp Y2ggaXMgZG9uZSB3aXRoIGxvY2tpbmcKPiA+ID4gKyAqLwo+ID4gPiArc3RhdGljIGlubGluZSB2 b2lkIHJlc2VydmF0aW9uX2NvbnRleHRfZG9uZShzdHJ1Y3QgcmVzZXJ2YXRpb25fY29udGV4dCAq Y3R4KQo+ID4gPiArewo+ID4gPiArCXd3X2FjcXVpcmVfZG9uZSgmY3R4LT5jdHgpOwo+ID4gPiAr fQo+ID4gPiArCj4gPiA+ICsvKioKPiA+ID4gKyAqIHJlc2VydmF0aW9uX2NvbnRleHRfZmluaSAt IHdyYXBwZXIgZm9yIHd3X2FjcXVpcmVfZmluaQo+ID4gPiArICogQGN0eDogdGhlIHJlc2VydmF0 aW9uIGNvbnRleHQgd2hpY2ggaXMgZmluaXNoZWQKPiA+ID4gKyAqLwo+ID4gPiArc3RhdGljIGlu bGluZSB2b2lkIHJlc2VydmF0aW9uX2NvbnRleHRfZmluaShzdHJ1Y3QgcmVzZXJ2YXRpb25fY29u dGV4dCAqY3R4KQo+ID4gPiArewo+ID4gPiArCXd3X2FjcXVpcmVfZmluaSgmY3R4LT5jdHgpOwo+ ID4gPiArfQo+ID4gPiArCj4gPiA+ICt2b2lkIHJlc2VydmF0aW9uX2NvbnRleHRfaW5pdChzdHJ1 Y3QgcmVzZXJ2YXRpb25fY29udGV4dCAqY3R4KTsKPiA+ID4gK3ZvaWQgcmVzZXJ2YXRpb25fY29u dGV4dF91bmxvY2tfYWxsKHN0cnVjdCByZXNlcnZhdGlvbl9jb250ZXh0ICpjdHgpOwo+ID4gPiAr aW50IHJlc2VydmF0aW9uX2NvbnRleHRfbG9jayhzdHJ1Y3QgcmVzZXJ2YXRpb25fY29udGV4dCAq Y3R4LAo+ID4gPiArCQkJICAgICBzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpvYmosCj4gPiA+ ICsJCQkgICAgIGJvb2wgaW50ZXJydXB0aWJsZSk7Cj4gPiBOZWVkcyBhIF9fbXVzdF9jaGVjay4K PiA+IAo+ID4gPiArCj4gPiA+ICAgLyoqCj4gPiA+ICAgICogc3RydWN0IHJlc2VydmF0aW9uX29i amVjdF9saXN0IC0gYSBsaXN0IG9mIHNoYXJlZCBmZW5jZXMKPiA+ID4gICAgKiBAcmN1OiBmb3Ig aW50ZXJuYWwgdXNlCj4gPiA+IEBAIC03MSw2ICsxMDgsNyBAQCBzdHJ1Y3QgcmVzZXJ2YXRpb25f b2JqZWN0X2xpc3Qgewo+ID4gPiAgICAqLwo+ID4gPiAgIHN0cnVjdCByZXNlcnZhdGlvbl9vYmpl Y3Qgewo+ID4gPiAgIAlzdHJ1Y3Qgd3dfbXV0ZXggbG9jazsKPiA+ID4gKwlzdHJ1Y3QgbGxpc3Rf bm9kZSBsb2NrZWQ7Cj4gPiA+ICAgCXNlcWNvdW50X3Qgc2VxOwo+ID4gPiAgIAlzdHJ1Y3QgZG1h X2ZlbmNlIF9fcmN1ICpmZW5jZV9leGNsOwo+ID4gQXNpZGUgZnJvbSB0aGUgbml0cyZiaWtlc2hl ZHMsIEkgbGlrZS4KPiA+IC1EYW5pZWwKPiA+IAo+ID4gPiAtLSAKPiA+ID4gMi4xNy4xCj4gPiA+ IAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4g ZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9u Cmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbA==