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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6A3E2C433F5 for ; Tue, 2 Nov 2021 14:49:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 50CF2610FD for ; Tue, 2 Nov 2021 14:49:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232964AbhKBOwK (ORCPT ); Tue, 2 Nov 2021 10:52:10 -0400 Received: from mail.kernel.org ([198.145.29.99]:59484 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232941AbhKBOwH (ORCPT ); Tue, 2 Nov 2021 10:52:07 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 6E13560C4B; Tue, 2 Nov 2021 14:49:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1635864572; bh=0gzjGPbTbWWRcc0SsPOGB293mdUumRiH7yGEhUiWRNA=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=hk+bqY54hAjCxl2dbLTXy/Cbu90+I2wTQ3Oj8AiemS2N5+G12QV0doOkIBdEG43/S lJUAjKvHlYpCIy/vw7RmbhI5HavAVY2mSrsfbaTYSxE1eaKXjz8q6GZueNOYFwSjrt 7lmCXMiIio8rZnBfo23AIvTSGcQCwMTMGI6aBD4I3xCTJXHDegBOnqw4q6slPn69Yl 4PKr+d81SgLPQrRP8iH9J0EkZGlu+BEyoQ1xDIncDr5MGDr7YUUrKhNnTQKXQdtepi DZRKEXyZVk8IhFBt88gDk10xnnOWCI2pAhf0YRiYUP+Y9uPJmp1kZ4zH/jO3pQEZTq JFig1OF3SfC+w== Received: by pali.im (Postfix) id 25765A41; Tue, 2 Nov 2021 15:49:30 +0100 (CET) Date: Tue, 2 Nov 2021 15:49:29 +0100 From: Pali =?utf-8?B?Um9ow6Fy?= To: "Maciej W. Rozycki" Cc: Thomas Bogendoerfer , Russell King , Andrew Lunn , Sebastian Hesselbarth , Gregory Clement , Jason Gunthorpe , Marek =?utf-8?B?QmVow7pu?= , linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] PCI: Marvell: Update PCIe fixup Message-ID: <20211102144929.c5wt5pbl42ocrxly@pali> References: <20211101150405.14618-1-pali@kernel.org> <20211102084241.GA6134@alpha.franken.de> <20211102090246.unmbruykfdjabfga@pali> <20211102094700.GA7376@alpha.franken.de> <20211102100034.rhcb3k2jvr6alm6y@pali> <20211102125843.sqsusis4krnmhorq@pali> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: NeoMutt/20180716 Precedence: bulk List-ID: X-Mailing-List: linux-mips@vger.kernel.org On Tuesday 02 November 2021 14:01:41 Maciej W. Rozycki wrote: > On Tue, 2 Nov 2021, Pali Rohár wrote: > > > > None of the Galileo system controllers I came across had the class code > > > set incorrectly. > > > > In kernel there is quirk only for one device with id: > > PCI_VENDOR_ID_MARVELL (0x11ab) PCI_DEVICE_ID_MARVELL_GT64111 (0x4146) > > > > So for some reasons quirk is needed... Anyway, patch for this quirk just > > adds comment as there is no explanation for it. It does not modify quirk > > code. > > > > So it is possible that Marvell (or rather Galileo at that time) included > > some config space fixup in some products and 0x4146 did not have it. > > Just guessing... We can really only guess what could happen at that time > > 20 years ago... > > Ah, there you go! -- sadly I don't seem to have a copy of the datasheet > for the GT-64111, but the GT-64115 has it[1]: > > Table 158: PCI Class Code and Revision ID, Offset: 0x008 > Bits Field name Function Initial Value > 7:0 RevID Indicates the GT-64115 PCI Revision 0x01 > number. > 15:8 Reserved Read only. 0x0 > 23:16 SubClass Indicates the GT-64115 Subclass - Mem- 0x80 > ory controller. > 31:24 BaseClass Indicates the GT-64115 Base Class - 0x05 > memory controller. > > and then: > > "Device and Vendor ID (0x000), Class Code and Revision ID (0x008), and > Header Type (0x00e) fields are read only from the PCI bus. These fields > can be modified and read via the CPU bus." > > Likewise with the GT-64120[2]: > > Table 208: PCI_0 Class Code and Revision ID, Offset: 0x008 from PCI_0 or CPU; 0x088 from > PCI_1 > Bits Field name Function Initial Value > 7:0 RevID Indicates the GT-64120 PCI_0 revision number. 0x02 > 15:8 Reserved Read Only 0. 0x0 > 23:16 SubClass Indicates the GT-64120 Subclass Depends on value > 0x00 - Host Bridge Device. sampled at reset > 0x80 - Memory Device. on BankSel[0]. See > Table 44 on page > 11-1. > 31:24 BaseClass Indicates the GT-64120 Base Class Depends on value > 0x06 - Bridge Device. sampled at reset > 0x05 - Memory Device. on BankSel[0]. See > Table 44 on page > 11-1. > > Table 209: PCI_1 Class Code and Revision ID, Offset: 0x088 from PCI_0 or CPU; 0x008 from > PCI_1 > Bits Field name Function Initial Value > 31:0 Various Same as for PCI_0 Class Code and Revision ID. > > and then also: > > "Device and Vendor ID (0x000), Class Code and Revision ID (0x008), and > Header Type (0x00e) fields are read only from the PCI bus. These fields > can be modified and read via the CPU bus." > > -- so this is system-specific and an intended chip feature rather than an > erratum (or rather it is a system erratum if the reset strap or the boot > firmware has got it wrong). > > The memory device class code is IIUC meant to be typically chosen when > the Galileo/Marvell device is used without the CPU interface, i.e. as a > PCI memory controller device only[3]. > > > > The lack of a quirk with a platform does not mean it cannot have a certain > > > PCI/e device. > > > > This is 11ab:4620 device an there is no PCIe capability in its config > > space (you can inspect it via 'lspci -F dump.txt -nn -vv' but there is > > nothing interesting). > > Of course, just as Thomas told you about the GT-64111 too. But you were > right in that the memory controller feature seems shared across all the > chip line, whether PCI or PCIe. > > References: > > [1] "GT-64115 System Controller for RC4640, RM523X, and VR4300 CPUs", > Galileo Technology, Datasheet Revision 1.11, APR 04, 2000, Section > 18.16 "PCI Configuration", p. 161 > > [2] "GT-64120 System Controller For RC4650/4700/5000 and RM526X/527X/7000 > CPUs", Galileo Technology, Datasheet Revision 1.4, SEP 14, 1999, > Section 17.16 "PCI Configuration", p. 17-59 > > [3] same, Chapter 14. "Using the GT-64120 Without the CPU Interface", p. > 14-1 > > Maciej Hello Maciej! Thank you very much for the explanation! Now it makes sense and looks like that for GT-64111 it is "system erratum" that strapping pins are incorrectly set which leads to wrong PCI class code. I will update comment for GT-64111 quirk in v2. I'm surprised that Marvell copied this 20 years old MIPS Galileo PCI logic into followup ARM SoC PCIe IPs (and later also into recent ARM64 A3720 SoC PCIe IP), removed configuration of PCI class code via strapping pins and let default PCI class code value to Memory device, even also when PCIe controller is running in Root Complex mode. And so correction can be done only from "CPU bus". Just Marvell forgot to include chapter about usage without CPU interface in new ARM and ARM64 SoCs and origin/usage of that Memory Controller Device was lost in history, even Marvell people was not able to figure out what was wrong with PCIe IP in their ARM SoCs... https://lore.kernel.org/linux-pci/20211003120944.3lmwxylnhlp2kfj7@pali/ Maciej, if I had known that you have this kind of information I would have written you year ago :-) 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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B483DC433F5 for ; Tue, 2 Nov 2021 14:50:58 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 7E499610FC for ; Tue, 2 Nov 2021 14:50:58 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 7E499610FC Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org 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=rni/JVeBypmj1L3R4wME3UxNXCQIUmgP0/rl/4mmvSY=; b=NadjkfSockrA8Y AFLgSkSNWp7ZROBDSOg7aBPEWVF03LMsr7JrvxE1Cc0T9/BvvrbhsI3ZS+XJexMlZlwwMMz9Vyg68 NSmSKrx2kK4x7aJtYeXm2OTHf3O4mO5N9bKc4tnxsZQSr9N4mEVaoLE1ivqRJ6J/Qpfh1wzaeO1SO Y47+CKwJ+jzTa0tCBpzGIjhtR9VjMA+2nyqMUOXDC95rxJs0lLOgsZ/JNrZE5q7mLC6og1r1t6Yhw /6yA55i0MLG3NhROCsBFGzOiQIOefZjMv9V5eAnrW5THNYz0+Cjk44JIqenSnrhL52T5imwjHCVws 9PTs0/7mpAzHWCAGQCWA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mhv6X-001z99-5M; Tue, 02 Nov 2021 14:49:37 +0000 Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mhv6T-001z8j-3K for linux-arm-kernel@lists.infradead.org; Tue, 02 Nov 2021 14:49:34 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id 6E13560C4B; Tue, 2 Nov 2021 14:49:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1635864572; bh=0gzjGPbTbWWRcc0SsPOGB293mdUumRiH7yGEhUiWRNA=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=hk+bqY54hAjCxl2dbLTXy/Cbu90+I2wTQ3Oj8AiemS2N5+G12QV0doOkIBdEG43/S lJUAjKvHlYpCIy/vw7RmbhI5HavAVY2mSrsfbaTYSxE1eaKXjz8q6GZueNOYFwSjrt 7lmCXMiIio8rZnBfo23AIvTSGcQCwMTMGI6aBD4I3xCTJXHDegBOnqw4q6slPn69Yl 4PKr+d81SgLPQrRP8iH9J0EkZGlu+BEyoQ1xDIncDr5MGDr7YUUrKhNnTQKXQdtepi DZRKEXyZVk8IhFBt88gDk10xnnOWCI2pAhf0YRiYUP+Y9uPJmp1kZ4zH/jO3pQEZTq JFig1OF3SfC+w== Received: by pali.im (Postfix) id 25765A41; Tue, 2 Nov 2021 15:49:30 +0100 (CET) Date: Tue, 2 Nov 2021 15:49:29 +0100 From: Pali =?utf-8?B?Um9ow6Fy?= To: "Maciej W. Rozycki" Cc: Thomas Bogendoerfer , Russell King , Andrew Lunn , Sebastian Hesselbarth , Gregory Clement , Jason Gunthorpe , Marek =?utf-8?B?QmVow7pu?= , linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] PCI: Marvell: Update PCIe fixup Message-ID: <20211102144929.c5wt5pbl42ocrxly@pali> References: <20211101150405.14618-1-pali@kernel.org> <20211102084241.GA6134@alpha.franken.de> <20211102090246.unmbruykfdjabfga@pali> <20211102094700.GA7376@alpha.franken.de> <20211102100034.rhcb3k2jvr6alm6y@pali> <20211102125843.sqsusis4krnmhorq@pali> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: NeoMutt/20180716 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211102_074933_213374_8548DEFC X-CRM114-Status: GOOD ( 33.37 ) X-BeenThere: linux-arm-kernel@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-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gVHVlc2RheSAwMiBOb3ZlbWJlciAyMDIxIDE0OjAxOjQxIE1hY2llaiBXLiBSb3p5Y2tpIHdy b3RlOgo+IE9uIFR1ZSwgMiBOb3YgMjAyMSwgUGFsaSBSb2jDoXIgd3JvdGU6Cj4gCj4gPiA+ICBO b25lIG9mIHRoZSBHYWxpbGVvIHN5c3RlbSBjb250cm9sbGVycyBJIGNhbWUgYWNyb3NzIGhhZCB0 aGUgY2xhc3MgY29kZSAKPiA+ID4gc2V0IGluY29ycmVjdGx5Lgo+ID4gCj4gPiBJbiBrZXJuZWwg dGhlcmUgaXMgcXVpcmsgb25seSBmb3Igb25lIGRldmljZSB3aXRoIGlkOgo+ID4gUENJX1ZFTkRP Ul9JRF9NQVJWRUxMICgweDExYWIpIFBDSV9ERVZJQ0VfSURfTUFSVkVMTF9HVDY0MTExICgweDQx NDYpCj4gPiAKPiA+IFNvIGZvciBzb21lIHJlYXNvbnMgcXVpcmsgaXMgbmVlZGVkLi4uIEFueXdh eSwgcGF0Y2ggZm9yIHRoaXMgcXVpcmsganVzdAo+ID4gYWRkcyBjb21tZW50IGFzIHRoZXJlIGlz IG5vIGV4cGxhbmF0aW9uIGZvciBpdC4gSXQgZG9lcyBub3QgbW9kaWZ5IHF1aXJrCj4gPiBjb2Rl Lgo+ID4gCj4gPiBTbyBpdCBpcyBwb3NzaWJsZSB0aGF0IE1hcnZlbGwgKG9yIHJhdGhlciBHYWxp bGVvIGF0IHRoYXQgdGltZSkgaW5jbHVkZWQKPiA+IHNvbWUgY29uZmlnIHNwYWNlIGZpeHVwIGlu IHNvbWUgcHJvZHVjdHMgYW5kIDB4NDE0NiBkaWQgbm90IGhhdmUgaXQuCj4gPiBKdXN0IGd1ZXNz aW5nLi4uIFdlIGNhbiByZWFsbHkgb25seSBndWVzcyB3aGF0IGNvdWxkIGhhcHBlbiBhdCB0aGF0 IHRpbWUKPiA+IDIwIHllYXJzIGFnby4uLgo+IAo+ICBBaCwgdGhlcmUgeW91IGdvISAtLSBzYWRs eSBJIGRvbid0IHNlZW0gdG8gaGF2ZSBhIGNvcHkgb2YgdGhlIGRhdGFzaGVldCAKPiBmb3IgdGhl IEdULTY0MTExLCBidXQgdGhlIEdULTY0MTE1IGhhcyBpdFsxXToKPiAKPiBUYWJsZSAxNTg6IFBD SSBDbGFzcyBDb2RlIGFuZCBSZXZpc2lvbiBJRCwgT2Zmc2V0OiAweDAwOAo+ICBCaXRzICBGaWVs ZCBuYW1lIEZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRp YWwgVmFsdWUKPiAgNzowICAgUmV2SUQgICAgICBJbmRpY2F0ZXMgdGhlIEdULTY0MTE1IFBDSSBS ZXZpc2lvbiAgICAgICAgICAweDAxCj4gICAgICAgICAgICAgICAgICAgbnVtYmVyLgo+ICAxNTo4 ICBSZXNlcnZlZCAgIFJlYWQgb25seS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDB4MAo+ICAyMzoxNiBTdWJDbGFzcyAgIEluZGljYXRlcyB0aGUgR1QtNjQxMTUgU3ViY2xhc3Mg LSBNZW0tICAgICAgIDB4ODAKPiAgICAgICAgICAgICAgICAgICBvcnkgY29udHJvbGxlci4KPiAg MzE6MjQgQmFzZUNsYXNzICBJbmRpY2F0ZXMgdGhlIEdULTY0MTE1IEJhc2UgQ2xhc3MgLSAgICAg ICAgICAweDA1Cj4gICAgICAgICAgICAgICAgICAgbWVtb3J5IGNvbnRyb2xsZXIuCj4gCj4gYW5k IHRoZW46Cj4gCj4gIkRldmljZSBhbmQgVmVuZG9yIElEICgweDAwMCksIENsYXNzIENvZGUgYW5k IFJldmlzaW9uIElEICgweDAwOCksIGFuZCAKPiBIZWFkZXIgVHlwZSAoMHgwMGUpIGZpZWxkcyBh cmUgcmVhZCBvbmx5IGZyb20gdGhlIFBDSSBidXMuICBUaGVzZSBmaWVsZHMgCj4gY2FuIGJlIG1v ZGlmaWVkIGFuZCByZWFkIHZpYSB0aGUgQ1BVIGJ1cy4iCj4gCj4gTGlrZXdpc2Ugd2l0aCB0aGUg R1QtNjQxMjBbMl06Cj4gCj4gVGFibGUgMjA4OiBQQ0lfMCBDbGFzcyBDb2RlIGFuZCBSZXZpc2lv biBJRCwgT2Zmc2V0OiAweDAwOCBmcm9tIFBDSV8wIG9yIENQVTsgMHgwODggZnJvbQo+ICAgICAg ICAgICAgUENJXzEKPiAgQml0cyAgRmllbGQgbmFtZSBGdW5jdGlvbiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbCBWYWx1ZQo+ICA3OjAgICBSZXZJRCAgICAgIElu ZGljYXRlcyB0aGUgR1QtNjQxMjAgUENJXzAgcmV2aXNpb24gbnVtYmVyLiAweDAyCj4gIDE1Ojgg IFJlc2VydmVkICAgUmVhZCBPbmx5IDAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDB4MAo+ICAyMzoxNiBTdWJDbGFzcyAgIEluZGljYXRlcyB0aGUgR1QtNjQxMjAgU3ViY2xhc3Mg ICAgICAgICAgICAgICBEZXBlbmRzIG9uIHZhbHVlCj4gICAgICAgICAgICAgICAgICAgMHgwMCAt IEhvc3QgQnJpZGdlIERldmljZS4gICAgICAgICAgICAgICAgICAgIHNhbXBsZWQgYXQgcmVzZXQK PiAgICAgICAgICAgICAgICAgICAweDgwIC0gTWVtb3J5IERldmljZS4gICAgICAgICAgICAgICAg ICAgICAgICAgb24gQmFua1NlbFswXS4gU2VlCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlIDQ0IG9uIHBhZ2UKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMTEtMS4KPiAgMzE6MjQgQmFzZUNsYXNzICBJbmRpY2F0ZXMgdGhlIEdULTY0MTIwIEJh c2UgQ2xhc3MgICAgICAgICAgICAgRGVwZW5kcyBvbiB2YWx1ZQo+ICAgICAgICAgICAgICAgICAg IDB4MDYgLSBCcmlkZ2UgRGV2aWNlLiAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVkIGF0 IHJlc2V0Cj4gICAgICAgICAgICAgICAgICAgMHgwNSAtIE1lbW9yeSBEZXZpY2UuICAgICAgICAg ICAgICAgICAgICAgICAgIG9uIEJhbmtTZWxbMF0uIFNlZQo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSA0NCBvbiBw YWdlCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDExLTEuCj4gCj4gVGFibGUgMjA5OiBQQ0lfMSBDbGFzcyBDb2RlIGFuZCBS ZXZpc2lvbiBJRCwgT2Zmc2V0OiAweDA4OCBmcm9tIFBDSV8wIG9yIENQVTsgMHgwMDggZnJvbQo+ ICAgICAgICAgICAgUENJXzEKPiAgQml0cyAgRmllbGQgbmFtZSBGdW5jdGlvbiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbCBWYWx1ZQo+ICAzMTowICBWYXJpb3Vz ICAgIFNhbWUgYXMgZm9yIFBDSV8wIENsYXNzIENvZGUgYW5kIFJldmlzaW9uIElELgo+IAo+IGFu ZCB0aGVuIGFsc286Cj4gCj4gIkRldmljZSBhbmQgVmVuZG9yIElEICgweDAwMCksIENsYXNzIENv ZGUgYW5kIFJldmlzaW9uIElEICgweDAwOCksIGFuZCAKPiBIZWFkZXIgVHlwZSAoMHgwMGUpIGZp ZWxkcyBhcmUgcmVhZCBvbmx5IGZyb20gdGhlIFBDSSBidXMuICBUaGVzZSBmaWVsZHMgCj4gY2Fu IGJlIG1vZGlmaWVkIGFuZCByZWFkIHZpYSB0aGUgQ1BVIGJ1cy4iCj4gCj4gLS0gc28gdGhpcyBp cyBzeXN0ZW0tc3BlY2lmaWMgYW5kIGFuIGludGVuZGVkIGNoaXAgZmVhdHVyZSByYXRoZXIgdGhh biBhbiAKPiBlcnJhdHVtIChvciByYXRoZXIgaXQgaXMgYSBzeXN0ZW0gZXJyYXR1bSBpZiB0aGUg cmVzZXQgc3RyYXAgb3IgdGhlIGJvb3QgCj4gZmlybXdhcmUgaGFzIGdvdCBpdCB3cm9uZykuCj4g Cj4gIFRoZSBtZW1vcnkgZGV2aWNlIGNsYXNzIGNvZGUgaXMgSUlVQyBtZWFudCB0byBiZSB0eXBp Y2FsbHkgY2hvc2VuIHdoZW4gCj4gdGhlIEdhbGlsZW8vTWFydmVsbCBkZXZpY2UgaXMgdXNlZCB3 aXRob3V0IHRoZSBDUFUgaW50ZXJmYWNlLCBpLmUuIGFzIGEgCj4gUENJIG1lbW9yeSBjb250cm9s bGVyIGRldmljZSBvbmx5WzNdLgo+IAo+ID4gPiBUaGUgbGFjayBvZiBhIHF1aXJrIHdpdGggYSBw bGF0Zm9ybSBkb2VzIG5vdCBtZWFuIGl0IGNhbm5vdCBoYXZlIGEgY2VydGFpbiAKPiA+ID4gUENJ L2UgZGV2aWNlLgo+ID4gCj4gPiBUaGlzIGlzIDExYWI6NDYyMCBkZXZpY2UgYW4gdGhlcmUgaXMg bm8gUENJZSBjYXBhYmlsaXR5IGluIGl0cyBjb25maWcKPiA+IHNwYWNlICh5b3UgY2FuIGluc3Bl Y3QgaXQgdmlhICdsc3BjaSAtRiBkdW1wLnR4dCAtbm4gLXZ2JyBidXQgdGhlcmUgaXMKPiA+IG5v dGhpbmcgaW50ZXJlc3RpbmcpLgo+IAo+ICBPZiBjb3Vyc2UsIGp1c3QgYXMgVGhvbWFzIHRvbGQg eW91IGFib3V0IHRoZSBHVC02NDExMSB0b28uICBCdXQgeW91IHdlcmUgCj4gcmlnaHQgaW4gdGhh dCB0aGUgbWVtb3J5IGNvbnRyb2xsZXIgZmVhdHVyZSBzZWVtcyBzaGFyZWQgYWNyb3NzIGFsbCB0 aGUgCj4gY2hpcCBsaW5lLCB3aGV0aGVyIFBDSSBvciBQQ0llLgo+IAo+IFJlZmVyZW5jZXM6Cj4g Cj4gWzFdICJHVC02NDExNSBTeXN0ZW0gQ29udHJvbGxlciBmb3IgUkM0NjQwLCBSTTUyM1gsIGFu ZCBWUjQzMDAgQ1BVcyIsIAo+ICAgICBHYWxpbGVvIFRlY2hub2xvZ3ksIERhdGFzaGVldCBSZXZp c2lvbiAxLjExLCBBUFIgMDQsIDIwMDAsIFNlY3Rpb24gCj4gICAgIDE4LjE2ICJQQ0kgQ29uZmln dXJhdGlvbiIsIHAuIDE2MQo+IAo+IFsyXSAiR1QtNjQxMjAgU3lzdGVtIENvbnRyb2xsZXIgRm9y IFJDNDY1MC80NzAwLzUwMDAgYW5kIFJNNTI2WC81MjdYLzcwMDAgCj4gICAgIENQVXMiLCBHYWxp bGVvIFRlY2hub2xvZ3ksIERhdGFzaGVldCBSZXZpc2lvbiAxLjQsIFNFUCAxNCwgMTk5OSwgCj4g ICAgIFNlY3Rpb24gMTcuMTYgIlBDSSBDb25maWd1cmF0aW9uIiwgcC4gMTctNTkKPiAKPiBbM10g c2FtZSwgQ2hhcHRlciAxNC4gIlVzaW5nIHRoZSBHVC02NDEyMCBXaXRob3V0IHRoZSBDUFUgSW50 ZXJmYWNlIiwgcC4gCj4gICAgIDE0LTEKPiAKPiAgIE1hY2llagoKSGVsbG8gTWFjaWVqISBUaGFu ayB5b3UgdmVyeSBtdWNoIGZvciB0aGUgZXhwbGFuYXRpb24hCgpOb3cgaXQgbWFrZXMgc2Vuc2Ug YW5kIGxvb2tzIGxpa2UgdGhhdCBmb3IgR1QtNjQxMTEgaXQgaXMgInN5c3RlbQplcnJhdHVtIiB0 aGF0IHN0cmFwcGluZyBwaW5zIGFyZSBpbmNvcnJlY3RseSBzZXQgd2hpY2ggbGVhZHMgdG8gd3Jv bmcKUENJIGNsYXNzIGNvZGUuCgpJIHdpbGwgdXBkYXRlIGNvbW1lbnQgZm9yIEdULTY0MTExIHF1 aXJrIGluIHYyLgoKSSdtIHN1cnByaXNlZCB0aGF0IE1hcnZlbGwgY29waWVkIHRoaXMgMjAgeWVh cnMgb2xkIE1JUFMgR2FsaWxlbyBQQ0kKbG9naWMgaW50byBmb2xsb3d1cCBBUk0gU29DIFBDSWUg SVBzIChhbmQgbGF0ZXIgYWxzbyBpbnRvIHJlY2VudCBBUk02NApBMzcyMCBTb0MgUENJZSBJUCks IHJlbW92ZWQgY29uZmlndXJhdGlvbiBvZiBQQ0kgY2xhc3MgY29kZSB2aWEKc3RyYXBwaW5nIHBp bnMgYW5kIGxldCBkZWZhdWx0IFBDSSBjbGFzcyBjb2RlIHZhbHVlIHRvIE1lbW9yeSBkZXZpY2Us CmV2ZW4gYWxzbyB3aGVuIFBDSWUgY29udHJvbGxlciBpcyBydW5uaW5nIGluIFJvb3QgQ29tcGxl eCBtb2RlLiBBbmQgc28KY29ycmVjdGlvbiBjYW4gYmUgZG9uZSBvbmx5IGZyb20gIkNQVSBidXMi LgoKSnVzdCBNYXJ2ZWxsIGZvcmdvdCB0byBpbmNsdWRlIGNoYXB0ZXIgYWJvdXQgdXNhZ2Ugd2l0 aG91dCBDUFUgaW50ZXJmYWNlCmluIG5ldyBBUk0gYW5kIEFSTTY0IFNvQ3MgYW5kIG9yaWdpbi91 c2FnZSBvZiB0aGF0IE1lbW9yeSBDb250cm9sbGVyCkRldmljZSB3YXMgbG9zdCBpbiBoaXN0b3J5 LCBldmVuIE1hcnZlbGwgcGVvcGxlIHdhcyBub3QgYWJsZSB0byBmaWd1cmUKb3V0IHdoYXQgd2Fz IHdyb25nIHdpdGggUENJZSBJUCBpbiB0aGVpciBBUk0gU29Dcy4uLgpodHRwczovL2xvcmUua2Vy bmVsLm9yZy9saW51eC1wY2kvMjAyMTEwMDMxMjA5NDQuM2xtd3h5bG5obHAya2ZqN0BwYWxpLwoK TWFjaWVqLCBpZiBJIGhhZCBrbm93biB0aGF0IHlvdSBoYXZlIHRoaXMga2luZCBvZiBpbmZvcm1h dGlvbiBJIHdvdWxkCmhhdmUgd3JpdHRlbiB5b3UgeWVhciBhZ28gOi0pCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxp bmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3Rz LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==