From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v3 04/12] drm: move drm_can_sleep() to drm_util.h Date: Wed, 9 Jan 2019 22:20:09 +0100 Message-ID: <20190109212008.GY21184@phenom.ffwll.local> References: <20190108192939.15255-1-sam@ravnborg.org> <20190108192939.15255-5-sam@ravnborg.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com [IPv6:2a00:1450:4864:20::542]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7C5C66E43C for ; Wed, 9 Jan 2019 21:20:13 +0000 (UTC) Received: by mail-ed1-x542.google.com with SMTP id b14so8497933edt.6 for ; Wed, 09 Jan 2019 13:20:13 -0800 (PST) Content-Disposition: inline In-Reply-To: <20190108192939.15255-5-sam@ravnborg.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Sam Ravnborg Cc: David Lechner , David Airlie , Tomi Valkeinen , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Maxime Ripard , Laurent Pinchart , Alex Deucher , Sean Paul , Christian =?iso-8859-1?Q?K=F6nig?= , Gerd Hoffmann List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBKYW4gMDgsIDIwMTkgYXQgMDg6Mjk6MzFQTSArMDEwMCwgU2FtIFJhdm5ib3JnIHdy b3RlOgo+IE1vdmUgZHJtX2Nhbl9zbGVlcCgpIG91dCBvZiBkcm1QLmggdG8gYWxsb3cgdXNlcnMK PiB0byBnZXQgcmlkIG9mIHRoZSBkcm1QLmggaW5jbHVkZS4KPiAKPiBUaGVyZSB3YXMgbm8gaGVh ZGVyIGZpbGUgdGhhdCB3YXMgYSBnb29kIG1hdGNoIGZvciB0aGlzIGhlbHBlciBmdW5jdGlvbi4K PiBTbyBhZGQgdGhpcyB0byBkcm1fdXRpbCB3aXRoIHRoZSByZWxldmFudCBpbmNsdWRlcy4KPiAK PiBVcGRhdGUgY29tbWVudHMgdG8gdXNlIGtlcm5lbC1kb2Mgc3R5bGUuCj4gQWRkIEZJWE1FIHRv IGRybV9jYW5fc2xlZXAgYW5kIGFkZCBub3RlCj4gdGhhdCB0aGlzIGZ1bmN0aW9uIHNob3VsZCBu b3QgYmUgdXNlZCBpbiBuZXcgY29kZQo+IAo+IEFkZCBpbmNsdWRlIG9mIGRybV91dGlsLmggdG8g YWxsIHVzZXJzLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFNhbSBSYXZuYm9yZyA8c2FtQHJhdm5ib3Jn Lm9yZz4KPiBDYzogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4Lmlu dGVsLmNvbT4KPiBDYzogTWF4aW1lIFJpcGFyZCA8bWF4aW1lLnJpcGFyZEBib290bGluLmNvbT4K PiBDYzogU2VhbiBQYXVsIDxzZWFuQHBvb3JseS5ydW4+Cj4gQ2M6IERhdmlkIEFpcmxpZSA8YWly bGllZEBsaW51eC5pZT4KPiBDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPgo+IENj OiBBbGV4IERldWNoZXIgPGFsZXhhbmRlci5kZXVjaGVyQGFtZC5jb20+Cj4gQ2M6ICJDaHJpc3Rp YW4gS8O2bmlnIiA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgo+IENjOiAiRGF2aWQgKENodW5N aW5nKSBaaG91IiA8RGF2aWQxLlpob3VAYW1kLmNvbT4KPiBDYzogR2VyZCBIb2ZmbWFubiA8a3Jh eGVsQHJlZGhhdC5jb20+Cj4gQ2M6IFJvYiBDbGFyayA8cm9iZGNsYXJrQGdtYWlsLmNvbT4KPiBD YzogVG9taSBWYWxrZWluZW4gPHRvbWkudmFsa2VpbmVuQHRpLmNvbT4KPiBDYzogRXJpYyBBbmhv bHQgPGVyaWNAYW5ob2x0Lm5ldD4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YXRvbS5jICAgICAgICAgICAgICAgfCAgMiArKwo+ICBkcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9m Yi5jICAgICAgICAgICAgICAgICAgICB8ICAyICsrCj4gIGRyaXZlcnMvZ3B1L2RybS9jaXJydXMv Y2lycnVzX2ZiZGV2LmMgICAgICAgICAgIHwgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2Zs aXBfd29yay5jICAgICAgICAgICAgICAgICB8ICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL21nYWcy MDAvbWdhZzIwMF9mYi5jICAgICAgICAgICAgfCAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9tZHA1L21kcDVfc21wLmMgICAgICAgIHwgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vb21h cGRybS9vbWFwX2ZiZGV2LmMgICAgICAgICAgICB8ICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL3F4 bC9xeGxfY21kLmMgICAgICAgICAgICAgICAgICAgfCAgMiArKwo+ICBkcml2ZXJzL2dwdS9kcm0v cmFkZW9uL2F0b20uYyAgICAgICAgICAgICAgICAgICB8ICAyICsrCj4gIGRyaXZlcnMvZ3B1L2Ry bS9yYWRlb24vcmFkZW9uX2xlZ2FjeV9lbmNvZGVycy5jIHwgIDEgKwo+ICBkcml2ZXJzL2dwdS9k cm0vdmM0L3ZjNF9kcnYuaCAgICAgICAgICAgICAgICAgICB8ICAxICsKPiAgaW5jbHVkZS9kcm0v ZHJtUC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOCAtLS0tLQo+ICBpbmNsdWRl L2RybS9kcm1fdXRpbC5oICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQyICsrKysrKysrKysr KysrKysrKysrKysrKy0KPiAgMTMgZmlsZXMgY2hhbmdlZCwgNTYgaW5zZXJ0aW9ucygrKSwgOSBk ZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YXRvbS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYXRvbS5jCj4gaW5kZXggZTk5MzRk ZTFiOWNmLi5kZDMwZjRlNjFhOGMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYXRvbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYXRvbS5jCj4g QEAgLTI3LDYgKzI3LDggQEAKPiAgI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPiAgI2luY2x1ZGUg PGFzbS91bmFsaWduZWQuaD4KPiAgCj4gKyNpbmNsdWRlIDxkcm0vZHJtX3V0aWwuaD4KPiArCj4g ICNkZWZpbmUgQVRPTV9ERUJVRwo+ICAKPiAgI2luY2x1ZGUgImF0b20uaCIKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfZmIuYyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0 X2ZiLmMKPiBpbmRleCBhODBiY2ExYTg1N2YuLmViNjZiZjdkM2U2MyAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9mYi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FzdC9h c3RfZmIuYwo+IEBAIC0zOSw3ICszOSw5IEBACj4gICNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ICAj aW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2ZiX2hlbHBlci5o Pgo+ICsjaW5jbHVkZSA8ZHJtL2RybV91dGlsLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2NydGNf aGVscGVyLmg+Cj4gKwo+ICAjaW5jbHVkZSAiYXN0X2Rydi5oIgo+ICAKPiAgc3RhdGljIHZvaWQg YXN0X2RpcnR5X3VwZGF0ZShzdHJ1Y3QgYXN0X2ZiZGV2ICphZmJkZXYsCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9jaXJydXMvY2lycnVzX2ZiZGV2LmMgYi9kcml2ZXJzL2dwdS9kcm0v Y2lycnVzL2NpcnJ1c19mYmRldi5jCj4gaW5kZXggNGRkNDk5YzdkMWJhLi43OWZlYTFiOGJjMTQg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2NpcnJ1cy9jaXJydXNfZmJkZXYuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9jaXJydXMvY2lycnVzX2ZiZGV2LmMKPiBAQCAtMTAsNiArMTAs NyBAQAo+ICAgKi8KPiAgI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ICAjaW5jbHVkZSA8ZHJt L2RybVAuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fdXRpbC5oPgo+ICAjaW5jbHVkZSA8ZHJtL2Ry bV9mYl9oZWxwZXIuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KPiAgCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmxpcF93b3JrLmMgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX2ZsaXBfd29yay5jCj4gaW5kZXggMTJkZWExNmYyMmE4Li4zZGEzYmY1YWY0MDUg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9mbGlwX3dvcmsuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fZmxpcF93b3JrLmMKPiBAQCAtMjIsNiArMjIsNyBAQAo+ICAgKi8K PiAgCj4gICNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV91dGlsLmg+ Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2ZsaXBfd29yay5oPgo+ICAKPiAgLyoqCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfZmIuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9tZ2FnMjAwL21nYWcyMDBfZmIuYwo+IGluZGV4IDMwNzI2YzlmZTI4Yy4uNjg5MzkzNGIyNmMw IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfZmIuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfZmIuYwo+IEBAIC0xMiw2ICsxMiw3 IEBACj4gICAqLwo+ICAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gICNpbmNsdWRlIDxkcm0v ZHJtUC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV91dGlsLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJt X2ZiX2hlbHBlci5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgo+ICAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL21kcDUvbWRwNV9zbXAuYyBiL2Ry aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9tZHA1L21kcDVfc21wLmMKPiBpbmRleCA5NmMyYjgyOGRi YTQuLmZhMmQxZDg5OTVlZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av bWRwNS9tZHA1X3NtcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL21kcDUvbWRw NV9zbXAuYwo+IEBAIC0xNiw2ICsxNiw3IEBACj4gICAqIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KPiAgICovCj4gIAo+ICsjaW5jbHVk ZSA8ZHJtL2RybV91dGlsLmg+Cj4gIAo+ICAjaW5jbHVkZSAibWRwNV9rbXMuaCIKPiAgI2luY2x1 ZGUgIm1kcDVfc21wLmgiCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29t YXBfZmJkZXYuYyBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZmJkZXYuYwo+IGluZGV4 IGFlZTk5MTk0NDk5Zi4uODUxYzU5ZjA3ZWIxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9vbWFwZHJtL29tYXBfZmJkZXYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29t YXBfZmJkZXYuYwo+IEBAIC0xNiw2ICsxNiw3IEBACj4gICAqLwo+ICAKPiAgI2luY2x1ZGUgPGRy bS9kcm1fY3J0Yy5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV91dGlsLmg+Cj4gICNpbmNsdWRlIDxk cm0vZHJtX2ZiX2hlbHBlci5oPgo+ICAKPiAgI2luY2x1ZGUgIm9tYXBfZHJ2LmgiCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2NtZC5jIGIvZHJpdmVycy9ncHUvZHJtL3F4 bC9xeGxfY21kLmMKPiBpbmRleCBkZmZjNTA5M2ZmMTYuLjJlMTAwZjY0NDIzNiAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9jbWQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9xeGwvcXhsX2NtZC5jCj4gQEAgLTI1LDYgKzI1LDggQEAKPiAgCj4gIC8qIFFYTCBjbWQvcmlu ZyBoYW5kbGluZyAqLwo+ICAKPiArI2luY2x1ZGUgPGRybS9kcm1fdXRpbC5oPgo+ICsKPiAgI2lu Y2x1ZGUgInF4bF9kcnYuaCIKPiAgI2luY2x1ZGUgInF4bF9vYmplY3QuaCIKPiAgCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vYXRvbS5jIGIvZHJpdmVycy9ncHUvZHJtL3Jh ZGVvbi9hdG9tLmMKPiBpbmRleCBlNTVjYmVlZTdhNTMuLmFjOThhZDU2MTg3MCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2F0b20uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9yYWRlb24vYXRvbS5jCj4gQEAgLTI3LDYgKzI3LDggQEAKPiAgI2luY2x1ZGUgPGxpbnV4L3Ns YWIuaD4KPiAgI2luY2x1ZGUgPGFzbS91bmFsaWduZWQuaD4KPiAgCj4gKyNpbmNsdWRlIDxkcm0v ZHJtX3V0aWwuaD4KPiArCj4gICNkZWZpbmUgQVRPTV9ERUJVRwo+ICAKPiAgI2luY2x1ZGUgImF0 b20uaCIKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fbGVnYWN5 X2VuY29kZXJzLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9sZWdhY3lfZW5jb2Rl cnMuYwo+IGluZGV4IDIyMmExZmE0MWQ3Yy4uN2UzMjU3ZThmZDU2IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2xlZ2FjeV9lbmNvZGVycy5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fbGVnYWN5X2VuY29kZXJzLmMKPiBAQCAtMjQsNiAr MjQsNyBAQAo+ICAgKiAgICAgICAgICBBbGV4IERldWNoZXIKPiAgICovCj4gICNpbmNsdWRlIDxk cm0vZHJtUC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV91dGlsLmg+Cj4gICNpbmNsdWRlIDxkcm0v ZHJtX2NydGNfaGVscGVyLmg+Cj4gICNpbmNsdWRlIDxkcm0vcmFkZW9uX2RybS5oPgo+ICAjaW5j bHVkZSAicmFkZW9uLmgiCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHJ2LmgKPiBpbmRleCBjMjRiMDc4ZjA1OTMu LjJjNjM1ZjAwMWM3MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYu aAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2Rydi5oCj4gQEAgLTksNiArOSw3IEBA Cj4gICNpbmNsdWRlIDxsaW51eC9tbV90eXBlcy5oPgo+ICAjaW5jbHVkZSA8bGludXgvcmVzZXJ2 YXRpb24uaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX3V0 aWwuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fZW5jb2Rlci5oPgo+ICAjaW5jbHVkZSA8ZHJtL2Ry bV9nZW1fY21hX2hlbHBlci5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KPiBkaWZm IC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtUC5oIGIvaW5jbHVkZS9kcm0vZHJtUC5oCj4gaW5kZXgg OWU0N2M4ZGM2Yjg3Li5iYzRjYjM3MzI0MDcgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJt UC5oCj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtUC5oCj4gQEAgLTk0LDE0ICs5NCw2IEBAIHN0cnVj dCBkbWFfYnVmX2F0dGFjaG1lbnQ7Cj4gIHN0cnVjdCBwY2lfZGV2Owo+ICBzdHJ1Y3QgcGNpX2Nv bnRyb2xsZXI7Cj4gIAo+IC0vKiByZXR1cm5zIHRydWUgaWYgY3VycmVudGx5IG9rYXkgdG8gc2xl ZXAgKi8KPiAtc3RhdGljIGlubGluZSBib29sIGRybV9jYW5fc2xlZXAodm9pZCkKPiAtewo+IC0J aWYgKGluX2F0b21pYygpIHx8IGluX2RiZ19tYXN0ZXIoKSB8fCBpcnFzX2Rpc2FibGVkKCkpCj4g LQkJcmV0dXJuIGZhbHNlOwo+IC0JcmV0dXJuIHRydWU7Cj4gLX0KPiAtCj4gICNpZiBkZWZpbmVk KENPTkZJR19EUk1fREVCVUdfU0VMRlRFU1RfTU9EVUxFKQo+ICAjZGVmaW5lIEVYUE9SVF9TWU1C T0xfRk9SX1RFU1RTX09OTFkoeCkgRVhQT1JUX1NZTUJPTCh4KQo+ICAjZWxzZQo+IGRpZmYgLS1n aXQgYS9pbmNsdWRlL2RybS9kcm1fdXRpbC5oIGIvaW5jbHVkZS9kcm0vZHJtX3V0aWwuaAo+IGlu ZGV4IDg4YWJkY2E4OWJhYS4uOGZkYTU3Nzc0NzFjIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJt L2RybV91dGlsLmgKPiArKysgYi9pbmNsdWRlL2RybS9kcm1fdXRpbC5oCj4gQEAgLTI2LDcgKzI2 LDQ3IEBACj4gICNpZm5kZWYgX0RSTV9VVElMX0hfCj4gICNkZWZpbmUgX0RSTV9VVElMX0hfCj4g IAo+IC0vKiBoZWxwZXIgZm9yIGhhbmRsaW5nIGNvbmRpdGlvbmFscyBpbiB2YXJpb3VzIGZvcl9l YWNoIG1hY3JvcyAqLwo+ICsvKioKPiArICogRE9DOiBkcm0gdXRpbHMKPiArICoKPiArICogTWFj cm9zIGFuZCBpbmxpbmUgZnVuY3Rpb25zIHRoYXQgZG9lcyBub3QgbmF0dXJhbGx5IGJlbG9uZyBp biBvdGhlciBwbGFjZXMKPiArICovCgpUaGUgbmljZSBuZXcgZG9jcyBoZXJlIGFyZW4ndCBpbmNs dWRlZCBhbnl3aGVyZS4gV2UgYWxyZWFkeSBoYXZlIGEgIk1pc2MKVXRpbGl0aWVzIiBpbiBkcm0t aW50ZXJuYWxzLnJzdCwgaW5jbHVkaW5nIHRoaXMgdGhlcmUgdW5kZXIgYSAiVXRpbGl0aWVzIgpz dWJoZWFkaW5nIG1ha2VzIHNlbnNlIEkgdGhpbmsgLSB5ZXMgSSBrbm93LCBub3QgdGhlIG1vc3Qg Y3JlYXRpdmUgbmFtZSA6LSkKPiArCj4gKyNpbmNsdWRlIDxsaW51eC9pcnFmbGFncy5oPgo+ICsj aW5jbHVkZSA8bGludXgvcHJlZW1wdC5oPgo+ICsjaW5jbHVkZSA8bGludXgva2dkYi5oPgo+ICsj aW5jbHVkZSA8bGludXgvc21wLmg+Cj4gKwo+ICsvKioKPiArICogZm9yX2VhY2hfaWYgLSBoZWxw ZXIgZm9yIGhhbmRsaW5nIGNvbmRpdGlvbmFscyBpbiB2YXJpb3VzIGZvcl9lYWNoIG1hY3Jvcwo+ ICsgKiBAY29uZGl0aW9uIFRoZSBjb25kaXRpb24gdG8gY2hlY2sKPiArICoKPiArICogVHlwaWNh bCB1c2U6Cj4gKyAqICNkZWZpbmUgZm9yX2VhY2hfZm9vX2Jhcih4LCB5KSBcCj4gKyAqCWxpc3Rf Zm9yX2VhY2hfZW50cnkoeCwgeS0+bGlzdCwgaGVhZCkgXAo+ICsgKgkJZm9yX2VhY2hfaWYoeC0+ c29tZXRoaW5nID09IFNPTUVUSElORykKCkkgdGhpbmsgdGhlIGZvcm1hdHRpbmcgb2YgdGhpcyBp biB0aGUgaHRtbCBvdXRwdXQgd2lsbCBsb29rIG9mZjoKRG91YmxlLWNvbG9uIHBsdXMgaW5kZW50 aW5nIHNob3VsZCBmaXggdGhhdC4KCk1lcmdlZCB0aGUgZmlyc3QgMyBwYXRjaGVzIG9mIHRoaXMg c2VyaWVzIHRodXMgZmFyLgoKVGhhbmtzLCBEYW5pZWwKCj4gKyAqCj4gKyAqIFRoZSBmb3JfZWFj aF9pZigpIG1hY3JvIG1ha2VzIHRoZSB1c2Ugb2YgZm9yX2VhY2hfZm9vX2JhcigpIGxlc3MgZXJy b3IKPiArICogcHJvbmUuCj4gKyAqLwo+ICAjZGVmaW5lIGZvcl9lYWNoX2lmKGNvbmRpdGlvbikg aWYgKCEoY29uZGl0aW9uKSkge30gZWxzZQo+ICAKPiArLyoqCj4gKyAqIGRybV9jYW5fc2xlZXAg LSByZXR1cm5zIHRydWUgaWYgY3VycmVudGx5IG9rYXkgdG8gc2xlZXAKPiArICoKPiArICogVGhp cyBmdW5jdGlvbiBzaGFsbCBub3QgYmUgdXNlZCBpbiBuZXcgY29kZS4KPiArICogVGhlIGNoZWNr IGZvciBydW5uaW5nIGluIGF0b21pYyBjb250ZXh0IG1heSBub3Qgd29yayAtIHNlZSBsaW51eC9w cmVlbXB0LmguCj4gKyAqCj4gKyAqIEZJWE1FOiBBbGwgdXNlcnMgb2YgZHJtX2Nhbl9zbGVlcCBz aG91bGQgYmUgcmVtb3ZlZCAoc2VlIHRvZG8ucnN0KQo+ICsgKgo+ICsgKiBSZXR1cm5zOgo+ICsg KiBUcnVlIGlmIGtnZGIgaXMgYWN0aXZlIG9yIHdlIGFyZSBpbiBhbiBhdG9taWMgY29udGV4dCBv ciBpcnFzIGFyZSBkaXNhYmxlZAo+ICsgKi8KPiArc3RhdGljIGlubGluZSBib29sIGRybV9jYW5f c2xlZXAodm9pZCkKPiArewo+ICsJaWYgKGluX2F0b21pYygpIHx8IGluX2RiZ19tYXN0ZXIoKSB8 fCBpcnFzX2Rpc2FibGVkKCkpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsJcmV0dXJuIHRydWU7Cj4g K30KPiArCj4gICNlbmRpZgo+IC0tIAo+IDIuMTIuMAo+IAoKLS0gCkRhbmllbCBWZXR0ZXIKU29m dHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=