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 78ACAC54EAA for ; Mon, 30 Jan 2023 10:49:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236019AbjA3KtA (ORCPT ); Mon, 30 Jan 2023 05:49:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40958 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236026AbjA3Ks5 (ORCPT ); Mon, 30 Jan 2023 05:48:57 -0500 Received: from relay4-d.mail.gandi.net (relay4-d.mail.gandi.net [IPv6:2001:4b98:dc4:8::224]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2BE5C2E0E7; Mon, 30 Jan 2023 02:48:54 -0800 (PST) Received: (Authenticated sender: miquel.raynal@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id D390DE0017; Mon, 30 Jan 2023 10:48:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1675075732; 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=YzHSMHv3dQqwmrI3sIIweVUhA59SIPhf3LtT2+gMqwo=; b=MQEW+BWX07JMZKyk7WxIMNMKaml7A1vMbtjmGrh6EPmaJiv2WJRTQE06Ze6pOiCsOClePO exJH0V47FbkEzh/tXaUIsD6FeIdhx08yME4jZfjovH9zJk4vlXfnWUfBh4e38r+Is+QZGc 83XnM7EpMzE28GXCmGX7PavPiIuUoNVTh4xSrkeQWeAVsrMYCd0XE24fv3YIP89J2duoiA XtfC0nU3RTq2vmjkpzrLpAKKFUlMYBpWl5WArV87flGN+O/lcdfS+nivatQ7y95vo/8YKW uxkn4gifipv2t7q8OUR/lbJEEdcUT2FgIQSxHiiqiDNNJGBpMPphBsrmrJJGBw== Date: Mon, 30 Jan 2023 11:48:39 +0100 From: Miquel Raynal To: Saravana Kannan Cc: Greg Kroah-Hartman , "Rafael J. Wysocki" , Sudeep Holla , Cristian Marussi , Linus Walleij , Bartosz Golaszewski , Thomas Gleixner , Marc Zyngier , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , NXP Linux Team , Rob Herring , Frank Rowand , Geert Uytterhoeven , Magnus Damm , Len Brown , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , Tony Lindgren , Linux Kernel Functional Testing , Naresh Kamboju , Abel Vesa , Alexander Stein , Geert Uytterhoeven , John Stultz , Doug Anderson , Guenter Roeck , Dmitry Baryshkov , Maxim Kiselev , Maxim Kochetkov , Luca Weiss , Colin Foster , Martin Kepplinger , Jean-Philippe Brucker , kernel-team@android.com, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-acpi@vger.kernel.org Subject: Re: [PATCH v2 00/11] fw_devlink improvements Message-ID: <20230130114839.379f08bd@xps-13> In-Reply-To: <20230127001141.407071-1-saravanak@google.com> References: <20230127001141.407071-1-saravanak@google.com> 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 Maxim & Maxim, saravanak@google.com wrote on Thu, 26 Jan 2023 16:11:27 -0800: > This patch series improves fw_devlink in the following ways: >=20 > 1. It no longer cares about a fwnode having a "compatible" property. It > figures this our more dynamically. The only expectation is that > fwnode that are converted to devices actually get probed by a driver > for the dependencies to be enforced correctly. >=20 > 2. Finer grained dependency tracking. fw_devlink will now create device > links from the consumer to the actual resource's device (if it has one, > Eg: gpio_device) instead of the parent supplier device. This improves > things like async suspend/resume ordering, potentially remove the need > for frameworks to create device links, more parallelized async probing, > and better sync_state() tracking. >=20 > 3. Handle hardware/software quirks where a child firmware node gets > populated as a device before its parent firmware node AND actually > supplies a non-optional resource to the parent firmware node's > device. >=20 > 4. Way more robust at cycle handling (see patch for the insane cases). >=20 > 5. Stops depending on OF_POPULATED to figure out some corner cases. >=20 > 6. Simplifies the work that needs to be done by the firmware specific > code. >=20 > Sorry it took a while to roll in the fixes I gave in the v1 series > thread[1] into a v2 series. >=20 > Since I didn't make any additional changes on top of what I already gave > in the v1 thread and Dmitry is very eager to get this series going, I'm > sending it out without testing locally. I already tested these patches a > few months ago as part of the v1 series. So I don't expect any major > issues. I'll test them again on my end in the next few days and will > report here if I actually find anything wrong. >=20 > Tony, Naresh, Abel, Sudeep, Geert, >=20 > I got the following reviewed by's and tested by's a few months back, but > it's been 5 months since I sent out v1. So I wasn't sure if it was okay > to include them in the v2 commits. Let me know if you are okay with this > being included in the commits and/or if you want to test this series > again. >=20 > Reviewed-by: Tony Lindgren > Tested-by: Tony Lindgren > Tested-by: Linux Kernel Functional Testing > Tested-by: Naresh Kamboju > Tested-by: Abel Vesa > Tested-by: Sudeep Holla > Tested-by: Geert Uytterhoeven >=20 > Dmitry, Maxim(s), Miquel, Luca, Doug, Colin, Martin, Jean-Philippe, >=20 > I've Cc-ed you because I had pointed you to v1 of this series + the > patches in that thread at one point or another as a fix to some issue > you were facing. It'd appreciate it if you can test this series and > report any issues, or things it fixed and give Tested-bys. Maxim & Maxim I would really appreciate if you could validate that the original issue you had is solved with this version? I don't have any hardware suffering from this issue. > In addition, if you can also apply a revert of this series[2] and delete > driver_deferred_probe_check_state() from your tree and see if you hit > any issues and report them, that'd be great too! I'm pretty sure some of > you will hit issues with that. I want to fix those next and then > revert[2]. >=20 > Thanks, > Saravana >=20 > [1] - https://lore.kernel.org/lkml/20220810060040.321697-1-saravanak@goog= le.com/ > [2] - https://lore.kernel.org/lkml/20220819221616.2107893-1-saravanak@goo= gle.com/ > [3] - https://lore.kernel.org/lkml/CAGETcx-JUV1nj8wBJrTPfyvM7=3DMre5j_vkV= mZojeiumUGG6QZQ@mail.gmail.com/ >=20 > v1 -> v2: > - Fixed Patch 1 to handle a corner case discussed in [3]. > - New patch 10 to handle "fsl,imx8mq-gpc" being initialized by 2 drivers. > - New patch 11 to add fw_devlink support for SCMI devices. >=20 > Cc: Abel Vesa > Cc: Alexander Stein > Cc: Tony Lindgren > Cc: Sudeep Holla > Cc: Geert Uytterhoeven > Cc: John Stultz > Cc: Doug Anderson > Cc: Guenter Roeck > Cc: Dmitry Baryshkov > Cc: Maxim Kiselev > Cc: Maxim Kochetkov > Cc: Miquel Raynal > Cc: Luca Weiss > Cc: Colin Foster > Cc: Martin Kepplinger > Cc: Jean-Philippe Brucker >=20 > Saravana Kannan (11): > driver core: fw_devlink: Don't purge child fwnode's consumer links > driver core: fw_devlink: Improve check for fwnode with no > device/driver > soc: renesas: Move away from using OF_POPULATED for fw_devlink > gpiolib: Clear the gpio_device's fwnode initialized flag before adding > driver core: fw_devlink: Add DL_FLAG_CYCLE support to device links > driver core: fw_devlink: Allow marking a fwnode link as being part of > a cycle > driver core: fw_devlink: Consolidate device link flag computation > driver core: fw_devlink: Make cycle detection more robust > of: property: Simplify of_link_to_phandle() > irqchip/irq-imx-gpcv2: Mark fwnode device as not initialized > firmware: arm_scmi: Set fwnode for the scmi_device >=20 > drivers/base/core.c | 443 +++++++++++++++++++++----------- > drivers/firmware/arm_scmi/bus.c | 2 + > drivers/gpio/gpiolib.c | 6 + > drivers/irqchip/irq-imx-gpcv2.c | 1 + > drivers/of/property.c | 84 +----- > drivers/soc/imx/gpcv2.c | 1 + > drivers/soc/renesas/rcar-sysc.c | 2 +- > include/linux/device.h | 1 + > include/linux/fwnode.h | 12 +- > 9 files changed, 332 insertions(+), 220 deletions(-) >=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 2C6CFC54EAA for ; Mon, 30 Jan 2023 10:51:42 +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=0dGdkHgoM8aHjoFguPpR/OFMKedxlCTYvSvbkF3Le6w=; b=VfCK2rde51gXu+ tU9EEj9KxOvBNPqXYapsvnBJsKhJv+hSPlX8gB5GgHYyS5yuKCpvIBO9fG+X+RT664kqC99CNKcld 8HY9NJQCZV9MN3gobkuE8CFc2i2EJIuNQtGc8pRxxECuUVYaaHB1SdydpVIYfzy4aMWmOv+lHNzdz rCvkxoe1QyQVfcJa6li8ADjBBnKCXl1ks0R+/7oRWen1uJD/CbPsdOzGTo+TyXsF6ZsTEjA2LjDnP YshwvXwmQBY4R4V7ln3CGXdqYLS1TJyMdnQNJx/JGHAQaxhix5JGyw8XtAtGwh3qbJLrrcPlK4fQz hGB/spWoM3jp0vA0hnew==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pMRj5-003BdB-Lr; Mon, 30 Jan 2023 10:49:27 +0000 Received: from relay4-d.mail.gandi.net ([2001:4b98:dc4:8::224]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pMRid-003BcD-3w for linux-arm-kernel@lists.infradead.org; Mon, 30 Jan 2023 10:49:01 +0000 Received: (Authenticated sender: miquel.raynal@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id D390DE0017; Mon, 30 Jan 2023 10:48:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1675075732; 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=YzHSMHv3dQqwmrI3sIIweVUhA59SIPhf3LtT2+gMqwo=; b=MQEW+BWX07JMZKyk7WxIMNMKaml7A1vMbtjmGrh6EPmaJiv2WJRTQE06Ze6pOiCsOClePO exJH0V47FbkEzh/tXaUIsD6FeIdhx08yME4jZfjovH9zJk4vlXfnWUfBh4e38r+Is+QZGc 83XnM7EpMzE28GXCmGX7PavPiIuUoNVTh4xSrkeQWeAVsrMYCd0XE24fv3YIP89J2duoiA XtfC0nU3RTq2vmjkpzrLpAKKFUlMYBpWl5WArV87flGN+O/lcdfS+nivatQ7y95vo/8YKW uxkn4gifipv2t7q8OUR/lbJEEdcUT2FgIQSxHiiqiDNNJGBpMPphBsrmrJJGBw== Date: Mon, 30 Jan 2023 11:48:39 +0100 From: Miquel Raynal To: Saravana Kannan Cc: Greg Kroah-Hartman , "Rafael J. Wysocki" , Sudeep Holla , Cristian Marussi , Linus Walleij , Bartosz Golaszewski , Thomas Gleixner , Marc Zyngier , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , NXP Linux Team , Rob Herring , Frank Rowand , Geert Uytterhoeven , Magnus Damm , Len Brown , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , Tony Lindgren , Linux Kernel Functional Testing , Naresh Kamboju , Abel Vesa , Alexander Stein , Geert Uytterhoeven , John Stultz , Doug Anderson , Guenter Roeck , Dmitry Baryshkov , Maxim Kiselev , Maxim Kochetkov , Luca Weiss , Colin Foster , Martin Kepplinger , Jean-Philippe Brucker , kernel-team@android.com, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-acpi@vger.kernel.org Subject: Re: [PATCH v2 00/11] fw_devlink improvements Message-ID: <20230130114839.379f08bd@xps-13> In-Reply-To: <20230127001141.407071-1-saravanak@google.com> References: <20230127001141.407071-1-saravanak@google.com> 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-20230130_024859_504767_5A290F5D X-CRM114-Status: GOOD ( 40.16 ) 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 SGkgTWF4aW0gJiBNYXhpbSwKCnNhcmF2YW5ha0Bnb29nbGUuY29tIHdyb3RlIG9uIFRodSwgMjYg SmFuIDIwMjMgMTY6MTE6MjcgLTA4MDA6Cgo+IFRoaXMgcGF0Y2ggc2VyaWVzIGltcHJvdmVzIGZ3 X2RldmxpbmsgaW4gdGhlIGZvbGxvd2luZyB3YXlzOgo+IAo+IDEuIEl0IG5vIGxvbmdlciBjYXJl cyBhYm91dCBhIGZ3bm9kZSBoYXZpbmcgYSAiY29tcGF0aWJsZSIgcHJvcGVydHkuIEl0Cj4gICAg ZmlndXJlcyB0aGlzIG91ciBtb3JlIGR5bmFtaWNhbGx5LiBUaGUgb25seSBleHBlY3RhdGlvbiBp cyB0aGF0Cj4gICAgZndub2RlIHRoYXQgYXJlIGNvbnZlcnRlZCB0byBkZXZpY2VzIGFjdHVhbGx5 IGdldCBwcm9iZWQgYnkgYSBkcml2ZXIKPiAgICBmb3IgdGhlIGRlcGVuZGVuY2llcyB0byBiZSBl bmZvcmNlZCBjb3JyZWN0bHkuCj4gCj4gMi4gRmluZXIgZ3JhaW5lZCBkZXBlbmRlbmN5IHRyYWNr aW5nLiBmd19kZXZsaW5rIHdpbGwgbm93IGNyZWF0ZSBkZXZpY2UKPiAgICBsaW5rcyBmcm9tIHRo ZSBjb25zdW1lciB0byB0aGUgYWN0dWFsIHJlc291cmNlJ3MgZGV2aWNlIChpZiBpdCBoYXMgb25l LAo+ICAgIEVnOiBncGlvX2RldmljZSkgaW5zdGVhZCBvZiB0aGUgcGFyZW50IHN1cHBsaWVyIGRl dmljZS4gVGhpcyBpbXByb3Zlcwo+ICAgIHRoaW5ncyBsaWtlIGFzeW5jIHN1c3BlbmQvcmVzdW1l IG9yZGVyaW5nLCBwb3RlbnRpYWxseSByZW1vdmUgdGhlIG5lZWQKPiAgICBmb3IgZnJhbWV3b3Jr cyB0byBjcmVhdGUgZGV2aWNlIGxpbmtzLCBtb3JlIHBhcmFsbGVsaXplZCBhc3luYyBwcm9iaW5n LAo+ICAgIGFuZCBiZXR0ZXIgc3luY19zdGF0ZSgpIHRyYWNraW5nLgo+IAo+IDMuIEhhbmRsZSBo YXJkd2FyZS9zb2Z0d2FyZSBxdWlya3Mgd2hlcmUgYSBjaGlsZCBmaXJtd2FyZSBub2RlIGdldHMK PiAgICBwb3B1bGF0ZWQgYXMgYSBkZXZpY2UgYmVmb3JlIGl0cyBwYXJlbnQgZmlybXdhcmUgbm9k ZSBBTkQgYWN0dWFsbHkKPiAgICBzdXBwbGllcyBhIG5vbi1vcHRpb25hbCByZXNvdXJjZSB0byB0 aGUgcGFyZW50IGZpcm13YXJlIG5vZGUncwo+ICAgIGRldmljZS4KPiAKPiA0LiBXYXkgbW9yZSBy b2J1c3QgYXQgY3ljbGUgaGFuZGxpbmcgKHNlZSBwYXRjaCBmb3IgdGhlIGluc2FuZSBjYXNlcyku Cj4gCj4gNS4gU3RvcHMgZGVwZW5kaW5nIG9uIE9GX1BPUFVMQVRFRCB0byBmaWd1cmUgb3V0IHNv bWUgY29ybmVyIGNhc2VzLgo+IAo+IDYuIFNpbXBsaWZpZXMgdGhlIHdvcmsgdGhhdCBuZWVkcyB0 byBiZSBkb25lIGJ5IHRoZSBmaXJtd2FyZSBzcGVjaWZpYwo+ICAgIGNvZGUuCj4gCj4gU29ycnkg aXQgdG9vayBhIHdoaWxlIHRvIHJvbGwgaW4gdGhlIGZpeGVzIEkgZ2F2ZSBpbiB0aGUgdjEgc2Vy aWVzCj4gdGhyZWFkWzFdIGludG8gYSB2MiBzZXJpZXMuCj4gCj4gU2luY2UgSSBkaWRuJ3QgbWFr ZSBhbnkgYWRkaXRpb25hbCBjaGFuZ2VzIG9uIHRvcCBvZiB3aGF0IEkgYWxyZWFkeSBnYXZlCj4g aW4gdGhlIHYxIHRocmVhZCBhbmQgRG1pdHJ5IGlzIHZlcnkgZWFnZXIgdG8gZ2V0IHRoaXMgc2Vy aWVzIGdvaW5nLCBJJ20KPiBzZW5kaW5nIGl0IG91dCB3aXRob3V0IHRlc3RpbmcgbG9jYWxseS4g SSBhbHJlYWR5IHRlc3RlZCB0aGVzZSBwYXRjaGVzIGEKPiBmZXcgbW9udGhzIGFnbyBhcyBwYXJ0 IG9mIHRoZSB2MSBzZXJpZXMuIFNvIEkgZG9uJ3QgZXhwZWN0IGFueSBtYWpvcgo+IGlzc3Vlcy4g SSdsbCB0ZXN0IHRoZW0gYWdhaW4gb24gbXkgZW5kIGluIHRoZSBuZXh0IGZldyBkYXlzIGFuZCB3 aWxsCj4gcmVwb3J0IGhlcmUgaWYgSSBhY3R1YWxseSBmaW5kIGFueXRoaW5nIHdyb25nLgo+IAo+ IFRvbnksIE5hcmVzaCwgQWJlbCwgU3VkZWVwLCBHZWVydCwKPiAKPiBJIGdvdCB0aGUgZm9sbG93 aW5nIHJldmlld2VkIGJ5J3MgYW5kIHRlc3RlZCBieSdzIGEgZmV3IG1vbnRocyBiYWNrLCBidXQK PiBpdCdzIGJlZW4gNSBtb250aHMgc2luY2UgSSBzZW50IG91dCB2MS4gU28gSSB3YXNuJ3Qgc3Vy ZSBpZiBpdCB3YXMgb2theQo+IHRvIGluY2x1ZGUgdGhlbSBpbiB0aGUgdjIgY29tbWl0cy4gTGV0 IG1lIGtub3cgaWYgeW91IGFyZSBva2F5IHdpdGggdGhpcwo+IGJlaW5nIGluY2x1ZGVkIGluIHRo ZSBjb21taXRzIGFuZC9vciBpZiB5b3Ugd2FudCB0byB0ZXN0IHRoaXMgc2VyaWVzCj4gYWdhaW4u Cj4gCj4gUmV2aWV3ZWQtYnk6IFRvbnkgTGluZGdyZW4gPHRvbnlAYXRvbWlkZS5jb20+Cj4gVGVz dGVkLWJ5OiBUb255IExpbmRncmVuIDx0b255QGF0b21pZGUuY29tPgo+IFRlc3RlZC1ieTogTGlu dXggS2VybmVsIEZ1bmN0aW9uYWwgVGVzdGluZyA8bGtmdEBsaW5hcm8ub3JnPgo+IFRlc3RlZC1i eTogTmFyZXNoIEthbWJvanUgPG5hcmVzaC5rYW1ib2p1QGxpbmFyby5vcmc+Cj4gVGVzdGVkLWJ5 OiBBYmVsIFZlc2EgPGFiZWwudmVzYUBsaW5hcm8ub3JnPgo+IFRlc3RlZC1ieTogU3VkZWVwIEhv bGxhIDxzdWRlZXAuaG9sbGFAYXJtLmNvbT4KPiBUZXN0ZWQtYnk6IEdlZXJ0IFV5dHRlcmhvZXZl biA8Z2VlcnQrcmVuZXNhc0BnbGlkZXIuYmU+Cj4gCj4gRG1pdHJ5LCBNYXhpbShzKSwgTWlxdWVs LCBMdWNhLCBEb3VnLCBDb2xpbiwgTWFydGluLCBKZWFuLVBoaWxpcHBlLAo+IAo+IEkndmUgQ2Mt ZWQgeW91IGJlY2F1c2UgSSBoYWQgcG9pbnRlZCB5b3UgdG8gdjEgb2YgdGhpcyBzZXJpZXMgKyB0 aGUKPiBwYXRjaGVzIGluIHRoYXQgdGhyZWFkIGF0IG9uZSBwb2ludCBvciBhbm90aGVyIGFzIGEg Zml4IHRvIHNvbWUgaXNzdWUKPiB5b3Ugd2VyZSBmYWNpbmcuIEl0J2QgYXBwcmVjaWF0ZSBpdCBp ZiB5b3UgY2FuIHRlc3QgdGhpcyBzZXJpZXMgYW5kCj4gcmVwb3J0IGFueSBpc3N1ZXMsIG9yIHRo aW5ncyBpdCBmaXhlZCBhbmQgZ2l2ZSBUZXN0ZWQtYnlzLgoKTWF4aW0gJiBNYXhpbSBJIHdvdWxk IHJlYWxseSBhcHByZWNpYXRlIGlmIHlvdSBjb3VsZCB2YWxpZGF0ZSB0aGF0IHRoZQpvcmlnaW5h bCBpc3N1ZSB5b3UgaGFkIGlzIHNvbHZlZCB3aXRoIHRoaXMgdmVyc2lvbj8gSSBkb24ndCBoYXZl IGFueQpoYXJkd2FyZSBzdWZmZXJpbmcgZnJvbSB0aGlzIGlzc3VlLgoKPiBJbiBhZGRpdGlvbiwg aWYgeW91IGNhbiBhbHNvIGFwcGx5IGEgcmV2ZXJ0IG9mIHRoaXMgc2VyaWVzWzJdIGFuZCBkZWxl dGUKPiBkcml2ZXJfZGVmZXJyZWRfcHJvYmVfY2hlY2tfc3RhdGUoKSBmcm9tIHlvdXIgdHJlZSBh bmQgc2VlIGlmIHlvdSBoaXQKPiBhbnkgaXNzdWVzIGFuZCByZXBvcnQgdGhlbSwgdGhhdCdkIGJl IGdyZWF0IHRvbyEgSSdtIHByZXR0eSBzdXJlIHNvbWUgb2YKPiB5b3Ugd2lsbCBoaXQgaXNzdWVz IHdpdGggdGhhdC4gSSB3YW50IHRvIGZpeCB0aG9zZSBuZXh0IGFuZCB0aGVuCj4gcmV2ZXJ0WzJd Lgo+IAo+IFRoYW5rcywKPiBTYXJhdmFuYQo+IAo+IFsxXSAtIGh0dHBzOi8vbG9yZS5rZXJuZWwu b3JnL2xrbWwvMjAyMjA4MTAwNjAwNDAuMzIxNjk3LTEtc2FyYXZhbmFrQGdvb2dsZS5jb20vCj4g WzJdIC0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGttbC8yMDIyMDgxOTIyMTYxNi4yMTA3ODkz LTEtc2FyYXZhbmFrQGdvb2dsZS5jb20vCj4gWzNdIC0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcv bGttbC9DQUdFVGN4LUpVVjFuajh3QkpyVFBmeXZNNz1NcmU1al92a1ZtWm9qZWl1bVVHRzZRWlFA bWFpbC5nbWFpbC5jb20vCj4gCj4gdjEgLT4gdjI6Cj4gLSBGaXhlZCBQYXRjaCAxIHRvIGhhbmRs ZSBhIGNvcm5lciBjYXNlIGRpc2N1c3NlZCBpbiBbM10uCj4gLSBOZXcgcGF0Y2ggMTAgdG8gaGFu ZGxlICJmc2wsaW14OG1xLWdwYyIgYmVpbmcgaW5pdGlhbGl6ZWQgYnkgMiBkcml2ZXJzLgo+IC0g TmV3IHBhdGNoIDExIHRvIGFkZCBmd19kZXZsaW5rIHN1cHBvcnQgZm9yIFNDTUkgZGV2aWNlcy4K PiAKPiBDYzogQWJlbCBWZXNhIDxhYmVsLnZlc2FAbGluYXJvLm9yZz4KPiBDYzogQWxleGFuZGVy IFN0ZWluIDxhbGV4YW5kZXIuc3RlaW5AZXcudHEtZ3JvdXAuY29tPgo+IENjOiBUb255IExpbmRn cmVuIDx0b255QGF0b21pZGUuY29tPgo+IENjOiBTdWRlZXAgSG9sbGEgPHN1ZGVlcC5ob2xsYUBh cm0uY29tPgo+IENjOiBHZWVydCBVeXR0ZXJob2V2ZW4gPGdlZXJ0QGxpbnV4LW02OGsub3JnPgo+ IENjOiBKb2huIFN0dWx0eiA8anN0dWx0ekBnb29nbGUuY29tPgo+IENjOiBEb3VnIEFuZGVyc29u IDxkaWFuZGVyc0BjaHJvbWl1bS5vcmc+Cj4gQ2M6IEd1ZW50ZXIgUm9lY2sgPGxpbnV4QHJvZWNr LXVzLm5ldD4KPiBDYzogRG1pdHJ5IEJhcnlzaGtvdiA8ZG1pdHJ5LmJhcnlzaGtvdkBsaW5hcm8u b3JnPgo+IENjOiBNYXhpbSBLaXNlbGV2IDxiaWd1bmNsZW1heEBnbWFpbC5jb20+Cj4gQ2M6IE1h eGltIEtvY2hldGtvdiA8Zmlkb19tYXhAaW5ib3gucnU+Cj4gQ2M6IE1pcXVlbCBSYXluYWwgPG1p cXVlbC5yYXluYWxAYm9vdGxpbi5jb20+Cj4gQ2M6IEx1Y2EgV2Vpc3MgPGx1Y2Eud2Vpc3NAZmFp cnBob25lLmNvbT4KPiBDYzogQ29saW4gRm9zdGVyIDxjb2xpbi5mb3N0ZXJAaW4tYWR2YW50YWdl LmNvbT4KPiBDYzogTWFydGluIEtlcHBsaW5nZXIgPG1hcnRpbi5rZXBwbGluZ2VyQHB1cmkuc20+ Cj4gQ2M6IEplYW4tUGhpbGlwcGUgQnJ1Y2tlciA8anBiQGtlcm5lbC5vcmc+Cj4gCj4gU2FyYXZh bmEgS2FubmFuICgxMSk6Cj4gICBkcml2ZXIgY29yZTogZndfZGV2bGluazogRG9uJ3QgcHVyZ2Ug Y2hpbGQgZndub2RlJ3MgY29uc3VtZXIgbGlua3MKPiAgIGRyaXZlciBjb3JlOiBmd19kZXZsaW5r OiBJbXByb3ZlIGNoZWNrIGZvciBmd25vZGUgd2l0aCBubwo+ICAgICBkZXZpY2UvZHJpdmVyCj4g ICBzb2M6IHJlbmVzYXM6IE1vdmUgYXdheSBmcm9tIHVzaW5nIE9GX1BPUFVMQVRFRCBmb3IgZndf ZGV2bGluawo+ICAgZ3Bpb2xpYjogQ2xlYXIgdGhlIGdwaW9fZGV2aWNlJ3MgZndub2RlIGluaXRp YWxpemVkIGZsYWcgYmVmb3JlIGFkZGluZwo+ICAgZHJpdmVyIGNvcmU6IGZ3X2Rldmxpbms6IEFk ZCBETF9GTEFHX0NZQ0xFIHN1cHBvcnQgdG8gZGV2aWNlIGxpbmtzCj4gICBkcml2ZXIgY29yZTog ZndfZGV2bGluazogQWxsb3cgbWFya2luZyBhIGZ3bm9kZSBsaW5rIGFzIGJlaW5nIHBhcnQgb2YK PiAgICAgYSBjeWNsZQo+ICAgZHJpdmVyIGNvcmU6IGZ3X2Rldmxpbms6IENvbnNvbGlkYXRlIGRl dmljZSBsaW5rIGZsYWcgY29tcHV0YXRpb24KPiAgIGRyaXZlciBjb3JlOiBmd19kZXZsaW5rOiBN YWtlIGN5Y2xlIGRldGVjdGlvbiBtb3JlIHJvYnVzdAo+ICAgb2Y6IHByb3BlcnR5OiBTaW1wbGlm eSBvZl9saW5rX3RvX3BoYW5kbGUoKQo+ICAgaXJxY2hpcC9pcnEtaW14LWdwY3YyOiBNYXJrIGZ3 bm9kZSBkZXZpY2UgYXMgbm90IGluaXRpYWxpemVkCj4gICBmaXJtd2FyZTogYXJtX3NjbWk6IFNl dCBmd25vZGUgZm9yIHRoZSBzY21pX2RldmljZQo+IAo+ICBkcml2ZXJzL2Jhc2UvY29yZS5jICAg ICAgICAgICAgIHwgNDQzICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCj4gIGRyaXZl cnMvZmlybXdhcmUvYXJtX3NjbWkvYnVzLmMgfCAgIDIgKwo+ICBkcml2ZXJzL2dwaW8vZ3Bpb2xp Yi5jICAgICAgICAgIHwgICA2ICsKPiAgZHJpdmVycy9pcnFjaGlwL2lycS1pbXgtZ3BjdjIuYyB8 ICAgMSArCj4gIGRyaXZlcnMvb2YvcHJvcGVydHkuYyAgICAgICAgICAgfCAgODQgKy0tLS0tCj4g IGRyaXZlcnMvc29jL2lteC9ncGN2Mi5jICAgICAgICAgfCAgIDEgKwo+ICBkcml2ZXJzL3NvYy9y ZW5lc2FzL3JjYXItc3lzYy5jIHwgICAyICstCj4gIGluY2x1ZGUvbGludXgvZGV2aWNlLmggICAg ICAgICAgfCAgIDEgKwo+ICBpbmNsdWRlL2xpbnV4L2Z3bm9kZS5oICAgICAgICAgIHwgIDEyICst Cj4gIDkgZmlsZXMgY2hhbmdlZCwgMzMyIGluc2VydGlvbnMoKyksIDIyMCBkZWxldGlvbnMoLSkK PiAKCgpUaGFua3MsCk1pcXXDqGwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJu ZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK