From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 3/4] kernel.h: Add non_block_start/end() Date: Tue, 20 Aug 2019 22:24:40 +0200 Message-ID: <20190820202440.GH11147@phenom.ffwll.local> References: <20190820081902.24815-1-daniel.vetter@ffwll.ch> <20190820081902.24815-4-daniel.vetter@ffwll.ch> 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 3A5FB89B51 for ; Tue, 20 Aug 2019 20:24:45 +0000 (UTC) Received: by mail-ed1-x543.google.com with SMTP id s49so230182edb.1 for ; Tue, 20 Aug 2019 13:24:45 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20190820081902.24815-4-daniel.vetter@ffwll.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: LKML Cc: Feng Tang , Michal Hocko , Kees Cook , Linux MM , Peter Zijlstra , Daniel Vetter , Intel Graphics Development , Jann Horn , DRI Development , Jason Gunthorpe , =?iso-8859-1?B?Suly9G1l?= Glisse , Ingo Molnar , Thomas Gleixner , Randy Dunlap , David Rientjes , Wei Wang , Daniel Vetter , Andrew Morton , Andy Shevchenko , Christian =?iso-8859-1?Q?K=F6nig?= , Masahiro Yamada List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBBdWcgMjAsIDIwMTkgYXQgMTA6MTk6MDFBTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBJbiBzb21lIHNwZWNpYWwgY2FzZXMgd2UgbXVzdCBub3QgYmxvY2ssIGJ1dCB0aGVy ZSdzIG5vdCBhCj4gc3BpbmxvY2ssIHByZWVtcHQtb2ZmLCBpcnFzLW9mZiBvciBzaW1pbGFyIGNy aXRpY2FsIHNlY3Rpb24gYWxyZWFkeQo+IHRoYXQgYXJtcyB0aGUgbWlnaHRfc2xlZXAoKSBkZWJ1 ZyBjaGVja3MuIEFkZCBhIG5vbl9ibG9ja19zdGFydC9lbmQoKQo+IHBhaXIgdG8gYW5ub3RhdGUg dGhlc2UuCj4gCj4gVGhpcyB3aWxsIGJlIHVzZWQgaW4gdGhlIG9vbSBwYXRocyBvZiBtbXUtbm90 aWZpZXJzLCB3aGVyZSBibG9ja2luZyBpcwo+IG5vdCBhbGxvd2VkIHRvIG1ha2Ugc3VyZSB0aGVy ZSdzIGZvcndhcmQgcHJvZ3Jlc3MuIFF1b3RpbmcgTWljaGFsOgo+IAo+ICJUaGUgbm90aWZpZXIg aXMgY2FsbGVkIGZyb20gcXVpdGUgYSByZXN0cmljdGVkIGNvbnRleHQgLSBvb21fcmVhcGVyIC0K PiB3aGljaCBzaG91bGRuJ3QgZGVwZW5kIG9uIGFueSBsb2NrcyBvciBzbGVlcGFibGUgY29uZGl0 aW9uYWxzLiBUaGUgY29kZQo+IHNob3VsZCBiZSBzd2lmdCBhcyB3ZWxsIGJ1dCB3ZSBtb3N0bHkg ZG8gY2FyZSBhYm91dCBpdCB0byBtYWtlIGEgZm9yd2FyZAo+IHByb2dyZXNzLiBDaGVja2luZyBm b3Igc2xlZXBhYmxlIGNvbnRleHQgaXMgdGhlIGJlc3QgdGhpbmcgd2UgY291bGQgY29tZQo+IHVw IHdpdGggdGhhdCB3b3VsZCBkZXNjcmliZSB0aGVzZSBkZW1hbmRzIGF0IGxlYXN0IHBhcnRpYWxs eS4iCj4gCj4gUGV0ZXIgYWxzbyBhc2tlZCB3aGV0aGVyIHdlIHdhbnQgdG8gY2F0Y2ggc3Bpbmxv Y2tzIG9uIHRvcCwgYnV0IE1pY2hhbAo+IHNhaWQgdGhvc2UgYXJlIGxlc3Mgb2YgYSBwcm9ibGVt IGJlY2F1c2Ugc3BpbmxvY2tzIGNhbid0IGhhdmUgYW4KPiBpbmRpcmVjdCBkZXBlbmRlbmN5IHVw b24gdGhlIHBhZ2UgYWxsb2NhdG9yIGFuZCBoZW5jZSBjbG9zZSB0aGUgbG9vcAo+IHdpdGggdGhl IG9vbSByZWFwZXIuCj4gCj4gU3VnZ2VzdGVkIGJ5IE1pY2hhbCBIb2Nrby4KPiAKPiB2MjoKPiAt IEltcHJvdmUgY29tbWl0IG1lc3NhZ2UgKE1pY2hhbCkKPiAtIEFsc28gY2hlY2sgaW4gc2NoZWR1 bGUsIG5vdCBqdXN0IG1pZ2h0X3NsZWVwIChQZXRlcikKPiAKPiB2MzogSXQgd29ya3MgYmV0dGVy IHdoZW4gSSBhY3R1YWxseSBzcXVhc2ggaW4gdGhlIGZpeHVwIEkgaGFkIGx5aW5nCj4gYXJvdW5k IDotLwo+IAo+IHY0OiBQaWNrIHRoZSBzdWdnZXN0aW9uIGZyb20gQW5kcmV3IE1vcnRvbiB0byBn aXZlIG5vbl9ibG9ja19zdGFydC9lbmQKPiBzb21lIGdvb2Qga2VybmVsZG9jIGNvbW1lbnRzLiBJ IGFkZGVkIHRoYXQgb3RoZXIgYmxvY2tpbmcgY2FsbHMgbGlrZQo+IHdhaXRfZXZlbnQgcG9zZSBz aW1pbGFyIGlzc3Vlcywgc2luY2UgdGhhdCdzIHRoZSBvdGhlciBleGFtcGxlIHdlCj4gZGlzY3Vz c2VkLgo+IAo+IENjOiBKYXNvbiBHdW50aG9ycGUgPGpnZ0B6aWVwZS5jYT4KPiBDYzogUGV0ZXIg WmlqbHN0cmEgPHBldGVyekBpbmZyYWRlYWQub3JnPgo+IENjOiBJbmdvIE1vbG5hciA8bWluZ29A cmVkaGF0LmNvbT4KPiBDYzogQW5kcmV3IE1vcnRvbiA8YWtwbUBsaW51eC1mb3VuZGF0aW9uLm9y Zz4KPiBDYzogTWljaGFsIEhvY2tvIDxtaG9ja29Ac3VzZS5jb20+Cj4gQ2M6IERhdmlkIFJpZW50 amVzIDxyaWVudGplc0Bnb29nbGUuY29tPgo+IENjOiAiQ2hyaXN0aWFuIEvDtm5pZyIgPGNocmlz dGlhbi5rb2VuaWdAYW1kLmNvbT4KPiBDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBm ZndsbC5jaD4KPiBDYzogIkrDqXLDtG1lIEdsaXNzZSIgPGpnbGlzc2VAcmVkaGF0LmNvbT4KPiBD YzogbGludXgtbW1Aa3ZhY2sub3JnCj4gQ2M6IE1hc2FoaXJvIFlhbWFkYSA8eWFtYWRhLm1hc2Fo aXJvQHNvY2lvbmV4dC5jb20+Cj4gQ2M6IFdlaSBXYW5nIDx3dndAZ29vZ2xlLmNvbT4KPiBDYzog QW5keSBTaGV2Y2hlbmtvIDxhbmRyaXkuc2hldmNoZW5rb0BsaW51eC5pbnRlbC5jb20+Cj4gQ2M6 IFRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRlPgo+IENjOiBKYW5uIEhvcm4gPGph bm5oQGdvb2dsZS5jb20+Cj4gQ2M6IEZlbmcgVGFuZyA8ZmVuZy50YW5nQGludGVsLmNvbT4KPiBD YzogS2VlcyBDb29rIDxrZWVzY29va0BjaHJvbWl1bS5vcmc+Cj4gQ2M6IFJhbmR5IER1bmxhcCA8 cmR1bmxhcEBpbmZyYWRlYWQub3JnPgo+IENjOiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3Jn Cj4gQWNrZWQtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4g KHYxKQo+IFNpZ25lZC1vZmYtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAaW50ZWwu Y29tPgoKSGkgUGV0ZXIsCgpJaXJjIHlvdSd2ZSBiZWVuIGludm9sdmVkIGF0IGxlYXN0IHNvbWV3 aGF0IGluIGRpc2N1c3NpbmcgdGhpcy4gLW1tIGZvbGtzCmFyZSBhIGJpdCB1bmRlY2lkZWQgd2hl dGhlciB0aGVzZSBuZXcgbm9uX2Jsb2NrIHNlbWFudGljcyBhcmUgYSBnb29kIGlkZWEuCk1pY2hh bCBIb2NrbyBzdGlsbCBpcyBpbiBzdXBwb3J0LCBidXQgQW5kcmV3IE1vcnRvbiBhbmQgSmFzb24g R3VudGhvcnBlCmFyZSBsZXNzIGVudGh1c2lhc3RpYy4gSmFzb24gc2FpZCBoZSdzIG9rIHdpdGgg bWVyZ2luZyB0aGUgaG1tIHNpZGUgb2YKdGhpcyBpZiBzY2hlZHVsZXIgZm9sa3MgYWNrLiBJZiBu b3QsIHRoZW4gSSdsbCByZXNwaW4gd2l0aCB0aGUKcHJlZW1wdF9kaXNhYmxlL2VuYWJsZSBpbnN0 ZWFkIGxpa2UgaW4gdjEuCgpTbyBhY2svbmFjayBmb3IgdGhpcyBmcm9tIHRoZSBzY2hlZHVsZXIg c2lkZT8KClRoYW5rcywgRGFuaWVsCgo+IC0tLQo+ICBpbmNsdWRlL2xpbnV4L2tlcm5lbC5oIHwg MjUgKysrKysrKysrKysrKysrKysrKysrKysrLQo+ICBpbmNsdWRlL2xpbnV4L3NjaGVkLmggIHwg IDQgKysrKwo+ICBrZXJuZWwvc2NoZWQvY29yZS5jICAgIHwgMTkgKysrKysrKysrKysrKystLS0t LQo+ICAzIGZpbGVzIGNoYW5nZWQsIDQyIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCj4g Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgva2VybmVsLmggYi9pbmNsdWRlL2xpbnV4L2tl cm5lbC5oCj4gaW5kZXggNGZhMzYwYTEzYzFlLi44MmY4NGNmZTM3MmYgMTAwNjQ0Cj4gLS0tIGEv aW5jbHVkZS9saW51eC9rZXJuZWwuaAo+ICsrKyBiL2luY2x1ZGUvbGludXgva2VybmVsLmgKPiBA QCAtMjE3LDcgKzIxNyw5IEBAIGV4dGVybiB2b2lkIF9fY2FudF9zbGVlcChjb25zdCBjaGFyICpm aWxlLCBpbnQgbGluZSwgaW50IHByZWVtcHRfb2Zmc2V0KTsKPiAgICogbWlnaHRfc2xlZXAgLSBh bm5vdGF0aW9uIGZvciBmdW5jdGlvbnMgdGhhdCBjYW4gc2xlZXAKPiAgICoKPiAgICogdGhpcyBt YWNybyB3aWxsIHByaW50IGEgc3RhY2sgdHJhY2UgaWYgaXQgaXMgZXhlY3V0ZWQgaW4gYW4gYXRv bWljCj4gLSAqIGNvbnRleHQgKHNwaW5sb2NrLCBpcnEtaGFuZGxlciwgLi4uKS4KPiArICogY29u dGV4dCAoc3BpbmxvY2ssIGlycS1oYW5kbGVyLCAuLi4pLiBBZGRpdGlvbmFsIHNlY3Rpb25zIHdo ZXJlIGJsb2NraW5nIGlzCj4gKyAqIG5vdCBhbGxvd2VkIGNhbiBiZSBhbm5vdGF0ZWQgd2l0aCBu b25fYmxvY2tfc3RhcnQoKSBhbmQgbm9uX2Jsb2NrX2VuZCgpCj4gKyAqIHBhaXJzLgo+ICAgKgo+ ICAgKiBUaGlzIGlzIGEgdXNlZnVsIGRlYnVnZ2luZyBoZWxwIHRvIGJlIGFibGUgdG8gY2F0Y2gg cHJvYmxlbXMgZWFybHkgYW5kIG5vdAo+ICAgKiBiZSBiaXR0ZW4gbGF0ZXIgd2hlbiB0aGUgY2Fs bGluZyBmdW5jdGlvbiBoYXBwZW5zIHRvIHNsZWVwIHdoZW4gaXQgaXMgbm90Cj4gQEAgLTIzMyw2 ICsyMzUsMjUgQEAgZXh0ZXJuIHZvaWQgX19jYW50X3NsZWVwKGNvbnN0IGNoYXIgKmZpbGUsIGlu dCBsaW5lLCBpbnQgcHJlZW1wdF9vZmZzZXQpOwo+ICAjIGRlZmluZSBjYW50X3NsZWVwKCkgXAo+ ICAJZG8geyBfX2NhbnRfc2xlZXAoX19GSUxFX18sIF9fTElORV9fLCAwKTsgfSB3aGlsZSAoMCkK PiAgIyBkZWZpbmUgc2NoZWRfYW5ub3RhdGVfc2xlZXAoKQkoY3VycmVudC0+dGFza19zdGF0ZV9j aGFuZ2UgPSAwKQo+ICsvKioKPiArICogbm9uX2Jsb2NrX3N0YXJ0IC0gYW5ub3RhdGUgdGhlIHN0 YXJ0IG9mIHNlY3Rpb24gd2hlcmUgc2xlZXBpbmcgaXMgcHJvaGliaXRlZAo+ICsgKgo+ICsgKiBU aGlzIGlzIG9uIGJlaGFsZiBvZiB0aGUgb29tIHJlYXBlciwgc3BlY2lmaWNhbGx5IHdoZW4gaXQg aXMgY2FsbGluZyB0aGUgbW11Cj4gKyAqIG5vdGlmaWVycy4gVGhlIHByb2JsZW0gaXMgdGhhdCBp ZiB0aGUgbm90aWZpZXIgd2VyZSB0byBibG9jayBvbiwgZm9yIGV4YW1wbGUsCj4gKyAqIG11dGV4 X2xvY2soKSBhbmQgaWYgdGhlIHByb2Nlc3Mgd2hpY2ggaG9sZHMgdGhhdCBtdXRleCB3ZXJlIHRv IHBlcmZvcm0gYQo+ICsgKiBzbGVlcGluZyBtZW1vcnkgYWxsb2NhdGlvbiwgdGhlIG9vbSByZWFw ZXIgaXMgbm93IGJsb2NrZWQgb24gY29tcGxldGlvbiBvZgo+ICsgKiB0aGF0IG1lbW9yeSBhbGxv Y2F0aW9uLiBPdGhlciBibG9ja2luZyBjYWxscyBsaWtlIHdhaXRfZXZlbnQoKSBwb3NlIHNpbWls YXIKPiArICogaXNzdWVzLgo+ICsgKi8KPiArIyBkZWZpbmUgbm9uX2Jsb2NrX3N0YXJ0KCkgXAo+ ICsJZG8geyBjdXJyZW50LT5ub25fYmxvY2tfY291bnQrKzsgfSB3aGlsZSAoMCkKPiArLyoqCj4g KyAqIG5vbl9ibG9ja19lbmQgLSBhbm5vdGF0ZSB0aGUgZW5kIG9mIHNlY3Rpb24gd2hlcmUgc2xl ZXBpbmcgaXMgcHJvaGliaXRlZAo+ICsgKgo+ICsgKiBDbG9zZXMgYSBzZWN0aW9uIG9wZW5lZCBi eSBub25fYmxvY2tfc3RhcnQoKS4KPiArICovCj4gKyMgZGVmaW5lIG5vbl9ibG9ja19lbmQoKSBc Cj4gKwlkbyB7IFdBUk5fT04oY3VycmVudC0+bm9uX2Jsb2NrX2NvdW50LS0gPT0gMCk7IH0gd2hp bGUgKDApCj4gICNlbHNlCj4gICAgc3RhdGljIGlubGluZSB2b2lkIF9fX21pZ2h0X3NsZWVwKGNv bnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLAo+ICAJCQkJICAgaW50IHByZWVtcHRfb2Zmc2V0KSB7 IH0KPiBAQCAtMjQxLDYgKzI2Miw4IEBAIGV4dGVybiB2b2lkIF9fY2FudF9zbGVlcChjb25zdCBj aGFyICpmaWxlLCBpbnQgbGluZSwgaW50IHByZWVtcHRfb2Zmc2V0KTsKPiAgIyBkZWZpbmUgbWln aHRfc2xlZXAoKSBkbyB7IG1pZ2h0X3Jlc2NoZWQoKTsgfSB3aGlsZSAoMCkKPiAgIyBkZWZpbmUg Y2FudF9zbGVlcCgpIGRvIHsgfSB3aGlsZSAoMCkKPiAgIyBkZWZpbmUgc2NoZWRfYW5ub3RhdGVf c2xlZXAoKSBkbyB7IH0gd2hpbGUgKDApCj4gKyMgZGVmaW5lIG5vbl9ibG9ja19zdGFydCgpIGRv IHsgfSB3aGlsZSAoMCkKPiArIyBkZWZpbmUgbm9uX2Jsb2NrX2VuZCgpIGRvIHsgfSB3aGlsZSAo MCkKPiAgI2VuZGlmCj4gIAo+ICAjZGVmaW5lIG1pZ2h0X3NsZWVwX2lmKGNvbmQpIGRvIHsgaWYg KGNvbmQpIG1pZ2h0X3NsZWVwKCk7IH0gd2hpbGUgKDApCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUv bGludXgvc2NoZWQuaCBiL2luY2x1ZGUvbGludXgvc2NoZWQuaAo+IGluZGV4IDlmNTE5MzJiZDU0 My4uYzU2MzBmM2RjYTFmIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvbGludXgvc2NoZWQuaAo+ICsr KyBiL2luY2x1ZGUvbGludXgvc2NoZWQuaAo+IEBAIC05NzQsNiArOTc0LDEwIEBAIHN0cnVjdCB0 YXNrX3N0cnVjdCB7Cj4gIAlzdHJ1Y3QgbXV0ZXhfd2FpdGVyCQkqYmxvY2tlZF9vbjsKPiAgI2Vu ZGlmCj4gIAo+ICsjaWZkZWYgQ09ORklHX0RFQlVHX0FUT01JQ19TTEVFUAo+ICsJaW50CQkJCW5v bl9ibG9ja19jb3VudDsKPiArI2VuZGlmCj4gKwo+ICAjaWZkZWYgQ09ORklHX1RSQUNFX0lSUUZM QUdTCj4gIAl1bnNpZ25lZCBpbnQJCQlpcnFfZXZlbnRzOwo+ICAJdW5zaWduZWQgbG9uZwkJCWhh cmRpcnFfZW5hYmxlX2lwOwo+IGRpZmYgLS1naXQgYS9rZXJuZWwvc2NoZWQvY29yZS5jIGIva2Vy bmVsL3NjaGVkL2NvcmUuYwo+IGluZGV4IDJiMDM3ZjE5NTQ3My4uNTcyNDU3NzBkNmNjIDEwMDY0 NAo+IC0tLSBhL2tlcm5lbC9zY2hlZC9jb3JlLmMKPiArKysgYi9rZXJuZWwvc2NoZWQvY29yZS5j Cj4gQEAgLTM3MDAsMTMgKzM3MDAsMjIgQEAgc3RhdGljIG5vaW5saW5lIHZvaWQgX19zY2hlZHVs ZV9idWcoc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2KQo+ICAvKgo+ICAgKiBWYXJpb3VzIHNjaGVk dWxlKCktdGltZSBkZWJ1Z2dpbmcgY2hlY2tzIGFuZCBzdGF0aXN0aWNzOgo+ICAgKi8KPiAtc3Rh dGljIGlubGluZSB2b2lkIHNjaGVkdWxlX2RlYnVnKHN0cnVjdCB0YXNrX3N0cnVjdCAqcHJldikK PiArc3RhdGljIGlubGluZSB2b2lkIHNjaGVkdWxlX2RlYnVnKHN0cnVjdCB0YXNrX3N0cnVjdCAq cHJldiwgYm9vbCBwcmVlbXB0KQo+ICB7Cj4gICNpZmRlZiBDT05GSUdfU0NIRURfU1RBQ0tfRU5E X0NIRUNLCj4gIAlpZiAodGFza19zdGFja19lbmRfY29ycnVwdGVkKHByZXYpKQo+ICAJCXBhbmlj KCJjb3JydXB0ZWQgc3RhY2sgZW5kIGRldGVjdGVkIGluc2lkZSBzY2hlZHVsZXJcbiIpOwo+ICAj ZW5kaWYKPiAgCj4gKyNpZmRlZiBDT05GSUdfREVCVUdfQVRPTUlDX1NMRUVQCj4gKwlpZiAoIXBy ZWVtcHQgJiYgcHJldi0+c3RhdGUgJiYgcHJldi0+bm9uX2Jsb2NrX2NvdW50KSB7Cj4gKwkJcHJp bnRrKEtFUk5fRVJSICJCVUc6IHNjaGVkdWxpbmcgaW4gYSBub24tYmxvY2tpbmcgc2VjdGlvbjog JXMvJWQvJWlcbiIsCj4gKwkJCXByZXYtPmNvbW0sIHByZXYtPnBpZCwgcHJldi0+bm9uX2Jsb2Nr X2NvdW50KTsKPiArCQlkdW1wX3N0YWNrKCk7Cj4gKwkJYWRkX3RhaW50KFRBSU5UX1dBUk4sIExP Q0tERVBfU1RJTExfT0spOwo+ICsJfQo+ICsjZW5kaWYKPiArCj4gIAlpZiAodW5saWtlbHkoaW5f YXRvbWljX3ByZWVtcHRfb2ZmKCkpKSB7Cj4gIAkJX19zY2hlZHVsZV9idWcocHJldik7Cj4gIAkJ cHJlZW1wdF9jb3VudF9zZXQoUFJFRU1QVF9ESVNBQkxFRCk7Cj4gQEAgLTM4MTMsNyArMzgyMiw3 IEBAIHN0YXRpYyB2b2lkIF9fc2NoZWQgbm90cmFjZSBfX3NjaGVkdWxlKGJvb2wgcHJlZW1wdCkK PiAgCXJxID0gY3B1X3JxKGNwdSk7Cj4gIAlwcmV2ID0gcnEtPmN1cnI7Cj4gIAo+IC0Jc2NoZWR1 bGVfZGVidWcocHJldik7Cj4gKwlzY2hlZHVsZV9kZWJ1ZyhwcmV2LCBwcmVlbXB0KTsKPiAgCj4g IAlpZiAoc2NoZWRfZmVhdChIUlRJQ0spKQo+ICAJCWhydGlja19jbGVhcihycSk7Cj4gQEAgLTY1 NzAsNyArNjU3OSw3IEBAIHZvaWQgX19fbWlnaHRfc2xlZXAoY29uc3QgY2hhciAqZmlsZSwgaW50 IGxpbmUsIGludCBwcmVlbXB0X29mZnNldCkKPiAgCXJjdV9zbGVlcF9jaGVjaygpOwo+ICAKPiAg CWlmICgocHJlZW1wdF9jb3VudF9lcXVhbHMocHJlZW1wdF9vZmZzZXQpICYmICFpcnFzX2Rpc2Fi bGVkKCkgJiYKPiAtCSAgICAgIWlzX2lkbGVfdGFzayhjdXJyZW50KSkgfHwKPiArCSAgICAgIWlz X2lkbGVfdGFzayhjdXJyZW50KSAmJiAhY3VycmVudC0+bm9uX2Jsb2NrX2NvdW50KSB8fAo+ICAJ ICAgIHN5c3RlbV9zdGF0ZSA9PSBTWVNURU1fQk9PVElORyB8fCBzeXN0ZW1fc3RhdGUgPiBTWVNU RU1fUlVOTklORyB8fAo+ICAJICAgIG9vcHNfaW5fcHJvZ3Jlc3MpCj4gIAkJcmV0dXJuOwo+IEBA IC02NTg2LDggKzY1OTUsOCBAQCB2b2lkIF9fX21pZ2h0X3NsZWVwKGNvbnN0IGNoYXIgKmZpbGUs IGludCBsaW5lLCBpbnQgcHJlZW1wdF9vZmZzZXQpCj4gIAkJIkJVRzogc2xlZXBpbmcgZnVuY3Rp b24gY2FsbGVkIGZyb20gaW52YWxpZCBjb250ZXh0IGF0ICVzOiVkXG4iLAo+ICAJCQlmaWxlLCBs aW5lKTsKPiAgCXByaW50ayhLRVJOX0VSUgo+IC0JCSJpbl9hdG9taWMoKTogJWQsIGlycXNfZGlz YWJsZWQoKTogJWQsIHBpZDogJWQsIG5hbWU6ICVzXG4iLAo+IC0JCQlpbl9hdG9taWMoKSwgaXJx c19kaXNhYmxlZCgpLAo+ICsJCSJpbl9hdG9taWMoKTogJWQsIGlycXNfZGlzYWJsZWQoKTogJWQs IG5vbl9ibG9jazogJWQsIHBpZDogJWQsIG5hbWU6ICVzXG4iLAo+ICsJCQlpbl9hdG9taWMoKSwg aXJxc19kaXNhYmxlZCgpLCBjdXJyZW50LT5ub25fYmxvY2tfY291bnQsCj4gIAkJCWN1cnJlbnQt PnBpZCwgY3VycmVudC0+Y29tbSk7Cj4gIAo+ICAJaWYgKHRhc2tfc3RhY2tfZW5kX2NvcnJ1cHRl ZChjdXJyZW50KSkKPiAtLSAKPiAyLjIzLjAucmMxCj4gCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0 d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4