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 8AEDDC636D6 for ; Mon, 6 Feb 2023 09:39:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229917AbjBFJjv (ORCPT ); Mon, 6 Feb 2023 04:39:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40452 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229906AbjBFJju (ORCPT ); Mon, 6 Feb 2023 04:39:50 -0500 Received: from relay1-d.mail.gandi.net (relay1-d.mail.gandi.net [217.70.183.193]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F012E11674; Mon, 6 Feb 2023 01:39:47 -0800 (PST) Received: (Authenticated sender: miquel.raynal@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id 68028240002; Mon, 6 Feb 2023 09:39:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1675676386; 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=AubTcWOYqSxJt7Wh6bP1/DqkOsNeNYXj8kBwWyYv++A=; b=lkoOheG4wX9oGM+5NpVS2+5pvUbY5At5ACfEIBMm6y+lcmVVBjbgHKvJC6NqPSpWErCPyf QKY83Q/7p9AN5K3I8dR98yGB+RNuCJYrkGDO4HA+kfcRiewe9KrdZdiHIiwyezVQwSQygI Lwnb3WRZiEu0xfftHuFvd2dAHEsKBAuAjoTpgvABwVnCQ89X0CnhAaER2B8p7ZUCt6ITHk yV7Cmtt9Dy1iQ41jZjEcYEqGt1BWaljAAD+ThVmw3RRjYvCFVC6Fs5apc/Yd5RDIwz5W0f UPQ/UQJG8jYoPZPZm9CyGMxcIl3GrqLg8XuO4bEQzSUmcSGIvr+bIs6TVeReYQ== Date: Mon, 6 Feb 2023 10:39:12 +0100 From: Miquel Raynal To: Saravana Kannan Cc: Maxim Kiselev , Sudeep Holla , Naresh Kamboju , abel.vesa@linaro.org, alexander.stein@ew.tq-group.com, andriy.shevchenko@linux.intel.com, brgl@bgdev.pl, colin.foster@in-advantage.com, cristian.marussi@arm.com, devicetree@vger.kernel.org, dianders@chromium.org, djrscally@gmail.com, dmitry.baryshkov@linaro.org, festevam@gmail.com, fido_max@inbox.ru, frowand.list@gmail.com, geert+renesas@glider.be, geert@linux-m68k.org, gregkh@linuxfoundation.org, heikki.krogerus@linux.intel.com, jpb@kernel.org, jstultz@google.com, kernel-team@android.com, kernel@pengutronix.de, lenb@kernel.org, linus.walleij@linaro.org, linux-acpi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-gpio@vger.kernel.org, linux-imx@nxp.com, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux@roeck-us.net, lkft@linaro.org, luca.weiss@fairphone.com, magnus.damm@gmail.com, martin.kepplinger@puri.sm, maz@kernel.org, rafael@kernel.org, robh+dt@kernel.org, s.hauer@pengutronix.de, sakari.ailus@linux.intel.com, shawnguo@kernel.org, tglx@linutronix.de, tony@atomide.com, Srinivas Kandagatla Subject: Re: [PATCH v2 00/11] fw_devlink improvements Message-ID: <20230206103912.7db5ed72@xps-13> In-Reply-To: References: <20230127001141.407071-1-saravanak@google.com> <20230130085542.38546-1-naresh.kamboju@linaro.org> <20230131101813.goaoy32qvrowvyyb@bogus> Organization: Bootlin X-Mailer: Claws Mail 4.0.0 (GTK+ 3.24.33; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-acpi@vger.kernel.org Hi Saravana, + Srinivas, nvmem maintainer saravanak@google.com wrote on Sun, 5 Feb 2023 17:32:57 -0800: > On Fri, Feb 3, 2023 at 1:39 AM Maxim Kiselev wrot= e: > > > > =D0=BF=D1=82, 3 =D1=84=D0=B5=D0=B2=D1=80. 2023 =D0=B3. =D0=B2 09:07, Sa= ravana Kannan : =20 > > > > > > On Thu, Feb 2, 2023 at 9:36 AM Maxim Kiselev = wrote: =20 > > > > > > > > Hi Saravana, > > > > =20 > > > > > Can you try the patch at the end of this email under these > > > > > configurations and tell me which ones fail vs pass? I don't need = logs =20 > > > > > > > > I did these tests and here is the results: =20 > > > > > > Did you hand edit the In-Reply-To: in the header? Because in the > > > thread you are reply to the wrong email, but the context in your email > > > seems to be from the right email. > > > > > > For example, see how your reply isn't under the email you are replying > > > to in this thread overview: > > > https://lore.kernel.org/lkml/20230127001141.407071-1-saravanak@google= .com/#r > > > =20 > > > > 1. On top of this series - Not works > > > > 2. Without this series - Works > > > > 3. On top of the series with the fwnode_dev_initialized() deleted -= Not works > > > > 4. Without this series, with the fwnode_dev_initialized() deleted = - Works > > > > > > > > So your nvmem/core.c patch helps only when it is applied without th= e series. > > > > But despite the fact that this helps to avoid getting stuck at prob= ing > > > > my ethernet device, there is still regression. > > > > > > > > When the ethernet module is loaded it takes a lot of time to drop d= ependency > > > > from the nvmem-cell with mac address. > > > > > > > > Please look at the kernel logs below. =20 > > > > > > The kernel logs below really aren't that useful for me in their > > > current state. See more below. > > > > > > ---8<---- --->8---- > > > =20 > > > > P.S. Your nvmem patch definitely helps to avoid a device probe stuck > > > > but look like it is not best way to solve a problem which we discus= sed > > > > in the MTD thread. > > > > > > > > P.P.S. Also I don't know why your nvmem-cell patch doesn't help whe= n it was > > > > applied on top of this series. Maybe I missed something. =20 > > > > > > Yeah, I'm not too sure if the test was done correctly. You also didn't > > > answer my question about the dts from my earlier email. > > > https://lore.kernel.org/lkml/CAGETcx8FpmbaRm2CCwqt3BRBpgbogwP5gNB+iA5= OEtuxWVTNLA@mail.gmail.com/#t > > > > > > So, can you please retest config 1 with all pr_debug and dev_dbg in > > > drivers/core/base.c changed to the _info variants? And then share the > > > kernel log from the beginning of boot? Maybe attach it to the email so > > > it doesn't get word wrapped by your email client. And please point me > > > to the .dts that corresponds to your board. Without that, I can't > > > debug much. > > > > > > Thanks, > > > Saravana =20 > > =20 > > > Did you hand edit the In-Reply-To: in the header? Because in the > > > thread you are reply to the wrong email, but the context in your email > > > seems to be from the right email. =20 > > > > Sorry for that, it seems like I accidently deleted it. > > =20 > > > So, can you please retest config 1 with all pr_debug and dev_dbg in > > > drivers/core/base.c changed to the _info variants? And then share the > > > kernel log from the beginning of boot? Maybe attach it to the email so > > > it doesn't get word wrapped by your email client. And please point me > > > to the .dts that corresponds to your board. Without that, I can't > > > debug much. =20 > > > > Ok, I retested config 1 with all _debug logs changed to the _info. I > > added the kernel log and the dts file to the attachment of this email. = =20 >=20 > Ah, so your device is not supported/present upstream? Even though it's > not upstream, I'll help fix this because it should fix what I believe > are unreported issues in upstream. >=20 > Ok I know why configs 1 - 4 behaved the way they did and why my test > patch didn't help. >=20 > After staring at mtd/nvmem code for a few hours I think mtd/nvmem > interaction is kind of a mess. nvmem is a recent subsystem but mtd carries a lot of legacy stuff we cannot really re-wire without breaking users, so nvmem on top of mtd of course inherit from the fragile designs in place. > mtd core creates "partition" platform > devices (including for nvmem-cells) that are probed by drivers in > drivers/nvmem. However, there's no driver for "nvmem-cells" partition > platform device. However, the nvmem core creates nvmem_device when > nvmem_register() is called by MTD or these partition platform devices > created by MTD. But these nvmem_devices are added to a nvmem_bus but > the bus has no means to even register a driver (it should really be a > nvmem_class and not nvmem_bus). Srinivas, do you think we could change this? > And the nvmem_device sometimes points > to the DT node of the MTD device or sometimes the partition platform > devices or maybe no DT node at all. I guess this comes from the fact that this is not strongly defined in mtd and depends on the situation (not mentioning 20 years of history there as well). "mtd" is a bit inconsistent on what it means. Older designs mixed: controllers, ECC engines when relevant and memories; while these three components are completely separated. Hence sometimes the mtd device ends up being the top level controller, sometimes it's just one partition... But I'm surprised not all of them point to a DT node. Could you show us an example? Because that might likely be unexpected (or perhaps I am missing something). > So it's a mess of multiple devices pointing to the same DT node with > no clear way to identify which ones will point to a DT node and which > ones will probe and which ones won't. In the future, we shouldn't > allow adding new compatible strings for partitions for which we don't > plan on adding nvmem drivers. > > Can you give the patch at the end of the email a shot? It should fix > the issue with this series and without this series. It just avoids > this whole mess by not creating useless platform device for > nvmem-cells compatible DT nodes. Thanks a lot for your help. >=20 > Thanks, > Saravana >=20 > diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c > index d442fa94c872..88a213f4d651 100644 > --- a/drivers/mtd/mtdpart.c > +++ b/drivers/mtd/mtdpart.c > @@ -577,6 +577,7 @@ static int mtd_part_of_parse(struct mtd_info *master, > { > struct mtd_part_parser *parser; > struct device_node *np; > + struct device_node *child; > struct property *prop; > struct device *dev; > const char *compat; > @@ -594,6 +595,10 @@ static int mtd_part_of_parse(struct mtd_info *master, > else > np =3D of_get_child_by_name(np, "partitions"); >=20 > + for_each_child_of_node(np, child) > + if (of_device_is_compatible(child, "nvmem-cells")) > + of_node_set_flag(child, OF_POPULATED); What about a comment explaining why we need that in the final patch (with a comment)? Otherwise it's a little bit obscure. > + > of_property_for_each_string(np, "compatible", prop, compat) { > parser =3D mtd_part_get_compatible_parser(compat); > if (!parser) Thanks, Miqu=C3=A8l 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 93385C61DA4 for ; Mon, 6 Feb 2023 09:40:56 +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:References:In-Reply-To: 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=uRoHCuIog2dMJM38vIGblBAQswxCE2rqYBtzu87ndUE=; b=osKhm5LzSFz9Z4 5j3TlHKnVp4pN9QGtu4jNEl7PyPNlfv08+QE0o2aU9v8xG0LG5p+ePOc129CNpUYkfEEqcikDrVvd 4c5KsJ4hupy7J73LLBbpkCrTE2QSSYKY9ngONspYS4NT6kPGNwCMWuxGp+7eANXjEs3uj9dgreMfd 2sD2jXjUErEVAMXvPZWTo9HXsJH2PishtSDuRjK/p94eUp/TbuoLi3SwvaO0KEWIxIa2L1qYUdxYQ Vqs1Uk7dB3Mw3JTsTUR2X04HrtdILvUdLHHz4d8M7PwZVGo8oa/Qc+p1UwlScgbejziZBTMcLJ69H DGDqwVNIO/RKv8ZWjk1A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pOxye-007vMR-Ll; Mon, 06 Feb 2023 09:39:56 +0000 Received: from relay1-d.mail.gandi.net ([217.70.183.193]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pOxya-007vK7-Aq for linux-arm-kernel@lists.infradead.org; Mon, 06 Feb 2023 09:39:54 +0000 Received: (Authenticated sender: miquel.raynal@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id 68028240002; Mon, 6 Feb 2023 09:39:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1675676386; 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=AubTcWOYqSxJt7Wh6bP1/DqkOsNeNYXj8kBwWyYv++A=; b=lkoOheG4wX9oGM+5NpVS2+5pvUbY5At5ACfEIBMm6y+lcmVVBjbgHKvJC6NqPSpWErCPyf QKY83Q/7p9AN5K3I8dR98yGB+RNuCJYrkGDO4HA+kfcRiewe9KrdZdiHIiwyezVQwSQygI Lwnb3WRZiEu0xfftHuFvd2dAHEsKBAuAjoTpgvABwVnCQ89X0CnhAaER2B8p7ZUCt6ITHk yV7Cmtt9Dy1iQ41jZjEcYEqGt1BWaljAAD+ThVmw3RRjYvCFVC6Fs5apc/Yd5RDIwz5W0f UPQ/UQJG8jYoPZPZm9CyGMxcIl3GrqLg8XuO4bEQzSUmcSGIvr+bIs6TVeReYQ== Date: Mon, 6 Feb 2023 10:39:12 +0100 From: Miquel Raynal To: Saravana Kannan Cc: Maxim Kiselev , Sudeep Holla , Naresh Kamboju , abel.vesa@linaro.org, alexander.stein@ew.tq-group.com, andriy.shevchenko@linux.intel.com, brgl@bgdev.pl, colin.foster@in-advantage.com, cristian.marussi@arm.com, devicetree@vger.kernel.org, dianders@chromium.org, djrscally@gmail.com, dmitry.baryshkov@linaro.org, festevam@gmail.com, fido_max@inbox.ru, frowand.list@gmail.com, geert+renesas@glider.be, geert@linux-m68k.org, gregkh@linuxfoundation.org, heikki.krogerus@linux.intel.com, jpb@kernel.org, jstultz@google.com, kernel-team@android.com, kernel@pengutronix.de, lenb@kernel.org, linus.walleij@linaro.org, linux-acpi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-gpio@vger.kernel.org, linux-imx@nxp.com, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux@roeck-us.net, lkft@linaro.org, luca.weiss@fairphone.com, magnus.damm@gmail.com, martin.kepplinger@puri.sm, maz@kernel.org, rafael@kernel.org, robh+dt@kernel.org, s.hauer@pengutronix.de, sakari.ailus@linux.intel.com, shawnguo@kernel.org, tglx@linutronix.de, tony@atomide.com, Srinivas Kandagatla Subject: Re: [PATCH v2 00/11] fw_devlink improvements Message-ID: <20230206103912.7db5ed72@xps-13> In-Reply-To: References: <20230127001141.407071-1-saravanak@google.com> <20230130085542.38546-1-naresh.kamboju@linaro.org> <20230131101813.goaoy32qvrowvyyb@bogus> Organization: Bootlin X-Mailer: Claws Mail 4.0.0 (GTK+ 3.24.33; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230206_013952_680003_5552724C X-CRM114-Status: GOOD ( 59.05 ) 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 SGkgU2FyYXZhbmEsCgorIFNyaW5pdmFzLCBudm1lbSBtYWludGFpbmVyCgpzYXJhdmFuYWtAZ29v Z2xlLmNvbSB3cm90ZSBvbiBTdW4sIDUgRmViIDIwMjMgMTc6MzI6NTcgLTA4MDA6Cgo+IE9uIEZy aSwgRmViIDMsIDIwMjMgYXQgMTozOSBBTSBNYXhpbSBLaXNlbGV2IDxiaWd1bmNsZW1heEBnbWFp bC5jb20+IHdyb3RlOgo+ID4KPiA+INC/0YIsIDMg0YTQtdCy0YAuIDIwMjMg0LMuINCyIDA5OjA3 LCBTYXJhdmFuYSBLYW5uYW4gPHNhcmF2YW5ha0Bnb29nbGUuY29tPjogIAo+ID4gPgo+ID4gPiBP biBUaHUsIEZlYiAyLCAyMDIzIGF0IDk6MzYgQU0gTWF4aW0gS2lzZWxldiA8YmlndW5jbGVtYXhA Z21haWwuY29tPiB3cm90ZTogIAo+ID4gPiA+Cj4gPiA+ID4gSGkgU2FyYXZhbmEsCj4gPiA+ID4g IAo+ID4gPiA+ID4gQ2FuIHlvdSB0cnkgdGhlIHBhdGNoIGF0IHRoZSBlbmQgb2YgdGhpcyBlbWFp bCB1bmRlciB0aGVzZQo+ID4gPiA+ID4gY29uZmlndXJhdGlvbnMgYW5kIHRlbGwgbWUgd2hpY2gg b25lcyBmYWlsIHZzIHBhc3M/IEkgZG9uJ3QgbmVlZCBsb2dzICAKPiA+ID4gPgo+ID4gPiA+IEkg ZGlkIHRoZXNlIHRlc3RzIGFuZCBoZXJlIGlzIHRoZSByZXN1bHRzOiAgCj4gPiA+Cj4gPiA+IERp ZCB5b3UgaGFuZCBlZGl0IHRoZSBJbi1SZXBseS1UbzogaW4gdGhlIGhlYWRlcj8gQmVjYXVzZSBp biB0aGUKPiA+ID4gdGhyZWFkIHlvdSBhcmUgcmVwbHkgdG8gdGhlIHdyb25nIGVtYWlsLCBidXQg dGhlIGNvbnRleHQgaW4geW91ciBlbWFpbAo+ID4gPiBzZWVtcyB0byBiZSBmcm9tIHRoZSByaWdo dCBlbWFpbC4KPiA+ID4KPiA+ID4gRm9yIGV4YW1wbGUsIHNlZSBob3cgeW91ciByZXBseSBpc24n dCB1bmRlciB0aGUgZW1haWwgeW91IGFyZSByZXBseWluZwo+ID4gPiB0byBpbiB0aGlzIHRocmVh ZCBvdmVydmlldzoKPiA+ID4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGttbC8yMDIzMDEyNzAw MTE0MS40MDcwNzEtMS1zYXJhdmFuYWtAZ29vZ2xlLmNvbS8jcgo+ID4gPiAgCj4gPiA+ID4gMS4g T24gdG9wIG9mIHRoaXMgc2VyaWVzIC0gTm90IHdvcmtzCj4gPiA+ID4gMi4gV2l0aG91dCB0aGlz IHNlcmllcyAgICAtIFdvcmtzCj4gPiA+ID4gMy4gT24gdG9wIG9mIHRoZSBzZXJpZXMgd2l0aCB0 aGUgZndub2RlX2Rldl9pbml0aWFsaXplZCgpIGRlbGV0ZWQgLSBOb3Qgd29ya3MKPiA+ID4gPiA0 LiBXaXRob3V0IHRoaXMgc2VyaWVzLCB3aXRoIHRoZSBmd25vZGVfZGV2X2luaXRpYWxpemVkKCkg ZGVsZXRlZCAgLSBXb3Jrcwo+ID4gPiA+Cj4gPiA+ID4gU28geW91ciBudm1lbS9jb3JlLmMgcGF0 Y2ggaGVscHMgb25seSB3aGVuIGl0IGlzIGFwcGxpZWQgd2l0aG91dCB0aGUgc2VyaWVzLgo+ID4g PiA+IEJ1dCBkZXNwaXRlIHRoZSBmYWN0IHRoYXQgdGhpcyBoZWxwcyB0byBhdm9pZCBnZXR0aW5n IHN0dWNrIGF0IHByb2JpbmcKPiA+ID4gPiBteSBldGhlcm5ldCBkZXZpY2UsIHRoZXJlIGlzIHN0 aWxsIHJlZ3Jlc3Npb24uCj4gPiA+ID4KPiA+ID4gPiBXaGVuIHRoZSBldGhlcm5ldCBtb2R1bGUg aXMgbG9hZGVkIGl0IHRha2VzIGEgbG90IG9mIHRpbWUgdG8gZHJvcCBkZXBlbmRlbmN5Cj4gPiA+ ID4gZnJvbSB0aGUgbnZtZW0tY2VsbCB3aXRoIG1hYyBhZGRyZXNzLgo+ID4gPiA+Cj4gPiA+ID4g UGxlYXNlIGxvb2sgYXQgdGhlIGtlcm5lbCBsb2dzIGJlbG93LiAgCj4gPiA+Cj4gPiA+IFRoZSBr ZXJuZWwgbG9ncyBiZWxvdyByZWFsbHkgYXJlbid0IHRoYXQgdXNlZnVsIGZvciBtZSBpbiB0aGVp cgo+ID4gPiBjdXJyZW50IHN0YXRlLiBTZWUgbW9yZSBiZWxvdy4KPiA+ID4KPiA+ID4gLS0tODwt LS0tIDxzbmlwPiAtLS0+OC0tLS0KPiA+ID4gIAo+ID4gPiA+IFAuUy4gWW91ciBudm1lbSBwYXRj aCBkZWZpbml0ZWx5IGhlbHBzIHRvIGF2b2lkIGEgZGV2aWNlIHByb2JlIHN0dWNrCj4gPiA+ID4g YnV0IGxvb2sgbGlrZSBpdCBpcyBub3QgYmVzdCB3YXkgdG8gc29sdmUgYSBwcm9ibGVtIHdoaWNo IHdlIGRpc2N1c3NlZAo+ID4gPiA+IGluIHRoZSBNVEQgdGhyZWFkLgo+ID4gPiA+Cj4gPiA+ID4g UC5QLlMuIEFsc28gSSBkb24ndCBrbm93IHdoeSB5b3VyIG52bWVtLWNlbGwgcGF0Y2ggZG9lc24n dCBoZWxwIHdoZW4gaXQgd2FzCj4gPiA+ID4gYXBwbGllZCBvbiB0b3Agb2YgdGhpcyBzZXJpZXMu IE1heWJlIEkgbWlzc2VkIHNvbWV0aGluZy4gIAo+ID4gPgo+ID4gPiBZZWFoLCBJJ20gbm90IHRv byBzdXJlIGlmIHRoZSB0ZXN0IHdhcyBkb25lIGNvcnJlY3RseS4gWW91IGFsc28gZGlkbid0Cj4g PiA+IGFuc3dlciBteSBxdWVzdGlvbiBhYm91dCB0aGUgZHRzIGZyb20gbXkgZWFybGllciBlbWFp bC4KPiA+ID4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGttbC9DQUdFVGN4OEZwbWJhUm0yQ0N3 cXQzQlJCcGdib2d3UDVnTkIraUE1T0V0dXhXVlROTEFAbWFpbC5nbWFpbC5jb20vI3QKPiA+ID4K PiA+ID4gU28sIGNhbiB5b3UgcGxlYXNlIHJldGVzdCBjb25maWcgMSB3aXRoIGFsbCBwcl9kZWJ1 ZyBhbmQgZGV2X2RiZyBpbgo+ID4gPiBkcml2ZXJzL2NvcmUvYmFzZS5jIGNoYW5nZWQgdG8gdGhl IF9pbmZvIHZhcmlhbnRzPyBBbmQgdGhlbiBzaGFyZSB0aGUKPiA+ID4ga2VybmVsIGxvZyBmcm9t IHRoZSBiZWdpbm5pbmcgb2YgYm9vdD8gTWF5YmUgYXR0YWNoIGl0IHRvIHRoZSBlbWFpbCBzbwo+ ID4gPiBpdCBkb2Vzbid0IGdldCB3b3JkIHdyYXBwZWQgYnkgeW91ciBlbWFpbCBjbGllbnQuIEFu ZCBwbGVhc2UgcG9pbnQgbWUKPiA+ID4gdG8gdGhlIC5kdHMgdGhhdCBjb3JyZXNwb25kcyB0byB5 b3VyIGJvYXJkLiBXaXRob3V0IHRoYXQsIEkgY2FuJ3QKPiA+ID4gZGVidWcgbXVjaC4KPiA+ID4K PiA+ID4gVGhhbmtzLAo+ID4gPiBTYXJhdmFuYSAgCj4gPiAgCj4gPiA+IERpZCB5b3UgaGFuZCBl ZGl0IHRoZSBJbi1SZXBseS1UbzogaW4gdGhlIGhlYWRlcj8gQmVjYXVzZSBpbiB0aGUKPiA+ID4g dGhyZWFkIHlvdSBhcmUgcmVwbHkgdG8gdGhlIHdyb25nIGVtYWlsLCBidXQgdGhlIGNvbnRleHQg aW4geW91ciBlbWFpbAo+ID4gPiBzZWVtcyB0byBiZSBmcm9tIHRoZSByaWdodCBlbWFpbC4gIAo+ ID4KPiA+IFNvcnJ5IGZvciB0aGF0LCBpdCBzZWVtcyBsaWtlIEkgYWNjaWRlbnRseSBkZWxldGVk IGl0Lgo+ID4gIAo+ID4gPiBTbywgY2FuIHlvdSBwbGVhc2UgcmV0ZXN0IGNvbmZpZyAxIHdpdGgg YWxsIHByX2RlYnVnIGFuZCBkZXZfZGJnIGluCj4gPiA+IGRyaXZlcnMvY29yZS9iYXNlLmMgY2hh bmdlZCB0byB0aGUgX2luZm8gdmFyaWFudHM/IEFuZCB0aGVuIHNoYXJlIHRoZQo+ID4gPiBrZXJu ZWwgbG9nIGZyb20gdGhlIGJlZ2lubmluZyBvZiBib290PyBNYXliZSBhdHRhY2ggaXQgdG8gdGhl IGVtYWlsIHNvCj4gPiA+IGl0IGRvZXNuJ3QgZ2V0IHdvcmQgd3JhcHBlZCBieSB5b3VyIGVtYWls IGNsaWVudC4gQW5kIHBsZWFzZSBwb2ludCBtZQo+ID4gPiB0byB0aGUgLmR0cyB0aGF0IGNvcnJl c3BvbmRzIHRvIHlvdXIgYm9hcmQuIFdpdGhvdXQgdGhhdCwgSSBjYW4ndAo+ID4gPiBkZWJ1ZyBt dWNoLiAgCj4gPgo+ID4gT2ssIEkgcmV0ZXN0ZWQgY29uZmlnIDEgd2l0aCBhbGwgX2RlYnVnIGxv Z3MgY2hhbmdlZCB0byB0aGUgX2luZm8uIEkKPiA+IGFkZGVkIHRoZSBrZXJuZWwgbG9nIGFuZCB0 aGUgZHRzIGZpbGUgdG8gdGhlIGF0dGFjaG1lbnQgb2YgdGhpcyBlbWFpbC4gIAo+IAo+IEFoLCBz byB5b3VyIGRldmljZSBpcyBub3Qgc3VwcG9ydGVkL3ByZXNlbnQgdXBzdHJlYW0/IEV2ZW4gdGhv dWdoIGl0J3MKPiBub3QgdXBzdHJlYW0sIEknbGwgaGVscCBmaXggdGhpcyBiZWNhdXNlIGl0IHNo b3VsZCBmaXggd2hhdCBJIGJlbGlldmUKPiBhcmUgdW5yZXBvcnRlZCBpc3N1ZXMgaW4gdXBzdHJl YW0uCj4gCj4gT2sgSSBrbm93IHdoeSBjb25maWdzIDEgLSA0IGJlaGF2ZWQgdGhlIHdheSB0aGV5 IGRpZCBhbmQgd2h5IG15IHRlc3QKPiBwYXRjaCBkaWRuJ3QgaGVscC4KPiAKPiBBZnRlciBzdGFy aW5nIGF0IG10ZC9udm1lbSBjb2RlIGZvciBhIGZldyBob3VycyBJIHRoaW5rIG10ZC9udm1lbQo+ IGludGVyYWN0aW9uIGlzIGtpbmQgb2YgYSBtZXNzLgoKbnZtZW0gaXMgYSByZWNlbnQgc3Vic3lz dGVtIGJ1dCBtdGQgY2FycmllcyBhIGxvdCBvZiBsZWdhY3kgc3R1ZmYgd2UKY2Fubm90IHJlYWxs eSByZS13aXJlIHdpdGhvdXQgYnJlYWtpbmcgdXNlcnMsIHNvIG52bWVtIG9uIHRvcCBvZiBtdGQK b2YgY291cnNlIGluaGVyaXQgZnJvbSB0aGUgZnJhZ2lsZSBkZXNpZ25zIGluIHBsYWNlLgoKPiBt dGQgY29yZSBjcmVhdGVzICJwYXJ0aXRpb24iIHBsYXRmb3JtCj4gZGV2aWNlcyAoaW5jbHVkaW5n IGZvciBudm1lbS1jZWxscykgdGhhdCBhcmUgcHJvYmVkIGJ5IGRyaXZlcnMgaW4KPiBkcml2ZXJz L252bWVtLiBIb3dldmVyLCB0aGVyZSdzIG5vIGRyaXZlciBmb3IgIm52bWVtLWNlbGxzIiBwYXJ0 aXRpb24KPiBwbGF0Zm9ybSBkZXZpY2UuIEhvd2V2ZXIsIHRoZSBudm1lbSBjb3JlIGNyZWF0ZXMg bnZtZW1fZGV2aWNlIHdoZW4KPiBudm1lbV9yZWdpc3RlcigpIGlzIGNhbGxlZCBieSBNVEQgb3Ig dGhlc2UgcGFydGl0aW9uIHBsYXRmb3JtIGRldmljZXMKPiBjcmVhdGVkIGJ5IE1URC4gQnV0IHRo ZXNlIG52bWVtX2RldmljZXMgYXJlIGFkZGVkIHRvIGEgbnZtZW1fYnVzIGJ1dAo+IHRoZSBidXMg aGFzIG5vIG1lYW5zIHRvIGV2ZW4gcmVnaXN0ZXIgYSBkcml2ZXIgKGl0IHNob3VsZCByZWFsbHkg YmUgYQo+IG52bWVtX2NsYXNzIGFuZCBub3QgbnZtZW1fYnVzKS4KClNyaW5pdmFzLCBkbyB5b3Ug dGhpbmsgd2UgY291bGQgY2hhbmdlIHRoaXM/Cgo+IEFuZCB0aGUgbnZtZW1fZGV2aWNlIHNvbWV0 aW1lcyBwb2ludHMKPiB0byB0aGUgRFQgbm9kZSBvZiB0aGUgTVREIGRldmljZSBvciBzb21ldGlt ZXMgdGhlIHBhcnRpdGlvbiBwbGF0Zm9ybQo+IGRldmljZXMgb3IgbWF5YmUgbm8gRFQgbm9kZSBh dCBhbGwuCgpJIGd1ZXNzIHRoaXMgY29tZXMgZnJvbSB0aGUgZmFjdCB0aGF0IHRoaXMgaXMgbm90 IHN0cm9uZ2x5IGRlZmluZWQgaW4KbXRkIGFuZCBkZXBlbmRzIG9uIHRoZSBzaXR1YXRpb24gKG5v dCBtZW50aW9uaW5nIDIwIHllYXJzIG9mIGhpc3RvcnkKdGhlcmUgYXMgd2VsbCkuICJtdGQiIGlz IGEgYml0IGluY29uc2lzdGVudCBvbiB3aGF0IGl0IG1lYW5zLiBPbGRlcgpkZXNpZ25zIG1peGVk OiBjb250cm9sbGVycywgRUNDIGVuZ2luZXMgd2hlbiByZWxldmFudCBhbmQgbWVtb3JpZXM7Cndo aWxlIHRoZXNlIHRocmVlIGNvbXBvbmVudHMgYXJlIGNvbXBsZXRlbHkgc2VwYXJhdGVkLiBIZW5j ZQpzb21ldGltZXMgdGhlIG10ZCBkZXZpY2UgZW5kcyB1cCBiZWluZyB0aGUgdG9wIGxldmVsIGNv bnRyb2xsZXIsCnNvbWV0aW1lcyBpdCdzIGp1c3Qgb25lIHBhcnRpdGlvbi4uLgoKQnV0IEknbSBz dXJwcmlzZWQgbm90IGFsbCBvZiB0aGVtIHBvaW50IHRvIGEgRFQgbm9kZS4gQ291bGQgeW91IHNo b3cgdXMKYW4gZXhhbXBsZT8gQmVjYXVzZSB0aGF0IG1pZ2h0IGxpa2VseSBiZSB1bmV4cGVjdGVk IChvciBwZXJoYXBzIEkgYW0KbWlzc2luZyBzb21ldGhpbmcpLgoKPiBTbyBpdCdzIGEgbWVzcyBv ZiBtdWx0aXBsZSBkZXZpY2VzIHBvaW50aW5nIHRvIHRoZSBzYW1lIERUIG5vZGUgd2l0aAo+IG5v IGNsZWFyIHdheSB0byBpZGVudGlmeSB3aGljaCBvbmVzIHdpbGwgcG9pbnQgdG8gYSBEVCBub2Rl IGFuZCB3aGljaAo+IG9uZXMgd2lsbCBwcm9iZSBhbmQgd2hpY2ggb25lcyB3b24ndC4gSW4gdGhl IGZ1dHVyZSwgd2Ugc2hvdWxkbid0Cj4gYWxsb3cgYWRkaW5nIG5ldyBjb21wYXRpYmxlIHN0cmlu Z3MgZm9yIHBhcnRpdGlvbnMgZm9yIHdoaWNoIHdlIGRvbid0Cj4gcGxhbiBvbiBhZGRpbmcgbnZt ZW0gZHJpdmVycy4KPgo+IENhbiB5b3UgZ2l2ZSB0aGUgcGF0Y2ggYXQgdGhlIGVuZCBvZiB0aGUg ZW1haWwgYSBzaG90PyBJdCBzaG91bGQgZml4Cj4gdGhlIGlzc3VlIHdpdGggdGhpcyBzZXJpZXMg YW5kIHdpdGhvdXQgdGhpcyBzZXJpZXMuIEl0IGp1c3QgYXZvaWRzCj4gdGhpcyB3aG9sZSBtZXNz IGJ5IG5vdCBjcmVhdGluZyB1c2VsZXNzIHBsYXRmb3JtIGRldmljZSBmb3IKPiBudm1lbS1jZWxs cyBjb21wYXRpYmxlIERUIG5vZGVzLgoKVGhhbmtzIGEgbG90IGZvciB5b3VyIGhlbHAuCgo+IAo+ IFRoYW5rcywKPiBTYXJhdmFuYQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9tdGRwYXJ0 LmMgYi9kcml2ZXJzL210ZC9tdGRwYXJ0LmMKPiBpbmRleCBkNDQyZmE5NGM4NzIuLjg4YTIxM2Y0 ZDY1MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL210ZC9tdGRwYXJ0LmMKPiArKysgYi9kcml2ZXJz L210ZC9tdGRwYXJ0LmMKPiBAQCAtNTc3LDYgKzU3Nyw3IEBAIHN0YXRpYyBpbnQgbXRkX3BhcnRf b2ZfcGFyc2Uoc3RydWN0IG10ZF9pbmZvICptYXN0ZXIsCj4gIHsKPiAgICAgICAgIHN0cnVjdCBt dGRfcGFydF9wYXJzZXIgKnBhcnNlcjsKPiAgICAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnA7 Cj4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKmNoaWxkOwo+ICAgICAgICAgc3RydWN0IHBy b3BlcnR5ICpwcm9wOwo+ICAgICAgICAgc3RydWN0IGRldmljZSAqZGV2Owo+ICAgICAgICAgY29u c3QgY2hhciAqY29tcGF0Owo+IEBAIC01OTQsNiArNTk1LDEwIEBAIHN0YXRpYyBpbnQgbXRkX3Bh cnRfb2ZfcGFyc2Uoc3RydWN0IG10ZF9pbmZvICptYXN0ZXIsCj4gICAgICAgICBlbHNlCj4gICAg ICAgICAgICAgICAgIG5wID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUobnAsICJwYXJ0aXRpb25zIik7 Cj4gCj4gKyAgICAgICBmb3JfZWFjaF9jaGlsZF9vZl9ub2RlKG5wLCBjaGlsZCkKPiArICAgICAg ICAgICAgICAgaWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKGNoaWxkLCAibnZtZW0tY2VsbHMi KSkKPiArICAgICAgICAgICAgICAgICAgICAgICBvZl9ub2RlX3NldF9mbGFnKGNoaWxkLCBPRl9Q T1BVTEFURUQpOwoKV2hhdCBhYm91dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgd2UgbmVlZCB0 aGF0IGluIHRoZSBmaW5hbCBwYXRjaAood2l0aCBhIGNvbW1lbnQpPyBPdGhlcndpc2UgaXQncyBh IGxpdHRsZSBiaXQgb2JzY3VyZS4KCj4gKwo+ICAgICAgICAgb2ZfcHJvcGVydHlfZm9yX2VhY2hf c3RyaW5nKG5wLCAiY29tcGF0aWJsZSIsIHByb3AsIGNvbXBhdCkgewo+ICAgICAgICAgICAgICAg ICBwYXJzZXIgPSBtdGRfcGFydF9nZXRfY29tcGF0aWJsZV9wYXJzZXIoY29tcGF0KTsKPiAgICAg ICAgICAgICAgICAgaWYgKCFwYXJzZXIpCgoKVGhhbmtzLApNaXF1w6hsCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxp bmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3Rz LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==