From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6A29E363096; Wed, 25 Mar 2026 07:09:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774422579; cv=none; b=Ju9CnbbABAavQ1H6VP1tbizWvoocrG4vHNWos3P4rCVohZTNPFu6k1xH+49Hy2ebEG8msFF1chqNXoFoXnQTafo6wh8PZ0YOZd4KYPnij1u33bzUTlxdd7Dq+nZIlTCdGt1VsLSqDNCHZ6IOXHTg1TdkLKcN+fG6Jm44lQzeHpA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774422579; c=relaxed/simple; bh=mS4AlmtdQO5unW1ujVzPNe76jLRg5c+lEpiONNOY3YM=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=IaSoz9t9kzLXsHws5TqVo8Hl3ldWJ48Wl5cwvvjfWWkuteBlPsOKN9BW9VGcQlwTlCTpryTGZn233b2nnC+I8CKhWWm5G+bPx7VTPNbVkEeueKzAay/7Aj5UEIErTrEgshfK+FyT96XQC9eA61jRwT2EAMrh0q7GRviFBVSuEl0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=cWl1aj+h; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="cWl1aj+h" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 85219C4CEF7; Wed, 25 Mar 2026 07:09:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1774422579; bh=mS4AlmtdQO5unW1ujVzPNe76jLRg5c+lEpiONNOY3YM=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=cWl1aj+hMh6h4t0m3jMjOf7MkAqJN3eJK3E/elgvAuwbcouB5b4f+qhY5/9VnMEcQ b8t5gq/x8WDzj0tOcu0C6a3HGs4VDcK3+i0s5j6vJc/GXztxhfa9zvYcscfyjuUYBf mozWwgqXkyKpKm/gapq4YtqGj2ofAOw284zknCE4658BBAWO5mdwbTkAgq71P0ZFEl 2yVKj1pFqmFiXgcpPTgzRy6D7nl3WHgFTsopwKdB+ZKMzMjgGxYfHq4tD+bmWHYOh/ Gd3Pj6W/1Nsc0uI1JmOQggcVbgizHBBXJ4fP3/usFxjD5amQmJqrj+uvQXyqO0BB1L MJzlJDCmqPcbQ== Date: Wed, 25 Mar 2026 00:09:37 -0700 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, Reinette Chatre , Tony Luck , Babu Moger , Peter Newman , Fenghua Yu , James Morse , Ben Horgan , Dave Martin , linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, x86@kernel.org, Rob Herring , "Rafael J. Wysocki" , Len Brown , Robert Moore , Sunil V L , Krzysztof Kozlowski , Conor Dooley , Paul Walmsley , linux-acpi@vger.kernel.org, acpica-devel@lists.linux.dev, devicetree@vger.kernel.org Subject: Re: [External] [PATCH RFC v2 14/17] include: acpi: actbl2: Add structs for RQSC table Message-ID: References: <20260128-ssqosid-cbqri-v2-0-dca586b091b9@kernel.org> <20260128-ssqosid-cbqri-v2-14-dca586b091b9@kernel.org> Precedence: bulk X-Mailing-List: acpica-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: On Wed, Mar 25, 2026 at 09:43:07AM +0800, yunhui cui wrote: > Hi Drew, > > On Thu, Jan 29, 2026 at 4:28 AM Drew Fustini wrote: > > > > Add structs for the RQSC table which describes the properties of the > > RISC-V QoS controllers (CBQRI) in the system. The table also describes > > the topological arrangement of the QoS controllers and resources in the > > system. The topology is expressed in terms of the location of the > > resources within the system and the relation between the QoS Controller > > and the resource it manages. > > > > Link: https://github.com/riscv-non-isa/riscv-cbqri/releases/tag/v1.0 > > Link: https://github.com/riscv-non-isa/riscv-rqsc/blob/main/src/chapter2.adoc > > Signed-off-by: Drew Fustini > > --- > > include/acpi/actbl2.h | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++ > > 1 file changed, 92 insertions(+) > > > > diff --git a/include/acpi/actbl2.h b/include/acpi/actbl2.h > > index f726bce3eb84..7367990349ee 100644 > > --- a/include/acpi/actbl2.h > > +++ b/include/acpi/actbl2.h > > @@ -53,6 +53,7 @@ > > #define ACPI_SIG_RGRT "RGRT" /* Regulatory Graphics Resource Table */ > > #define ACPI_SIG_RHCT "RHCT" /* RISC-V Hart Capabilities Table */ > > #define ACPI_SIG_RIMT "RIMT" /* RISC-V IO Mapping Table */ > > +#define ACPI_SIG_RQSC "RQSC" /* RISC-V RISC-V Quality of Service Controller */ > > #define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */ > > #define ACPI_SIG_SDEI "SDEI" /* Software Delegated Exception Interface Table */ > > #define ACPI_SIG_SDEV "SDEV" /* Secure Devices table */ > > @@ -3165,6 +3166,97 @@ enum acpi_rgrt_image_type { > > ACPI_RGRT_TYPE_RESERVED = 2 /* 2 and greater are reserved */ > > }; > > > > +/******************************************************************************* > > + * > > + * RQSC - RISC-V Quality of Service Controller > > + * Version 1 > > + * > > + ******************************************************************************/ > > + > > +struct acpi_table_rqsc_fields_res { > > + u8 type; // 1 > > + u8 resv; // 1 > > + u16 length; // 2 > > + u16 flags; // 2 > > + u8 resv2; // 1 > > + u8 id_type; // 1 > > + u64 id1; // 8 > > + u32 id2; // 4 > > +}; > > + > > +struct acpi_table_rqsc_fields { > > + u8 type; // 1 > > + u8 resv; // 1 > > + u16 length; // 2 > > + u32 reg[3]; // 12 > > + u32 rcid; // 4 > > + u32 mcid; // 4 > > + u16 flags; // 2 > > + u16 nres; // 2 > > + struct acpi_table_rqsc_fields_res res; // 20 > > +}; > > + > > +struct acpi_table_rqsc { > > + struct acpi_table_header header; /* Common ACPI table header */ > > + u32 num; > > + struct acpi_table_rqsc_fields f[6]; > > Is a fixed array f[6] appropriate here ? This was a flaw in the proof of concept where it assumed 6 controllers. My work-in-progress has solved that problem: https://github.com/tt-fustini/linux/blob/b4/ssqosid-cbqri/include/acpi/actbl2.h > > +}; > > + > > +/* RQSC Flags */ > > +#define ACPI_RQSC_TIMER_CANNOT_WAKEUP_CPU (1) > > + > > +/* > > + * RQSC subtables > > + */ > > +struct acpi_rqsc_node_header { > > + u16 type; > > + u16 length; > > + u16 revision; > > +}; > > + > > +/* Values for RQSC subtable Type above */ > > +enum acpi_rqsc_node_type { > > + ACPI_RQSC_NODE_TYPE_ISA_STRING = 0x0000, > > + ACPI_RQSC_NODE_TYPE_CMO = 0x0001, > > + ACPI_RQSC_NODE_TYPE_MMU = 0x0002, > > + ACPI_RQSC_NODE_TYPE_RESERVED = 0x0003, > > + ACPI_RQSC_NODE_TYPE_HART_INFO = 0xFFFF, > > +}; > > + > > +/* > > + * RQSC node specific subtables > > + */ > > + > > +/* ISA string node structure */ > > +struct acpi_rqsc_isa_string { > > + u16 isa_length; > > + char isa[]; > > +}; > > + > > +struct acpi_rqsc_cmo_node { > > + u8 reserved; /* Must be zero */ > > + u8 cbom_size; /* CBOM size in powerof 2 */ > > + u8 cbop_size; /* CBOP size in powerof 2 */ > > + u8 cboz_size; /* CBOZ size in powerof 2 */ > > +}; > > + > > +struct acpi_rqsc_mmu_node { > > + u8 reserved; /* Must be zero */ > > + u8 mmu_type; /* Virtual Address Scheme */ > > +}; > > + > > +enum acpi_rqsc_mmu_type { > > + ACPI_RQSC_MMU_TYPE_SV39 = 0, > > + ACPI_RQSC_MMU_TYPE_SV48 = 1, > > + ACPI__MMU_TYPE_SV57 = 2 > > ACPI_RQSC_MMU_TYPE_SV57 = 2 ? These fields were all included by mistake. The only structs that rqsc needs are: acpi_table_rqsc_fields_res, struct acpi_table_rqsc_fields and struct acpi_table_rqsc Thanks, Drew 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 D6259FEA818 for ; Wed, 25 Mar 2026 07:09:51 +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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject: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=kXuBmoq8dxGzsQq2gfirB2JT6ZMG88RAYZAfJNljbi4=; b=HwsiBiuzzA9DBs qySeRG1m6oE/Wu5uPapb9aiJ0dSbJWuUgY6ZVIkr8S4O4+XdcTk4L5NgJdTp5NEzWh1M2hFmBZZ5v sudbGcNl6djCD7r+ipDhB56MSbAzxfndNZV9elMfQ1tW6rsX5BpFG0tDXRhqkJbWJQb46iaOMBPOf G4S942wDu9yvV272YUlkCmIqi1ZO9YTM6KRqzQDUUFrdd6pYlZu/Za/vA+Uvh36jPi2Lh1nMvOUBG FqHjigHWpeJ4Q6I4OeArnW53krxfGwgGO2+HYapv1xRi/LpTzUA+MVUF3StG+tYG2KEAp9THTsuKp 5LC8+QzykmNfwMRpFH0g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1w5IN4-00000002pqY-2tp3; Wed, 25 Mar 2026 07:09:42 +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 1w5IN1-00000002pqD-49tW for linux-riscv@lists.infradead.org; Wed, 25 Mar 2026 07:09:41 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id 42BA8438AF; Wed, 25 Mar 2026 07:09:39 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 85219C4CEF7; Wed, 25 Mar 2026 07:09:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1774422579; bh=mS4AlmtdQO5unW1ujVzPNe76jLRg5c+lEpiONNOY3YM=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=cWl1aj+hMh6h4t0m3jMjOf7MkAqJN3eJK3E/elgvAuwbcouB5b4f+qhY5/9VnMEcQ b8t5gq/x8WDzj0tOcu0C6a3HGs4VDcK3+i0s5j6vJc/GXztxhfa9zvYcscfyjuUYBf mozWwgqXkyKpKm/gapq4YtqGj2ofAOw284zknCE4658BBAWO5mdwbTkAgq71P0ZFEl 2yVKj1pFqmFiXgcpPTgzRy6D7nl3WHgFTsopwKdB+ZKMzMjgGxYfHq4tD+bmWHYOh/ Gd3Pj6W/1Nsc0uI1JmOQggcVbgizHBBXJ4fP3/usFxjD5amQmJqrj+uvQXyqO0BB1L MJzlJDCmqPcbQ== Date: Wed, 25 Mar 2026 00:09:37 -0700 From: Drew Fustini To: yunhui cui Subject: Re: [External] [PATCH RFC v2 14/17] include: acpi: actbl2: Add structs for RQSC table Message-ID: References: <20260128-ssqosid-cbqri-v2-0-dca586b091b9@kernel.org> <20260128-ssqosid-cbqri-v2-14-dca586b091b9@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-20260325_000940_069973_63796F2F X-CRM114-Status: GOOD ( 21.41 ) 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: , Cc: Atish Patra , Adrien Ricciardi , Atish Kumar Patra , Conor Dooley , Nicolas Pitre , devicetree@vger.kernel.org, Liu Zhiwei , guo.wenjia23@zte.com.cn, linux-riscv@lists.infradead.org, Rob Herring , Peter Newman , x86@kernel.org, acpica-devel@lists.linux.dev, Robert Moore , liu.qingtao2@zte.com.cn, linux-acpi@vger.kernel.org, Ben Horgan , James Morse , Radim =?utf-8?B?S3LEjW3DocWZ?= , Dave Martin , Len Brown , Fenghua Yu , Chen Pei , Albert Ou , Kornel =?utf-8?Q?Dul=C4=99ba?= , Babu Moger , Weiwei Li , Paul Walmsley , Ved Shanbhogue , Reinette Chatre , Vasudevan Srinivasan , Tony Luck , Alexandre Ghiti , linux-kernel@vger.kernel.org, Samuel Holland , Krzysztof Kozlowski , Palmer Dabbelt , "Rafael J. Wysocki" , Paul Walmsley 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 T24gV2VkLCBNYXIgMjUsIDIwMjYgYXQgMDk6NDM6MDdBTSArMDgwMCwgeXVuaHVpIGN1aSB3cm90 ZToKPiBIaSBEcmV3LAo+IAo+IE9uIFRodSwgSmFuIDI5LCAyMDI2IGF0IDQ6MjjigK9BTSBEcmV3 IEZ1c3RpbmkgPGZ1c3RpbmlAa2VybmVsLm9yZz4gd3JvdGU6Cj4gPgo+ID4gQWRkIHN0cnVjdHMg Zm9yIHRoZSBSUVNDIHRhYmxlIHdoaWNoIGRlc2NyaWJlcyB0aGUgcHJvcGVydGllcyBvZiB0aGUK PiA+IFJJU0MtViBRb1MgY29udHJvbGxlcnMgKENCUVJJKSBpbiB0aGUgc3lzdGVtLiBUaGUgdGFi bGUgYWxzbyBkZXNjcmliZXMKPiA+IHRoZSB0b3BvbG9naWNhbCBhcnJhbmdlbWVudCBvZiB0aGUg UW9TIGNvbnRyb2xsZXJzIGFuZCByZXNvdXJjZXMgaW4gdGhlCj4gPiBzeXN0ZW0uIFRoZSB0b3Bv bG9neSBpcyBleHByZXNzZWQgaW4gdGVybXMgb2YgdGhlIGxvY2F0aW9uIG9mIHRoZQo+ID4gcmVz b3VyY2VzIHdpdGhpbiB0aGUgc3lzdGVtIGFuZCB0aGUgcmVsYXRpb24gYmV0d2VlbiB0aGUgUW9T IENvbnRyb2xsZXIKPiA+IGFuZCB0aGUgcmVzb3VyY2UgaXQgbWFuYWdlcy4KPiA+Cj4gPiBMaW5r OiBodHRwczovL2dpdGh1Yi5jb20vcmlzY3Ytbm9uLWlzYS9yaXNjdi1jYnFyaS9yZWxlYXNlcy90 YWcvdjEuMAo+ID4gTGluazogaHR0cHM6Ly9naXRodWIuY29tL3Jpc2N2LW5vbi1pc2EvcmlzY3Yt cnFzYy9ibG9iL21haW4vc3JjL2NoYXB0ZXIyLmFkb2MKPiA+IFNpZ25lZC1vZmYtYnk6IERyZXcg RnVzdGluaSA8ZnVzdGluaUBrZXJuZWwub3JnPgo+ID4gLS0tCj4gPiAgaW5jbHVkZS9hY3BpL2Fj dGJsMi5oIHwgOTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCj4gPiAgMSBmaWxlIGNoYW5nZWQsIDkyIGluc2VydGlvbnMoKykKPiA+Cj4gPiBkaWZm IC0tZ2l0IGEvaW5jbHVkZS9hY3BpL2FjdGJsMi5oIGIvaW5jbHVkZS9hY3BpL2FjdGJsMi5oCj4g PiBpbmRleCBmNzI2YmNlM2ViODQuLjczNjc5OTAzNDllZSAxMDA2NDQKPiA+IC0tLSBhL2luY2x1 ZGUvYWNwaS9hY3RibDIuaAo+ID4gKysrIGIvaW5jbHVkZS9hY3BpL2FjdGJsMi5oCj4gPiBAQCAt NTMsNiArNTMsNyBAQAo+ID4gICNkZWZpbmUgQUNQSV9TSUdfUkdSVCAgICAgICAgICAgIlJHUlQi IC8qIFJlZ3VsYXRvcnkgR3JhcGhpY3MgUmVzb3VyY2UgVGFibGUgKi8KPiA+ICAjZGVmaW5lIEFD UElfU0lHX1JIQ1QgICAgICAgICAgICJSSENUIiAvKiBSSVNDLVYgSGFydCBDYXBhYmlsaXRpZXMg VGFibGUgKi8KPiA+ICAjZGVmaW5lIEFDUElfU0lHX1JJTVQgICAgICAgICAgICJSSU1UIiAvKiBS SVNDLVYgSU8gTWFwcGluZyBUYWJsZSAqLwo+ID4gKyNkZWZpbmUgQUNQSV9TSUdfUlFTQyAgICAg ICAgICAgIlJRU0MiIC8qIFJJU0MtViBSSVNDLVYgUXVhbGl0eSBvZiBTZXJ2aWNlIENvbnRyb2xs ZXIgKi8KPiA+ICAjZGVmaW5lIEFDUElfU0lHX1NCU1QgICAgICAgICAgICJTQlNUIiAvKiBTbWFy dCBCYXR0ZXJ5IFNwZWNpZmljYXRpb24gVGFibGUgKi8KPiA+ICAjZGVmaW5lIEFDUElfU0lHX1NE RUkgICAgICAgICAgICJTREVJIiAvKiBTb2Z0d2FyZSBEZWxlZ2F0ZWQgRXhjZXB0aW9uIEludGVy ZmFjZSBUYWJsZSAqLwo+ID4gICNkZWZpbmUgQUNQSV9TSUdfU0RFViAgICAgICAgICAgIlNERVYi IC8qIFNlY3VyZSBEZXZpY2VzIHRhYmxlICovCj4gPiBAQCAtMzE2NSw2ICszMTY2LDk3IEBAIGVu dW0gYWNwaV9yZ3J0X2ltYWdlX3R5cGUgewo+ID4gICAgICAgICBBQ1BJX1JHUlRfVFlQRV9SRVNF UlZFRCA9IDIgICAgIC8qIDIgYW5kIGdyZWF0ZXIgYXJlIHJlc2VydmVkICovCj4gPiAgfTsKPiA+ Cj4gPiArLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiA+ICsgKgo+ID4gKyAqIFJRU0MgLSBSSVND LVYgUXVhbGl0eSBvZiBTZXJ2aWNlIENvbnRyb2xsZXIKPiA+ICsgKiAgICAgICAgVmVyc2lvbiAx Cj4gPiArICoKPiA+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwo+ID4gKwo+ID4gK3N0cnVjdCBh Y3BpX3RhYmxlX3Jxc2NfZmllbGRzX3JlcyB7Cj4gPiArICAgICAgIHU4IHR5cGU7ICAgICAgICAv LyAxCj4gPiArICAgICAgIHU4IHJlc3Y7ICAgICAgICAvLyAxCj4gPiArICAgICAgIHUxNiBsZW5n dGg7ICAgICAvLyAyCj4gPiArICAgICAgIHUxNiBmbGFnczsgICAgICAvLyAyCj4gPiArICAgICAg IHU4IHJlc3YyOyAgICAgICAvLyAxCj4gPiArICAgICAgIHU4IGlkX3R5cGU7ICAgICAvLyAxCj4g PiArICAgICAgIHU2NCBpZDE7ICAgICAgICAvLyA4Cj4gPiArICAgICAgIHUzMiBpZDI7ICAgICAg ICAvLyA0Cj4gPiArfTsKPiA+ICsKPiA+ICtzdHJ1Y3QgYWNwaV90YWJsZV9ycXNjX2ZpZWxkcyB7 Cj4gPiArICAgICAgIHU4IHR5cGU7ICAgICAgICAvLyAgMQo+ID4gKyAgICAgICB1OCByZXN2OyAg ICAgICAgLy8gIDEKPiA+ICsgICAgICAgdTE2IGxlbmd0aDsgICAgIC8vICAyCj4gPiArICAgICAg IHUzMiByZWdbM107ICAgICAvLyAxMgo+ID4gKyAgICAgICB1MzIgcmNpZDsgICAgICAgLy8gIDQK PiA+ICsgICAgICAgdTMyIG1jaWQ7ICAgICAgIC8vICA0Cj4gPiArICAgICAgIHUxNiBmbGFnczsg ICAgICAvLyAgMgo+ID4gKyAgICAgICB1MTYgbnJlczsgICAgICAgLy8gIDIKPiA+ICsgICAgICAg c3RydWN0IGFjcGlfdGFibGVfcnFzY19maWVsZHNfcmVzIHJlczsgLy8gMjAKPiA+ICt9Owo+ID4g Kwo+ID4gK3N0cnVjdCBhY3BpX3RhYmxlX3Jxc2Mgewo+ID4gKyAgICAgICBzdHJ1Y3QgYWNwaV90 YWJsZV9oZWFkZXIgaGVhZGVyOyAgICAgICAgLyogQ29tbW9uIEFDUEkgdGFibGUgaGVhZGVyICov Cj4gPiArICAgICAgIHUzMiBudW07Cj4gPiArICAgICAgIHN0cnVjdCBhY3BpX3RhYmxlX3Jxc2Nf ZmllbGRzIGZbNl07Cj4gCj4gSXMgYSBmaXhlZCBhcnJheSBmWzZdIGFwcHJvcHJpYXRlIGhlcmUg PwoKVGhpcyB3YXMgYSBmbGF3IGluIHRoZSBwcm9vZiBvZiBjb25jZXB0IHdoZXJlIGl0IGFzc3Vt ZWQgNiBjb250cm9sbGVycy4KTXkgd29yay1pbi1wcm9ncmVzcyBoYXMgc29sdmVkIHRoYXQgcHJv YmxlbToKaHR0cHM6Ly9naXRodWIuY29tL3R0LWZ1c3RpbmkvbGludXgvYmxvYi9iNC9zc3Fvc2lk LWNicXJpL2luY2x1ZGUvYWNwaS9hY3RibDIuaAoKPiA+ICt9Owo+ID4gKwo+ID4gKy8qIFJRU0Mg RmxhZ3MgKi8KPiA+ICsjZGVmaW5lIEFDUElfUlFTQ19USU1FUl9DQU5OT1RfV0FLRVVQX0NQVSAg ICAgICAoMSkKPiA+ICsKPiA+ICsvKgo+ID4gKyAqIFJRU0Mgc3VidGFibGVzCj4gPiArICovCj4g PiArc3RydWN0IGFjcGlfcnFzY19ub2RlX2hlYWRlciB7Cj4gPiArICAgICAgIHUxNiB0eXBlOwo+ ID4gKyAgICAgICB1MTYgbGVuZ3RoOwo+ID4gKyAgICAgICB1MTYgcmV2aXNpb247Cj4gPiArfTsK PiA+ICsKPiA+ICsvKiBWYWx1ZXMgZm9yIFJRU0Mgc3VidGFibGUgVHlwZSBhYm92ZSAqLwo+ID4g K2VudW0gYWNwaV9ycXNjX25vZGVfdHlwZSB7Cj4gPiArICAgICAgIEFDUElfUlFTQ19OT0RFX1RZ UEVfSVNBX1NUUklORyA9IDB4MDAwMCwKPiA+ICsgICAgICAgQUNQSV9SUVNDX05PREVfVFlQRV9D TU8gPSAweDAwMDEsCj4gPiArICAgICAgIEFDUElfUlFTQ19OT0RFX1RZUEVfTU1VID0gMHgwMDAy LAo+ID4gKyAgICAgICBBQ1BJX1JRU0NfTk9ERV9UWVBFX1JFU0VSVkVEID0gMHgwMDAzLAo+ID4g KyAgICAgICBBQ1BJX1JRU0NfTk9ERV9UWVBFX0hBUlRfSU5GTyA9IDB4RkZGRiwKPiA+ICt9Owo+ ID4gKwo+ID4gKy8qCj4gPiArICogUlFTQyBub2RlIHNwZWNpZmljIHN1YnRhYmxlcwo+ID4gKyAq Lwo+ID4gKwo+ID4gKy8qIElTQSBzdHJpbmcgbm9kZSBzdHJ1Y3R1cmUgKi8KPiA+ICtzdHJ1Y3Qg YWNwaV9ycXNjX2lzYV9zdHJpbmcgewo+ID4gKyAgICAgICB1MTYgaXNhX2xlbmd0aDsKPiA+ICsg ICAgICAgY2hhciBpc2FbXTsKPiA+ICt9Owo+ID4gKwo+ID4gK3N0cnVjdCBhY3BpX3Jxc2NfY21v X25vZGUgewo+ID4gKyAgICAgICB1OCByZXNlcnZlZDsgICAgICAgICAgICAvKiBNdXN0IGJlIHpl cm8gKi8KPiA+ICsgICAgICAgdTggY2JvbV9zaXplOyAgICAgICAgICAgLyogQ0JPTSBzaXplIGlu IHBvd2Vyb2YgMiAqLwo+ID4gKyAgICAgICB1OCBjYm9wX3NpemU7ICAgICAgICAgICAvKiBDQk9Q IHNpemUgaW4gcG93ZXJvZiAyICovCj4gPiArICAgICAgIHU4IGNib3pfc2l6ZTsgICAgICAgICAg IC8qIENCT1ogc2l6ZSBpbiBwb3dlcm9mIDIgKi8KPiA+ICt9Owo+ID4gKwo+ID4gK3N0cnVjdCBh Y3BpX3Jxc2NfbW11X25vZGUgewo+ID4gKyAgICAgICB1OCByZXNlcnZlZDsgICAgICAgICAgICAv KiBNdXN0IGJlIHplcm8gKi8KPiA+ICsgICAgICAgdTggbW11X3R5cGU7ICAgICAgICAgICAgLyog VmlydHVhbCBBZGRyZXNzIFNjaGVtZSAqLwo+ID4gK307Cj4gPiArCj4gPiArZW51bSBhY3BpX3Jx c2NfbW11X3R5cGUgewo+ID4gKyAgICAgICBBQ1BJX1JRU0NfTU1VX1RZUEVfU1YzOSA9IDAsCj4g PiArICAgICAgIEFDUElfUlFTQ19NTVVfVFlQRV9TVjQ4ID0gMSwKPiA+ICsgICAgICAgQUNQSV9f TU1VX1RZUEVfU1Y1NyA9IDIKPiAKPiBBQ1BJX1JRU0NfTU1VX1RZUEVfU1Y1NyA9IDIgID8KClRo ZXNlIGZpZWxkcyB3ZXJlIGFsbCBpbmNsdWRlZCBieSBtaXN0YWtlLiBUaGUgb25seSBzdHJ1Y3Rz IHRoYXQgcnFzYwpuZWVkcyBhcmU6IGFjcGlfdGFibGVfcnFzY19maWVsZHNfcmVzLCBzdHJ1Y3Qg YWNwaV90YWJsZV9ycXNjX2ZpZWxkcyBhbmQKc3RydWN0IGFjcGlfdGFibGVfcnFzYwoKVGhhbmtz LApEcmV3CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwps aW51eC1yaXNjdiBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpo dHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg==