From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 54DE7FC590F for ; Thu, 26 Feb 2026 08:56:56 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id ABA5E10E885; Thu, 26 Feb 2026 08:56:55 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=ursulin.net header.i=@ursulin.net header.b="bCf5BvOf"; dkim-atps=neutral Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5236E10E885 for ; Thu, 26 Feb 2026 08:56:54 +0000 (UTC) Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-48370174e18so3233145e9.2 for ; Thu, 26 Feb 2026 00:56:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ursulin.net; s=google; t=1772096213; x=1772701013; darn=lists.freedesktop.org; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=M3pO8yIEbAexJAFnCsvgrzJYhoU8FdG0mP6bKvQFCxc=; b=bCf5BvOfpg27AEqcR2ezBa++HnjTGeEVpVf73D+TsP+d4HBvDKxCgw92MJ1k9ga6Nx 3/z6ycv9LS8Oq7cexEowS0KVQb8PcR8xPw2quEGVml19g08qhotm649lEGZ+b2pqps8c XI+nYQoXxoJ3Vj/wS5q/jLLZuWoUAwujFUWA9xjrc/Hkxc2FTGMPp3NweLL6IxfSt3J9 FlmuxRIyM1VbFHojB0UJ6mYlVSsh1FyWDzZMSJD9TVV29WreQkw56lum6u7cNTp0Fb08 jUP2+Hg8zKNZSv1BS4HedUU/9SO7FmZjt6GcKfQxtElQYhnXdOD8p9zrxkMIZ14hv/Io Eb5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772096213; x=1772701013; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=M3pO8yIEbAexJAFnCsvgrzJYhoU8FdG0mP6bKvQFCxc=; b=BIDhNonNDRuregg8q/VNPNvsgyKPfEA4kincm3452R5ftEsiktJ/rMv7NueulErEc5 oQFHlzAXCdoxoH23kIvO0j1PHLWU1X+W5YTROQgDopbq97krG3OvT/C66zhJdUaLH1c7 qRlIhtfkbTgKwymW4RLpLMa5psUzpY9g3FSLHKUvtWnXPchqYy1M+EY+Q7uSfo16uT9C ls8kX47BKvNbowdym9cwLZayxQxU+Nz/fPMjcctTFf/WFkjr14iNYBnz/V0p51D3C4cz lvT3yEEDgeo6lBd/C2Kx93AjJ/3YCcPez8nKGcwQto3GzbmyMaKmY4n9NpUDQq8iRvXk u7aA== X-Forwarded-Encrypted: i=1; AJvYcCVeD+Ul5RrQrkeYY/qIKyjvzqfR0bAvbYjZjg7rgB4RroUmF91QQTU/4NBBymJeHTOz82Mbmwh0Q3A=@lists.freedesktop.org X-Gm-Message-State: AOJu0YyNsS67ev19lUW9TOIejcJ7ZfGXJjBDHNPfbJGV34v7yeimUMlu zohfivX7ZPAY0dXld9Kz9NFCFAtPlswas4qMRRUE/091VVqndZPQtF3QtL0IR03wMdTkbIc7q04 hx+rwPqI= X-Gm-Gg: ATEYQzwToiC0loCrpNrj11gIDBNCJjVAT3+a0n2zNQXb1EP0TwFDAs5lOEnbep+IKwz lMrV6fVdEqLRpxwwyKslC/8evBNOiZ50eEpE1c+AYl0Xc50y7oOE4ZNY08SyhvX3cV+yt1JeANj t0dcJRZHinOSQQd9YSsuvBMihC6k7CDLbT5soRJEVVQdRZscTdtcodRcGcszPFm5QZGpaUH4SFI sfXcPw/ivzAop4CfcNMrdaBGHpVzkbKI/24dQ6/rkL6PL99aJHFPMtQVrTOfn8gDLXYpn0HF0b6 mxnqZnhACF+0wSOn6U9Hpyz8lO37G3jabQkomCocp5FqhTZwPC0/JOpjncrQ/nZ6hb+Yaj2onBJ x67MxkgVP/xai0Ju9mQzw4KLkLIw453yTWnXrnUy8XXOat1R/Hv0fbGSVGW2V59PZwBe5l/BSmB n6XJF8fsqvVks/1fnxO+3JBFirzty9CWQN3v92Bj7WnraO X-Received: by 2002:a05:600c:3acf:b0:483:6d4a:7e6d with SMTP id 5b1f17b1804b1-483c21a747bmr58697185e9.30.1772096212494; Thu, 26 Feb 2026 00:56:52 -0800 (PST) Received: from [192.168.0.101] ([90.240.106.137]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-483bffc17dasm57003635e9.2.2026.02.26.00.56.51 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 26 Feb 2026 00:56:52 -0800 (PST) Message-ID: Date: Thu, 26 Feb 2026 08:56:51 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4 3/6] drm/ttm: Extract code for attempting allocation in a place From: Tvrtko Ursulin To: Natalie Vock , Maarten Lankhorst , Maxime Ripard , Tejun Heo , Johannes Weiner , =?UTF-8?Q?Michal_Koutn=C3=BD?= , Christian Koenig , Huang Rui , Matthew Auld , Matthew Brost , Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter Cc: cgroups@vger.kernel.org, dri-devel@lists.freedesktop.org References: <20260225-dmemcg-aggressive-protect-v4-0-de847ab35184@gmx.de> <20260225-dmemcg-aggressive-protect-v4-3-de847ab35184@gmx.de> <235fd4f7-dbb7-44c8-9bbc-f1d8297fb8b9@ursulin.net> Content-Language: en-GB In-Reply-To: <235fd4f7-dbb7-44c8-9bbc-f1d8297fb8b9@ursulin.net> Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: base64 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Ck9uIDI1LzAyLzIwMjYgMTU6MjcsIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+IAo+IE9uIDI1LzAy LzIwMjYgMTI6MTAsIE5hdGFsaWUgVm9jayB3cm90ZToKPj4gTW92ZSBhbGwgY29kZSBmb3IgYXR0 ZW1wdGluZyBhbGxvY2F0aW9uIGZvciBhIHNwZWNpZmljIHBsYWNlIHRvCj4+IHR0bV9ib19hbGxv Y19wbGFjZS4gV2l0aCBzdWJzZXF1ZW50IHBhdGNoZXMsIHRoaXMgbG9naWMgaXMgZ29pbmcgdG8g Z2V0Cj4+IG1vcmUgY29tcGxpY2F0ZWQsIHNvIGl0IGhlbHBzIHJlYWRhYmlsaXR5IHRvIGhhdmUg dGhpcyBzZXBhcmF0ZS4KPj4KPj4gdHRtX2JvX2FsbG9jX2F0X3BsYWNlIHRha2VzIGEgcG9pbnRl ciB0byBhIHN0cnVjdCB0dG1fYm9fYWxsb2Nfc3RhdGUuCj4+IFRoaXMgc3RydWN0IGhvbGRzIHZh cmlvdXMgc3RhdGUgcHJvZHVjZWQgYnkgdGhlIGFsbG9jYXRpb24gKGUuZy4gY2dyb3VwCj4+IHJl c291cmNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgYWxsb2NhdGlvbikgdGhhdCB0aGUgY2FsbGVyIG5l ZWRzIHRvIGtlZXAKPj4gdHJhY2sgb2YgKGFuZCBwb3RlbnRpYWxseSBkaXNwb3NlIG9mKS4gVGhp cyBpcyBqdXN0IHRoZSBsaW1pdGluZyBjZ3JvdXAKPj4gcG9vbCBmb3Igbm93LCBidXQgZnV0dXJl IHBhdGNoZXMgd2lsbCBhZGQgbW9yZSBzdGF0ZSBuZWVkaW5nIHRvIGJlIAo+PiB0cmFja2VkLgo+ Pgo+PiB0dG1fYm9fYWxsb2NfYXRfcGxhY2UgYWxzbyBjb21tdW5pY2F0ZXMgdmlhIHJldHVybiBj b2RlcyBpZiBldmljdGlvbgo+PiB1c2luZyB0dG1fYm9fZXZpY3RfYWxsb2Mgc2hvdWxkIGJlIGF0 dGVtcHRlZC4gVGhpcyBpcyBwcmVwYXJhdGlvbiBmb3IKPj4gYXR0ZW1wdGluZyBldmljdGlvbiBp biBtb3JlIGNhc2VzIHRoYW4ganVzdCBmb3JjZV9zcGFjZSBiZWluZyBzZXQuCj4+Cj4+IE5vIGZ1 bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBOYXRhbGllIFZv Y2sgPG5hdGFsaWUudm9ja0BnbXguZGU+Cj4+IC0tLQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vdHRt L3R0bV9iby5jIHwgMTA5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrIAo+PiArLS0t LS0tLS0tLQo+PiDCoCAxIGZpbGUgY2hhbmdlZCwgODQgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRp b25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5jIGIv ZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm8uYwo+PiBpbmRleCBhY2I5MTk3ZGI4Nzk4Li40OGRi YWFhNDY4MjRjIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5jCj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvLmMKPj4gQEAgLTQ4OSw2ICs0ODksMTEg QEAgaW50IHR0bV9ib19ldmljdF9maXJzdChzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwgCj4+IHN0 cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFuCj4+IMKgwqDCoMKgwqAgcmV0dXJuIHJldDsK Pj4gwqAgfQo+PiArc3RydWN0IHR0bV9ib19hbGxvY19zdGF0ZSB7Cj4+ICvCoMKgwqAgLyoqIEBs aW1pdF9wb29sOiBXaGljaCBwb29sIGxpbWl0IHdlIHNob3VsZCB0ZXN0IGFnYWluc3QgKi8KPj4g K8KgwqDCoCBzdHJ1Y3QgZG1lbV9jZ3JvdXBfcG9vbF9zdGF0ZSAqbGltaXRfcG9vbDsKPj4gK307 Cj4+ICsKPj4gwqAgLyoqCj4+IMKgwqAgKiBzdHJ1Y3QgdHRtX2JvX2V2aWN0X3dhbGsgLSBQYXJh bWV0ZXJzIGZvciB0aGUgZXZpY3Qgd2Fsay4KPj4gwqDCoCAqLwo+PiBAQCAtNTA0LDEyICs1MDks MTMgQEAgc3RydWN0IHR0bV9ib19ldmljdF93YWxrIHsKPj4gwqDCoMKgwqDCoCAvKiogQGV2aWN0 ZWQ6IE51bWJlciBvZiBzdWNjZXNzZnVsIGV2aWN0aW9ucy4gKi8KPj4gwqDCoMKgwqDCoCB1bnNp Z25lZCBsb25nIGV2aWN0ZWQ7Cj4+IC3CoMKgwqAgLyoqIEBsaW1pdF9wb29sOiBXaGljaCBwb29s IGxpbWl0IHdlIHNob3VsZCB0ZXN0IGFnYWluc3QgKi8KPj4gLcKgwqDCoCBzdHJ1Y3QgZG1lbV9j Z3JvdXBfcG9vbF9zdGF0ZSAqbGltaXRfcG9vbDsKPj4gwqDCoMKgwqDCoCAvKiogQHRyeV9sb3c6 IFdoZXRoZXIgd2Ugc2hvdWxkIGF0dGVtcHQgdG8gZXZpY3QgQk8ncyB3aXRoIGxvdyAKPj4gd2F0 ZXJtYXJrIHRocmVzaG9sZCAqLwo+PiDCoMKgwqDCoMKgIGJvb2wgdHJ5X2xvdzsKPj4gwqDCoMKg wqDCoCAvKiogQGhpdF9sb3c6IElmIHdlIGNhbm5vdCBldmljdCBhIGJvIHdoZW4gQHRyeV9sb3cg aXMgZmFsc2UgCj4+IChmaXJzdCBwYXNzKSAqLwo+PiDCoMKgwqDCoMKgIGJvb2wgaGl0X2xvdzsK Pj4gKwo+PiArwqDCoMKgIC8qKiBAYWxsb2Nfc3RhdGU6IFN0YXRlIGFzc29jaWF0ZWQgd2l0aCB0 aGUgYWxsb2NhdGlvbiBhdHRlbXB0LiAqLwo+PiArwqDCoMKgIHN0cnVjdCB0dG1fYm9fYWxsb2Nf c3RhdGUgKmFsbG9jX3N0YXRlOwo+PiDCoCB9Owo+PiDCoCBzdGF0aWMgczY0IHR0bV9ib19ldmlj dF9jYihzdHJ1Y3QgdHRtX2xydV93YWxrICp3YWxrLCBzdHJ1Y3QgCj4+IHR0bV9idWZmZXJfb2Jq ZWN0ICpibykKPj4gQEAgLTUxOCw4ICs1MjQsOSBAQCBzdGF0aWMgczY0IHR0bV9ib19ldmljdF9j YihzdHJ1Y3QgdHRtX2xydV93YWxrIAo+PiAqd2Fsaywgc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0 ICoKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRhaW5lcl9vZih3YWxrLCB0eXBlb2YoKmV2aWN0 X3dhbGspLCB3YWxrKTsKPj4gwqDCoMKgwqDCoCBzNjQgbHJldDsKPj4gLcKgwqDCoCBpZiAoIWRt ZW1fY2dyb3VwX3N0YXRlX2V2aWN0X3ZhbHVhYmxlKGV2aWN0X3dhbGstPmxpbWl0X3Bvb2wsIGJv LSAKPj4gPnJlc291cmNlLT5jc3MsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBldmljdF93YWxrLT50cnlfbG93LCAmZXZpY3Rfd2Fsay0+aGl0 X2xvdykpCj4+ICvCoMKgwqAgaWYgKCFkbWVtX2Nncm91cF9zdGF0ZV9ldmljdF92YWx1YWJsZShl dmljdF93YWxrLT5hbGxvY19zdGF0ZS0gCj4+ID5saW1pdF9wb29sLAo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYm8tPnJlc291cmNlLT5jc3Ms IGV2aWN0X3dhbGstPnRyeV9sb3csCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAmZXZpY3Rfd2Fsay0+aGl0X2xvdykpCj4+IMKgwqDCoMKgwqDC oMKgwqDCoCByZXR1cm4gMDsKPj4gwqDCoMKgwqDCoCBpZiAoYm8tPnBpbl9jb3VudCB8fCAhYm8t PmJkZXYtPmZ1bmNzLT5ldmljdGlvbl92YWx1YWJsZShibywgCj4+IGV2aWN0X3dhbGstPnBsYWNl KSkKPj4gQEAgLTU2MSw3ICs1NjgsNyBAQCBzdGF0aWMgaW50IHR0bV9ib19ldmljdF9hbGxvYyhz dHJ1Y3QgdHRtX2RldmljZSAKPj4gKmJkZXYsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCAqY3R4LAo+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggKnRpY2tl dCwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHR0bV9y ZXNvdXJjZSAqKnJlcywKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3Ry dWN0IGRtZW1fY2dyb3VwX3Bvb2xfc3RhdGUgKmxpbWl0X3Bvb2wpCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB0dG1fYm9fYWxsb2Nfc3RhdGUgKnN0YXRlKQo+ PiDCoCB7Cj4+IMKgwqDCoMKgwqAgc3RydWN0IHR0bV9ib19ldmljdF93YWxrIGV2aWN0X3dhbGsg PSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAud2FsayA9IHsKPj4gQEAgLTU3NCw3ICs1ODEsNyBA QCBzdGF0aWMgaW50IHR0bV9ib19ldmljdF9hbGxvYyhzdHJ1Y3QgdHRtX2RldmljZSAKPj4gKmJk ZXYsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAucGxhY2UgPSBwbGFjZSwKPj4gwqDCoMKgwqDCoMKg wqDCoMKgIC5ldmljdG9yID0gZXZpY3RvciwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIC5yZXMgPSBy ZXMsCj4+IC3CoMKgwqDCoMKgwqDCoCAubGltaXRfcG9vbCA9IGxpbWl0X3Bvb2wsCj4+ICvCoMKg wqDCoMKgwqDCoCAuYWxsb2Nfc3RhdGUgPSBzdGF0ZSwKPj4gwqDCoMKgwqDCoCB9Owo+PiDCoMKg wqDCoMKgIHM2NCBscmV0Owo+PiBAQCAtNjg5LDYgKzY5Niw1OCBAQCBzdGF0aWMgaW50IAo+PiB0 dG1fYm9fYWRkX3BpcGVsaW5lZF9ldmljdGlvbl9mZW5jZXMoc3RydWN0IHR0bV9idWZmZXJfb2Jq ZWN0ICpibywKPj4gwqDCoMKgwqDCoCByZXR1cm4gZG1hX3Jlc3ZfcmVzZXJ2ZV9mZW5jZXMoYm8t PmJhc2UucmVzdiwgMSk7Cj4+IMKgIH0KPj4gKwo+PiArLyoqCj4+ICsgKiB0dG1fYm9fYWxsb2Nf YXRfcGxhY2UgLSBBdHRlbXB0IGFsbG9jYXRpbmcgYSBCTydzIGJhY2tpbmcgc3RvcmUgaW4gCj4+ IGEgcGxhY2UKPj4gKyAqCj4+ICsgKiBAYm86IFRoZSBidWZmZXIgdG8gYWxsb2NhdGUgdGhlIGJh Y2tpbmcgc3RvcmUgb2YKPj4gKyAqIEBwbGFjZTogVGhlIHBsYWNlIHRvIGF0dGVtcHQgYWxsb2Nh dGlvbiBpbgo+PiArICogQGN0eDogdHRtX29wZXJhdGlvbl9jdHggYXNzb2NpYXRlZCB3aXRoIHRo aXMgYWxsb2NhdGlvbgo+PiArICogQGZvcmNlX3NwYWNlOiBJZiB3ZSBzaG91bGQgZXZpY3QgYnVm ZmVycyB0byBmb3JjZSBzcGFjZQo+PiArICogQHJlczogT24gYWxsb2NhdGlvbiBzdWNjZXNzLCB0 aGUgcmVzdWx0aW5nIHN0cnVjdCB0dG1fcmVzb3VyY2UuCj4+ICsgKiBAYWxsb2Nfc3RhdGU6IE9i amVjdCBob2xkaW5nIGFsbG9jYXRpb24gc3RhdGUgc3VjaCBhcyBjaGFyZ2VkIAo+PiBjZ3JvdXBz Lgo+PiArICoKPj4gKyAqIFJldHVybnM6Cj4+ICsgKiAtRUJVU1k6IE5vIHNwYWNlIGF2YWlsYWJs ZSwgYnV0IGFsbG9jYXRpb24gc2hvdWxkIGJlIHJldHJpZWQgd2l0aCAKPj4gdHRtX2JvX2V2aWN0 X2FsbG9jLgo+PiArICogLUVOT1NQQzogTm8gc3BhY2UgYXZhaWxhYmxlLCBhbGxvY2F0aW9uIHNo b3VsZCBub3QgYmUgcmV0cmllZC4KPj4gKyAqIC1FUkVTVEFSVFNZUzogQW4gaW50ZXJydXB0aWJs ZSBzbGVlcCB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwuCj4+ICsgKgo+PiArICovCj4+ICtz dGF0aWMgaW50IHR0bV9ib19hbGxvY19hdF9wbGFjZShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3Qg KmJvLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3Qgc3RydWN0IHR0 bV9wbGFjZSAqcGxhY2UsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1 Y3QgdHRtX29wZXJhdGlvbl9jdHggKmN0eCwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGJvb2wgZm9yY2Vfc3BhY2UsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzdHJ1Y3QgdHRtX3Jlc291cmNlICoqcmVzLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgc3RydWN0IHR0bV9ib19hbGxvY19zdGF0ZSAqYWxsb2Nfc3RhdGUpCj4+ICt7 Cj4+ICvCoMKgwqAgYm9vbCBtYXlfZXZpY3Q7Cj4+ICvCoMKgwqAgaW50IHJldDsKPj4gKwo+PiAr wqDCoMKgIG1heV9ldmljdCA9IChmb3JjZV9zcGFjZSAmJiBwbGFjZS0+bWVtX3R5cGUgIT0gVFRN X1BMX1NZU1RFTSk7Cj4+ICsKPj4gK8KgwqDCoCByZXQgPSB0dG1fcmVzb3VyY2VfYWxsb2MoYm8s IHBsYWNlLCByZXMsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmb3JjZV9z cGFjZSA/ICZhbGxvY19zdGF0ZS0+bGltaXRfcG9vbCA6IE5VTEwpOwo+PiArCj4+ICvCoMKgwqAg aWYgKHJldCkgewo+PiArwqDCoMKgwqDCoMKgwqAgLyoKPj4gK8KgwqDCoMKgwqDCoMKgwqAgKiAt RUFHQUlOIG1lYW5zIHRoZSBjaGFyZ2UgZmFpbGVkLCB3aGljaCB3ZSB0cmVhdCBsaWtlIGFuCj4+ ICvCoMKgwqDCoMKgwqDCoMKgICogYWxsb2NhdGlvbiBmYWlsdXJlLiBUaGVyZWZvcmUsIHJldHVy biBhbiBlcnJvciBjb2RlIAo+PiBpbmRpY2F0aW5nCj4+ICvCoMKgwqDCoMKgwqDCoMKgICogdGhl IGFsbG9jYXRpb24gZmFpbGVkIC0gZWl0aGVyIC1FQlVTWSBpZiB0aGUgYWxsb2NhdGlvbiAKPj4g c2hvdWxkCj4+ICvCoMKgwqDCoMKgwqDCoMKgICogYmUgcmV0cmllZCB3aXRoIGV2aWN0aW9uLCBv ciAtRU5PU1BDIGlmIHRoZXJlIHNob3VsZCBiZSBubyAKPj4gc2Vjb25kCj4+ICvCoMKgwqDCoMKg wqDCoMKgICogYXR0ZW1wdC4KPj4gK8KgwqDCoMKgwqDCoMKgwqAgKi8KPiAKPiBBaCBoYXZpbmcg c3RhcnRlZCByZWFkaW5nIDQvNiBJIHNlZSB0aGlzIGNvbW1lbnQgYWN0dWFsbHkgaXMgb25lIHBh dGNoIAo+IHByZW1hdHVyZS4gU28gcGxlYXNlIGZpeCB0aGF0IGFuZCBrZWVwIG15IHItYi4KCk9y IHBlcmhhcHMgeW91IGFyZSB0YWxraW5nIGFib3V0IGNoYXJnZSBoZXJlLCBub3QgYmVjYXVzZSBp biBhIGxhdGVyIApwYXRjaCB0aGUgY2FsbCB0byB0cnkgY2hhcmdlIGlzIHB1dCByaWdodCBoZXJl LCBidXQgYmVjYXVzZSBldmVuIG5vdyBpdCAKaXMgaGFwcGVuaW5nIGluc2lkZSB0aGUgdHRtX3Jl c291cmNlX2FsbG9jPyBJIGd1ZXNzIHRoYXQncyBwYXNzYWJsZSAKYWx0aG91Z2ggbm90IGltbWVk aWF0ZWx5IG9idmlvdXMgZnJvbSBqdXN0IHRoZSBjb250ZXh0IG9mIHRoaXMgZnVuY3Rpb24uIApP a2F5LCBJIHRoaW5rIHRoZSBjb21tZW50IGNhbiBzdGF5IGFzIGlzIHNpbmNlIGluIHRoZSBuZXh0 IHBhdGNoIGl0IApiZWNvbWVzIGltbWVkaWF0ZWx5IG9idmlvdXMsIHNvcnJ5IGZvciB0aGUgbm9p c2UuCgpSZWdhcmRzLAoKVHZydGtvCgo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKHJldCA9PSAtRUFH QUlOKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gbWF5X2V2aWN0ID8gLUVCVVNZ IDogLUVOT1NQQzsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKHJldCA9PSAtRU5PU1BDICYm IG1heV9ldmljdCkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FQlVTWTsKPj4g Kwo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8Kg wqDCoCByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiDCoCAvKioKPj4gwqDCoCAqIHR0bV9ib19hbGxv Y19yZXNvdXJjZSAtIEFsbG9jYXRlIGJhY2tpbmcgc3RvcmUgZm9yIGEgQk8KPj4gwqDCoCAqCj4+ IEBAIC03MTQsNyArNzczLDkgQEAgc3RhdGljIGludCB0dG1fYm9fYWxsb2NfcmVzb3VyY2Uoc3Ry dWN0IAo+PiB0dG1fYnVmZmVyX29iamVjdCAqYm8sCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBib29sIGZvcmNlX3NwYWNlLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0IHR0bV9yZXNvdXJjZSAqKnJlcykKPj4gwqAgewo+PiArwqDC oMKgIHN0cnVjdCB0dG1fYm9fYWxsb2Nfc3RhdGUgYWxsb2Nfc3RhdGUgPSB7MH07Cj4+IMKgwqDC oMKgwqAgc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYgPSBiby0+YmRldjsKPj4gK8KgwqDCoCBzdHJ1 Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbjsKPj4gwqDCoMKgwqDCoCBzdHJ1Y3Qgd3dfYWNx dWlyZV9jdHggKnRpY2tldDsKPj4gwqDCoMKgwqDCoCBpbnQgaSwgcmV0Owo+PiBAQCAtNzI1LDkg Kzc4Niw2IEBAIHN0YXRpYyBpbnQgdHRtX2JvX2FsbG9jX3Jlc291cmNlKHN0cnVjdCAKPj4gdHRt X2J1ZmZlcl9vYmplY3QgKmJvLAo+PiDCoMKgwqDCoMKgIGZvciAoaSA9IDA7IGkgPCBwbGFjZW1l bnQtPm51bV9wbGFjZW1lbnQ7ICsraSkgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3Qgc3Ry dWN0IHR0bV9wbGFjZSAqcGxhY2UgPSAmcGxhY2VtZW50LT5wbGFjZW1lbnRbaV07Cj4+IC3CoMKg wqDCoMKgwqDCoCBzdHJ1Y3QgZG1lbV9jZ3JvdXBfcG9vbF9zdGF0ZSAqbGltaXRfcG9vbCA9IE5V TEw7Cj4+IC3CoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbjsK Pj4gLcKgwqDCoMKgwqDCoMKgIGJvb2wgbWF5X2V2aWN0Owo+PiDCoMKgwqDCoMKgwqDCoMKgwqAg bWFuID0gdHRtX21hbmFnZXJfdHlwZShiZGV2LCBwbGFjZS0+bWVtX3R5cGUpOwo+PiDCoMKgwqDC oMKgwqDCoMKgwqAgaWYgKCFtYW4gfHwgIXR0bV9yZXNvdXJjZV9tYW5hZ2VyX3VzZWQobWFuKSkK Pj4gQEAgLTczNywyNSArNzk1LDI2IEBAIHN0YXRpYyBpbnQgdHRtX2JvX2FsbG9jX3Jlc291cmNl KHN0cnVjdCAKPj4gdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVFRNX1BMX0ZMQUdfRkFMTEJBQ0spKQo+PiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsKPj4gLcKgwqDCoMKgwqDCoMKgIG1heV9ldmlj dCA9IChmb3JjZV9zcGFjZSAmJiBwbGFjZS0+bWVtX3R5cGUgIT0gVFRNX1BMX1NZU1RFTSk7Cj4+ IC3CoMKgwqDCoMKgwqDCoCByZXQgPSB0dG1fcmVzb3VyY2VfYWxsb2MoYm8sIHBsYWNlLCByZXMs IGZvcmNlX3NwYWNlID8gCj4+ICZsaW1pdF9wb29sIDogTlVMTCk7Cj4+IC3CoMKgwqDCoMKgwqDC oCBpZiAocmV0KSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyZXQgIT0gLUVOT1NQ QyAmJiByZXQgIT0gLUVBR0FJTikgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGRtZW1fY2dyb3VwX3Bvb2xfc3RhdGVfcHV0KGxpbWl0X3Bvb2wpOwo+PiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg IH0KPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCFtYXlfZXZpY3QpIHsKPj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkbWVtX2Nncm91cF9wb29sX3N0YXRlX3B1dChsaW1p dF9wb29sKTsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsKPj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0ID0gdHRtX2Jv X2FsbG9jX2F0X3BsYWNlKGJvLCBwbGFjZSwgY3R4LCBmb3JjZV9zcGFjZSwKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXMsICZhbGxvY19zdGF0ZSk7Cj4+ICvCoMKgwqDCoMKg wqDCoCBpZiAocmV0ID09IC1FTk9TUEMpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZG1l bV9jZ3JvdXBfcG9vbF9zdGF0ZV9wdXQoYWxsb2Nfc3RhdGUubGltaXRfcG9vbCk7Cj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOwo+PiArwqDCoMKgwqDCoMKgwqAgfSBlbHNlIGlm IChyZXQgPT0gLUVCVVNZKSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IHR0 bV9ib19ldmljdF9hbGxvYyhiZGV2LCBtYW4sIHBsYWNlLCBibywgY3R4LAo+PiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRpY2tldCwgcmVzLCBsaW1p dF9wb29sKTsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZG1lbV9jZ3JvdXBfcG9vbF9zdGF0 ZV9wdXQobGltaXRfcG9vbCk7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyZXQgPT0g LUVCVVNZKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHRpY2tldCwgcmVzLCAmYWxsb2Nfc3RhdGUpOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGRtZW1fY2dyb3VwX3Bvb2xfc3RhdGVfcHV0KGFsbG9jX3N0YXRlLmxpbWl0X3Bvb2wp Owo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyZXQpIHsKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocmV0ICE9IC1FQlVTWSkKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGludWU7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGlmIChyZXQpCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgwqDCoMKgwqAgfSBlbHNlIGlm IChyZXQpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZG1lbV9jZ3JvdXBfcG9vbF9zdGF0 ZV9wdXQoYWxsb2Nfc3RhdGUubGltaXRfcG9vbCk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHJldHVybiByZXQ7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IMKgwqDCoMKgwqDCoMKgwqDC oCByZXQgPSB0dG1fYm9fYWRkX3BpcGVsaW5lZF9ldmljdGlvbl9mZW5jZXMoYm8sIG1hbiwgY3R4 LSAKPj4gPm5vX3dhaXRfZ3B1KTsKPj4KPiAKCg==