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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 5C178D1951A for ; Mon, 26 Jan 2026 21:02:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Q0wuz9RUj7sm3aG9hUHRRbsMIvvvBTdXf0ghdQcb7R8=; b=Lr3nk3Oz3Ca38j 8IIjUUzO71/OcfZM2srvrkuH3SggbKk0XVgJOAUEe/ZAXiVzia0ms9u2HHPQK+/tiE2Yp9JA8yUBq SkHSrNyFEWvgLqzBMSfebrI4/KDcMucYEu1jHq6xTKiydbmW3IedZMIBS4F73axXsytxAyz824Ydt qzOTnxDHykMcOr353z+jKLJJEX/z+E7LFUJoThAdo2V0LT+kQleKNGNxrKihKeZ4IpsKCnsYsQgCL oOIAGjY5TAirH9u7YKU7DmdrtjImPxeSl4zxe1TZAIvhaiFWprnNGHupymJ43BY5B/ru1iw9RrJSS d7O/g6W5f74N+l2eIckQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vkTiz-0000000DEyA-49uG; Mon, 26 Jan 2026 21:02:18 +0000 Received: from sea.source.kernel.org ([172.234.252.31]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1vkTix-0000000DExT-1IWi for linux-riscv@lists.infradead.org; Mon, 26 Jan 2026 21:02:16 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id 83E7743C26; Mon, 26 Jan 2026 21:02:14 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id EBE4AC116C6; Mon, 26 Jan 2026 21:02:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1769461334; bh=8x6wyS08s6WfKoSIfXc3hX2kI5c4SIOdRV/egsvzezI=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=beouqXbqqaaSYOiOO4C2eJud+5DY4aYi67w/HRJeIdAuIvSmqCrPjUJFnH+ozatp0 dkJjynhcSsTKoNNldvyCDDxBTzutcdmmr/wl3ERJcimd545zgnUdubtYKsMtcnlNLD WUbcimJ9tO+nbypOUzeBs9wnEd02igdIxaQHJEZjObZONszOMAeAYb1dfh0UTQPobf KM2IVcX2JUoufoXmUmbZ7Es60YsFLE1PV/mCgRxPYtgidMQaecEV2USAQJjrTDcvvE PXu1G2fL76nDSNkDRX/TgGnD/jHw7vtS1iYWVYY5Ko0uFO+Uw9EVHPZ3lwEivb/jtA jY/kQX7n9V7jw== Date: Mon, 26 Jan 2026 13:02:12 -0800 From: Drew Fustini To: yunhui cui Cc: Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Radim =?utf-8?B?S3LEjW3DocWZ?= , Samuel Holland , Adrien Ricciardi , Nicolas Pitre , Kornel =?utf-8?Q?Dul=C4=99ba?= , Atish Patra , Atish Kumar Patra , Vasudevan Srinivasan , Ved Shanbhogue , Chen Pei , Liu Zhiwei , Weiwei Li , guo.wenjia23@zte.com.cn, liu.qingtao2@zte.com.cn, Conor Dooley , Krzysztof Kozlowski , Rob Herring , Reinette Chatre , Tony Luck , Babu Moger , Peter Newman , Fenghua Yu , James Morse , Ben Horgan , Dave Martin , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, x86@kernel.org Subject: Re: [External] [PATCH RFC 08/19] RISC-V: QoS: add resctrl interface for CBQRI controllers Message-ID: References: <20260119-ssqosid-cbqri-v1-0-aa2a75153832@kernel.org> <20260119-ssqosid-cbqri-v1-8-aa2a75153832@kernel.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260126_130215_409728_F992F618 X-CRM114-Status: GOOD ( 28.66 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gTW9uLCBKYW4gMjYsIDIwMjYgYXQgMDk6MDE6MzBQTSArMDgwMCwgeXVuaHVpIGN1aSB3cm90 ZToKPiBIaSBEcmV3LAo+IAo+IE9uIFR1ZSwgSmFuIDIwLCAyMDI2IGF0IDEyOjE14oCvUE0gRHJl dyBGdXN0aW5pIDxmdXN0aW5pQGtlcm5lbC5vcmc+IHdyb3RlOgo+ID4KPiA+IEFkZCBpbnRlcmZh Y2UgZm9yIENCUVJJIGNvbnRyb2xsZXIgZHJpdmVycyB0byBtYWtlIHVzZSBvZiB0aGUgcmVzY3Ry bAo+ID4gZmlsZXN5c3RlbS4KPiA+Cj4gPiBDby1kZXZlbG9wZWQtYnk6IEFkcmllbiBSaWNjaWFy ZGkgPGFyaWNjaWFyZGlAYmF5bGlicmUuY29tPgo+ID4gU2lnbmVkLW9mZi1ieTogQWRyaWVuIFJp Y2NpYXJkaSA8YXJpY2NpYXJkaUBiYXlsaWJyZS5jb20+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBEcmV3 IEZ1c3RpbmkgPGZ1c3RpbmlAa2VybmVsLm9yZz4KPiA+IC0tLQo+ID4gIGFyY2gvcmlzY3Yva2Vy bmVsL3Fvcy9xb3NfcmVzY3RybC5jIHwgMTE5MSArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwo+ID4gIDEgZmlsZSBjaGFuZ2VkLCAxMTkxIGluc2VydGlvbnMoKykKPiA+Cj4gPiBk aWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rZXJuZWwvcW9zL3Fvc19yZXNjdHJsLmMgYi9hcmNoL3Jp c2N2L2tlcm5lbC9xb3MvcW9zX3Jlc2N0cmwuYwo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+ IGluZGV4IDAwMDAwMDAwMDAwMC4uNWUzYTY1MzQyZTliCj4gPiAtLS0gL2Rldi9udWxsCj4gPiAr KysgYi9hcmNoL3Jpc2N2L2tlcm5lbC9xb3MvcW9zX3Jlc2N0cmwuYwpbLi5dCj4gPiArLyogU2V0 IGNhcGFjaXR5IGJsb2NrIG1hc2sgKGNjX2Jsb2NrX21hc2spICovCj4gPiArc3RhdGljIHZvaWQg Y2Jxcmlfc2V0X2NibShzdHJ1Y3QgY2JxcmlfY29udHJvbGxlciAqY3RybCwgdTY0IGNibSkKPiA+ ICt7Cj4gPiArICAgICAgICAgICAgICAgaW50IHJlZ19vZmZzZXQ7Cj4gPiArICAgICAgICAgICAg ICAgdTY0IHJlZzsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgICByZWdfb2Zmc2V0ID0gQ0JRUklf Q0NfQkxPQ0tfTUFTS19PRkY7Cj4gPiArICAgICAgICAgICAgICAgcmVnID0gaW9yZWFkNjQoY3Ry bC0+YmFzZSArIHJlZ19vZmZzZXQpOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgIHJlZyA9IGNi bTsKPiA+ICsgICAgICAgICAgICAgICBpb3dyaXRlNjQocmVnLCBjdHJsLT5iYXNlICsgcmVnX29m ZnNldCk7Cj4gPiArfQo+ID4gKwo+IAo+IHRvbyBtdWNoIGluZGVudGF0aW9uIO+8nwoKVGhhbmtz LCB3aWxsIGZpeCBpbmRlbnRhdGlvbiBmb3IgY2Jxcmlfc2V0X2NibSwgY2Jxcmlfc2V0X3Jid2Is IGFuZApjYnFyaV9nZXRfcmJ3Yi4KCj4gPiArc3RhdGljIGludCBjYnFyaV93YWl0X2J1c3lfZmxh ZyhzdHJ1Y3QgY2JxcmlfY29udHJvbGxlciAqY3RybCwgaW50IHJlZ19vZmZzZXQpCj4gPiArewo+ ID4gKyAgICAgICB1bnNpZ25lZCBsb25nIHRpbWVvdXQgPSBqaWZmaWVzICsgKEhaIC8gMTApOyAv KiBUaW1lb3V0IGFmdGVyIDEwMG1zICovCj4gCj4gaHVuZyB0YXNrID8KCkdvb2QgcG9pbnQsIHRo aXMgaXMgdG9vIGxvbmcuIEkgdHJpZWQgMTAwIHVzIHdoaWNoIHdhc24ndCBsb25nIGVub3VnaApm b3IgUWVtdSBvbiBteSBzeXN0ZW0gYnV0IDEsMDAwIHVzIHdvcmtlZCBva2F5LgoKSSB3aWxsIGNo YW5nZSB0byAxLDAwMCB1cy4KCiAgICAgICAgdW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gamlmZmll cyArIHVzZWNzX3RvX2ppZmZpZXMoMTAwMCk7Cgo+ID4gK3UzMiByZXNjdHJsX2FyY2hfZ2V0X2Nv bmZpZyhzdHJ1Y3QgcmR0X3Jlc291cmNlICpyLCBzdHJ1Y3QgcmR0X2N0cmxfZG9tYWluICpkLAo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBjbG9zaWQsIGVudW0gcmVzY3RybF9j b25mX3R5cGUgdHlwZSkKPiA+ICt7Cj4gPiArICAgICAgIHN0cnVjdCBjYnFyaV9yZXNjdHJsX2Rv bSAqaHdfZG9tOwo+ID4gKyAgICAgICBzdHJ1Y3QgY2JxcmlfY29udHJvbGxlciAqY3RybDsKPiA+ ICsgICAgICAgaW50IHJlZ19vZmZzZXQ7Cj4gPiArICAgICAgIHUzMiBwZXJjZW50Owo+ID4gKyAg ICAgICB1MzIgcmJ3YjsKPiA+ICsgICAgICAgdTY0IHJlZzsKPiA+ICsgICAgICAgaW50IGVycjsK PiA+ICsKPiA+ICsgICAgICAgaHdfZG9tID0gY29udGFpbmVyX29mKGQsIHN0cnVjdCBjYnFyaV9y ZXNjdHJsX2RvbSwgcmVzY3RybF9jdHJsX2RvbSk7Cj4gPiArCj4gPiArICAgICAgIGN0cmwgPSBo d19kb20tPmh3X2N0cmw7Cj4gPiArCj4gPiArICAgICAgIGlmICghci0+YWxsb2NfY2FwYWJsZSkK PiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiAKPiB1MzIgPwoKR29vZCBwb2lu dC4gIEkgbG9va2VkIGF0IG1wYW1fcmVzY3RybC5jIGFuZCBpdCByZXR1cm5zIHRoZSBkZWZhdWx0 IHZhbHVlCm9uIGVycm9yOgpodHRwczovL2xvcmUua2VybmVsLm9yZy9hbGwvMjAyNjAxMTIxNjU5 MTQuNDA4NjY5Mi0xOS1iZW4uaG9yZ2FuQGFybS5jb20vCgpJIHdpbGwgY2hhbmdlIHRvICdyZXR1 cm4gcmVzY3RybF9nZXRfZGVmYXVsdF9jdHJsKHIpJy4KCj4gPiArCj4gPiArICAgICAgIHN3aXRj aCAoci0+cmlkKSB7Cj4gPiArICAgICAgIGNhc2UgUkRUX1JFU09VUkNFX0wyOgo+ID4gKyAgICAg ICBjYXNlIFJEVF9SRVNPVVJDRV9MMzoKPiA+ICsgICAgICAgICAgICAgICAvKiBDbGVhciBjY19i bG9ja19tYXNrIGJlZm9yZSByZWFkIGxpbWl0IG9wZXJhdGlvbiAqLwo+ID4gKyAgICAgICAgICAg ICAgIGNicXJpX3NldF9jYm0oY3RybCwgMCk7Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgLyog Q2FwYWNpdHkgcmVhZCBsaW1pdCBvcGVyYXRpb24gZm9yIFJDSUQgKGNsb3NpZCkgKi8KPiA+ICsg ICAgICAgICAgICAgICBlcnIgPSBjYnFyaV9jY19hbGxvY19vcChjdHJsLCBDQlFSSV9DQ19BTExP Q19DVExfT1BfUkVBRF9MSU1JVCwgdHlwZSwgY2xvc2lkKTsKPiA+ICsgICAgICAgICAgICAgICBp ZiAoZXJyIDwgMCkgewo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcHJfZXJyKCIlcygpOiBv cGVyYXRpb24gZmFpbGVkOiBlcnIgPSAlZCIsIF9fZnVuY19fLCBlcnIpOwo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIC1FSU87Cj4gCj4gdTMyID8KClNhbWUgYXMgYWJvdmUuCgo+ ID4gKyAgICAgICAgICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgICAgICAgICAvKiBSZWFkIGNh cGFjaXR5IGJsb2NrIG1hc2sgZm9yIFJDSUQgKGNsb3NpZCkgKi8KPiA+ICsgICAgICAgICAgICAg ICByZWdfb2Zmc2V0ID0gQ0JRUklfQ0NfQkxPQ0tfTUFTS19PRkY7Cj4gPiArICAgICAgICAgICAg ICAgcmVnID0gaW9yZWFkNjQoY3RybC0+YmFzZSArIHJlZ19vZmZzZXQpOwo+ID4gKwo+ID4gKyAg ICAgICAgICAgICAgIC8qIFVwZGF0ZSB0aGUgY29uZmlnIHZhbHVlIGZvciB0aGUgY2xvc2lkIGlu IHRoaXMgZG9tYWluICovCj4gPiArICAgICAgICAgICAgICAgaHdfZG9tLT5jdHJsX3ZhbFtjbG9z aWRdID0gcmVnOwo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBod19kb20tPmN0cmxfdmFsW2Ns b3NpZF07Cj4gPiArCj4gPiArICAgICAgIGNhc2UgUkRUX1JFU09VUkNFX01CQToKPiA+ICsgICAg ICAgICAgICAgICAvKiBDYXBhY2l0eSByZWFkIGxpbWl0IG9wZXJhdGlvbiBmb3IgUkNJRCAoY2xv c2lkKSAqLwo+ID4gKyAgICAgICAgICAgICAgIGVyciA9IGNicXJpX2JjX2FsbG9jX29wKGN0cmws IENCUVJJX0NDX0FMTE9DX0NUTF9PUF9SRUFEX0xJTUlULCBjbG9zaWQpOwo+ID4gKyAgICAgICAg ICAgICAgIGlmIChlcnIgPCAwKSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBwcl9lcnIo IiVzKCk6IG9wZXJhdGlvbiBmYWlsZWQ6IGVyciA9ICVkIiwgX19mdW5jX18sIGVycik7Cj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTzsKPiA+ICsgICAgICAgICAgICAgICB9 Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgaHdfZG9tLT5jdHJsX3ZhbFtjbG9zaWRdID0gY2Jx cmlfZ2V0X3Jid2IoY3RybCk7Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgLyogQ29udmVydCBm cm9tIGJhbmR3aWR0aCBibG9ja3MgdG8gcGVyY2VudCAqLwo+ID4gKyAgICAgICAgICAgICAgIHJi d2IgPSBod19kb20tPmN0cmxfdmFsW2Nsb3NpZF07Cj4gPiArICAgICAgICAgICAgICAgcmJ3YiAq PSAxMDA7Cj4gPiArICAgICAgICAgICAgICAgcGVyY2VudCA9IHJid2IgLyBjdHJsLT5iYy5uYndi bGtzOwo+ID4gKyAgICAgICAgICAgICAgIGlmIChyYndiICUgY3RybC0+YmMubmJ3YmxrcykKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnQrKzsKPiAKPiBzZXQ6IDEwLCBnZXQgMTEg PwoKVGhlIGludGVudGlvbiB3YXMgdG8gaGFuZGxlIHJvdW5kaW5nIHVwIGJ1dCBJIGNhbiBkcm9w IHRoaXMgaW5jcmVtZW50LgoKWy4uXQo+ID4gK3N0YXRpYyBpbnQgY2JxcmlfcHJvYmVfY29udHJv bGxlcihzdHJ1Y3QgY2JxcmlfY29udHJvbGxlcl9pbmZvICpjdHJsX2luZm8sCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNicXJpX2NvbnRyb2xsZXIgKmN0cmwp Cj4gPiArewo+ID4gKyAgICAgICBpbnQgZXJyID0gMCwgc3RhdHVzOwo+ID4gKyAgICAgICB1NjQg cmVnOwo+ID4gKwo+ID4gKyAgICAgICBwcl9pbmZvKCJjb250cm9sbGVyIGluZm86IHR5cGU9JWQg YWRkcj0weCVseCBzaXplPSVsdSBtYXgtcmNpZD0ldSBtYXgtbWNpZD0ldSIsCj4gPiArICAgICAg ICAgICAgICAgY3RybF9pbmZvLT50eXBlLCBjdHJsX2luZm8tPmFkZHIsIGN0cmxfaW5mby0+c2l6 ZSwKPiA+ICsgICAgICAgICAgICAgICBjdHJsX2luZm8tPnJjaWRfY291bnQsIGN0cmxfaW5mby0+ bWNpZF9jb3VudCk7Cj4gPiArCj4gPiArICAgICAgIC8qIG1heF9ybWlkIGlzIHVzZWQgYnkgcmVz Y3RybF9hcmNoX3N5c3RlbV9udW1fcm1pZF9pZHgoKSAqLwo+ID4gKyAgICAgICBtYXhfcm1pZCA9 IGN0cmxfaW5mby0+bWNpZF9jb3VudDsKPiA+ICsKPiA+ICsgICAgICAgY3RybC0+Y3RybF9pbmZv ID0gY3RybF9pbmZvOwo+ID4gKwo+ID4gKyAgICAgICAvKiBUcnkgdG8gYWNjZXNzIHRoZSBtZW1v cnktbWFwcGVkIENCUVJJIHJlZ2lzdGVycyAqLwo+ID4gKyAgICAgICBpZiAoIXJlcXVlc3RfbWVt X3JlZ2lvbihjdHJsX2luZm8tPmFkZHIsIGN0cmxfaW5mby0+c2l6ZSwgImNicXJpX2NvbnRyb2xs ZXIiKSkgewo+ID4gKyAgICAgICAgICAgICAgIHByX3dhcm4oIiVzKCk6IHJldHVybiAlZCIsIF9f ZnVuY19fLCBlcnIpOwo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBlcnI7Cj4gCj4gZXJyID0g MD8KCkdvb2QgcG9pbnQsIEkgd2lsbCBjaGFuZ2UgaXQgdG8gcmV0dXJuIC1FQlVTWS4KClsuLl0K PiA+ICtpbnQgcW9zX3Jlc2N0cmxfc2V0dXAodm9pZCkKPiA+ICt7Cj4gPiArICAgICAgIHN0cnVj dCByZHRfY3RybF9kb21haW4gKmRvbWFpbiwgKmRvbWFpbl90ZW1wOwo+ID4gKyAgICAgICBzdHJ1 Y3QgY2JxcmlfY29udHJvbGxlcl9pbmZvICpjdHJsX2luZm87Cj4gPiArICAgICAgIHN0cnVjdCBj YnFyaV9jb250cm9sbGVyICpjdHJsOwo+ID4gKyAgICAgICBzdHJ1Y3QgY2JxcmlfcmVzY3RybF9y ZXMgKnJlczsKPiA+ICsgICAgICAgc3RhdGljIGludCBmb3VuZF9jb250cm9sbGVyczsKPiA+ICsg ICAgICAgaW50IGVyciA9IDA7Cj4gPiArICAgICAgIGludCBpZCA9IDA7Cj4gPiArICAgICAgIGlu dCBpOwo+ID4gKwo+ID4gKyAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGN0cmxfaW5mbywgJmNi cXJpX2NvbnRyb2xsZXJzLCBsaXN0KSB7Cj4gPiArICAgICAgICAgICAgICAgZXJyID0gY2Jxcmlf cHJvYmVfY29udHJvbGxlcihjdHJsX2luZm8sICZjb250cm9sbGVyc1tmb3VuZF9jb250cm9sbGVy c10pOwo+ID4gKyAgICAgICAgICAgICAgIGlmIChlcnIpIHsKPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgIHByX3dhcm4oIiVzKCk6IGZhaWxlZCAoJWQpIiwgX19mdW5jX18sIGVycik7Cj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycl91bm1hcF9jb250cm9sbGVyczsKPiA+ICsg ICAgICAgICAgICAgICB9Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgZm91bmRfY29udHJvbGxl cnMrKzsKPiA+ICsgICAgICAgICAgICAgICBpZiAoZm91bmRfY29udHJvbGxlcnMgPiBNQVhfQ09O VFJPTExFUlMpIHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHByX3dhcm4oIiVzKCk6IGlu Y3JlYXNlIE1BWF9DT05UUk9MTEVSUyB2YWx1ZSIsIF9fZnVuY19fKTsKPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOwo+ID4gKyAgICAgICAgICAgICAgIH0KPiA+ICsgICAgICAgfQo+ ID4gKwo+ID4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgUkRUX05VTV9SRVNPVVJDRVM7IGkrKykg ewo+ID4gKyAgICAgICAgICAgICAgIHJlcyA9ICZjYnFyaV9yZXNjdHJsX3Jlc291cmNlc1tpXTsK PiA+ICsgICAgICAgICAgICAgICBJTklUX0xJU1RfSEVBRCgmcmVzLT5yZXNjdHJsX3Jlcy5jdHJs X2RvbWFpbnMpOwo+ID4gKyAgICAgICAgICAgICAgIElOSVRfTElTVF9IRUFEKCZyZXMtPnJlc2N0 cmxfcmVzLm1vbl9kb21haW5zKTsKPiA+ICsgICAgICAgICAgICAgICByZXMtPnJlc2N0cmxfcmVz LnJpZCA9IGk7Cj4gPiArICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgZm9yIChpID0gMDsgaSA8 IGZvdW5kX2NvbnRyb2xsZXJzOyBpKyspIHsKPiA+ICsgICAgICAgICAgICAgICBjdHJsID0gJmNv bnRyb2xsZXJzW2ldOwo+IAo+IGNvbnRyb2xsZXJzWzZdID8KClRoaXMgaXMgbGltaXRhdGlvbiBm cm9tIHRoZSBwcm9vZi1vZi1jb25jZXB0LiBJIG5lZWQgdG8gcmVmYWN0b3IgdGhpcyBzbwp0aGF0 IGl0IGlzIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIGNvbnRy b2xsZXJzCnByZXNlbnQgaW4gdGhlIHN5c3RlbQoKVGhhbmtzLApEcmV3CgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1yaXNjdiBtYWlsaW5nIGxp c3QKbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFk Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg==