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 00FE9C61DA4 for ; Mon, 6 Feb 2023 22:47:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229582AbjBFWrY (ORCPT ); Mon, 6 Feb 2023 17:47:24 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57922 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229574AbjBFWrX (ORCPT ); Mon, 6 Feb 2023 17:47:23 -0500 Received: from relay10.mail.gandi.net (relay10.mail.gandi.net [IPv6:2001:4b98:dc4:8::230]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ADF7830292; Mon, 6 Feb 2023 14:47:21 -0800 (PST) Received: (Authenticated sender: miquel.raynal@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id A3BE4240004; Mon, 6 Feb 2023 22:47:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1675723640; 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=pc1SdcIpV5ODdMU7SAwCjZHlR3pK1o6ZKD9N+1lFzU8=; b=lN9G+GkzWhLmFpOx36TWjp7NwZAXjZ+TiEn+zCKhNDVkBMUkzXJXcT3dQ+OlyrvAkmdIDj s0d40p3wyqqhgo7JGhKsFQQXys0YVofqntuF3hGc+WRXKLtEzgheznHVSPPhuavJ2HgB8p VQZD50ix0sOAzTw1Gbamn4nJThiDd6kwpVeCVQYMSrhdFyZz+ObOsMW/FJN0xyq/hWxwDw yYnCKkTjm/HM10ee9QhZZ/OvWwWNLO1NgMjb/NTiYzXeX3es6J4M5b+wjtSIisV7Etgz4g AlRrczWpc4Rn/DPVG5fSTQpAK3T2E1bh8iDgIit+R6kp0YfFdD5sxsSgQAsLEA== Date: Mon, 6 Feb 2023 23:47:13 +0100 From: Miquel Raynal To: Srinivas Kandagatla Cc: Michael Walle , Jonathan Corbet , Rob Herring , Frank Rowand , Sascha Hauer , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, Dan Carpenter , Greg Kroah-Hartman Subject: Re: [PATCH v5 00/21] nvmem: core: introduce NVMEM layouts Message-ID: <20230206234713.7cf2f722@xps-13> In-Reply-To: <81a5c400-e671-fab3-732a-d615fa4242b3@linaro.org> References: <20221206200740.3567551-1-michael@walle.cc> <20230103163902.218cb5c7@xps-13> <81a5c400-e671-fab3-732a-d615fa4242b3@linaro.org> 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-doc@vger.kernel.org Hi Srinivas, + Greg srinivas.kandagatla@linaro.org wrote on Mon, 6 Feb 2023 20:31:46 +0000: > Hi Michael/Miquel, >=20 > I had to revert Layout patches due to comments from Greg about Making the= layouts as built-in rather than modules, he is not ready to merge them as = it is. Ok this is the second time I see something similar happening: - maintainer or maintainers group doing the review/apply job and sending to "upper" maintainer - upper maintainer refusing for a "questionable" reason at this stage. I am not saying the review is incorrect or anything. I'm just wondering whether, for the second time, I am facing a fair situation, either myself as a contributor or the intermediate maintainer who's being kind of bypassed. What I mean is: the review process has happened. Nothing was hidden, this series has started leaving on the mailing lists more than two years ago. The contribution process which has been in place for many years asks the contributors to send new versions when the review process leads to comments, which we did. Once the series has been "accepted" it is expected that this series will be pulled during the next merge window. If there is something else to fix, there are 6 to 8 long weeks where contributors' fixes are welcome. Why not letting us the opportunity to use them? Why, for the second time, I am facing an extremely urgent situation where I have to cancel all my commitments just because a random comment has been made on a series which has been standing still for months? What I would expect instead, is a discussion on the cover letter of the series where Michael explained why he did no choose to use modules in the first place. If it appears that for some reason it is best to enable NVMEM layouts as modules, we will send a timely series on top of the current one to enable that particular case. > >> NVMEM layouts as modules? > >> While possible in principle, it doesn't make any sense because the NVM= EM > >> core can't be compiled as a module. The layouts needs to be available = at > >> probe time. (That is also the reason why they get registered with > >> subsys_initcall().) So if the NVMEM core would be a module, the layouts > >> could be modules, too. I know Michael is busy after the FOSDEM and so am I, so, Greg, would you accept to take the PR as it is, participate to the discussion and wait for an update? Thanks, Miqu=C3=A8l > His original comment, >=20 > "Why are we going back to "custom-built" kernel configurations? Why can > this not be a loadable module? Distros are now forced to enable these > layout and all kernels will have this dead code in the tree without any > choice in the matter? >=20 > That's not ok, these need to be auto-loaded based on the hardware > representation like any other kernel module. You can't force them to be > always present, sorry. > " >=20 > I have applied most of the patches except >=20 > nvmem: core: introduce NVMEM layouts > nvmem: core: add per-cell post processing > nvmem: core: allow to modify a cell before adding it > nvmem: imx-ocotp: replace global post processing with layouts > nvmem: cell: drop global cell_post_process > nvmem: core: provide own priv pointer in post process callback > nvmem: layouts: add sl28vpd layout > MAINTAINERS: add myself as sl28vpd nvmem layout driver > nvmem: layouts: Add ONIE tlv layout driver > MAINTAINERS: Add myself as ONIE tlv NVMEM layout maintainer > nvmem: core: return -ENOENT if nvmem cell is not found > nvmem: layouts: Fix spelling mistake "platforn" -> "platform" > dt-bindings: nvmem: Fix spelling mistake "platforn" -> "platform" > nvmem: core: fix nvmem_layout_get_match_data() >=20 > Please rebase your patches on top of nvmem-next once layouts are converte= d to loadable modules. >=20 > thanks, > srini >=20 >=20 >=20 > On 03/01/2023 15:39, Miquel Raynal wrote: > > Hi Srinivas, > >=20 > > michael@walle.cc wrote on Tue, 6 Dec 2022 21:07:19 +0100: > > =20 > >> This is now the third attempt to fetch the MAC addresses from the VPD > >> for the Kontron sl28 boards. Previous discussions can be found here: > >> https://lore.kernel.org/lkml/20211228142549.1275412-1-michael@walle.cc/ > >> > >> > >> NVMEM cells are typically added by board code or by the devicetree. But > >> as the cells get more complex, there is (valid) push back from the > >> devicetree maintainers to not put that handling in the devicetree. > >> > >> Therefore, introduce NVMEM layouts. They operate on the NVMEM device a= nd > >> can add cells during runtime. That way it is possible to add more comp= lex > >> cells than it is possible right now with the offset/length/bits > >> description in the device tree. For example, you can have post process= ing > >> for individual cells (think of endian swapping, or ethernet offset > >> handling). > >> > >> The imx-ocotp driver is the only user of the global post processing ho= ok, > >> convert it to nvmem layouts and drop the global post pocessing hook. > >> > >> For now, the layouts are selected by the device tree. But the idea is > >> that also board files or other drivers could set a layout. Although no > >> code for that exists yet. > >> > >> Thanks to Miquel, the device tree bindings are already approved and me= rged. > >> > >> NVMEM layouts as modules? > >> While possible in principle, it doesn't make any sense because the NVM= EM > >> core can't be compiled as a module. The layouts needs to be available = at > >> probe time. (That is also the reason why they get registered with > >> subsys_initcall().) So if the NVMEM core would be a module, the layouts > >> could be modules, too. =20 > >=20 > > I believe this series still applies even though -rc1 (and -rc2) are out > > now, may we know if you consider merging it anytime soon or if there > > are still discrepancies in the implementation you would like to > > discuss? Otherwise I would really like to see this laying in -next a > > few weeks before being sent out to Linus, just in case. > >=20 > > Thanks, > > Miqu=C3=A8l =20 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 CA76BC61DA4 for ; Mon, 6 Feb 2023 22:48:25 +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=lFL7fI3dxcsjrW84LzBDUsfS4aY0fV31zSygcFFGqtQ=; b=xsA5/1qmmgpfCD 9jjxce1u2yLUnh4hFRO8HNSwnP0BO7hDBJIcpqHb1xngfHEqQDOpddKEM4dEN8OpTXM8uNGCg6NaE w+zF0phYtl/S5xQzzXNZ0rcQ8SKCmF3H4RhYLX+8W/C/EmEkcsMUUbCjdK6J3ltaGDfd6QtVVnIE8 TkU2x+uG1L3J0JRZ12vOel19ezTs236FZtcc+kROx69COu0igaqKZD89zBazDZIS8Ob71BH4XDH8d yUjB8tNnopDuPSh1bA2lNiETR84C+eydocnLKkihRPBHh1Eu4qwiGPTPWat8ZKdljJiHz1AmeC3ag f/80i4tek6HpVrhjMVZA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pPAGm-00A5iL-Hs; Mon, 06 Feb 2023 22:47:28 +0000 Received: from relay10.mail.gandi.net ([2001:4b98:dc4:8::230]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pPAGi-00A5gp-Gy for linux-arm-kernel@lists.infradead.org; Mon, 06 Feb 2023 22:47:27 +0000 Received: (Authenticated sender: miquel.raynal@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id A3BE4240004; Mon, 6 Feb 2023 22:47:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1675723640; 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=pc1SdcIpV5ODdMU7SAwCjZHlR3pK1o6ZKD9N+1lFzU8=; b=lN9G+GkzWhLmFpOx36TWjp7NwZAXjZ+TiEn+zCKhNDVkBMUkzXJXcT3dQ+OlyrvAkmdIDj s0d40p3wyqqhgo7JGhKsFQQXys0YVofqntuF3hGc+WRXKLtEzgheznHVSPPhuavJ2HgB8p VQZD50ix0sOAzTw1Gbamn4nJThiDd6kwpVeCVQYMSrhdFyZz+ObOsMW/FJN0xyq/hWxwDw yYnCKkTjm/HM10ee9QhZZ/OvWwWNLO1NgMjb/NTiYzXeX3es6J4M5b+wjtSIisV7Etgz4g AlRrczWpc4Rn/DPVG5fSTQpAK3T2E1bh8iDgIit+R6kp0YfFdD5sxsSgQAsLEA== Date: Mon, 6 Feb 2023 23:47:13 +0100 From: Miquel Raynal To: Srinivas Kandagatla Cc: Michael Walle , Jonathan Corbet , Rob Herring , Frank Rowand , Sascha Hauer , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, Dan Carpenter , Greg Kroah-Hartman Subject: Re: [PATCH v5 00/21] nvmem: core: introduce NVMEM layouts Message-ID: <20230206234713.7cf2f722@xps-13> In-Reply-To: <81a5c400-e671-fab3-732a-d615fa4242b3@linaro.org> References: <20221206200740.3567551-1-michael@walle.cc> <20230103163902.218cb5c7@xps-13> <81a5c400-e671-fab3-732a-d615fa4242b3@linaro.org> 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_144725_075476_95AB0075 X-CRM114-Status: GOOD ( 46.49 ) 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 SGkgU3Jpbml2YXMsCgorIEdyZWcKCnNyaW5pdmFzLmthbmRhZ2F0bGFAbGluYXJvLm9yZyB3cm90 ZSBvbiBNb24sIDYgRmViIDIwMjMgMjA6MzE6NDYgKzAwMDA6Cgo+IEhpIE1pY2hhZWwvTWlxdWVs LAo+IAo+IEkgaGFkIHRvIHJldmVydCBMYXlvdXQgcGF0Y2hlcyBkdWUgdG8gY29tbWVudHMgZnJv bSBHcmVnIGFib3V0IE1ha2luZyB0aGUgbGF5b3V0cyBhcyBidWlsdC1pbiByYXRoZXIgdGhhbiBt b2R1bGVzLCBoZSBpcyBub3QgcmVhZHkgdG8gbWVyZ2UgdGhlbSBhcyBpdCBpcy4KCk9rIHRoaXMg aXMgdGhlIHNlY29uZCB0aW1lIEkgc2VlIHNvbWV0aGluZyBzaW1pbGFyIGhhcHBlbmluZzoKLSBt YWludGFpbmVyIG9yIG1haW50YWluZXJzIGdyb3VwIGRvaW5nIHRoZSByZXZpZXcvYXBwbHkgam9i IGFuZAogIHNlbmRpbmcgdG8gInVwcGVyIiBtYWludGFpbmVyCi0gdXBwZXIgbWFpbnRhaW5lciBy ZWZ1c2luZyBmb3IgYSAicXVlc3Rpb25hYmxlIiByZWFzb24gYXQgdGhpcyBzdGFnZS4KCkkgYW0g bm90IHNheWluZyB0aGUgcmV2aWV3IGlzIGluY29ycmVjdCBvciBhbnl0aGluZy4gSSdtIGp1c3Qg d29uZGVyaW5nCndoZXRoZXIsIGZvciB0aGUgc2Vjb25kIHRpbWUsIEkgYW0gZmFjaW5nIGEgZmFp ciBzaXR1YXRpb24sIGVpdGhlcgpteXNlbGYgYXMgYSBjb250cmlidXRvciBvciB0aGUgaW50ZXJt ZWRpYXRlIG1haW50YWluZXIgd2hvJ3MgYmVpbmcga2luZApvZiBieXBhc3NlZC4KCldoYXQgSSBt ZWFuIGlzOiB0aGUgcmV2aWV3IHByb2Nlc3MgaGFzIGhhcHBlbmVkLiBOb3RoaW5nIHdhcyBoaWRk ZW4sCnRoaXMgc2VyaWVzIGhhcyBzdGFydGVkIGxlYXZpbmcgb24gdGhlIG1haWxpbmcgbGlzdHMg bW9yZSB0aGFuIHR3bwp5ZWFycyBhZ28uIFRoZSBjb250cmlidXRpb24gcHJvY2VzcyB3aGljaCBo YXMgYmVlbiBpbiBwbGFjZSBmb3IgbWFueQp5ZWFycyBhc2tzIHRoZSBjb250cmlidXRvcnMgdG8g c2VuZCBuZXcgdmVyc2lvbnMgd2hlbiB0aGUgcmV2aWV3CnByb2Nlc3MgbGVhZHMgdG8gY29tbWVu dHMsIHdoaWNoIHdlIGRpZC4gT25jZSB0aGUgc2VyaWVzIGhhcyBiZWVuCiJhY2NlcHRlZCIgaXQg aXMgZXhwZWN0ZWQgdGhhdCB0aGlzIHNlcmllcyB3aWxsIGJlIHB1bGxlZCBkdXJpbmcgdGhlCm5l eHQgbWVyZ2Ugd2luZG93LiBJZiB0aGVyZSBpcyBzb21ldGhpbmcgZWxzZSB0byBmaXgsIHRoZXJl IGFyZSA2IHRvIDgKbG9uZyB3ZWVrcyB3aGVyZSBjb250cmlidXRvcnMnIGZpeGVzIGFyZSB3ZWxj b21lLiBXaHkgbm90IGxldHRpbmcgdXMgdGhlCm9wcG9ydHVuaXR5IHRvIHVzZSB0aGVtPyBXaHks IGZvciB0aGUgc2Vjb25kIHRpbWUsIEkgYW0gZmFjaW5nIGFuCmV4dHJlbWVseSB1cmdlbnQgc2l0 dWF0aW9uIHdoZXJlIEkgaGF2ZSB0byBjYW5jZWwgYWxsIG15IGNvbW1pdG1lbnRzCmp1c3QgYmVj YXVzZSBhIHJhbmRvbSBjb21tZW50IGhhcyBiZWVuIG1hZGUgb24gYSBzZXJpZXMgd2hpY2ggaGFz IGJlZW4Kc3RhbmRpbmcgc3RpbGwgZm9yIG1vbnRocz8KCldoYXQgSSB3b3VsZCBleHBlY3QgaW5z dGVhZCwgaXMgYSBkaXNjdXNzaW9uIG9uIHRoZSBjb3ZlciBsZXR0ZXIgb2YgdGhlCnNlcmllcyB3 aGVyZSBNaWNoYWVsIGV4cGxhaW5lZCB3aHkgaGUgZGlkIG5vIGNob29zZSB0byB1c2UgbW9kdWxl cyBpbgp0aGUgZmlyc3QgcGxhY2UuIElmIGl0IGFwcGVhcnMgdGhhdCBmb3Igc29tZSByZWFzb24g aXQgaXMgYmVzdCB0bwplbmFibGUgTlZNRU0gbGF5b3V0cyBhcyBtb2R1bGVzLCB3ZSB3aWxsIHNl bmQgYSB0aW1lbHkgc2VyaWVzIG9uIHRvcApvZiB0aGUgY3VycmVudCBvbmUgdG8gZW5hYmxlIHRo YXQgcGFydGljdWxhciBjYXNlLgoKPiA+PiBOVk1FTSBsYXlvdXRzIGFzIG1vZHVsZXM/Cj4gPj4g V2hpbGUgcG9zc2libGUgaW4gcHJpbmNpcGxlLCBpdCBkb2Vzbid0IG1ha2UgYW55IHNlbnNlIGJl Y2F1c2UgdGhlIE5WTUVNCj4gPj4gY29yZSBjYW4ndCBiZSBjb21waWxlZCBhcyBhIG1vZHVsZS4g VGhlIGxheW91dHMgbmVlZHMgdG8gYmUgYXZhaWxhYmxlIGF0Cj4gPj4gcHJvYmUgdGltZS4gKFRo YXQgaXMgYWxzbyB0aGUgcmVhc29uIHdoeSB0aGV5IGdldCByZWdpc3RlcmVkIHdpdGgKPiA+PiBz dWJzeXNfaW5pdGNhbGwoKS4pIFNvIGlmIHRoZSBOVk1FTSBjb3JlIHdvdWxkIGJlIGEgbW9kdWxl LCB0aGUgbGF5b3V0cwo+ID4+IGNvdWxkIGJlIG1vZHVsZXMsIHRvby4KCkkga25vdyBNaWNoYWVs IGlzIGJ1c3kgYWZ0ZXIgdGhlIEZPU0RFTSBhbmQgc28gYW0gSSwgc28sIEdyZWcsIHdvdWxkCnlv dSBhY2NlcHQgdG8gdGFrZSB0aGUgUFIgYXMgaXQgaXMsIHBhcnRpY2lwYXRlIHRvIHRoZSBkaXNj dXNzaW9uIGFuZAp3YWl0IGZvciBhbiB1cGRhdGU/CgpUaGFua3MsCk1pcXXDqGwKCj4gSGlzIG9y aWdpbmFsIGNvbW1lbnQsCj4gCj4gIldoeSBhcmUgd2UgZ29pbmcgYmFjayB0byAiY3VzdG9tLWJ1 aWx0IiBrZXJuZWwgY29uZmlndXJhdGlvbnM/ICBXaHkgY2FuCj4gdGhpcyBub3QgYmUgYSBsb2Fk YWJsZSBtb2R1bGU/ICBEaXN0cm9zIGFyZSBub3cgZm9yY2VkIHRvIGVuYWJsZSB0aGVzZQo+IGxh eW91dCBhbmQgYWxsIGtlcm5lbHMgd2lsbCBoYXZlIHRoaXMgZGVhZCBjb2RlIGluIHRoZSB0cmVl IHdpdGhvdXQgYW55Cj4gY2hvaWNlIGluIHRoZSBtYXR0ZXI/Cj4gCj4gVGhhdCdzIG5vdCBvaywg dGhlc2UgbmVlZCB0byBiZSBhdXRvLWxvYWRlZCBiYXNlZCBvbiB0aGUgaGFyZHdhcmUKPiByZXBy ZXNlbnRhdGlvbiBsaWtlIGFueSBvdGhlciBrZXJuZWwgbW9kdWxlLiAgWW91IGNhbid0IGZvcmNl IHRoZW0gdG8gYmUKPiBhbHdheXMgcHJlc2VudCwgc29ycnkuCj4gIgo+IAo+IEkgaGF2ZSBhcHBs aWVkIG1vc3Qgb2YgdGhlIHBhdGNoZXMgZXhjZXB0Cj4gCj4gbnZtZW06IGNvcmU6IGludHJvZHVj ZSBOVk1FTSBsYXlvdXRzCj4gbnZtZW06IGNvcmU6IGFkZCBwZXItY2VsbCBwb3N0IHByb2Nlc3Np bmcKPiBudm1lbTogY29yZTogYWxsb3cgdG8gbW9kaWZ5IGEgY2VsbCBiZWZvcmUgYWRkaW5nIGl0 Cj4gbnZtZW06IGlteC1vY290cDogcmVwbGFjZSBnbG9iYWwgcG9zdCBwcm9jZXNzaW5nIHdpdGgg bGF5b3V0cwo+IG52bWVtOiBjZWxsOiBkcm9wIGdsb2JhbCBjZWxsX3Bvc3RfcHJvY2Vzcwo+IG52 bWVtOiBjb3JlOiBwcm92aWRlIG93biBwcml2IHBvaW50ZXIgaW4gcG9zdCBwcm9jZXNzIGNhbGxi YWNrCj4gbnZtZW06IGxheW91dHM6IGFkZCBzbDI4dnBkIGxheW91dAo+IE1BSU5UQUlORVJTOiBh ZGQgbXlzZWxmIGFzIHNsMjh2cGQgbnZtZW0gbGF5b3V0IGRyaXZlcgo+IG52bWVtOiBsYXlvdXRz OiBBZGQgT05JRSB0bHYgbGF5b3V0IGRyaXZlcgo+IE1BSU5UQUlORVJTOiBBZGQgbXlzZWxmIGFz IE9OSUUgdGx2IE5WTUVNIGxheW91dCBtYWludGFpbmVyCj4gbnZtZW06IGNvcmU6IHJldHVybiAt RU5PRU5UIGlmIG52bWVtIGNlbGwgaXMgbm90IGZvdW5kCj4gbnZtZW06IGxheW91dHM6IEZpeCBz cGVsbGluZyBtaXN0YWtlICJwbGF0Zm9ybiIgLT4gInBsYXRmb3JtIgo+IGR0LWJpbmRpbmdzOiBu dm1lbTogRml4IHNwZWxsaW5nIG1pc3Rha2UgInBsYXRmb3JuIiAtPiAicGxhdGZvcm0iCj4gbnZt ZW06IGNvcmU6IGZpeCBudm1lbV9sYXlvdXRfZ2V0X21hdGNoX2RhdGEoKQo+IAo+IFBsZWFzZSBy ZWJhc2UgeW91ciBwYXRjaGVzIG9uIHRvcCBvZiBudm1lbS1uZXh0IG9uY2UgbGF5b3V0cyBhcmUg Y29udmVydGVkIHRvIGxvYWRhYmxlIG1vZHVsZXMuCj4gCj4gdGhhbmtzLAo+IHNyaW5pCj4gCj4g Cj4gCj4gT24gMDMvMDEvMjAyMyAxNTozOSwgTWlxdWVsIFJheW5hbCB3cm90ZToKPiA+IEhpIFNy aW5pdmFzLAo+ID4gCj4gPiBtaWNoYWVsQHdhbGxlLmNjIHdyb3RlIG9uIFR1ZSwgIDYgRGVjIDIw MjIgMjE6MDc6MTkgKzAxMDA6Cj4gPiAgIAo+ID4+IFRoaXMgaXMgbm93IHRoZSB0aGlyZCBhdHRl bXB0IHRvIGZldGNoIHRoZSBNQUMgYWRkcmVzc2VzIGZyb20gdGhlIFZQRAo+ID4+IGZvciB0aGUg S29udHJvbiBzbDI4IGJvYXJkcy4gUHJldmlvdXMgZGlzY3Vzc2lvbnMgY2FuIGJlIGZvdW5kIGhl cmU6Cj4gPj4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGttbC8yMDIxMTIyODE0MjU0OS4xMjc1 NDEyLTEtbWljaGFlbEB3YWxsZS5jYy8KPiA+Pgo+ID4+Cj4gPj4gTlZNRU0gY2VsbHMgYXJlIHR5 cGljYWxseSBhZGRlZCBieSBib2FyZCBjb2RlIG9yIGJ5IHRoZSBkZXZpY2V0cmVlLiBCdXQKPiA+ PiBhcyB0aGUgY2VsbHMgZ2V0IG1vcmUgY29tcGxleCwgdGhlcmUgaXMgKHZhbGlkKSBwdXNoIGJh Y2sgZnJvbSB0aGUKPiA+PiBkZXZpY2V0cmVlIG1haW50YWluZXJzIHRvIG5vdCBwdXQgdGhhdCBo YW5kbGluZyBpbiB0aGUgZGV2aWNldHJlZS4KPiA+Pgo+ID4+IFRoZXJlZm9yZSwgaW50cm9kdWNl IE5WTUVNIGxheW91dHMuIFRoZXkgb3BlcmF0ZSBvbiB0aGUgTlZNRU0gZGV2aWNlIGFuZAo+ID4+ IGNhbiBhZGQgY2VsbHMgZHVyaW5nIHJ1bnRpbWUuIFRoYXQgd2F5IGl0IGlzIHBvc3NpYmxlIHRv IGFkZCBtb3JlIGNvbXBsZXgKPiA+PiBjZWxscyB0aGFuIGl0IGlzIHBvc3NpYmxlIHJpZ2h0IG5v dyB3aXRoIHRoZSBvZmZzZXQvbGVuZ3RoL2JpdHMKPiA+PiBkZXNjcmlwdGlvbiBpbiB0aGUgZGV2 aWNlIHRyZWUuIEZvciBleGFtcGxlLCB5b3UgY2FuIGhhdmUgcG9zdCBwcm9jZXNzaW5nCj4gPj4g Zm9yIGluZGl2aWR1YWwgY2VsbHMgKHRoaW5rIG9mIGVuZGlhbiBzd2FwcGluZywgb3IgZXRoZXJu ZXQgb2Zmc2V0Cj4gPj4gaGFuZGxpbmcpLgo+ID4+Cj4gPj4gVGhlIGlteC1vY290cCBkcml2ZXIg aXMgdGhlIG9ubHkgdXNlciBvZiB0aGUgZ2xvYmFsIHBvc3QgcHJvY2Vzc2luZyBob29rLAo+ID4+ IGNvbnZlcnQgaXQgdG8gbnZtZW0gbGF5b3V0cyBhbmQgZHJvcCB0aGUgZ2xvYmFsIHBvc3QgcG9j ZXNzaW5nIGhvb2suCj4gPj4KPiA+PiBGb3Igbm93LCB0aGUgbGF5b3V0cyBhcmUgc2VsZWN0ZWQg YnkgdGhlIGRldmljZSB0cmVlLiBCdXQgdGhlIGlkZWEgaXMKPiA+PiB0aGF0IGFsc28gYm9hcmQg ZmlsZXMgb3Igb3RoZXIgZHJpdmVycyBjb3VsZCBzZXQgYSBsYXlvdXQuIEFsdGhvdWdoIG5vCj4g Pj4gY29kZSBmb3IgdGhhdCBleGlzdHMgeWV0Lgo+ID4+Cj4gPj4gVGhhbmtzIHRvIE1pcXVlbCwg dGhlIGRldmljZSB0cmVlIGJpbmRpbmdzIGFyZSBhbHJlYWR5IGFwcHJvdmVkIGFuZCBtZXJnZWQu Cj4gPj4KPiA+PiBOVk1FTSBsYXlvdXRzIGFzIG1vZHVsZXM/Cj4gPj4gV2hpbGUgcG9zc2libGUg aW4gcHJpbmNpcGxlLCBpdCBkb2Vzbid0IG1ha2UgYW55IHNlbnNlIGJlY2F1c2UgdGhlIE5WTUVN Cj4gPj4gY29yZSBjYW4ndCBiZSBjb21waWxlZCBhcyBhIG1vZHVsZS4gVGhlIGxheW91dHMgbmVl ZHMgdG8gYmUgYXZhaWxhYmxlIGF0Cj4gPj4gcHJvYmUgdGltZS4gKFRoYXQgaXMgYWxzbyB0aGUg cmVhc29uIHdoeSB0aGV5IGdldCByZWdpc3RlcmVkIHdpdGgKPiA+PiBzdWJzeXNfaW5pdGNhbGwo KS4pIFNvIGlmIHRoZSBOVk1FTSBjb3JlIHdvdWxkIGJlIGEgbW9kdWxlLCB0aGUgbGF5b3V0cwo+ ID4+IGNvdWxkIGJlIG1vZHVsZXMsIHRvby4gIAo+ID4gCj4gPiBJIGJlbGlldmUgdGhpcyBzZXJp ZXMgc3RpbGwgYXBwbGllcyBldmVuIHRob3VnaCAtcmMxIChhbmQgLXJjMikgYXJlIG91dAo+ID4g bm93LCBtYXkgd2Uga25vdyBpZiB5b3UgY29uc2lkZXIgbWVyZ2luZyBpdCBhbnl0aW1lIHNvb24g b3IgaWYgdGhlcmUKPiA+IGFyZSBzdGlsbCBkaXNjcmVwYW5jaWVzIGluIHRoZSBpbXBsZW1lbnRh dGlvbiB5b3Ugd291bGQgbGlrZSB0bwo+ID4gZGlzY3Vzcz8gT3RoZXJ3aXNlIEkgd291bGQgcmVh bGx5IGxpa2UgdG8gc2VlIHRoaXMgbGF5aW5nIGluIC1uZXh0IGEKPiA+IGZldyB3ZWVrcyBiZWZv cmUgYmVpbmcgc2VudCBvdXQgdG8gTGludXMsIGp1c3QgaW4gY2FzZS4KPiA+IAo+ID4gVGhhbmtz LAo+ID4gTWlxdcOobCAgCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1hcm0ta2VybmVsCg==