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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9DE14C43334 for ; Mon, 18 Jul 2022 10:34:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234351AbiGRKeb (ORCPT ); Mon, 18 Jul 2022 06:34:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43848 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234264AbiGRKeb (ORCPT ); Mon, 18 Jul 2022 06:34:31 -0400 Received: from relay8-d.mail.gandi.net (relay8-d.mail.gandi.net [217.70.183.201]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9D15BF584; Mon, 18 Jul 2022 03:34:28 -0700 (PDT) Received: (Authenticated sender: gregory.clement@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id 898BC1BF213; Mon, 18 Jul 2022 10:34:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1658140463; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=1lqJZ9DNNSoJTbftea7WtGsRy5Q9ZGtnWZ4Y0cfLY+A=; b=lGKgx5Nf78B5wKkeuRyvCSpoFrWu/7f2I03CPhtv7JAzzr5kTEE9wh0C9pzvo2KMNdHDhz yM3UGQQ022Y3RhGZgNErDcunq0moN5f25NZVgM7Swz4f1Obz67K5EReFKDb6VrrXhpCMTF X7HwBGo15J96GP9oMFoN8uT9JaiyYSU878i9NmxQLJKA7taQGOLfdNPqMixRyVeex5Sm0W Fa1dkg3ZQPI3FdxHY4/cpaMKdZUEEORyf16dnQ4fYKq3rvZ7+j+A9Nms/U7i8md5KEfIvD 3NV7tiMf2341QbcfJx8iDL6XfRMtSUDVFAcSXymBt4m3Akp/sVfkh1xdoOvPGA== From: Gregory CLEMENT To: Pali =?utf-8?Q?Roh=C3=A1r?= , Russell King , Andrew Lunn , Sebastian Hesselbarth , Jason Gunthorpe Cc: linux-arm-kernel@lists.infradead.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2 1/2] ARM: Marvell: Update PCIe fixup In-Reply-To: <20220219143006.bsr6wdagf5ytynxu@pali> References: <20211101150405.14618-1-pali@kernel.org> <20211102171259.9590-1-pali@kernel.org> <20220219143006.bsr6wdagf5ytynxu@pali> Date: Mon, 18 Jul 2022 12:34:19 +0200 Message-ID: <8735eyso9g.fsf@BL-laptop> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org Pali Roh=C3=A1r writes: > PING, Gente reminder for patch 1/2. Applied on mvebu/arm, it was waiting too long. Thanks, Gregory > > On Tuesday 02 November 2021 18:12:58 Pali Roh=C3=A1r wrote: >> - The code relies on rc_pci_fixup being called, which only happens >> when CONFIG_PCI_QUIRKS is enabled, so add that to Kconfig. Omitting >> this causes a booting failure with a non-obvious cause. >> - Update rc_pci_fixup to set the class properly, copying the >> more modern style from other places >> - Correct the rc_pci_fixup comment >>=20 >> This patch just re-applies commit 1dc831bf53fd ("ARM: Kirkwood: Update >> PCI-E fixup") for all other Marvell ARM platforms which have same buggy >> PCIe controller and do not use pci-mvebu.c controller driver yet. >>=20 >> Long-term goal for these Marvell ARM platforms should be conversion to >> pci-mvebu.c controller driver and removal of these fixups in arch code. >>=20 >> Signed-off-by: Pali Roh=C3=A1r >> Cc: Jason Gunthorpe >> Cc: stable@vger.kernel.org >>=20 >> --- >> Changes in v2: >> * Move MIPS change into separate patch >> * Add information that this patch is for platforms which do not use pci-= mvebu.c >> --- >> arch/arm/Kconfig | 1 + >> arch/arm/mach-dove/pcie.c | 11 ++++++++--- >> arch/arm/mach-mv78xx0/pcie.c | 11 ++++++++--- >> arch/arm/mach-orion5x/Kconfig | 1 + >> arch/arm/mach-orion5x/pci.c | 12 +++++++++--- >> 5 files changed, 27 insertions(+), 9 deletions(-) >>=20 >> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig >> index fc196421b2ce..9f157e973555 100644 >> --- a/arch/arm/Kconfig >> +++ b/arch/arm/Kconfig >> @@ -400,6 +400,7 @@ config ARCH_DOVE >> select GENERIC_IRQ_MULTI_HANDLER >> select GPIOLIB >> select HAVE_PCI >> + select PCI_QUIRKS if PCI >> select MVEBU_MBUS >> select PINCTRL >> select PINCTRL_DOVE >> diff --git a/arch/arm/mach-dove/pcie.c b/arch/arm/mach-dove/pcie.c >> index ee91ac6b5ebf..ecf057a0f5ba 100644 >> --- a/arch/arm/mach-dove/pcie.c >> +++ b/arch/arm/mach-dove/pcie.c >> @@ -135,14 +135,19 @@ static struct pci_ops pcie_ops =3D { >> .write =3D pcie_wr_conf, >> }; >>=20=20 >> +/* >> + * The root complex has a hardwired class of PCI_CLASS_MEMORY_OTHER, wh= en it >> + * is operating as a root complex this needs to be switched to >> + * PCI_CLASS_BRIDGE_HOST or Linux will errantly try to process the BAR'= s on >> + * the device. Decoding setup is handled by the orion code. >> + */ >> static void rc_pci_fixup(struct pci_dev *dev) >> { >> - /* >> - * Prevent enumeration of root complex. >> - */ >> if (dev->bus->parent =3D=3D NULL && dev->devfn =3D=3D 0) { >> int i; >>=20=20 >> + dev->class &=3D 0xff; >> + dev->class |=3D PCI_CLASS_BRIDGE_HOST << 8; >> for (i =3D 0; i < DEVICE_COUNT_RESOURCE; i++) { >> dev->resource[i].start =3D 0; >> dev->resource[i].end =3D 0; >> diff --git a/arch/arm/mach-mv78xx0/pcie.c b/arch/arm/mach-mv78xx0/pcie.c >> index 636d84b40466..9362b5fc116f 100644 >> --- a/arch/arm/mach-mv78xx0/pcie.c >> +++ b/arch/arm/mach-mv78xx0/pcie.c >> @@ -177,14 +177,19 @@ static struct pci_ops pcie_ops =3D { >> .write =3D pcie_wr_conf, >> }; >>=20=20 >> +/* >> + * The root complex has a hardwired class of PCI_CLASS_MEMORY_OTHER, wh= en it >> + * is operating as a root complex this needs to be switched to >> + * PCI_CLASS_BRIDGE_HOST or Linux will errantly try to process the BAR'= s on >> + * the device. Decoding setup is handled by the orion code. >> + */ >> static void rc_pci_fixup(struct pci_dev *dev) >> { >> - /* >> - * Prevent enumeration of root complex. >> - */ >> if (dev->bus->parent =3D=3D NULL && dev->devfn =3D=3D 0) { >> int i; >>=20=20 >> + dev->class &=3D 0xff; >> + dev->class |=3D PCI_CLASS_BRIDGE_HOST << 8; >> for (i =3D 0; i < DEVICE_COUNT_RESOURCE; i++) { >> dev->resource[i].start =3D 0; >> dev->resource[i].end =3D 0; >> diff --git a/arch/arm/mach-orion5x/Kconfig b/arch/arm/mach-orion5x/Kconf= ig >> index e94a61901ffd..7189a5b1ec46 100644 >> --- a/arch/arm/mach-orion5x/Kconfig >> +++ b/arch/arm/mach-orion5x/Kconfig >> @@ -6,6 +6,7 @@ menuconfig ARCH_ORION5X >> select GPIOLIB >> select MVEBU_MBUS >> select FORCE_PCI >> + select PCI_QUIRKS >> select PHYLIB if NETDEVICES >> select PLAT_ORION_LEGACY >> help >> diff --git a/arch/arm/mach-orion5x/pci.c b/arch/arm/mach-orion5x/pci.c >> index 76951bfbacf5..5145fe89702e 100644 >> --- a/arch/arm/mach-orion5x/pci.c >> +++ b/arch/arm/mach-orion5x/pci.c >> @@ -509,14 +509,20 @@ static int __init pci_setup(struct pci_sys_data *s= ys) >> /**********************************************************************= ******* >> * General PCIe + PCI >> **********************************************************************= ******/ >> + >> +/* >> + * The root complex has a hardwired class of PCI_CLASS_MEMORY_OTHER, wh= en it >> + * is operating as a root complex this needs to be switched to >> + * PCI_CLASS_BRIDGE_HOST or Linux will errantly try to process the BAR'= s on >> + * the device. Decoding setup is handled by the orion code. >> + */ >> static void rc_pci_fixup(struct pci_dev *dev) >> { >> - /* >> - * Prevent enumeration of root complex. >> - */ >> if (dev->bus->parent =3D=3D NULL && dev->devfn =3D=3D 0) { >> int i; >>=20=20 >> + dev->class &=3D 0xff; >> + dev->class |=3D PCI_CLASS_BRIDGE_HOST << 8; >> for (i =3D 0; i < DEVICE_COUNT_RESOURCE; i++) { >> dev->resource[i].start =3D 0; >> dev->resource[i].end =3D 0; >> --=20 >> 2.20.1 >>=20 --=20 Gregory Clement, Bootlin Embedded Linux and Kernel engineering http://bootlin.com 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 D56D7C43334 for ; Mon, 18 Jul 2022 10:35:45 +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:MIME-Version:Message-ID:Date:References :In-Reply-To:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=TUfGn9nOuHhMsY0Z00MopWI+TfpAn29NzLlNbbOb8IQ=; b=A7zSHui8nUYBLK CwuxcivQSdRE6LV7dIrkgTbekkZCryWe0muxXkskRYV46oMK8z7zjiZWfuVpNGkP5oPT3xULqaa1v /kFD+rQF2JP+f3w/FA8DuuC/d2QEw4g8z49a46QJX8jmWwPhW5MsMHuR55Qrv36zMpvzjLgD+5pYm Zx79m6sOOtxXlL4Aba99UWR5mG7x4zYMF11kPZpXQMgFkz29Yy4FHm7qy5k6IuVaAMO19YMstKlN1 xp431cpBV+ZiaLksgLnlUSOfxw8h5Qc9bPY4ASn9mI7J6QpiaW1OrzwMoSeWu+yQYreZoPYQwGsWl E92fjjBPrmAEuElw4crw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oDO5F-00CUOU-FF; Mon, 18 Jul 2022 10:34:37 +0000 Received: from relay8-d.mail.gandi.net ([2001:4b98:dc4:8::228]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oDO58-00CUI6-Qu for linux-arm-kernel@lists.infradead.org; Mon, 18 Jul 2022 10:34:35 +0000 Received: (Authenticated sender: gregory.clement@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id 898BC1BF213; Mon, 18 Jul 2022 10:34:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1658140463; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=1lqJZ9DNNSoJTbftea7WtGsRy5Q9ZGtnWZ4Y0cfLY+A=; b=lGKgx5Nf78B5wKkeuRyvCSpoFrWu/7f2I03CPhtv7JAzzr5kTEE9wh0C9pzvo2KMNdHDhz yM3UGQQ022Y3RhGZgNErDcunq0moN5f25NZVgM7Swz4f1Obz67K5EReFKDb6VrrXhpCMTF X7HwBGo15J96GP9oMFoN8uT9JaiyYSU878i9NmxQLJKA7taQGOLfdNPqMixRyVeex5Sm0W Fa1dkg3ZQPI3FdxHY4/cpaMKdZUEEORyf16dnQ4fYKq3rvZ7+j+A9Nms/U7i8md5KEfIvD 3NV7tiMf2341QbcfJx8iDL6XfRMtSUDVFAcSXymBt4m3Akp/sVfkh1xdoOvPGA== From: Gregory CLEMENT To: Pali =?utf-8?Q?Roh=C3=A1r?= , Russell King , Andrew Lunn , Sebastian Hesselbarth , Jason Gunthorpe Cc: linux-arm-kernel@lists.infradead.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2 1/2] ARM: Marvell: Update PCIe fixup In-Reply-To: <20220219143006.bsr6wdagf5ytynxu@pali> References: <20211101150405.14618-1-pali@kernel.org> <20211102171259.9590-1-pali@kernel.org> <20220219143006.bsr6wdagf5ytynxu@pali> Date: Mon, 18 Jul 2022 12:34:19 +0200 Message-ID: <8735eyso9g.fsf@BL-laptop> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220718_033431_364052_99572D71 X-CRM114-Status: GOOD ( 21.45 ) 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 UGFsaSBSb2jDoXIgPHBhbGlAa2VybmVsLm9yZz4gd3JpdGVzOgoKPiBQSU5HLCBHZW50ZSByZW1p bmRlciBmb3IgcGF0Y2ggMS8yLgoKQXBwbGllZCBvbiBtdmVidS9hcm0sIGl0IHdhcyB3YWl0aW5n IHRvbyBsb25nLgoKVGhhbmtzLAoKR3JlZ29yeQoKPgo+IE9uIFR1ZXNkYXkgMDIgTm92ZW1iZXIg MjAyMSAxODoxMjo1OCBQYWxpIFJvaMOhciB3cm90ZToKPj4gLSBUaGUgY29kZSByZWxpZXMgb24g cmNfcGNpX2ZpeHVwIGJlaW5nIGNhbGxlZCwgd2hpY2ggb25seSBoYXBwZW5zCj4+ICAgd2hlbiBD T05GSUdfUENJX1FVSVJLUyBpcyBlbmFibGVkLCBzbyBhZGQgdGhhdCB0byBLY29uZmlnLiBPbWl0 dGluZwo+PiAgIHRoaXMgY2F1c2VzIGEgYm9vdGluZyBmYWlsdXJlIHdpdGggYSBub24tb2J2aW91 cyBjYXVzZS4KPj4gLSBVcGRhdGUgcmNfcGNpX2ZpeHVwIHRvIHNldCB0aGUgY2xhc3MgcHJvcGVy bHksIGNvcHlpbmcgdGhlCj4+ICAgbW9yZSBtb2Rlcm4gc3R5bGUgZnJvbSBvdGhlciBwbGFjZXMK Pj4gLSBDb3JyZWN0IHRoZSByY19wY2lfZml4dXAgY29tbWVudAo+PiAKPj4gVGhpcyBwYXRjaCBq dXN0IHJlLWFwcGxpZXMgY29tbWl0IDFkYzgzMWJmNTNmZCAoIkFSTTogS2lya3dvb2Q6IFVwZGF0 ZQo+PiBQQ0ktRSBmaXh1cCIpIGZvciBhbGwgb3RoZXIgTWFydmVsbCBBUk0gcGxhdGZvcm1zIHdo aWNoIGhhdmUgc2FtZSBidWdneQo+PiBQQ0llIGNvbnRyb2xsZXIgYW5kIGRvIG5vdCB1c2UgcGNp LW12ZWJ1LmMgY29udHJvbGxlciBkcml2ZXIgeWV0Lgo+PiAKPj4gTG9uZy10ZXJtIGdvYWwgZm9y IHRoZXNlIE1hcnZlbGwgQVJNIHBsYXRmb3JtcyBzaG91bGQgYmUgY29udmVyc2lvbiB0bwo+PiBw Y2ktbXZlYnUuYyBjb250cm9sbGVyIGRyaXZlciBhbmQgcmVtb3ZhbCBvZiB0aGVzZSBmaXh1cHMg aW4gYXJjaCBjb2RlLgo+PiAKPj4gU2lnbmVkLW9mZi1ieTogUGFsaSBSb2jDoXIgPHBhbGlAa2Vy bmVsLm9yZz4KPj4gQ2M6IEphc29uIEd1bnRob3JwZSA8amdnQG52aWRpYS5jb20+Cj4+IENjOiBz dGFibGVAdmdlci5rZXJuZWwub3JnCj4+IAo+PiAtLS0KPj4gQ2hhbmdlcyBpbiB2MjoKPj4gKiBN b3ZlIE1JUFMgY2hhbmdlIGludG8gc2VwYXJhdGUgcGF0Y2gKPj4gKiBBZGQgaW5mb3JtYXRpb24g dGhhdCB0aGlzIHBhdGNoIGlzIGZvciBwbGF0Zm9ybXMgd2hpY2ggZG8gbm90IHVzZSBwY2ktbXZl YnUuYwo+PiAtLS0KPj4gIGFyY2gvYXJtL0tjb25maWcgICAgICAgICAgICAgIHwgIDEgKwo+PiAg YXJjaC9hcm0vbWFjaC1kb3ZlL3BjaWUuYyAgICAgfCAxMSArKysrKysrKy0tLQo+PiAgYXJjaC9h cm0vbWFjaC1tdjc4eHgwL3BjaWUuYyAgfCAxMSArKysrKysrKy0tLQo+PiAgYXJjaC9hcm0vbWFj aC1vcmlvbjV4L0tjb25maWcgfCAgMSArCj4+ICBhcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmMg ICB8IDEyICsrKysrKysrKy0tLQo+PiAgNSBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCsp LCA5IGRlbGV0aW9ucygtKQo+PiAKPj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtL0tjb25maWcgYi9h cmNoL2FybS9LY29uZmlnCj4+IGluZGV4IGZjMTk2NDIxYjJjZS4uOWYxNTdlOTczNTU1IDEwMDY0 NAo+PiAtLS0gYS9hcmNoL2FybS9LY29uZmlnCj4+ICsrKyBiL2FyY2gvYXJtL0tjb25maWcKPj4g QEAgLTQwMCw2ICs0MDAsNyBAQCBjb25maWcgQVJDSF9ET1ZFCj4+ICAJc2VsZWN0IEdFTkVSSUNf SVJRX01VTFRJX0hBTkRMRVIKPj4gIAlzZWxlY3QgR1BJT0xJQgo+PiAgCXNlbGVjdCBIQVZFX1BD SQo+PiArCXNlbGVjdCBQQ0lfUVVJUktTIGlmIFBDSQo+PiAgCXNlbGVjdCBNVkVCVV9NQlVTCj4+ ICAJc2VsZWN0IFBJTkNUUkwKPj4gIAlzZWxlY3QgUElOQ1RSTF9ET1ZFCj4+IGRpZmYgLS1naXQg YS9hcmNoL2FybS9tYWNoLWRvdmUvcGNpZS5jIGIvYXJjaC9hcm0vbWFjaC1kb3ZlL3BjaWUuYwo+ PiBpbmRleCBlZTkxYWM2YjVlYmYuLmVjZjA1N2EwZjViYSAxMDA2NDQKPj4gLS0tIGEvYXJjaC9h cm0vbWFjaC1kb3ZlL3BjaWUuYwo+PiArKysgYi9hcmNoL2FybS9tYWNoLWRvdmUvcGNpZS5jCj4+ IEBAIC0xMzUsMTQgKzEzNSwxOSBAQCBzdGF0aWMgc3RydWN0IHBjaV9vcHMgcGNpZV9vcHMgPSB7 Cj4+ICAJLndyaXRlID0gcGNpZV93cl9jb25mLAo+PiAgfTsKPj4gIAo+PiArLyoKPj4gKyAqIFRo ZSByb290IGNvbXBsZXggaGFzIGEgaGFyZHdpcmVkIGNsYXNzIG9mIFBDSV9DTEFTU19NRU1PUllf T1RIRVIsIHdoZW4gaXQKPj4gKyAqIGlzIG9wZXJhdGluZyBhcyBhIHJvb3QgY29tcGxleCB0aGlz IG5lZWRzIHRvIGJlIHN3aXRjaGVkIHRvCj4+ICsgKiBQQ0lfQ0xBU1NfQlJJREdFX0hPU1Qgb3Ig TGludXggd2lsbCBlcnJhbnRseSB0cnkgdG8gcHJvY2VzcyB0aGUgQkFSJ3Mgb24KPj4gKyAqIHRo ZSBkZXZpY2UuIERlY29kaW5nIHNldHVwIGlzIGhhbmRsZWQgYnkgdGhlIG9yaW9uIGNvZGUuCj4+ ICsgKi8KPj4gIHN0YXRpYyB2b2lkIHJjX3BjaV9maXh1cChzdHJ1Y3QgcGNpX2RldiAqZGV2KQo+ PiAgewo+PiAtCS8qCj4+IC0JICogUHJldmVudCBlbnVtZXJhdGlvbiBvZiByb290IGNvbXBsZXgu Cj4+IC0JICovCj4+ICAJaWYgKGRldi0+YnVzLT5wYXJlbnQgPT0gTlVMTCAmJiBkZXYtPmRldmZu ID09IDApIHsKPj4gIAkJaW50IGk7Cj4+ICAKPj4gKwkJZGV2LT5jbGFzcyAmPSAweGZmOwo+PiAr CQlkZXYtPmNsYXNzIHw9IFBDSV9DTEFTU19CUklER0VfSE9TVCA8PCA4Owo+PiAgCQlmb3IgKGkg PSAwOyBpIDwgREVWSUNFX0NPVU5UX1JFU09VUkNFOyBpKyspIHsKPj4gIAkJCWRldi0+cmVzb3Vy Y2VbaV0uc3RhcnQgPSAwOwo+PiAgCQkJZGV2LT5yZXNvdXJjZVtpXS5lbmQgICA9IDA7Cj4+IGRp ZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW12Nzh4eDAvcGNpZS5jIGIvYXJjaC9hcm0vbWFjaC1t djc4eHgwL3BjaWUuYwo+PiBpbmRleCA2MzZkODRiNDA0NjYuLjkzNjJiNWZjMTE2ZiAxMDA2NDQK Pj4gLS0tIGEvYXJjaC9hcm0vbWFjaC1tdjc4eHgwL3BjaWUuYwo+PiArKysgYi9hcmNoL2FybS9t YWNoLW12Nzh4eDAvcGNpZS5jCj4+IEBAIC0xNzcsMTQgKzE3NywxOSBAQCBzdGF0aWMgc3RydWN0 IHBjaV9vcHMgcGNpZV9vcHMgPSB7Cj4+ICAJLndyaXRlID0gcGNpZV93cl9jb25mLAo+PiAgfTsK Pj4gIAo+PiArLyoKPj4gKyAqIFRoZSByb290IGNvbXBsZXggaGFzIGEgaGFyZHdpcmVkIGNsYXNz IG9mIFBDSV9DTEFTU19NRU1PUllfT1RIRVIsIHdoZW4gaXQKPj4gKyAqIGlzIG9wZXJhdGluZyBh cyBhIHJvb3QgY29tcGxleCB0aGlzIG5lZWRzIHRvIGJlIHN3aXRjaGVkIHRvCj4+ICsgKiBQQ0lf Q0xBU1NfQlJJREdFX0hPU1Qgb3IgTGludXggd2lsbCBlcnJhbnRseSB0cnkgdG8gcHJvY2VzcyB0 aGUgQkFSJ3Mgb24KPj4gKyAqIHRoZSBkZXZpY2UuIERlY29kaW5nIHNldHVwIGlzIGhhbmRsZWQg YnkgdGhlIG9yaW9uIGNvZGUuCj4+ICsgKi8KPj4gIHN0YXRpYyB2b2lkIHJjX3BjaV9maXh1cChz dHJ1Y3QgcGNpX2RldiAqZGV2KQo+PiAgewo+PiAtCS8qCj4+IC0JICogUHJldmVudCBlbnVtZXJh dGlvbiBvZiByb290IGNvbXBsZXguCj4+IC0JICovCj4+ICAJaWYgKGRldi0+YnVzLT5wYXJlbnQg PT0gTlVMTCAmJiBkZXYtPmRldmZuID09IDApIHsKPj4gIAkJaW50IGk7Cj4+ICAKPj4gKwkJZGV2 LT5jbGFzcyAmPSAweGZmOwo+PiArCQlkZXYtPmNsYXNzIHw9IFBDSV9DTEFTU19CUklER0VfSE9T VCA8PCA4Owo+PiAgCQlmb3IgKGkgPSAwOyBpIDwgREVWSUNFX0NPVU5UX1JFU09VUkNFOyBpKysp IHsKPj4gIAkJCWRldi0+cmVzb3VyY2VbaV0uc3RhcnQgPSAwOwo+PiAgCQkJZGV2LT5yZXNvdXJj ZVtpXS5lbmQgICA9IDA7Cj4+IGRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9yaW9uNXgvS2Nv bmZpZyBiL2FyY2gvYXJtL21hY2gtb3Jpb241eC9LY29uZmlnCj4+IGluZGV4IGU5NGE2MTkwMWZm ZC4uNzE4OWE1YjFlYzQ2IDEwMDY0NAo+PiAtLS0gYS9hcmNoL2FybS9tYWNoLW9yaW9uNXgvS2Nv bmZpZwo+PiArKysgYi9hcmNoL2FybS9tYWNoLW9yaW9uNXgvS2NvbmZpZwo+PiBAQCAtNiw2ICs2 LDcgQEAgbWVudWNvbmZpZyBBUkNIX09SSU9ONVgKPj4gIAlzZWxlY3QgR1BJT0xJQgo+PiAgCXNl bGVjdCBNVkVCVV9NQlVTCj4+ICAJc2VsZWN0IEZPUkNFX1BDSQo+PiArCXNlbGVjdCBQQ0lfUVVJ UktTCj4+ICAJc2VsZWN0IFBIWUxJQiBpZiBORVRERVZJQ0VTCj4+ICAJc2VsZWN0IFBMQVRfT1JJ T05fTEVHQUNZCj4+ICAJaGVscAo+PiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vcmlvbjV4 L3BjaS5jIGIvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jCj4+IGluZGV4IDc2OTUxYmZiYWNm NS4uNTE0NWZlODk3MDJlIDEwMDY0NAo+PiAtLS0gYS9hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNp LmMKPj4gKysrIGIvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jCj4+IEBAIC01MDksMTQgKzUw OSwyMCBAQCBzdGF0aWMgaW50IF9faW5pdCBwY2lfc2V0dXAoc3RydWN0IHBjaV9zeXNfZGF0YSAq c3lzKQo+PiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4+ICAgKiBHZW5lcmFsIFBDSWUgKyBQQ0kK Pj4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLwo+PiArCj4+ICsvKgo+PiArICogVGhlIHJvb3QgY29t cGxleCBoYXMgYSBoYXJkd2lyZWQgY2xhc3Mgb2YgUENJX0NMQVNTX01FTU9SWV9PVEhFUiwgd2hl biBpdAo+PiArICogaXMgb3BlcmF0aW5nIGFzIGEgcm9vdCBjb21wbGV4IHRoaXMgbmVlZHMgdG8g YmUgc3dpdGNoZWQgdG8KPj4gKyAqIFBDSV9DTEFTU19CUklER0VfSE9TVCBvciBMaW51eCB3aWxs IGVycmFudGx5IHRyeSB0byBwcm9jZXNzIHRoZSBCQVIncyBvbgo+PiArICogdGhlIGRldmljZS4g RGVjb2Rpbmcgc2V0dXAgaXMgaGFuZGxlZCBieSB0aGUgb3Jpb24gY29kZS4KPj4gKyAqLwo+PiAg c3RhdGljIHZvaWQgcmNfcGNpX2ZpeHVwKHN0cnVjdCBwY2lfZGV2ICpkZXYpCj4+ICB7Cj4+IC0J LyoKPj4gLQkgKiBQcmV2ZW50IGVudW1lcmF0aW9uIG9mIHJvb3QgY29tcGxleC4KPj4gLQkgKi8K Pj4gIAlpZiAoZGV2LT5idXMtPnBhcmVudCA9PSBOVUxMICYmIGRldi0+ZGV2Zm4gPT0gMCkgewo+ PiAgCQlpbnQgaTsKPj4gIAo+PiArCQlkZXYtPmNsYXNzICY9IDB4ZmY7Cj4+ICsJCWRldi0+Y2xh c3MgfD0gUENJX0NMQVNTX0JSSURHRV9IT1NUIDw8IDg7Cj4+ICAJCWZvciAoaSA9IDA7IGkgPCBE RVZJQ0VfQ09VTlRfUkVTT1VSQ0U7IGkrKykgewo+PiAgCQkJZGV2LT5yZXNvdXJjZVtpXS5zdGFy dCA9IDA7Cj4+ICAJCQlkZXYtPnJlc291cmNlW2ldLmVuZCAgID0gMDsKPj4gLS0gCj4+IDIuMjAu MQo+PiAKCi0tIApHcmVnb3J5IENsZW1lbnQsIEJvb3RsaW4KRW1iZWRkZWQgTGludXggYW5kIEtl cm5lbCBlbmdpbmVlcmluZwpodHRwOi8vYm9vdGxpbi5jb20KCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0 CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFk ZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK