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 DE301C678D5 for ; Fri, 24 Feb 2023 14:47:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230026AbjBXOrN (ORCPT ); Fri, 24 Feb 2023 09:47:13 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37072 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229999AbjBXOrM (ORCPT ); Fri, 24 Feb 2023 09:47:12 -0500 Received: from relay8-d.mail.gandi.net (relay8-d.mail.gandi.net [217.70.183.201]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2F4E71969B; Fri, 24 Feb 2023 06:47:10 -0800 (PST) Received: (Authenticated sender: miquel.raynal@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id 508C31BF216; Fri, 24 Feb 2023 14:47:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1677250028; 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=aWv+kfdyaYpBlMRNF5wJ4HLH0v6plsoypADEcu849B4=; b=MsVKKP9jVxY3uQ2Q4aPuN/MSe1VNw9S1geSWLq6uAvHXcaj6yRNCoib09WYlqSMMsSb4eJ n2sFVJ0bUy9n42i0ISeG+QBIzGHa3qM2J/vGQ7DqyAz2OVnmSddtgLOF4pWz3kCki+e6U8 uQshrcJ29UmYb2M19bjxie2Opbyd1dVdB3gFjOOc6M2TNJGJxZOG5cRNCgW27KpVms9Dj9 TdrcDobJk2iGCnTSKLGvFiZ0akXSraFd/cxQUirnD/UuWwMngz6fFlaAJGTirL3iEIpWY8 DWNTxlqDnm2HtxR6G+xU7bwU0Eua8rDt/fMl3S1uiu4dM2DD08RmWLjmCbJsAg== Date: Fri, 24 Feb 2023 15:46:59 +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: <20230224154659.432a4d4c@xps-13> In-Reply-To: References: <20230127001141.407071-1-saravanak@google.com> <20230130085542.38546-1-naresh.kamboju@linaro.org> <20230131101813.goaoy32qvrowvyyb@bogus> <20230206103912.7db5ed72@xps-13> 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, > > > > > 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 ema= il so > > > > > it doesn't get word wrapped by your email client. And please poin= t 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 ema= il. =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. > > > > > > Ok I know why configs 1 - 4 behaved the way they did and why my test > > > patch didn't help. > > > > > > After staring at mtd/nvmem code for a few hours I think mtd/nvmem > > > interaction is kind of a mess. =20 > > > > 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. =20 >=20 > Thanks for the context. Yeah, I figured. That's why I explicitly > limited my comment to "interaction". Although, I'd love to see the MTD > parsers all be converted to proper drivers that probe. MTD is > essentially repeating the driver matching logic. I think it can be > cleaned up to move to proper drivers and still not break backward > compatibility. Not saying it'll be trivial, but it should be possible. > Ironically MTD uses mtd_class but has real drivers that work on the > device (compared to nvmem_bus below). >=20 > > > 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). =20 > > > > Srinivas, do you think we could change this? =20 >=20 > Yeah, this part gets a bit tricky. It depends on whether the sysfs > files for nvmem devices is considered an ABI. Changing from bus to > class would change the sysfs path for nvmem devices from: > /sys/class/nvmem to /sys/bus/nvmem Ok, so this is a no :) > > > 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. =20 > > > > 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). =20 >=20 > Well, the logic that sets the DT node for nvmem_device is like so: >=20 > if (config->of_node) > nvmem->dev.of_node =3D config->of_node; > else if (!config->no_of_node) > nvmem->dev.of_node =3D config->dev->of_node; >=20 > So there's definitely a path (where both if's could be false) where > the DT node will not get set. I don't know if that path is possible > with the existing users of nvmem_register(), but it's definitely > possible. It's an actual path. I just checked more in details, this is the change from 2018 which uses the no_of_node flag: c4dfa25ab307 ("mtd: add support for reading MTD devices via the nvmem API") It basically allows any mtd device to be accessible (read-only) through nvmem. So mtd partitions or such which are not described in the DT may just be accessed through nvmem (that is my current understanding). There was later a patch in 2021 which prevented this flag to be automatically set, so that if partitions (well, mtd devices in general) were described in the DT, they would provide a valid of_node in order to be used as cell providers (again, my understanding): 658c4448bbbf ("mtd: core: add nvmem-cells compatible to parse mtd as nvmem = cells") But I guess the major problem comes from the nvmem-cell compatible. I am wondering if it would make sense to kind of transpose the meaning of this compatible into a property. But, well, backward compatibility would still be a problem I guess... > > > 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. =20 > > > > Thanks a lot for your help. =20 >=20 > No problem. I want fw_devlink to work for everyone. >=20 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 CC616C61DA4 for ; Fri, 24 Feb 2023 14:48:21 +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=0knl6mwopeWaTr40ysG1MF3qfvCYQSuUI/GDFRJowWs=; b=i7rWc4f84H/u8Z R9VfW0UrXIcySmi1pB5jleq9jk587MaLwt8K2YJFDpBfuiFhGlFpSh1GYDG0nLZCQjPjtx7+6mx8I GsP8eIetIkOKDkFi8xa+vB8SgjgLEz//47u8nhBHPg7qUzznS+RnDutDenmNnTDFHbLddvNw9222F XaVGbpyD/Tw4MHk8xUW1JTvm+cmJIoQwRQ+jb6rZ0na/pvxnDBIHtjiKo6OChM4qJjTBxrZFtr1Iz 6eB+k58VVeOAjgJOxZKkIWNO6N4rRb0nnCGrleYEuxAnmhZdhM4cDQat8DwpQB2fHVIm8EAwxh3gk Z3DE8AG1CY3i4ik7+dWQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pVZLx-002nwu-BS; Fri, 24 Feb 2023 14:47:17 +0000 Received: from relay8-d.mail.gandi.net ([217.70.183.201]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pVZLt-002nv2-1I for linux-arm-kernel@lists.infradead.org; Fri, 24 Feb 2023 14:47:15 +0000 Received: (Authenticated sender: miquel.raynal@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id 508C31BF216; Fri, 24 Feb 2023 14:47:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1677250028; 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=aWv+kfdyaYpBlMRNF5wJ4HLH0v6plsoypADEcu849B4=; b=MsVKKP9jVxY3uQ2Q4aPuN/MSe1VNw9S1geSWLq6uAvHXcaj6yRNCoib09WYlqSMMsSb4eJ n2sFVJ0bUy9n42i0ISeG+QBIzGHa3qM2J/vGQ7DqyAz2OVnmSddtgLOF4pWz3kCki+e6U8 uQshrcJ29UmYb2M19bjxie2Opbyd1dVdB3gFjOOc6M2TNJGJxZOG5cRNCgW27KpVms9Dj9 TdrcDobJk2iGCnTSKLGvFiZ0akXSraFd/cxQUirnD/UuWwMngz6fFlaAJGTirL3iEIpWY8 DWNTxlqDnm2HtxR6G+xU7bwU0Eua8rDt/fMl3S1uiu4dM2DD08RmWLjmCbJsAg== Date: Fri, 24 Feb 2023 15:46:59 +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: <20230224154659.432a4d4c@xps-13> In-Reply-To: References: <20230127001141.407071-1-saravanak@google.com> <20230130085542.38546-1-naresh.kamboju@linaro.org> <20230131101813.goaoy32qvrowvyyb@bogus> <20230206103912.7db5ed72@xps-13> 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-20230224_064713_377496_F9A99E08 X-CRM114-Status: GOOD ( 59.76 ) 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 SGkgU2FyYXZhbmEsCgo+ID4gPiA+ID4gU28sIGNhbiB5b3UgcGxlYXNlIHJldGVzdCBjb25maWcg MSB3aXRoIGFsbCBwcl9kZWJ1ZyBhbmQgZGV2X2RiZyBpbgo+ID4gPiA+ID4gZHJpdmVycy9jb3Jl L2Jhc2UuYyBjaGFuZ2VkIHRvIHRoZSBfaW5mbyB2YXJpYW50cz8gQW5kIHRoZW4gc2hhcmUgdGhl Cj4gPiA+ID4gPiBrZXJuZWwgbG9nIGZyb20gdGhlIGJlZ2lubmluZyBvZiBib290PyBNYXliZSBh dHRhY2ggaXQgdG8gdGhlIGVtYWlsIHNvCj4gPiA+ID4gPiBpdCBkb2Vzbid0IGdldCB3b3JkIHdy YXBwZWQgYnkgeW91ciBlbWFpbCBjbGllbnQuIEFuZCBwbGVhc2UgcG9pbnQgbWUKPiA+ID4gPiA+ IHRvIHRoZSAuZHRzIHRoYXQgY29ycmVzcG9uZHMgdG8geW91ciBib2FyZC4gV2l0aG91dCB0aGF0 LCBJIGNhbid0Cj4gPiA+ID4gPiBkZWJ1ZyBtdWNoLiAgCj4gPiA+ID4KPiA+ID4gPiBPaywgSSBy ZXRlc3RlZCBjb25maWcgMSB3aXRoIGFsbCBfZGVidWcgbG9ncyBjaGFuZ2VkIHRvIHRoZSBfaW5m by4gSQo+ID4gPiA+IGFkZGVkIHRoZSBrZXJuZWwgbG9nIGFuZCB0aGUgZHRzIGZpbGUgdG8gdGhl IGF0dGFjaG1lbnQgb2YgdGhpcyBlbWFpbC4gIAo+ID4gPgo+ID4gPiBBaCwgc28geW91ciBkZXZp Y2UgaXMgbm90IHN1cHBvcnRlZC9wcmVzZW50IHVwc3RyZWFtPyBFdmVuIHRob3VnaCBpdCdzCj4g PiA+IG5vdCB1cHN0cmVhbSwgSSdsbCBoZWxwIGZpeCB0aGlzIGJlY2F1c2UgaXQgc2hvdWxkIGZp eCB3aGF0IEkgYmVsaWV2ZQo+ID4gPiBhcmUgdW5yZXBvcnRlZCBpc3N1ZXMgaW4gdXBzdHJlYW0u Cj4gPiA+Cj4gPiA+IE9rIEkga25vdyB3aHkgY29uZmlncyAxIC0gNCBiZWhhdmVkIHRoZSB3YXkg dGhleSBkaWQgYW5kIHdoeSBteSB0ZXN0Cj4gPiA+IHBhdGNoIGRpZG4ndCBoZWxwLgo+ID4gPgo+ ID4gPiBBZnRlciBzdGFyaW5nIGF0IG10ZC9udm1lbSBjb2RlIGZvciBhIGZldyBob3VycyBJIHRo aW5rIG10ZC9udm1lbQo+ID4gPiBpbnRlcmFjdGlvbiBpcyBraW5kIG9mIGEgbWVzcy4gIAo+ID4K PiA+IG52bWVtIGlzIGEgcmVjZW50IHN1YnN5c3RlbSBidXQgbXRkIGNhcnJpZXMgYSBsb3Qgb2Yg bGVnYWN5IHN0dWZmIHdlCj4gPiBjYW5ub3QgcmVhbGx5IHJlLXdpcmUgd2l0aG91dCBicmVha2lu ZyB1c2Vycywgc28gbnZtZW0gb24gdG9wIG9mIG10ZAo+ID4gb2YgY291cnNlIGluaGVyaXQgZnJv bSB0aGUgZnJhZ2lsZSBkZXNpZ25zIGluIHBsYWNlLiAgCj4gCj4gVGhhbmtzIGZvciB0aGUgY29u dGV4dC4gWWVhaCwgSSBmaWd1cmVkLiBUaGF0J3Mgd2h5IEkgZXhwbGljaXRseQo+IGxpbWl0ZWQg bXkgY29tbWVudCB0byAiaW50ZXJhY3Rpb24iLiBBbHRob3VnaCwgSSdkIGxvdmUgdG8gc2VlIHRo ZSBNVEQKPiBwYXJzZXJzIGFsbCBiZSBjb252ZXJ0ZWQgdG8gcHJvcGVyIGRyaXZlcnMgdGhhdCBw cm9iZS4gTVREIGlzCj4gZXNzZW50aWFsbHkgcmVwZWF0aW5nIHRoZSBkcml2ZXIgbWF0Y2hpbmcg bG9naWMuIEkgdGhpbmsgaXQgY2FuIGJlCj4gY2xlYW5lZCB1cCB0byBtb3ZlIHRvIHByb3BlciBk cml2ZXJzIGFuZCBzdGlsbCBub3QgYnJlYWsgYmFja3dhcmQKPiBjb21wYXRpYmlsaXR5LiBOb3Qg c2F5aW5nIGl0J2xsIGJlIHRyaXZpYWwsIGJ1dCBpdCBzaG91bGQgYmUgcG9zc2libGUuCj4gSXJv bmljYWxseSBNVEQgdXNlcyBtdGRfY2xhc3MgYnV0IGhhcyByZWFsIGRyaXZlcnMgdGhhdCB3b3Jr IG9uIHRoZQo+IGRldmljZSAoY29tcGFyZWQgdG8gbnZtZW1fYnVzIGJlbG93KS4KPiAKPiA+ID4g bXRkIGNvcmUgY3JlYXRlcyAicGFydGl0aW9uIiBwbGF0Zm9ybQo+ID4gPiBkZXZpY2VzIChpbmNs dWRpbmcgZm9yIG52bWVtLWNlbGxzKSB0aGF0IGFyZSBwcm9iZWQgYnkgZHJpdmVycyBpbgo+ID4g PiBkcml2ZXJzL252bWVtLiBIb3dldmVyLCB0aGVyZSdzIG5vIGRyaXZlciBmb3IgIm52bWVtLWNl bGxzIiBwYXJ0aXRpb24KPiA+ID4gcGxhdGZvcm0gZGV2aWNlLiBIb3dldmVyLCB0aGUgbnZtZW0g Y29yZSBjcmVhdGVzIG52bWVtX2RldmljZSB3aGVuCj4gPiA+IG52bWVtX3JlZ2lzdGVyKCkgaXMg Y2FsbGVkIGJ5IE1URCBvciB0aGVzZSBwYXJ0aXRpb24gcGxhdGZvcm0gZGV2aWNlcwo+ID4gPiBj cmVhdGVkIGJ5IE1URC4gQnV0IHRoZXNlIG52bWVtX2RldmljZXMgYXJlIGFkZGVkIHRvIGEgbnZt ZW1fYnVzIGJ1dAo+ID4gPiB0aGUgYnVzIGhhcyBubyBtZWFucyB0byBldmVuIHJlZ2lzdGVyIGEg ZHJpdmVyIChpdCBzaG91bGQgcmVhbGx5IGJlIGEKPiA+ID4gbnZtZW1fY2xhc3MgYW5kIG5vdCBu dm1lbV9idXMpLiAgCj4gPgo+ID4gU3Jpbml2YXMsIGRvIHlvdSB0aGluayB3ZSBjb3VsZCBjaGFu Z2UgdGhpcz8gIAo+IAo+IFllYWgsIHRoaXMgcGFydCBnZXRzIGEgYml0IHRyaWNreS4gSXQgZGVw ZW5kcyBvbiB3aGV0aGVyIHRoZSBzeXNmcwo+IGZpbGVzIGZvciBudm1lbSBkZXZpY2VzIGlzIGNv bnNpZGVyZWQgYW4gQUJJLiBDaGFuZ2luZyBmcm9tIGJ1cyB0bwo+IGNsYXNzIHdvdWxkIGNoYW5n ZSB0aGUgc3lzZnMgcGF0aCBmb3IgbnZtZW0gZGV2aWNlcyBmcm9tOgo+IC9zeXMvY2xhc3MvbnZt ZW0gdG8gL3N5cy9idXMvbnZtZW0KCk9rLCBzbyB0aGlzIGlzIGEgbm8gOikKCj4gPiA+IEFuZCB0 aGUgbnZtZW1fZGV2aWNlIHNvbWV0aW1lcyBwb2ludHMKPiA+ID4gdG8gdGhlIERUIG5vZGUgb2Yg dGhlIE1URCBkZXZpY2Ugb3Igc29tZXRpbWVzIHRoZSBwYXJ0aXRpb24gcGxhdGZvcm0KPiA+ID4g ZGV2aWNlcyBvciBtYXliZSBubyBEVCBub2RlIGF0IGFsbC4gIAo+ID4KPiA+IEkgZ3Vlc3MgdGhp cyBjb21lcyBmcm9tIHRoZSBmYWN0IHRoYXQgdGhpcyBpcyBub3Qgc3Ryb25nbHkgZGVmaW5lZCBp bgo+ID4gbXRkIGFuZCBkZXBlbmRzIG9uIHRoZSBzaXR1YXRpb24gKG5vdCBtZW50aW9uaW5nIDIw IHllYXJzIG9mIGhpc3RvcnkKPiA+IHRoZXJlIGFzIHdlbGwpLiAibXRkIiBpcyBhIGJpdCBpbmNv bnNpc3RlbnQgb24gd2hhdCBpdCBtZWFucy4gT2xkZXIKPiA+IGRlc2lnbnMgbWl4ZWQ6IGNvbnRy b2xsZXJzLCBFQ0MgZW5naW5lcyB3aGVuIHJlbGV2YW50IGFuZCBtZW1vcmllczsKPiA+IHdoaWxl IHRoZXNlIHRocmVlIGNvbXBvbmVudHMgYXJlIGNvbXBsZXRlbHkgc2VwYXJhdGVkLiBIZW5jZQo+ ID4gc29tZXRpbWVzIHRoZSBtdGQgZGV2aWNlIGVuZHMgdXAgYmVpbmcgdGhlIHRvcCBsZXZlbCBj b250cm9sbGVyLAo+ID4gc29tZXRpbWVzIGl0J3MganVzdCBvbmUgcGFydGl0aW9uLi4uCj4gPgo+ ID4gQnV0IEknbSBzdXJwcmlzZWQgbm90IGFsbCBvZiB0aGVtIHBvaW50IHRvIGEgRFQgbm9kZS4g Q291bGQgeW91IHNob3cgdXMKPiA+IGFuIGV4YW1wbGU/IEJlY2F1c2UgdGhhdCBtaWdodCBsaWtl bHkgYmUgdW5leHBlY3RlZCAob3IgcGVyaGFwcyBJIGFtCj4gPiBtaXNzaW5nIHNvbWV0aGluZyku ICAKPiAKPiBXZWxsLCB0aGUgbG9naWMgdGhhdCBzZXRzIHRoZSBEVCBub2RlIGZvciBudm1lbV9k ZXZpY2UgaXMgbGlrZSBzbzoKPiAKPiAgICAgICAgIGlmIChjb25maWctPm9mX25vZGUpCj4gICAg ICAgICAgICAgICAgIG52bWVtLT5kZXYub2Zfbm9kZSA9IGNvbmZpZy0+b2Zfbm9kZTsKPiAgICAg ICAgIGVsc2UgaWYgKCFjb25maWctPm5vX29mX25vZGUpCj4gICAgICAgICAgICAgICAgIG52bWVt LT5kZXYub2Zfbm9kZSA9IGNvbmZpZy0+ZGV2LT5vZl9ub2RlOwo+IAo+IFNvIHRoZXJlJ3MgZGVm aW5pdGVseSBhIHBhdGggKHdoZXJlIGJvdGggaWYncyBjb3VsZCBiZSBmYWxzZSkgd2hlcmUKPiB0 aGUgRFQgbm9kZSB3aWxsIG5vdCBnZXQgc2V0LiBJIGRvbid0IGtub3cgaWYgdGhhdCBwYXRoIGlz IHBvc3NpYmxlCj4gd2l0aCB0aGUgZXhpc3RpbmcgdXNlcnMgb2YgbnZtZW1fcmVnaXN0ZXIoKSwg YnV0IGl0J3MgZGVmaW5pdGVseQo+IHBvc3NpYmxlLgoKSXQncyBhbiBhY3R1YWwgcGF0aC4gSSBq dXN0IGNoZWNrZWQgbW9yZSBpbiBkZXRhaWxzLCB0aGlzIGlzIHRoZSBjaGFuZ2UKZnJvbSAyMDE4 IHdoaWNoIHVzZXMgdGhlIG5vX29mX25vZGUgZmxhZzoKYzRkZmEyNWFiMzA3ICgibXRkOiBhZGQg c3VwcG9ydCBmb3IgcmVhZGluZyBNVEQgZGV2aWNlcyB2aWEgdGhlIG52bWVtIEFQSSIpCgpJdCBi YXNpY2FsbHkgYWxsb3dzIGFueSBtdGQgZGV2aWNlIHRvIGJlIGFjY2Vzc2libGUgKHJlYWQtb25s eSkgdGhyb3VnaApudm1lbS4gU28gbXRkIHBhcnRpdGlvbnMgb3Igc3VjaCB3aGljaCBhcmUgbm90 IGRlc2NyaWJlZCBpbiB0aGUgRFQgbWF5Cmp1c3QgYmUgYWNjZXNzZWQgdGhyb3VnaCBudm1lbSAo dGhhdCBpcyBteSBjdXJyZW50IHVuZGVyc3RhbmRpbmcpLgoKVGhlcmUgd2FzIGxhdGVyIGEgcGF0 Y2ggaW4gMjAyMSB3aGljaCBwcmV2ZW50ZWQgdGhpcyBmbGFnIHRvIGJlCmF1dG9tYXRpY2FsbHkg c2V0LCBzbyB0aGF0IGlmIHBhcnRpdGlvbnMgKHdlbGwsIG10ZCBkZXZpY2VzIGluIGdlbmVyYWwp CndlcmUgZGVzY3JpYmVkIGluIHRoZSBEVCwgdGhleSB3b3VsZCBwcm92aWRlIGEgdmFsaWQgb2Zf bm9kZSBpbiBvcmRlcgp0byBiZSB1c2VkIGFzIGNlbGwgcHJvdmlkZXJzIChhZ2FpbiwgbXkgdW5k ZXJzdGFuZGluZyk6CjY1OGM0NDQ4YmJiZiAoIm10ZDogY29yZTogYWRkIG52bWVtLWNlbGxzIGNv bXBhdGlibGUgdG8gcGFyc2UgbXRkIGFzIG52bWVtIGNlbGxzIikKCkJ1dCBJIGd1ZXNzIHRoZSBt YWpvciBwcm9ibGVtIGNvbWVzIGZyb20gdGhlIG52bWVtLWNlbGwgY29tcGF0aWJsZS4gSQphbSB3 b25kZXJpbmcgaWYgaXQgd291bGQgbWFrZSBzZW5zZSB0byBraW5kIG9mIHRyYW5zcG9zZSB0aGUg bWVhbmluZyBvZgp0aGlzIGNvbXBhdGlibGUgaW50byBhIHByb3BlcnR5LiBCdXQsIHdlbGwsIGJh Y2t3YXJkIGNvbXBhdGliaWxpdHkKd291bGQgc3RpbGwgYmUgYSBwcm9ibGVtIEkgZ3Vlc3MuLi4K Cj4gPiA+IFNvIGl0J3MgYSBtZXNzIG9mIG11bHRpcGxlIGRldmljZXMgcG9pbnRpbmcgdG8gdGhl IHNhbWUgRFQgbm9kZSB3aXRoCj4gPiA+IG5vIGNsZWFyIHdheSB0byBpZGVudGlmeSB3aGljaCBv bmVzIHdpbGwgcG9pbnQgdG8gYSBEVCBub2RlIGFuZCB3aGljaAo+ID4gPiBvbmVzIHdpbGwgcHJv YmUgYW5kIHdoaWNoIG9uZXMgd29uJ3QuIEluIHRoZSBmdXR1cmUsIHdlIHNob3VsZG4ndAo+ID4g PiBhbGxvdyBhZGRpbmcgbmV3IGNvbXBhdGlibGUgc3RyaW5ncyBmb3IgcGFydGl0aW9ucyBmb3Ig d2hpY2ggd2UgZG9uJ3QKPiA+ID4gcGxhbiBvbiBhZGRpbmcgbnZtZW0gZHJpdmVycy4KPiA+ID4K PiA+ID4gQ2FuIHlvdSBnaXZlIHRoZSBwYXRjaCBhdCB0aGUgZW5kIG9mIHRoZSBlbWFpbCBhIHNo b3Q/IEl0IHNob3VsZCBmaXgKPiA+ID4gdGhlIGlzc3VlIHdpdGggdGhpcyBzZXJpZXMgYW5kIHdp dGhvdXQgdGhpcyBzZXJpZXMuIEl0IGp1c3QgYXZvaWRzCj4gPiA+IHRoaXMgd2hvbGUgbWVzcyBi eSBub3QgY3JlYXRpbmcgdXNlbGVzcyBwbGF0Zm9ybSBkZXZpY2UgZm9yCj4gPiA+IG52bWVtLWNl bGxzIGNvbXBhdGlibGUgRFQgbm9kZXMuICAKPiA+Cj4gPiBUaGFua3MgYSBsb3QgZm9yIHlvdXIg aGVscC4gIAo+IAo+IE5vIHByb2JsZW0uIEkgd2FudCBmd19kZXZsaW5rIHRvIHdvcmsgZm9yIGV2 ZXJ5b25lLgo+IAoKVGhhbmtzLApNaXF1w6hsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1h cm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==