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 34952CD4F5B for ; Fri, 22 May 2026 10:56:25 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 4014C10E1DD; Fri, 22 May 2026 10:56:24 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="Pc8aGyIv"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) by gabe.freedesktop.org (Postfix) with ESMTPS id E91E410E1DD; Fri, 22 May 2026 10:56:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1779447383; x=1810983383; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=0Le0sGFW5ovhB8eKgEXc5RLsefQ8SHAlMFFuEGoI4Vc=; b=Pc8aGyIvemNO9F0pFs6HhpMDYZUoOoJUEtWK0+51LYIlZUtl7qRSDhq8 D5OaXD7kbUxkG5LiElCY+ThoKo/GOCkXv5Yza4mhq41k0sECz3qPgf3M5 l1izre/HoOZ2XiItJYf4tshaCRi6tgklqtoeZxshsjXn0oRwZ9hHa3G31 W65wQgr0PT7UoyiUrKTVtwgiuefVbuub7ltsg3qZJOeb1D3TkrwkHdMpB noj5MrkK+eP2IRMYk7NuswF6hqJw44vX9D5/73P+2byzaBwu6Y0gCIu/1 2+DE4p2JIVK7q2cRh7gw2DYluwahxVFtZnZPpRyNyViNkBr5i8uzTqay/ A==; X-CSE-ConnectionGUID: F+A3INnXSR2IqtrFSgjdQg== X-CSE-MsgGUID: GTjoH9+wQQSV7N73Xo5xpQ== X-IronPort-AV: E=McAfee;i="6800,10657,11793"; a="67900536" X-IronPort-AV: E=Sophos;i="6.24,162,1774335600"; d="scan'208";a="67900536" Received: from orviesa009.jf.intel.com ([10.64.159.149]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 May 2026 03:56:23 -0700 X-CSE-ConnectionGUID: KJVwhtpBQJO8AznvVV+uEA== X-CSE-MsgGUID: LUNH2tLtQSSVPJY1xsUFZg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.24,162,1774335600"; d="scan'208";a="240937052" Received: from kniemiec-mobl1.ger.corp.intel.com (HELO [10.245.245.22]) ([10.245.245.22]) by orviesa009-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 May 2026 03:56:21 -0700 Message-ID: <38cc3449-b51a-4b54-bed8-8802e7b37299@intel.com> Date: Fri, 22 May 2026 11:56:18 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4 5/5] gpu/buddy: Track per-order used blocks with a scoreboard To: Arunpravin Paneer Selvam , Francois Dugast , intel-xe@lists.freedesktop.org Cc: dri-devel@lists.freedesktop.org References: <20260522092600.32818-1-francois.dugast@intel.com> <20260522092600.32818-6-francois.dugast@intel.com> Content-Language: en-GB From: Matthew Auld In-Reply-To: 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" T24gMjIvMDUvMjAyNiAxMToyNSwgQXJ1bnByYXZpbiBQYW5lZXIgU2VsdmFtIHdyb3RlOgo+IAo+ IAo+IE9uIDUvMjIvMjAyNiAyOjU1IFBNLCBGcmFuY29pcyBEdWdhc3Qgd3JvdGU6Cj4+IEV4dGVu ZCB0aGUgc2NvcmVib2FyZCBhcHByb2FjaCBmcm9tIHRoZSBwcmV2aW91cyBjb21taXQgdG8gdXNl ZCBibG9ja3MsCj4+IHNvIGRybV9idWRkeV9wcmludCgpIGNhbiByZXBvcnQgcGVyLW9yZGVyIGFs bG9jYXRpb24gcHJlc3N1cmUgaW4gTygxKS4KPj4KPj4gVW5saWtlIGZyZWUgYmxvY2tzLCBhbiBh bGxvY2F0ZWQgYmxvY2sgY2FuIGxlYXZlIHRoZSBhbGxvY2F0ZWQgc3RhdGUKPj4gdGhyb3VnaCBt YXJrX2ZyZWUoKSAobm9ybWFsIGZyZWUgYW5kIGdwdV9idWRkeV9ibG9ja190cmltKCkpIG9yIGJl Cj4+IGNvbnN1bWVkIGRpcmVjdGx5IGJ5IGdwdV9ibG9ja19mcmVlKCkgZHVyaW5nIGNvYWxlc2Np bmcuIEJvdGggc2l0ZXMgYXJlCj4+IGd1YXJkZWQgYnkgZ3B1X2J1ZGR5X2Jsb2NrX2lzX2FsbG9j YXRlZCgpIGFuZCBwYWlyZWQgd2l0aCB0aGUgaW5jcmVtZW50Cj4+IGluIG1hcmtfYWxsb2NhdGVk KCkuCj4+Cj4+IHYzOgo+PiAtIEFzc2VydCBzY29yZWJvYXJkIGlzIGVtcHR5IGF0IGZpbmkoKSwg YXMgc2FuaXR5IGNoZWNrIChNYXR0aGV3IEF1bGQpCj4+Cj4+IHYyOgo+PiAtIFVwZGF0ZSBhZnRl ciBmaXggZm9yIHVzZS1hZnRlci1mcmVlIGluIHNwbGl0X2Jsb2NrKCkgY2FsbCBzaXRlcwo+PiAt IENoYW5nZSBnb3RvIGxhYmVsIHRvIG91dF9mcmVlX3VzZWRfc2NvcmVib2FyZCBmb3IgY2xhcml0 eQo+PiAtIE1ha2UgZHJtX2J1ZGR5X3ByaW50KCkgYW5kIGdwdV9idWRkeV9wcmludCgpIHN5bW1l dHJpYyBmb3IgdXNlZCBhbmQKPj4gwqDCoCBmcmVlCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IEZyYW5j b2lzIER1Z2FzdCA8ZnJhbmNvaXMuZHVnYXN0QGludGVsLmNvbT4KPj4gQXNzaXN0ZWQtYnk6IEdp dEh1YiBDb3BpbG90OmNsYXVkZS1zb25uZXQtNC42Cj4+IFJldmlld2VkLWJ5OiBNYXR0aGV3IEF1 bGQgPG1hdHRoZXcuYXVsZEBpbnRlbC5jb20+Cj4+IC0tLQo+PiDCoCBkcml2ZXJzL2dwdS9idWRk eS5jwqDCoMKgwqDCoMKgwqDCoCB8IDQyICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0t LS0tLS0KPj4gwqAgZHJpdmVycy9ncHUvZHJtL2RybV9idWRkeS5jIHwgMTggKysrKysrKysrKy0t LS0tLQo+PiDCoCBpbmNsdWRlL2xpbnV4L2dwdV9idWRkeS5owqDCoCB8wqAgOCArKysrKysrCj4+ IMKgIDMgZmlsZXMgY2hhbmdlZCwgNTIgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCj4+ Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9idWRkeS5jIGIvZHJpdmVycy9ncHUvYnVkZHku Ywo+PiBpbmRleCBkZTE4YjYzZmVmMGEuLmRjODFmZTAzMDFjZSAxMDA2NDQKPj4gLS0tIGEvZHJp dmVycy9ncHUvYnVkZHkuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9idWRkeS5jCj4+IEBAIC0xOTQs NiArMTk0LDcgQEAgc3RhdGljIHZvaWQgbWFya19hbGxvY2F0ZWQoc3RydWN0IGdwdV9idWRkeSAq bW0sCj4+IMKgwqDCoMKgwqAgYmxvY2stPmhlYWRlciB8PSBHUFVfQlVERFlfQUxMT0NBVEVEOwo+ PiDCoMKgwqDCoMKgIG1tLT5mcmVlX3Njb3JlYm9hcmRbZ3B1X2J1ZGR5X2Jsb2NrX29yZGVyKGJs b2NrKV0tLTsKPj4gK8KgwqDCoCBtbS0+dXNlZF9zY29yZWJvYXJkW2dwdV9idWRkeV9ibG9ja19v cmRlcihibG9jayldKys7Cj4gVGhlIG1haW4gY29uc3VtZXIgb2YgZnJlZV9zY29yZWJvYXJkIGFu ZCB1c2VkX3Njb3JlYm9hcmQgaXMgCj4gZ3B1X2J1ZGR5X3ByaW50KCksIHdoaWNoIGlzIGEgZGVi dWcvZGlhZ25vc3RpYyBwYXRoIC0gaXQgb25seSBnZXRzIAo+IGNhbGxlZCBkdXJpbmcgZGVidWdm cyByZWFkcyBvciBlcnJvciBzdGF0ZSBkdW1wcywgbm90IGR1cmluZyByZWd1bGFyIAo+IG9wZXJh dGlvbi4KPiBIb3dldmVyLCB0aGUgY29zdCBvZiBtYWludGFpbmluZyB0aGVzZSBzY29yZWJvYXJk cyBpcyBwYWlkIG9uIGV2ZXJ5IAo+IGFsbG9jIGFuZCBmcmVlLCB3aGljaCBpcyB0aGUgaG90IHBh dGggb2YgdGhlIGFsbG9jYXRvci4gRXZlbiB0aG91Z2ggZWFjaCAKPiBpbmRpdmlkdWFsIHVwZGF0 ZSBpcyBzbWFsbCwgZG8gd2UgcmVhbGx5IG5lZWQgdG8gYWRkIGV4dHJhIHdvcmsgdG8gdGhlCj4g aG90IHBhdGggZm9yIHNvbWV0aGluZyB0aGF0IG9ubHkgYmVuZWZpdHMgYSByYXJlbHktY2FsbGVk IGRlYnVnIGZ1bmN0aW9uPwo+IEFtIEkgbWlzc2luZyBhIHVzZSBjYXNlIHRoYXQganVzdGlmaWVz IHRoZSBob3QtcGF0aCBvdmVyaGVhZD8KClRoZSB1c2VjYXNlIEkgb3JpZ2luYWxseSBzYXcgaW52 b2x2ZWQgc2FtcGxpbmcgdGhpcyBmcmVxdWVudGx5IGR1cmluZyBhIApydW5uaW5nIHdvcmtsb2Fk IHRvIGhlbHAgY29sbGVjdCBzb21lIHJ1bm5pbmcgc3RhdHMuIEZvciBleGFtcGxlIHRvIApnZW5l cmF0ZSBhIGdyYXBoIG9mIHRoZSAicGFnZSB1c2FnZSIgb3ZlciB0aW1lLiBTbyBpcyB0aGVyZSBs b3RzIG9mIApzbWFsbGVyIG9yZGVyIHVzYWdlIChiYWQpLCBvciBkbyB3ZSBnZXQgbW9zdGx5IGxh cmdlciBwYWdlIG9yZGVycyAKKGdvb2QpLCBkbyB3ZSBzZWUgc3Bpa2VzIHdlIGFsbCBvZiBzdWRk ZW4gd2Ugc3RhcnQgZ2V0dGluZyBzbWFsbGVyIGFuZCAKc21hbGxlciBvcmRlcnMsIHBlcmhhcHMg ZHVlIHRvIGZyYWdtZW50YXRpb24/IEluIGdlbmVyYWwgd2UganVzdCB3YW50ZWQgCnNvbWUgbW9y ZSB2aXNpYmlsaXR5IHRvIGdldCBhIGJldHRlciBzZW5zZSBvZiB0aGUgInBhZ2UgdXNhZ2UiIGF0 IApydW50aW1lLiBBdCB0aGUgbW9tZW50IHdlIGRvbid0IGhhdmUgbXVjaCB2aXNpYmlsaXR5IGlu dG8gd2hhdCBwYWdlIApzaXplcyB3ZSBhcmUgYWN0dWFsbHkgZ2V0dGluZyBmcm9tIHRoZSBhbGxv Y2F0b3IsIG92ZXIgdGltZS4KCldlIG9yaWdpbmFsbHkgaGFkIHRoaXMgYXQgdGhpcyBhdCB0aGUg ZHJpdmVyIGxldmVsLCBidXQgaXQncyBub3QgcXVpdGUgCmFzIG5pY2UgaW1wbGVtZW50YXRpb24g d2lzZSwgcGx1cyBoYXZpbmcgaXQgaW4gdGhlIGFsbG9jYXRvciBjb3VsZCB0aGVuIApiZSBiZW5l ZmljaWFsIHRvIG90aGVyIGRyaXZlcnM/IEFsc28gdGhlIGFkZGVkIGNvc3QgZGlkIG5vdCBzZWVt IHRvbyAKYmFkLCBpdCdzIGp1c3QgaW5jcmVtZW50aW5nL2RlY3JlbWVudGluZyBhIGNvdW50ZXIu IFdoYXQgZG8geW91IHRoaW5rIGhlcmU/Cgo+IAo+IFJlZ2FyZHMsCj4gQXJ1bi4KPj4gwqDCoMKg wqDCoCByYnRyZWVfcmVtb3ZlKG1tLCBibG9jayk7Cj4+IMKgIH0KPj4gQEAgLTIwMyw2ICsyMDQs OSBAQCBzdGF0aWMgdm9pZCBtYXJrX2ZyZWUoc3RydWN0IGdwdV9idWRkeSAqbW0sCj4+IMKgIHsK Pj4gwqDCoMKgwqDCoCBlbnVtIGdwdV9idWRkeV9mcmVlX3RyZWUgdHJlZTsKPj4gK8KgwqDCoCBp ZiAoZ3B1X2J1ZGR5X2Jsb2NrX2lzX2FsbG9jYXRlZChibG9jaykpCj4+ICvCoMKgwqDCoMKgwqDC oCBtbS0+dXNlZF9zY29yZWJvYXJkW2dwdV9idWRkeV9ibG9ja19vcmRlcihibG9jayldLS07Cj4+ ICsKPj4gwqDCoMKgwqDCoCBibG9jay0+aGVhZGVyICY9IH5HUFVfQlVERFlfSEVBREVSX1NUQVRF Owo+PiDCoMKgwqDCoMKgIGJsb2NrLT5oZWFkZXIgfD0gR1BVX0JVRERZX0ZSRUU7Cj4+IEBAIC0y ODEsNiArMjg1LDkgQEAgc3RhdGljIHVuc2lnbmVkIGludCBfX2dwdV9idWRkeV9mcmVlKHN0cnVj dCAKPj4gZ3B1X2J1ZGR5ICptbSwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChmb3JjZV9tZXJn ZSAmJiBncHVfYnVkZHlfYmxvY2tfaXNfY2xlYXIoYnVkZHkpKQo+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBtbS0+Y2xlYXJfYXZhaWwgLT0gZ3B1X2J1ZGR5X2Jsb2NrX3NpemUobW0sIGJ1 ZGR5KTsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChncHVfYnVkZHlfYmxvY2tfaXNfYWxsb2NhdGVk KGJsb2NrKSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbW0tPnVzZWRfc2NvcmVib2FyZFtn cHVfYnVkZHlfYmxvY2tfb3JkZXIoYmxvY2spXS0tOwo+PiArCj4+IMKgwqDCoMKgwqDCoMKgwqDC oCBncHVfYmxvY2tfZnJlZShtbSwgYmxvY2spOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZ3B1X2Js b2NrX2ZyZWUobW0sIGJ1ZGR5KTsKPj4gQEAgLTM5OCwxMSArNDA1LDE3IEBAIGludCBncHVfYnVk ZHlfaW5pdChzdHJ1Y3QgZ3B1X2J1ZGR5ICptbSwgdTY0IAo+PiBzaXplLCB1NjQgY2h1bmtfc2l6 ZSkKPj4gwqDCoMKgwqDCoCBpZiAoIW1tLT5mcmVlX3Njb3JlYm9hcmQpCj4+IMKgwqDCoMKgwqDC oMKgwqDCoCByZXR1cm4gLUVOT01FTTsKPj4gK8KgwqDCoCBtbS0+dXNlZF9zY29yZWJvYXJkID0g a2NhbGxvYyhtbS0+bWF4X29yZGVyICsgMSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBzaXplb2YoKm1tLT51c2VkX3Njb3JlYm9hcmQpLAo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdGUF9LRVJORUwpOwo+PiArwqDC oMKgIGlmICghbW0tPnVzZWRfc2NvcmVib2FyZCkKPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gb3V0 X2ZyZWVfZnJlZV9zY29yZWJvYXJkOwo+PiArCj4+IMKgwqDCoMKgwqAgbW0tPmZyZWVfdHJlZXMg PSBrbWFsbG9jX2FycmF5KEdQVV9CVUREWV9NQVhfRlJFRV9UUkVFUywKPj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNpemVvZigqbW0tPmZyZWVfdHJl ZXMpLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg R0ZQX0tFUk5FTCk7Cj4+IMKgwqDCoMKgwqAgaWYgKCFtbS0+ZnJlZV90cmVlcykKPj4gLcKgwqDC oMKgwqDCoMKgIGdvdG8gb3V0X2ZyZWVfc2NvcmVib2FyZDsKPj4gK8KgwqDCoMKgwqDCoMKgIGdv dG8gb3V0X2ZyZWVfdXNlZF9zY29yZWJvYXJkOwo+PiDCoMKgwqDCoMKgIGZvcl9lYWNoX2ZyZWVf dHJlZShpKSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBtbS0+ZnJlZV90cmVlc1tpXSA9IGttYWxs b2NfYXJyYXkobW0tPm1heF9vcmRlciArIDEsCj4+IEBAIC00NjQsNyArNDc3LDkgQEAgaW50IGdw dV9idWRkeV9pbml0KHN0cnVjdCBncHVfYnVkZHkgKm1tLCB1NjQgc2l6ZSwgCj4+IHU2NCBjaHVu a19zaXplKQo+PiDCoMKgwqDCoMKgIHdoaWxlIChpLS0pCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBr ZnJlZShtbS0+ZnJlZV90cmVlc1tpXSk7Cj4+IMKgwqDCoMKgwqAga2ZyZWUobW0tPmZyZWVfdHJl ZXMpOwo+PiAtb3V0X2ZyZWVfc2NvcmVib2FyZDoKPj4gK291dF9mcmVlX3VzZWRfc2NvcmVib2Fy ZDoKPj4gK8KgwqDCoCBrZnJlZShtbS0+dXNlZF9zY29yZWJvYXJkKTsKPj4gK291dF9mcmVlX2Zy ZWVfc2NvcmVib2FyZDoKPj4gwqDCoMKgwqDCoCBrZnJlZShtbS0+ZnJlZV9zY29yZWJvYXJkKTsK Pj4gwqDCoMKgwqDCoCByZXR1cm4gLUVOT01FTTsKPj4gwqAgfQo+PiBAQCAtNTAwLDExICs1MTUs MTUgQEAgdm9pZCBncHVfYnVkZHlfZmluaShzdHJ1Y3QgZ3B1X2J1ZGR5ICptbSkKPj4gwqDCoMKg wqDCoCBncHVfYnVkZHlfYXNzZXJ0KG1tLT5hdmFpbCA9PSBtbS0+c2l6ZSk7Cj4+ICvCoMKgwqAg Zm9yIChpID0gMDsgaSA8PSBtbS0+bWF4X29yZGVyOyArK2kpCj4+ICvCoMKgwqDCoMKgwqDCoCBn cHVfYnVkZHlfYXNzZXJ0KCFtbS0+dXNlZF9zY29yZWJvYXJkW2ldKTsKPj4gKwo+PiDCoMKgwqDC oMKgIGZvcl9lYWNoX2ZyZWVfdHJlZShpKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAga2ZyZWUobW0t PmZyZWVfdHJlZXNbaV0pOwo+PiDCoMKgwqDCoMKgIGtmcmVlKG1tLT5mcmVlX3RyZWVzKTsKPj4g wqDCoMKgwqDCoCBrZnJlZShtbS0+cm9vdHMpOwo+PiDCoMKgwqDCoMKgIGtmcmVlKG1tLT5mcmVl X3Njb3JlYm9hcmQpOwo+PiArwqDCoMKgIGtmcmVlKG1tLT51c2VkX3Njb3JlYm9hcmQpOwo+PiDC oCB9Cj4+IMKgIEVYUE9SVF9TWU1CT0woZ3B1X2J1ZGR5X2ZpbmkpOwo+PiBAQCAtMTUwNSwxNSAr MTUyNCwxOCBAQCB2b2lkIGdwdV9idWRkeV9wcmludChzdHJ1Y3QgZ3B1X2J1ZGR5ICptbSkKPj4g wqDCoMKgwqDCoMKgwqDCoMKgIG1tLT5jaHVua19zaXplID4+IDEwLCBtbS0+c2l6ZSA+PiAyMCwg bW0tPmF2YWlsID4+IDIwLCBtbS0gCj4+ID5jbGVhcl9hdmFpbCA+PiAyMCk7Cj4+IMKgwqDCoMKg wqAgZm9yIChvcmRlciA9IG1tLT5tYXhfb3JkZXI7IG9yZGVyID49IDA7IG9yZGVyLS0pIHsKPj4g LcKgwqDCoMKgwqDCoMKgIHU2NCBjb3VudCA9IG1tLT5mcmVlX3Njb3JlYm9hcmRbb3JkZXJdOwo+ PiAtwqDCoMKgwqDCoMKgwqAgdTY0IGZyZWUgPSBjb3VudCAqIChtbS0+Y2h1bmtfc2l6ZSA8PCBv cmRlcik7Cj4+IC0KPj4gLcKgwqDCoMKgwqDCoMKgIGlmIChmcmVlIDwgU1pfMU0pCj4+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHByX2luZm8oIm9yZGVyLSUyZCBmcmVlOiAlOGxsdSBLaUIsIGJs b2NrczogJWxsdVxuIiwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvcmRlciwg ZnJlZSA+PiAxMCwgY291bnQpOwo+PiArwqDCoMKgwqDCoMKgwqAgdTY0IGZyZWVfY291bnQgPSBt bS0+ZnJlZV9zY29yZWJvYXJkW29yZGVyXTsKPj4gK8KgwqDCoMKgwqDCoMKgIHU2NCB1c2VkX2Nv dW50ID0gbW0tPnVzZWRfc2NvcmVib2FyZFtvcmRlcl07Cj4+ICvCoMKgwqDCoMKgwqDCoCB1NjQg YmxvY2tfc2l6ZSA9IG1tLT5jaHVua19zaXplIDw8IG9yZGVyOwo+PiArwqDCoMKgwqDCoMKgwqAg dTY0IGZyZWUgPSBmcmVlX2NvdW50ICogYmxvY2tfc2l6ZTsKPj4gK8KgwqDCoMKgwqDCoMKgIHU2 NCB1c2VkID0gdXNlZF9jb3VudCAqIGJsb2NrX3NpemU7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKg IGlmIChibG9ja19zaXplIDwgU1pfMU0pCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX2lu Zm8oIm9yZGVyLSUyZCBmcmVlOiAlOGxsdSBLaUIsIHVzZWQ6ICU4bGx1IEtpQiwgCj4+IGZyZWVf YmxvY2tzOiAlbGx1LCB1c2VkX2Jsb2NrczogJWxsdVxuIiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBvcmRlciwgZnJlZSA+PiAxMCwgdXNlZCA+PiAxMCwgZnJlZV9jb3VudCwg dXNlZF9jb3VudCk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBlbHNlCj4+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHByX2luZm8oIm9yZGVyLSUyZCBmcmVlOiAlOGxsdSBNaUIsIGJsb2NrczogJWxs dVxuIiwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvcmRlciwgZnJlZSA+PiAy MCwgY291bnQpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9pbmZvKCJvcmRlci0lMmQg ZnJlZTogJThsbHUgTWlCLCB1c2VkOiAlOGxsdSBNaUIsIAo+PiBmcmVlX2Jsb2NrczogJWxsdSwg dXNlZF9ibG9ja3M6ICVsbHVcbiIsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg b3JkZXIsIGZyZWUgPj4gMjAsIHVzZWQgPj4gMjAsIGZyZWVfY291bnQsIHVzZWRfY291bnQpOwo+ PiDCoMKgwqDCoMKgIH0KPj4gwqAgfQo+PiDCoCBFWFBPUlRfU1lNQk9MKGdwdV9idWRkeV9wcmlu dCk7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2J1ZGR5LmMgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX2J1ZGR5LmMKPj4gaW5kZXggZWVmOTk1ZTA4YTM3Li4xNTM2ZTU5YzZmZTcg MTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYnVkZHkuYwo+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX2J1ZGR5LmMKPj4gQEAgLTQ3LDE3ICs0NywyMyBAQCB2b2lkIGRybV9i dWRkeV9wcmludChzdHJ1Y3QgZ3B1X2J1ZGR5ICptbSwgc3RydWN0IAo+PiBkcm1fcHJpbnRlciAq cCkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1tLT5jaHVua19zaXplID4+IDEwLCBtbS0+ c2l6ZSA+PiAyMCwgbW0tPmF2YWlsID4+IDIwLCAKPj4gbW0tPmNsZWFyX2F2YWlsID4+IDIwKTsK Pj4gwqDCoMKgwqDCoCBmb3IgKG9yZGVyID0gbW0tPm1heF9vcmRlcjsgb3JkZXIgPj0gMDsgb3Jk ZXItLSkgewo+PiAtwqDCoMKgwqDCoMKgwqAgdTY0IGNvdW50ID0gbW0tPmZyZWVfc2NvcmVib2Fy ZFtvcmRlcl07Cj4+IC3CoMKgwqDCoMKgwqDCoCB1NjQgZnJlZSA9IGNvdW50ICogKG1tLT5jaHVu a19zaXplIDw8IG9yZGVyKTsKPj4gK8KgwqDCoMKgwqDCoMKgIHU2NCBmcmVlX2NvdW50ID0gbW0t PmZyZWVfc2NvcmVib2FyZFtvcmRlcl07Cj4+ICvCoMKgwqDCoMKgwqDCoCB1NjQgdXNlZF9jb3Vu dCA9IG1tLT51c2VkX3Njb3JlYm9hcmRbb3JkZXJdOwo+PiArwqDCoMKgwqDCoMKgwqAgdTY0IGJs b2NrX3NpemUgPSBtbS0+Y2h1bmtfc2l6ZSA8PCBvcmRlcjsKPj4gK8KgwqDCoMKgwqDCoMKgIHU2 NCBmcmVlID0gZnJlZV9jb3VudCAqIGJsb2NrX3NpemU7Cj4+ICvCoMKgwqDCoMKgwqDCoCB1NjQg dXNlZCA9IHVzZWRfY291bnQgKiBibG9ja19zaXplOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZHJt X3ByaW50ZihwLCAib3JkZXItJTJkICIsIG9yZGVyKTsKPj4gLcKgwqDCoMKgwqDCoMKgIGlmIChm cmVlIDwgU1pfMU0pCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRybV9wcmludGYocCwgImZy ZWU6ICU4bGx1IEtpQiIsIGZyZWUgPj4gMTApOwo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGJsb2Nr X3NpemUgPCBTWl8xTSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHJtX3ByaW50ZihwLCAi ZnJlZTogJThsbHUgS2lCLCB1c2VkOiAlOGxsdSBLaUIiLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGZyZWUgPj4gMTAsIHVzZWQgPj4gMTApOwo+PiDCoMKgwqDCoMKg wqDCoMKgwqAgZWxzZQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkcm1fcHJpbnRmKHAsICJm cmVlOiAlOGxsdSBNaUIiLCBmcmVlID4+IDIwKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg ZHJtX3ByaW50ZihwLCAiZnJlZTogJThsbHUgTWlCLCB1c2VkOiAlOGxsdSBNaUIiLAo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZyZWUgPj4gMjAsIHVzZWQgPj4gMjAp Owo+PiAtwqDCoMKgwqDCoMKgwqAgZHJtX3ByaW50ZihwLCAiLCBibG9ja3M6ICVsbHVcbiIsIGNv dW50KTsKPj4gK8KgwqDCoMKgwqDCoMKgIGRybV9wcmludGYocCwgIiwgZnJlZV9ibG9ja3M6ICVs bHUsIHVzZWRfYmxvY2tzOiAlbGx1XG4iLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBmcmVlX2NvdW50LCB1c2VkX2NvdW50KTsKPj4gwqDCoMKgwqDCoCB9Cj4+IMKgIH0KPj4gwqAg RVhQT1JUX1NZTUJPTChkcm1fYnVkZHlfcHJpbnQpOwo+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9s aW51eC9ncHVfYnVkZHkuaCBiL2luY2x1ZGUvbGludXgvZ3B1X2J1ZGR5LmgKPj4gaW5kZXggYTI4 ZjdkNzYzN2NhLi5lMDM3NzE0NTYzZDggMTAwNjQ0Cj4+IC0tLSBhL2luY2x1ZGUvbGludXgvZ3B1 X2J1ZGR5LmgKPj4gKysrIGIvaW5jbHVkZS9saW51eC9ncHVfYnVkZHkuaAo+PiBAQCAtMTgwLDYg KzE4MCwxNCBAQCBzdHJ1Y3QgZ3B1X2J1ZGR5IHsKPj4gwqDCoMKgwqDCoMKgICogY2FsbGVkIG9u IGEgZnJlZSBibG9jay4KPj4gwqDCoMKgwqDCoMKgICovCj4+IMKgwqDCoMKgwqAgdTY0ICpmcmVl X3Njb3JlYm9hcmQ7Cj4+ICvCoMKgwqAgLyoKPj4gK8KgwqDCoMKgICogUGVyLW9yZGVyIHVzZWQg YmxvY2sgc2NvcmVib2FyZDogdXNlZF9zY29yZWJvYXJkW29yZGVyXSBob2xkcyB0aGUKPj4gK8Kg wqDCoMKgICogbnVtYmVyIG9mIGJsb2NrcyBvZiB0aGF0IG9yZGVyIGN1cnJlbnRseSBpbiB0aGUg YWxsb2NhdGVkIHN0YXRlLgo+PiArwqDCoMKgwqAgKiBJbmNyZW1lbnRlZCBpbiBtYXJrX2FsbG9j YXRlZCgpLCBkZWNyZW1lbnRlZCBpbiBtYXJrX2ZyZWUoKSAKPj4gKGd1YXJkZWQKPj4gK8KgwqDC oMKgICogYnkgZ3B1X2J1ZGR5X2Jsb2NrX2lzX2FsbG9jYXRlZCgpKSBhbmQgaW4gX19ncHVfYnVk ZHlfZnJlZSgpIAo+PiB3aGVuIGFuCj4+ICvCoMKgwqDCoCAqIGFsbG9jYXRlZCBibG9jayBpcyBj b25zdW1lZCBkaXJlY3RseSBkdXJpbmcgYnVkZHkgY29hbGVzY2luZy4KPj4gK8KgwqDCoMKgICov Cj4+ICvCoMKgwqAgdTY0ICp1c2VkX3Njb3JlYm9hcmQ7Cj4+IMKgIC8qIHB1YmxpYzogKi8KPj4g wqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgbl9yb290czsKPj4gwqDCoMKgwqDCoCB1bnNpZ25lZCBp bnQgbWF4X29yZGVyOwo+IAoK