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 X-Spam-Level: X-Spam-Status: No, score=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_2 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id EBFB4C432C0 for ; Mon, 25 Nov 2019 15:05:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id C1634207FD for ; Mon, 25 Nov 2019 15:05:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728404AbfKYPFJ convert rfc822-to-8bit (ORCPT ); Mon, 25 Nov 2019 10:05:09 -0500 Received: from relay9-d.mail.gandi.net ([217.70.183.199]:52839 "EHLO relay9-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727758AbfKYPFJ (ORCPT ); Mon, 25 Nov 2019 10:05:09 -0500 X-Originating-IP: 90.76.211.102 Received: from xps13 (lfbn-1-2154-102.w90-76.abo.wanadoo.fr [90.76.211.102]) (Authenticated sender: miquel.raynal@bootlin.com) by relay9-d.mail.gandi.net (Postfix) with ESMTPSA id 6A673FF81C; Mon, 25 Nov 2019 15:05:04 +0000 (UTC) Date: Mon, 25 Nov 2019 16:05:03 +0100 From: Miquel Raynal To: Christophe Kerello Cc: , , , , , Boris Brezillon Subject: Re: mtd: Use mtd device name instead of mtd->name when registering nvmem device Message-ID: <20191125160503.1243f817@xps13> In-Reply-To: <1574442222-19759-1-git-send-email-christophe.kerello@st.com> References: <1574442222-19759-1-git-send-email-christophe.kerello@st.com> Organization: Bootlin X-Mailer: Claws Mail 3.17.4 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Christophe, Christophe Kerello wrote on Fri, 22 Nov 2019 18:03:42 +0100: > MTD currently allows to have same partition name on different devices. > Since nvmen device registration has been added, it is not more possible > to have same partition name on different devices. We get following > logs: > sysfs: cannot create duplicate filename XXX > Failed to register NVMEM device > > To avoid such issue, the proposed patch uses the mtd device name instead of > the partition name. > > Fixes: c4dfa25ab307 ("mtd: add support for reading MTD devices via the nvmem API") > Signed-off-by: Christophe Kerello > --- > Hi, > > With latest mtd-next branch, we get following logs on our STM32MP1 eval board. > > [ 1.979089] nand: device found, Manufacturer ID: 0x2c, Chip ID: 0xd3 > [ 1.984055] nand: Micron MT29F8G08ABACAH4 > [ 1.988000] nand: 1024 MiB, SLC, erase size: 256 KiB, page size: 4096, OOB size: 224 > [ 1.996378] Bad block table found at page 262080, version 0x01 > [ 2.001945] Bad block table found at page 262016, version 0x01 > [ 2.008002] 4 fixed-partitions partitions found on MTD device 58002000.nand-controller > [ 2.015398] Creating 4 MTD partitions on "58002000.nand-controller": > [ 2.021751] 0x000000000000-0x000000200000 : "fsbl" > [ 2.028506] 0x000000200000-0x000000400000 : "ssbl1" > [ 2.033741] 0x000000400000-0x000000600000 : "ssbl2" > [ 2.038924] 0x000000600000-0x000040000000 : "UBI" > [ 2.051336] spi-nor spi0.0: mx66l51235l (65536 Kbytes) > [ 2.055123] 4 fixed-partitions partitions found on MTD device spi0.0 > [ 2.061378] Creating 4 MTD partitions on "spi0.0": > [ 2.066243] 0x000000000000-0x000000040000 : "fsbl" > [ 2.071429] sysfs: cannot create duplicate filename '/bus/nvmem/devices/fsbl' > [ 2.078157] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.4.0-rc4-00031-g589e1b6 #176 > [ 2.085781] Hardware name: STM32 (Device Tree Support) > [ 2.090957] [] (unwind_backtrace) from [] (show_stack+0x10/0x14) > [ 2.098693] [] (show_stack) from [] (dump_stack+0xb4/0xc8) > [ 2.105929] [] (dump_stack) from [] (sysfs_warn_dup+0x58/0x64) > [ 2.113509] [] (sysfs_warn_dup) from [] (sysfs_do_create_link_sd+0xe4/0xe8) > [ 2.122224] [] (sysfs_do_create_link_sd) from [] (bus_add_device+0x80/0xfc) > [ 2.130938] [] (bus_add_device) from [] (device_add+0x35c/0x608) > [ 2.138697] [] (device_add) from [] (nvmem_register.part.2+0x180/0x624) > [ 2.147065] [] (nvmem_register.part.2) from [] (add_mtd_device+0x2d8/0x4b8) > [ 2.155776] [] (add_mtd_device) from [] (add_mtd_partitions+0x84/0x16c) > [ 2.164140] [] (add_mtd_partitions) from [] (parse_mtd_partitions+0x220/0x3c4) > [ 2.173118] [] (parse_mtd_partitions) from [] (mtd_device_parse_register+0x40/0x164) > [ 2.182622] [] (mtd_device_parse_register) from [] (spi_nor_probe+0xd0/0x190) > [ 2.191513] [] (spi_nor_probe) from [] (spi_drv_probe+0x80/0xa4) > [ 2.199268] [] (spi_drv_probe) from [] (really_probe+0x234/0x34c) > [ 2.207111] [] (really_probe) from [] (driver_probe_device+0x60/0x174) > [ 2.215391] [] (driver_probe_device) from [] (bus_for_each_drv+0x58/0xb8) > [ 2.223932] [] (bus_for_each_drv) from [] (__device_attach+0xd0/0x13c) > [ 2.232212] [] (__device_attach) from [] (bus_probe_device+0x84/0x8c) > [ 2.240404] [] (bus_probe_device) from [] (device_add+0x3bc/0x608) > [ 2.248334] [] (device_add) from [] (spi_add_device+0x9c/0x14c) > [ 2.256003] [] (spi_add_device) from [] (of_register_spi_device+0x234/0x370) > [ 2.264807] [] (of_register_spi_device) from [] (spi_register_controller+0x578/0x734) > [ 2.274394] [] (spi_register_controller) from [] (devm_spi_register_controller+0x34/0x6c) > [ 2.284331] [] (devm_spi_register_controller) from [] (stm32_qspi_probe+0x338/0x3bc) > [ 2.293831] [] (stm32_qspi_probe) from [] (platform_drv_probe+0x48/0x98) > [ 2.302285] [] (platform_drv_probe) from [] (really_probe+0x234/0x34c) > [ 2.310566] [] (really_probe) from [] (driver_probe_device+0x60/0x174) > [ 2.318847] [] (driver_probe_device) from [] (device_driver_attach+0x58/0x60) > [ 2.327735] [] (device_driver_attach) from [] (__driver_attach+0x80/0xbc) > [ 2.336276] [] (__driver_attach) from [] (bus_for_each_dev+0x74/0xb4) > [ 2.344469] [] (bus_for_each_dev) from [] (bus_add_driver+0x164/0x1e8) > [ 2.352749] [] (bus_add_driver) from [] (driver_register+0x74/0x108) > [ 2.360854] [] (driver_register) from [] (do_one_initcall+0x54/0x22c) > [ 2.369047] [] (do_one_initcall) from [] (kernel_init_freeable+0x150/0x1ec) > [ 2.377762] [] (kernel_init_freeable) from [] (kernel_init+0x8/0x114) > [ 2.385951] [] (kernel_init) from [] (ret_from_fork+0x14/0x2c) > [ 2.393525] Exception stack(0xe68c1fb0 to 0xe68c1ff8) > [ 2.398583] 1fa0: 00000000 00000000 00000000 00000000 > [ 2.406777] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 > [ 2.414967] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 > [ 2.421879] mtd mtd4: Failed to register NVMEM device > > Before nvmen device registration was added, it was possible to have same partition name on different devices. > Instead of using the partition name, this patch proposes to use the MTD device name (mtdX). > > Regards, > Christophe Kerello. > > drivers/mtd/mtdcore.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c > index 5fac435..559b693 100644 > --- a/drivers/mtd/mtdcore.c > +++ b/drivers/mtd/mtdcore.c > @@ -551,7 +551,7 @@ static int mtd_nvmem_add(struct mtd_info *mtd) > > config.id = -1; > config.dev = &mtd->dev; > - config.name = mtd->name; > + config.name = dev_name(&mtd->dev); What about creating an mtd->fullname field which would be, for partitions: mtdX: and would be unique? > config.owner = THIS_MODULE; > config.reg_read = mtd_nvmem_reg_read; > config.size = mtd->size; Thanks, Miquèl 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 X-Spam-Level: X-Spam-Status: No, score=-8.3 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_2 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B87FEC43215 for ; Mon, 25 Nov 2019 15:05:40 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 8E60020836 for ; Mon, 25 Nov 2019 15:05:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Q1jcObSI" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8E60020836 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=bootlin.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Subject: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=Ih+Z+PXtUjo6UMO5ZQKvRH4pQp4b73105aH3bF/EotA=; b=Q1jcObSIt8M2az V8cgt2Qu4PiZ8GUBRDQygz2itb8xUFlKULMsgBbIjQrZywF6lZY0O4K/b1BcZMXu07mHGVGFbrm+S WtsQPEnWeC0uWD9PK0U646neJUSLEqwqKr0WOllNhF1U/MWUBjOoJSOwPQrJyfwzQiFJSAXjvmrxL Xr4WlmDkdG8lMsW35k8GV4gKfzdqKZ+JiplR61lYMSqLSDOB/DELDkSArAUBipWjnmwRIZ2jotNsa bJZ24zvg8AFd37odsVUdWHcFIClzCPoLU3B7oV9T15hbn7pd6F8f43wTYmb65DO4xR2N8gSRrSPVz 3GycouNsbe/DS4O96Oew==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1iZFvb-0006UZ-EG; Mon, 25 Nov 2019 15:05:27 +0000 Received: from relay9-d.mail.gandi.net ([217.70.183.199]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1iZFvX-0006TF-Mr for linux-mtd@lists.infradead.org; Mon, 25 Nov 2019 15:05:26 +0000 X-Originating-IP: 90.76.211.102 Received: from xps13 (lfbn-1-2154-102.w90-76.abo.wanadoo.fr [90.76.211.102]) (Authenticated sender: miquel.raynal@bootlin.com) by relay9-d.mail.gandi.net (Postfix) with ESMTPSA id 6A673FF81C; Mon, 25 Nov 2019 15:05:04 +0000 (UTC) Date: Mon, 25 Nov 2019 16:05:03 +0100 From: Miquel Raynal To: Christophe Kerello Subject: Re: mtd: Use mtd device name instead of mtd->name when registering nvmem device Message-ID: <20191125160503.1243f817@xps13> In-Reply-To: <1574442222-19759-1-git-send-email-christophe.kerello@st.com> References: <1574442222-19759-1-git-send-email-christophe.kerello@st.com> Organization: Bootlin X-Mailer: Claws Mail 3.17.4 (GTK+ 2.24.32; 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-20191125_070524_020475_21CA89E0 X-CRM114-Status: GOOD ( 17.01 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: vigneshr@ti.com, Boris Brezillon , richard@nod.at, linux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org SGkgQ2hyaXN0b3BoZSwKCkNocmlzdG9waGUgS2VyZWxsbyA8Y2hyaXN0b3BoZS5rZXJlbGxvQHN0 LmNvbT4gd3JvdGUgb24gRnJpLCAyMiBOb3YKMjAxOSAxODowMzo0MiArMDEwMDoKCj4gTVREIGN1 cnJlbnRseSBhbGxvd3MgdG8gaGF2ZSBzYW1lIHBhcnRpdGlvbiBuYW1lIG9uIGRpZmZlcmVudCBk ZXZpY2VzLgo+IFNpbmNlIG52bWVuIGRldmljZSByZWdpc3RyYXRpb24gaGFzIGJlZW4gYWRkZWQs IGl0IGlzIG5vdCBtb3JlIHBvc3NpYmxlCj4gdG8gaGF2ZSBzYW1lIHBhcnRpdGlvbiBuYW1lIG9u IGRpZmZlcmVudCBkZXZpY2VzLiBXZSBnZXQgZm9sbG93aW5nCj4gbG9nczoKPiBzeXNmczogY2Fu bm90IGNyZWF0ZSBkdXBsaWNhdGUgZmlsZW5hbWUgWFhYCj4gRmFpbGVkIHRvIHJlZ2lzdGVyIE5W TUVNIGRldmljZQo+IAo+IFRvIGF2b2lkIHN1Y2ggaXNzdWUsIHRoZSBwcm9wb3NlZCBwYXRjaCB1 c2VzIHRoZSBtdGQgZGV2aWNlIG5hbWUgaW5zdGVhZCBvZgo+IHRoZSBwYXJ0aXRpb24gbmFtZS4K PiAKPiBGaXhlczogYzRkZmEyNWFiMzA3ICgibXRkOiBhZGQgc3VwcG9ydCBmb3IgcmVhZGluZyBN VEQgZGV2aWNlcyB2aWEgdGhlIG52bWVtIEFQSSIpCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3Bo ZSBLZXJlbGxvIDxjaHJpc3RvcGhlLmtlcmVsbG9Ac3QuY29tPgo+IC0tLQo+IEhpLAo+IAo+IFdp dGggbGF0ZXN0IG10ZC1uZXh0IGJyYW5jaCwgd2UgZ2V0IGZvbGxvd2luZyBsb2dzIG9uIG91ciBT VE0zMk1QMSBldmFsIGJvYXJkLgo+IAo+IFsgICAgMS45NzkwODldIG5hbmQ6IGRldmljZSBmb3Vu ZCwgTWFudWZhY3R1cmVyIElEOiAweDJjLCBDaGlwIElEOiAweGQzCj4gWyAgICAxLjk4NDA1NV0g bmFuZDogTWljcm9uIE1UMjlGOEcwOEFCQUNBSDQKPiBbICAgIDEuOTg4MDAwXSBuYW5kOiAxMDI0 IE1pQiwgU0xDLCBlcmFzZSBzaXplOiAyNTYgS2lCLCBwYWdlIHNpemU6IDQwOTYsIE9PQiBzaXpl OiAyMjQKPiBbICAgIDEuOTk2Mzc4XSBCYWQgYmxvY2sgdGFibGUgZm91bmQgYXQgcGFnZSAyNjIw ODAsIHZlcnNpb24gMHgwMQo+IFsgICAgMi4wMDE5NDVdIEJhZCBibG9jayB0YWJsZSBmb3VuZCBh dCBwYWdlIDI2MjAxNiwgdmVyc2lvbiAweDAxCj4gWyAgICAyLjAwODAwMl0gNCBmaXhlZC1wYXJ0 aXRpb25zIHBhcnRpdGlvbnMgZm91bmQgb24gTVREIGRldmljZSA1ODAwMjAwMC5uYW5kLWNvbnRy b2xsZXIKPiBbICAgIDIuMDE1Mzk4XSBDcmVhdGluZyA0IE1URCBwYXJ0aXRpb25zIG9uICI1ODAw MjAwMC5uYW5kLWNvbnRyb2xsZXIiOgo+IFsgICAgMi4wMjE3NTFdIDB4MDAwMDAwMDAwMDAwLTB4 MDAwMDAwMjAwMDAwIDogImZzYmwiCj4gWyAgICAyLjAyODUwNl0gMHgwMDAwMDAyMDAwMDAtMHgw MDAwMDA0MDAwMDAgOiAic3NibDEiCj4gWyAgICAyLjAzMzc0MV0gMHgwMDAwMDA0MDAwMDAtMHgw MDAwMDA2MDAwMDAgOiAic3NibDIiCj4gWyAgICAyLjAzODkyNF0gMHgwMDAwMDA2MDAwMDAtMHgw MDAwNDAwMDAwMDAgOiAiVUJJIgo+IFsgICAgMi4wNTEzMzZdIHNwaS1ub3Igc3BpMC4wOiBteDY2 bDUxMjM1bCAoNjU1MzYgS2J5dGVzKQo+IFsgICAgMi4wNTUxMjNdIDQgZml4ZWQtcGFydGl0aW9u cyBwYXJ0aXRpb25zIGZvdW5kIG9uIE1URCBkZXZpY2Ugc3BpMC4wCj4gWyAgICAyLjA2MTM3OF0g Q3JlYXRpbmcgNCBNVEQgcGFydGl0aW9ucyBvbiAic3BpMC4wIjoKPiBbICAgIDIuMDY2MjQzXSAw eDAwMDAwMDAwMDAwMC0weDAwMDAwMDA0MDAwMCA6ICJmc2JsIgo+IFsgICAgMi4wNzE0MjldIHN5 c2ZzOiBjYW5ub3QgY3JlYXRlIGR1cGxpY2F0ZSBmaWxlbmFtZSAnL2J1cy9udm1lbS9kZXZpY2Vz L2ZzYmwnCj4gWyAgICAyLjA3ODE1N10gQ1BVOiAwIFBJRDogMSBDb21tOiBzd2FwcGVyLzAgTm90 IHRhaW50ZWQgNS40LjAtcmM0LTAwMDMxLWc1ODllMWI2ICMxNzYKPiBbICAgIDIuMDg1NzgxXSBI YXJkd2FyZSBuYW1lOiBTVE0zMiAoRGV2aWNlIFRyZWUgU3VwcG9ydCkKPiBbICAgIDIuMDkwOTU3 XSBbPGMwMzEyODMwPl0gKHVud2luZF9iYWNrdHJhY2UpIGZyb20gWzxjMDMwY2JlND5dIChzaG93 X3N0YWNrKzB4MTAvMHgxNCkKPiBbICAgIDIuMDk4NjkzXSBbPGMwMzBjYmU0Pl0gKHNob3dfc3Rh Y2spIGZyb20gWzxjMGU4ZDM0MD5dIChkdW1wX3N0YWNrKzB4YjQvMHhjOCkKPiBbICAgIDIuMTA1 OTI5XSBbPGMwZThkMzQwPl0gKGR1bXBfc3RhY2spIGZyb20gWzxjMDUwZmNkYz5dIChzeXNmc193 YXJuX2R1cCsweDU4LzB4NjQpCj4gWyAgICAyLjExMzUwOV0gWzxjMDUwZmNkYz5dIChzeXNmc193 YXJuX2R1cCkgZnJvbSBbPGMwNTEwMDEwPl0gKHN5c2ZzX2RvX2NyZWF0ZV9saW5rX3NkKzB4ZTQv MHhlOCkKPiBbICAgIDIuMTIyMjI0XSBbPGMwNTEwMDEwPl0gKHN5c2ZzX2RvX2NyZWF0ZV9saW5r X3NkKSBmcm9tIFs8YzA5NTZmNjA+XSAoYnVzX2FkZF9kZXZpY2UrMHg4MC8weGZjKQo+IFsgICAg Mi4xMzA5MzhdIFs8YzA5NTZmNjA+XSAoYnVzX2FkZF9kZXZpY2UpIGZyb20gWzxjMDk1M2Y1ND5d IChkZXZpY2VfYWRkKzB4MzVjLzB4NjA4KQo+IFsgICAgMi4xMzg2OTddIFs8YzA5NTNmNTQ+XSAo ZGV2aWNlX2FkZCkgZnJvbSBbPGMwZDEyZTBjPl0gKG52bWVtX3JlZ2lzdGVyLnBhcnQuMisweDE4 MC8weDYyNCkKPiBbICAgIDIuMTQ3MDY1XSBbPGMwZDEyZTBjPl0gKG52bWVtX3JlZ2lzdGVyLnBh cnQuMikgZnJvbSBbPGMwOWVhNWM4Pl0gKGFkZF9tdGRfZGV2aWNlKzB4MmQ4LzB4NGI4KQo+IFsg ICAgMi4xNTU3NzZdIFs8YzA5ZWE1Yzg+XSAoYWRkX210ZF9kZXZpY2UpIGZyb20gWzxjMDllZGJk ND5dIChhZGRfbXRkX3BhcnRpdGlvbnMrMHg4NC8weDE2YykKPiBbICAgIDIuMTY0MTQwXSBbPGMw OWVkYmQ0Pl0gKGFkZF9tdGRfcGFydGl0aW9ucykgZnJvbSBbPGMwOWVkOWFjPl0gKHBhcnNlX210 ZF9wYXJ0aXRpb25zKzB4MjIwLzB4M2M0KQo+IFsgICAgMi4xNzMxMThdIFs8YzA5ZWQ5YWM+XSAo cGFyc2VfbXRkX3BhcnRpdGlvbnMpIGZyb20gWzxjMDllYThkND5dIChtdGRfZGV2aWNlX3BhcnNl X3JlZ2lzdGVyKzB4NDAvMHgxNjQpCj4gWyAgICAyLjE4MjYyMl0gWzxjMDllYThkND5dIChtdGRf ZGV2aWNlX3BhcnNlX3JlZ2lzdGVyKSBmcm9tIFs8YzBhMjJkZmM+XSAoc3BpX25vcl9wcm9iZSsw eGQwLzB4MTkwKQo+IFsgICAgMi4xOTE1MTNdIFs8YzBhMjJkZmM+XSAoc3BpX25vcl9wcm9iZSkg ZnJvbSBbPGMwYTM3MGEwPl0gKHNwaV9kcnZfcHJvYmUrMHg4MC8weGE0KQo+IFsgICAgMi4xOTky NjhdIFs8YzBhMzcwYTA+XSAoc3BpX2Rydl9wcm9iZSkgZnJvbSBbPGMwOTU3ZjhjPl0gKHJlYWxs eV9wcm9iZSsweDIzNC8weDM0YykKPiBbICAgIDIuMjA3MTExXSBbPGMwOTU3ZjhjPl0gKHJlYWxs eV9wcm9iZSkgZnJvbSBbPGMwOTU4MjFjPl0gKGRyaXZlcl9wcm9iZV9kZXZpY2UrMHg2MC8weDE3 NCkKPiBbICAgIDIuMjE1MzkxXSBbPGMwOTU4MjFjPl0gKGRyaXZlcl9wcm9iZV9kZXZpY2UpIGZy b20gWzxjMDk1NjM3OD5dIChidXNfZm9yX2VhY2hfZHJ2KzB4NTgvMHhiOCkKPiBbICAgIDIuMjIz OTMyXSBbPGMwOTU2Mzc4Pl0gKGJ1c19mb3JfZWFjaF9kcnYpIGZyb20gWzxjMDk1N2NlND5dIChf X2RldmljZV9hdHRhY2grMHhkMC8weDEzYykKPiBbICAgIDIuMjMyMjEyXSBbPGMwOTU3Y2U0Pl0g KF9fZGV2aWNlX2F0dGFjaCkgZnJvbSBbPGMwOTU3MDYwPl0gKGJ1c19wcm9iZV9kZXZpY2UrMHg4 NC8weDhjKQo+IFsgICAgMi4yNDA0MDRdIFs8YzA5NTcwNjA+XSAoYnVzX3Byb2JlX2RldmljZSkg ZnJvbSBbPGMwOTUzZmI0Pl0gKGRldmljZV9hZGQrMHgzYmMvMHg2MDgpCj4gWyAgICAyLjI0ODMz NF0gWzxjMDk1M2ZiND5dIChkZXZpY2VfYWRkKSBmcm9tIFs8YzBhMzc3YjQ+XSAoc3BpX2FkZF9k ZXZpY2UrMHg5Yy8weDE0YykKPiBbICAgIDIuMjU2MDAzXSBbPGMwYTM3N2I0Pl0gKHNwaV9hZGRf ZGV2aWNlKSBmcm9tIFs8YzBhMzdiOTg+XSAob2ZfcmVnaXN0ZXJfc3BpX2RldmljZSsweDIzNC8w eDM3MCkKPiBbICAgIDIuMjY0ODA3XSBbPGMwYTM3Yjk4Pl0gKG9mX3JlZ2lzdGVyX3NwaV9kZXZp Y2UpIGZyb20gWzxjMGEzODRlYz5dIChzcGlfcmVnaXN0ZXJfY29udHJvbGxlcisweDU3OC8weDcz NCkKPiBbICAgIDIuMjc0Mzk0XSBbPGMwYTM4NGVjPl0gKHNwaV9yZWdpc3Rlcl9jb250cm9sbGVy KSBmcm9tIFs8YzBhMzg2ZGM+XSAoZGV2bV9zcGlfcmVnaXN0ZXJfY29udHJvbGxlcisweDM0LzB4 NmMpCj4gWyAgICAyLjI4NDMzMV0gWzxjMGEzODZkYz5dIChkZXZtX3NwaV9yZWdpc3Rlcl9jb250 cm9sbGVyKSBmcm9tIFs8YzBhNGQwYjg+XSAoc3RtMzJfcXNwaV9wcm9iZSsweDMzOC8weDNiYykK PiBbICAgIDIuMjkzODMxXSBbPGMwYTRkMGI4Pl0gKHN0bTMyX3FzcGlfcHJvYmUpIGZyb20gWzxj MDk1OWVlMD5dIChwbGF0Zm9ybV9kcnZfcHJvYmUrMHg0OC8weDk4KQo+IFsgICAgMi4zMDIyODVd IFs8YzA5NTllZTA+XSAocGxhdGZvcm1fZHJ2X3Byb2JlKSBmcm9tIFs8YzA5NTdmOGM+XSAocmVh bGx5X3Byb2JlKzB4MjM0LzB4MzRjKQo+IFsgICAgMi4zMTA1NjZdIFs8YzA5NTdmOGM+XSAocmVh bGx5X3Byb2JlKSBmcm9tIFs8YzA5NTgyMWM+XSAoZHJpdmVyX3Byb2JlX2RldmljZSsweDYwLzB4 MTc0KQo+IFsgICAgMi4zMTg4NDddIFs8YzA5NTgyMWM+XSAoZHJpdmVyX3Byb2JlX2RldmljZSkg ZnJvbSBbPGMwOTU4NGQ4Pl0gKGRldmljZV9kcml2ZXJfYXR0YWNoKzB4NTgvMHg2MCkKPiBbICAg IDIuMzI3NzM1XSBbPGMwOTU4NGQ4Pl0gKGRldmljZV9kcml2ZXJfYXR0YWNoKSBmcm9tIFs8YzA5 NTg1NjA+XSAoX19kcml2ZXJfYXR0YWNoKzB4ODAvMHhiYykKPiBbICAgIDIuMzM2Mjc2XSBbPGMw OTU4NTYwPl0gKF9fZHJpdmVyX2F0dGFjaCkgZnJvbSBbPGMwOTU2MmNjPl0gKGJ1c19mb3JfZWFj aF9kZXYrMHg3NC8weGI0KQo+IFsgICAgMi4zNDQ0NjldIFs8YzA5NTYyY2M+XSAoYnVzX2Zvcl9l YWNoX2RldikgZnJvbSBbPGMwOTU3MmM0Pl0gKGJ1c19hZGRfZHJpdmVyKzB4MTY0LzB4MWU4KQo+ IFsgICAgMi4zNTI3NDldIFs8YzA5NTcyYzQ+XSAoYnVzX2FkZF9kcml2ZXIpIGZyb20gWzxjMDk1 OGZkOD5dIChkcml2ZXJfcmVnaXN0ZXIrMHg3NC8weDEwOCkKPiBbICAgIDIuMzYwODU0XSBbPGMw OTU4ZmQ4Pl0gKGRyaXZlcl9yZWdpc3RlcikgZnJvbSBbPGMwMzAyZWM4Pl0gKGRvX29uZV9pbml0 Y2FsbCsweDU0LzB4MjJjKQo+IFsgICAgMi4zNjkwNDddIFs8YzAzMDJlYzg+XSAoZG9fb25lX2lu aXRjYWxsKSBmcm9tIFs8YzE1MDEwMjQ+XSAoa2VybmVsX2luaXRfZnJlZWFibGUrMHgxNTAvMHgx ZWMpCj4gWyAgICAyLjM3Nzc2Ml0gWzxjMTUwMTAyND5dIChrZXJuZWxfaW5pdF9mcmVlYWJsZSkg ZnJvbSBbPGMwZWE1ZTc0Pl0gKGtlcm5lbF9pbml0KzB4OC8weDExNCkKPiBbICAgIDIuMzg1OTUx XSBbPGMwZWE1ZTc0Pl0gKGtlcm5lbF9pbml0KSBmcm9tIFs8YzAzMDEwZTg+XSAocmV0X2Zyb21f Zm9yaysweDE0LzB4MmMpCj4gWyAgICAyLjM5MzUyNV0gRXhjZXB0aW9uIHN0YWNrKDB4ZTY4YzFm YjAgdG8gMHhlNjhjMWZmOCkKPiBbICAgIDIuMzk4NTgzXSAxZmEwOiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMAo+ IFsgICAgMi40MDY3NzddIDFmYzA6IDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAw IDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwCj4gWyAgICAyLjQxNDk2N10gMWZl MDogMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMTMgMDAwMDAwMDAK PiBbICAgIDIuNDIxODc5XSBtdGQgbXRkNDogRmFpbGVkIHRvIHJlZ2lzdGVyIE5WTUVNIGRldmlj ZQo+IAo+IEJlZm9yZSBudm1lbiBkZXZpY2UgcmVnaXN0cmF0aW9uIHdhcyBhZGRlZCwgaXQgd2Fz IHBvc3NpYmxlIHRvIGhhdmUgc2FtZSBwYXJ0aXRpb24gbmFtZSBvbiBkaWZmZXJlbnQgZGV2aWNl cy4KPiBJbnN0ZWFkIG9mIHVzaW5nIHRoZSBwYXJ0aXRpb24gbmFtZSwgdGhpcyBwYXRjaCBwcm9w b3NlcyB0byB1c2UgdGhlIE1URCBkZXZpY2UgbmFtZSAobXRkWCkuCj4gCj4gUmVnYXJkcywKPiBD aHJpc3RvcGhlIEtlcmVsbG8uCj4gCj4gIGRyaXZlcnMvbXRkL210ZGNvcmUuYyB8IDIgKy0KPiAg MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCj4gCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvbXRkL210ZGNvcmUuYyBiL2RyaXZlcnMvbXRkL210ZGNvcmUuYwo+IGlu ZGV4IDVmYWM0MzUuLjU1OWI2OTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tdGQvbXRkY29yZS5j Cj4gKysrIGIvZHJpdmVycy9tdGQvbXRkY29yZS5jCj4gQEAgLTU1MSw3ICs1NTEsNyBAQCBzdGF0 aWMgaW50IG10ZF9udm1lbV9hZGQoc3RydWN0IG10ZF9pbmZvICptdGQpCj4gIAo+ICAJY29uZmln LmlkID0gLTE7Cj4gIAljb25maWcuZGV2ID0gJm10ZC0+ZGV2Owo+IC0JY29uZmlnLm5hbWUgPSBt dGQtPm5hbWU7Cj4gKwljb25maWcubmFtZSA9IGRldl9uYW1lKCZtdGQtPmRldik7CgpXaGF0IGFi b3V0IGNyZWF0aW5nIGFuIG10ZC0+ZnVsbG5hbWUgZmllbGQgd2hpY2ggd291bGQgYmUsIGZvcgpw YXJ0aXRpb25zOiBtdGRYOjxwYXJ0aXRpb24tbmFtZT4gYW5kIHdvdWxkIGJlIHVuaXF1ZT8KCj4g IAljb25maWcub3duZXIgPSBUSElTX01PRFVMRTsKPiAgCWNvbmZpZy5yZWdfcmVhZCA9IG10ZF9u dm1lbV9yZWdfcmVhZDsKPiAgCWNvbmZpZy5zaXplID0gbXRkLT5zaXplOwoKVGhhbmtzLApNaXF1 w6hsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KTGludXggTVREIGRpc2N1c3Npb24gbWFpbGluZyBsaXN0Cmh0dHA6Ly9saXN0cy5pbmZyYWRl YWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtbXRkLwo=