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=-10.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable 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 257E4C3A5A7 for ; Tue, 3 Sep 2019 16:40:25 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id F3B6123431 for ; Tue, 3 Sep 2019 16:40:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1567528825; bh=+2NNsCNBQ6TiTocYeIjiV0bftN1POuCUL7N5FbSaiZE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=2hyR0kxQ+z3HjTw4LthAVn05cJhphdgwWsXbFOGENhPajI2Q5ia/1qKxxE1daMFk8 hqG/nOLSXJs+gKe+E+SDirhXe+q4/HmUD9LUF2H6B/rHExjMRCI9VbdJBitVQtYGbp /pqHCnthck7Eozg0obKjWaMWWW626FvAHYX7qtl4= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730287AbfICQZI (ORCPT ); Tue, 3 Sep 2019 12:25:08 -0400 Received: from mail.kernel.org ([198.145.29.99]:44830 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730277AbfICQZI (ORCPT ); Tue, 3 Sep 2019 12:25:08 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id B8BE923697; Tue, 3 Sep 2019 16:25:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1567527907; bh=+2NNsCNBQ6TiTocYeIjiV0bftN1POuCUL7N5FbSaiZE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jHXjVsmVYOPm6qNbL7bKe58YwMEGPfGouOfwOSFWo+0e0Nl3ywSL4XHlfQ+9nkaAS zA9ChHLgvVeZ+zMQvo8WJdTQ1ST91gUp4SX+BgP73t28RX/KeDTFnGsLQ4+qOmOfYw SwERGLjQSuf/3a5X5eL5ZTlJUwjrqZaFEFHSMACs= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: =?UTF-8?q?Andr=C3=A9=20Draszik?= , Peter Chen , Greg Kroah-Hartman , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , NXP Linux Team , linux-usb@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH AUTOSEL 5.2 17/23] usb: chipidea: imx: fix EPROBE_DEFER support during driver probe Date: Tue, 3 Sep 2019 12:24:18 -0400 Message-Id: <20190903162424.6877-17-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190903162424.6877-1-sashal@kernel.org> References: <20190903162424.6877-1-sashal@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-usb-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org From: André Draszik If driver probe needs to be deferred, e.g. because ci_hdrc_add_device() isn't ready yet, this driver currently misbehaves badly: a) success is still reported to the driver core (meaning a 2nd probe attempt will never be done), leaving the driver in a dysfunctional state and the hardware unusable b) driver remove / shutdown OOPSes: [ 206.786916] Unable to handle kernel paging request at virtual address fffffdff [ 206.794148] pgd = 880b9f82 [ 206.796890] [fffffdff] *pgd=abf5e861, *pte=00000000, *ppte=00000000 [ 206.803179] Internal error: Oops: 37 [#1] PREEMPT SMP ARM [ 206.808581] Modules linked in: wl18xx evbug [ 206.813308] CPU: 1 PID: 1 Comm: systemd-shutdow Not tainted 4.19.35+gf345c93b4195 #1 [ 206.821053] Hardware name: Freescale i.MX7 Dual (Device Tree) [ 206.826813] PC is at ci_hdrc_remove_device+0x4/0x20 [ 206.831699] LR is at ci_hdrc_imx_remove+0x20/0xe8 [ 206.836407] pc : [<805cd4b0>] lr : [<805d62cc>] psr: 20000013 [ 206.842678] sp : a806be40 ip : 00000001 fp : 80adbd3c [ 206.847906] r10: 80b1b794 r9 : 80d5dfe0 r8 : a8192c44 [ 206.853136] r7 : 80db93a0 r6 : a8192c10 r5 : a8192c00 r4 : a93a4a00 [ 206.859668] r3 : 00000000 r2 : a8192ce4 r1 : ffffffff r0 : fffffdfb [ 206.866201] Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none [ 206.873341] Control: 10c5387d Table: a9e0c06a DAC: 00000051 [ 206.879092] Process systemd-shutdow (pid: 1, stack limit = 0xb271353c) [ 206.885624] Stack: (0xa806be40 to 0xa806c000) [ 206.889992] be40: a93a4a00 805d62cc a8192c1c a8170e10 a8192c10 8049a490 80d04d08 00000000 [ 206.898179] be60: 00000000 80d0da2c fee1dead 00000000 a806a000 00000058 00000000 80148b08 [ 206.906366] be80: 01234567 80148d8c a9858600 00000000 00000000 00000000 00000000 80d04d08 [ 206.914553] bea0: 00000000 00000000 a82741e0 a9858600 00000024 00000002 a9858608 00000005 [ 206.922740] bec0: 0000001e 8022c058 00000000 00000000 a806bf14 a9858600 00000000 a806befc [ 206.930927] bee0: a806bf78 00000000 7ee12c30 8022c18c a806bef8 a806befc 00000000 00000001 [ 206.939115] bf00: 00000000 00000024 a806bf14 00000005 7ee13b34 7ee12c68 00000004 7ee13f20 [ 206.947302] bf20: 00000010 7ee12c7c 00000005 7ee12d04 0000000a 76e7dc00 00000001 80d0f140 [ 206.955490] bf40: ab637880 a974de40 60000013 80d0f140 ab6378a0 80d04d08 a8080470 a9858600 [ 206.963677] bf60: a9858600 00000000 00000000 8022c24c 00000000 80144310 00000000 00000000 [ 206.971864] bf80: 80101204 80d04d08 00000000 80d04d08 00000000 00000000 00000003 00000058 [ 206.980051] bfa0: 80101204 80101000 00000000 00000000 fee1dead 28121969 01234567 00000000 [ 206.988237] bfc0: 00000000 00000000 00000003 00000058 00000000 00000000 00000000 00000000 [ 206.996425] bfe0: 0049ffb0 7ee13d58 0048a84b 76f245a6 60000030 fee1dead 00000000 00000000 [ 207.004622] [<805cd4b0>] (ci_hdrc_remove_device) from [<805d62cc>] (ci_hdrc_imx_remove+0x20/0xe8) [ 207.013509] [<805d62cc>] (ci_hdrc_imx_remove) from [<8049a490>] (device_shutdown+0x16c/0x218) [ 207.022050] [<8049a490>] (device_shutdown) from [<80148b08>] (kernel_restart+0xc/0x50) [ 207.029980] [<80148b08>] (kernel_restart) from [<80148d8c>] (sys_reboot+0xf4/0x1f0) [ 207.037648] [<80148d8c>] (sys_reboot) from [<80101000>] (ret_fast_syscall+0x0/0x54) [ 207.045308] Exception stack(0xa806bfa8 to 0xa806bff0) [ 207.050368] bfa0: 00000000 00000000 fee1dead 28121969 01234567 00000000 [ 207.058554] bfc0: 00000000 00000000 00000003 00000058 00000000 00000000 00000000 00000000 [ 207.066737] bfe0: 0049ffb0 7ee13d58 0048a84b 76f245a6 [ 207.071799] Code: ebffffa8 e3a00000 e8bd8010 e92d4010 (e5904004) [ 207.078021] ---[ end trace be47424e3fd46e9f ]--- [ 207.082647] Kernel panic - not syncing: Fatal exception [ 207.087894] ---[ end Kernel panic - not syncing: Fatal exception ]--- c) the error path in combination with driver removal causes imbalanced calls to the clk_*() and pm_()* APIs a) happens because the original intended return value is overwritten (with 0) by the return code of regulator_disable() in ci_hdrc_imx_probe()'s error path b) happens because ci_pdev is -EPROBE_DEFER, which causes ci_hdrc_remove_device() to OOPS Fix a) by being more careful in ci_hdrc_imx_probe()'s error path and not overwriting the real error code Fix b) by calling the respective cleanup functions during remove only when needed (when ci_pdev != NULL, i.e. when everything was initialised correctly). This also has the side effect of not causing imbalanced clk_*() and pm_*() API calls as part of the error code path. Fixes: 7c8e8909417e ("usb: chipidea: imx: add HSIC support") Signed-off-by: André Draszik Cc: stable CC: Peter Chen CC: Greg Kroah-Hartman CC: Shawn Guo CC: Sascha Hauer CC: Pengutronix Kernel Team CC: Fabio Estevam CC: NXP Linux Team CC: linux-usb@vger.kernel.org CC: linux-arm-kernel@lists.infradead.org CC: linux-kernel@vger.kernel.org Link: https://lore.kernel.org/r/20190810150758.17694-1-git@andred.net Signed-off-by: Greg Kroah-Hartman --- drivers/usb/chipidea/ci_hdrc_imx.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/drivers/usb/chipidea/ci_hdrc_imx.c b/drivers/usb/chipidea/ci_hdrc_imx.c index a76708501236d..5faae96735e62 100644 --- a/drivers/usb/chipidea/ci_hdrc_imx.c +++ b/drivers/usb/chipidea/ci_hdrc_imx.c @@ -453,9 +453,11 @@ static int ci_hdrc_imx_probe(struct platform_device *pdev) imx_disable_unprepare_clks(dev); disable_hsic_regulator: if (data->hsic_pad_regulator) - ret = regulator_disable(data->hsic_pad_regulator); + /* don't overwrite original ret (cf. EPROBE_DEFER) */ + regulator_disable(data->hsic_pad_regulator); if (pdata.flags & CI_HDRC_PMQOS) pm_qos_remove_request(&data->pm_qos_req); + data->ci_pdev = NULL; return ret; } @@ -468,14 +470,17 @@ static int ci_hdrc_imx_remove(struct platform_device *pdev) pm_runtime_disable(&pdev->dev); pm_runtime_put_noidle(&pdev->dev); } - ci_hdrc_remove_device(data->ci_pdev); + if (data->ci_pdev) + ci_hdrc_remove_device(data->ci_pdev); if (data->override_phy_control) usb_phy_shutdown(data->phy); - imx_disable_unprepare_clks(&pdev->dev); - if (data->plat_data->flags & CI_HDRC_PMQOS) - pm_qos_remove_request(&data->pm_qos_req); - if (data->hsic_pad_regulator) - regulator_disable(data->hsic_pad_regulator); + if (data->ci_pdev) { + imx_disable_unprepare_clks(&pdev->dev); + if (data->plat_data->flags & CI_HDRC_PMQOS) + pm_qos_remove_request(&data->pm_qos_req); + if (data->hsic_pad_regulator) + regulator_disable(data->hsic_pad_regulator); + } return 0; } -- 2.20.1 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=-10.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 F33ACC3A5A2 for ; Tue, 3 Sep 2019 16:25:19 +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 C72852343A for ; Tue, 3 Sep 2019 16:25:19 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Di250AdU"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="jHXjVsmV" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C72852343A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=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:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Em7Dk/ZEvZyGa1QV1p9pQY3fdI+hFNmseVc5cO5Abqs=; b=Di250AdUDm/jC8 946IO5UJArQ/Vws4yTZJqGuiliH1fXzzsYSIspx1OC7hSbmZrGIle/BKN1tpg73Bj0KQfBoOHxfm+ 2q+ONlV5khPI0Y5B2Agus9WLEfUPLa2ACp5xGY7q08DbN3NcuRWAp+e9CdMRTPlHIn8MSuZbql9gs 3flMt7/fxRNt6DI96odJ0qQr4yKHU+9kxyubEeVp4qelmdWCLcRiSKvSUY5jqA14TmU+hgl7mS+uW ONHnfIjqorJPC5WoyO/gY41IrSZ3MdFB++MpOCpULGiIXPtZXEyC25q+Dqc47IoSbK7odQUxn4fup Mm+HFpbca4x2ir9W0dag==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1i5BcG-0000K9-Dv; Tue, 03 Sep 2019 16:25:12 +0000 Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.92 #3 (Red Hat Linux)) id 1i5BcC-0008WA-Mw for linux-arm-kernel@lists.infradead.org; Tue, 03 Sep 2019 16:25:10 +0000 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id B8BE923697; Tue, 3 Sep 2019 16:25:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1567527907; bh=+2NNsCNBQ6TiTocYeIjiV0bftN1POuCUL7N5FbSaiZE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jHXjVsmVYOPm6qNbL7bKe58YwMEGPfGouOfwOSFWo+0e0Nl3ywSL4XHlfQ+9nkaAS zA9ChHLgvVeZ+zMQvo8WJdTQ1ST91gUp4SX+BgP73t28RX/KeDTFnGsLQ4+qOmOfYw SwERGLjQSuf/3a5X5eL5ZTlJUwjrqZaFEFHSMACs= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH AUTOSEL 5.2 17/23] usb: chipidea: imx: fix EPROBE_DEFER support during driver probe Date: Tue, 3 Sep 2019 12:24:18 -0400 Message-Id: <20190903162424.6877-17-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190903162424.6877-1-sashal@kernel.org> References: <20190903162424.6877-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190903_092508_790641_08BC67EF X-CRM114-Status: GOOD ( 17.03 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Chen , Fabio Estevam , =?UTF-8?q?Andr=C3=A9=20Draszik?= , Sascha Hauer , linux-usb@vger.kernel.org, NXP Linux Team , Pengutronix Kernel Team , Greg Kroah-Hartman , Shawn Guo , linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org RnJvbTogQW5kcsOpIERyYXN6aWsgPGdpdEBhbmRyZWQubmV0PgoKSWYgZHJpdmVyIHByb2JlIG5l ZWRzIHRvIGJlIGRlZmVycmVkLCBlLmcuIGJlY2F1c2UgY2lfaGRyY19hZGRfZGV2aWNlKCkKaXNu J3QgcmVhZHkgeWV0LCB0aGlzIGRyaXZlciBjdXJyZW50bHkgbWlzYmVoYXZlcyBiYWRseToKICAg IGEpIHN1Y2Nlc3MgaXMgc3RpbGwgcmVwb3J0ZWQgdG8gdGhlIGRyaXZlciBjb3JlIChtZWFuaW5n IGEgMm5kCiAgICAgICBwcm9iZSBhdHRlbXB0IHdpbGwgbmV2ZXIgYmUgZG9uZSksIGxlYXZpbmcg dGhlIGRyaXZlciBpbgogICAgICAgYSBkeXNmdW5jdGlvbmFsIHN0YXRlIGFuZCB0aGUgaGFyZHdh cmUgdW51c2FibGUKCiAgICBiKSBkcml2ZXIgcmVtb3ZlIC8gc2h1dGRvd24gT09QU2VzOgogICAg WyAgMjA2Ljc4NjkxNl0gVW5hYmxlIHRvIGhhbmRsZSBrZXJuZWwgcGFnaW5nIHJlcXVlc3QgYXQg dmlydHVhbCBhZGRyZXNzIGZmZmZmZGZmCiAgICBbICAyMDYuNzk0MTQ4XSBwZ2QgPSA4ODBiOWY4 MgogICAgWyAgMjA2Ljc5Njg5MF0gW2ZmZmZmZGZmXSAqcGdkPWFiZjVlODYxLCAqcHRlPTAwMDAw MDAwLCAqcHB0ZT0wMDAwMDAwMAogICAgWyAgMjA2LjgwMzE3OV0gSW50ZXJuYWwgZXJyb3I6IE9v cHM6IDM3IFsjMV0gUFJFRU1QVCBTTVAgQVJNCiAgICBbICAyMDYuODA4NTgxXSBNb2R1bGVzIGxp bmtlZCBpbjogd2wxOHh4IGV2YnVnCiAgICBbICAyMDYuODEzMzA4XSBDUFU6IDEgUElEOiAxIENv bW06IHN5c3RlbWQtc2h1dGRvdyBOb3QgdGFpbnRlZCA0LjE5LjM1K2dmMzQ1YzkzYjQxOTUgIzEK ICAgIFsgIDIwNi44MjEwNTNdIEhhcmR3YXJlIG5hbWU6IEZyZWVzY2FsZSBpLk1YNyBEdWFsIChE ZXZpY2UgVHJlZSkKICAgIFsgIDIwNi44MjY4MTNdIFBDIGlzIGF0IGNpX2hkcmNfcmVtb3ZlX2Rl dmljZSsweDQvMHgyMAogICAgWyAgMjA2LjgzMTY5OV0gTFIgaXMgYXQgY2lfaGRyY19pbXhfcmVt b3ZlKzB4MjAvMHhlOAogICAgWyAgMjA2LjgzNjQwN10gcGMgOiBbPDgwNWNkNGIwPl0gICAgbHIg OiBbPDgwNWQ2MmNjPl0gICAgcHNyOiAyMDAwMDAxMwogICAgWyAgMjA2Ljg0MjY3OF0gc3AgOiBh ODA2YmU0MCAgaXAgOiAwMDAwMDAwMSAgZnAgOiA4MGFkYmQzYwogICAgWyAgMjA2Ljg0NzkwNl0g cjEwOiA4MGIxYjc5NCAgcjkgOiA4MGQ1ZGZlMCAgcjggOiBhODE5MmM0NAogICAgWyAgMjA2Ljg1 MzEzNl0gcjcgOiA4MGRiOTNhMCAgcjYgOiBhODE5MmMxMCAgcjUgOiBhODE5MmMwMCAgcjQgOiBh OTNhNGEwMAogICAgWyAgMjA2Ljg1OTY2OF0gcjMgOiAwMDAwMDAwMCAgcjIgOiBhODE5MmNlNCAg cjEgOiBmZmZmZmZmZiAgcjAgOiBmZmZmZmRmYgogICAgWyAgMjA2Ljg2NjIwMV0gRmxhZ3M6IG56 Q3YgIElSUXMgb24gIEZJUXMgb24gIE1vZGUgU1ZDXzMyICBJU0EgQVJNICBTZWdtZW50IG5vbmUK ICAgIFsgIDIwNi44NzMzNDFdIENvbnRyb2w6IDEwYzUzODdkICBUYWJsZTogYTllMGMwNmEgIERB QzogMDAwMDAwNTEKICAgIFsgIDIwNi44NzkwOTJdIFByb2Nlc3Mgc3lzdGVtZC1zaHV0ZG93IChw aWQ6IDEsIHN0YWNrIGxpbWl0ID0gMHhiMjcxMzUzYykKICAgIFsgIDIwNi44ODU2MjRdIFN0YWNr OiAoMHhhODA2YmU0MCB0byAweGE4MDZjMDAwKQogICAgWyAgMjA2Ljg4OTk5Ml0gYmU0MDogYTkz YTRhMDAgODA1ZDYyY2MgYTgxOTJjMWMgYTgxNzBlMTAgYTgxOTJjMTAgODA0OWE0OTAgODBkMDRk MDggMDAwMDAwMDAKICAgIFsgIDIwNi44OTgxNzldIGJlNjA6IDAwMDAwMDAwIDgwZDBkYTJjIGZl ZTFkZWFkIDAwMDAwMDAwIGE4MDZhMDAwIDAwMDAwMDU4IDAwMDAwMDAwIDgwMTQ4YjA4CiAgICBb ICAyMDYuOTA2MzY2XSBiZTgwOiAwMTIzNDU2NyA4MDE0OGQ4YyBhOTg1ODYwMCAwMDAwMDAwMCAw MDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCA4MGQwNGQwOAogICAgWyAgMjA2LjkxNDU1M10gYmVh MDogMDAwMDAwMDAgMDAwMDAwMDAgYTgyNzQxZTAgYTk4NTg2MDAgMDAwMDAwMjQgMDAwMDAwMDIg YTk4NTg2MDggMDAwMDAwMDUKICAgIFsgIDIwNi45MjI3NDBdIGJlYzA6IDAwMDAwMDFlIDgwMjJj MDU4IDAwMDAwMDAwIDAwMDAwMDAwIGE4MDZiZjE0IGE5ODU4NjAwIDAwMDAwMDAwIGE4MDZiZWZj CiAgICBbICAyMDYuOTMwOTI3XSBiZWUwOiBhODA2YmY3OCAwMDAwMDAwMCA3ZWUxMmMzMCA4MDIy YzE4YyBhODA2YmVmOCBhODA2YmVmYyAwMDAwMDAwMCAwMDAwMDAwMQogICAgWyAgMjA2LjkzOTEx NV0gYmYwMDogMDAwMDAwMDAgMDAwMDAwMjQgYTgwNmJmMTQgMDAwMDAwMDUgN2VlMTNiMzQgN2Vl MTJjNjggMDAwMDAwMDQgN2VlMTNmMjAKICAgIFsgIDIwNi45NDczMDJdIGJmMjA6IDAwMDAwMDEw IDdlZTEyYzdjIDAwMDAwMDA1IDdlZTEyZDA0IDAwMDAwMDBhIDc2ZTdkYzAwIDAwMDAwMDAxIDgw ZDBmMTQwCiAgICBbICAyMDYuOTU1NDkwXSBiZjQwOiBhYjYzNzg4MCBhOTc0ZGU0MCA2MDAwMDAx MyA4MGQwZjE0MCBhYjYzNzhhMCA4MGQwNGQwOCBhODA4MDQ3MCBhOTg1ODYwMAogICAgWyAgMjA2 Ljk2MzY3N10gYmY2MDogYTk4NTg2MDAgMDAwMDAwMDAgMDAwMDAwMDAgODAyMmMyNGMgMDAwMDAw MDAgODAxNDQzMTAgMDAwMDAwMDAgMDAwMDAwMDAKICAgIFsgIDIwNi45NzE4NjRdIGJmODA6IDgw MTAxMjA0IDgwZDA0ZDA4IDAwMDAwMDAwIDgwZDA0ZDA4IDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAw MDAzIDAwMDAwMDU4CiAgICBbICAyMDYuOTgwMDUxXSBiZmEwOiA4MDEwMTIwNCA4MDEwMTAwMCAw MDAwMDAwMCAwMDAwMDAwMCBmZWUxZGVhZCAyODEyMTk2OSAwMTIzNDU2NyAwMDAwMDAwMAogICAg WyAgMjA2Ljk4ODIzN10gYmZjMDogMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDMgMDAwMDAwNTgg MDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAKICAgIFsgIDIwNi45OTY0MjVdIGJm ZTA6IDAwNDlmZmIwIDdlZTEzZDU4IDAwNDhhODRiIDc2ZjI0NWE2IDYwMDAwMDMwIGZlZTFkZWFk IDAwMDAwMDAwIDAwMDAwMDAwCiAgICBbICAyMDcuMDA0NjIyXSBbPDgwNWNkNGIwPl0gKGNpX2hk cmNfcmVtb3ZlX2RldmljZSkgZnJvbSBbPDgwNWQ2MmNjPl0gKGNpX2hkcmNfaW14X3JlbW92ZSsw eDIwLzB4ZTgpCiAgICBbICAyMDcuMDEzNTA5XSBbPDgwNWQ2MmNjPl0gKGNpX2hkcmNfaW14X3Jl bW92ZSkgZnJvbSBbPDgwNDlhNDkwPl0gKGRldmljZV9zaHV0ZG93bisweDE2Yy8weDIxOCkKICAg IFsgIDIwNy4wMjIwNTBdIFs8ODA0OWE0OTA+XSAoZGV2aWNlX3NodXRkb3duKSBmcm9tIFs8ODAx NDhiMDg+XSAoa2VybmVsX3Jlc3RhcnQrMHhjLzB4NTApCiAgICBbICAyMDcuMDI5OTgwXSBbPDgw MTQ4YjA4Pl0gKGtlcm5lbF9yZXN0YXJ0KSBmcm9tIFs8ODAxNDhkOGM+XSAoc3lzX3JlYm9vdCsw eGY0LzB4MWYwKQogICAgWyAgMjA3LjAzNzY0OF0gWzw4MDE0OGQ4Yz5dIChzeXNfcmVib290KSBm cm9tIFs8ODAxMDEwMDA+XSAocmV0X2Zhc3Rfc3lzY2FsbCsweDAvMHg1NCkKICAgIFsgIDIwNy4w NDUzMDhdIEV4Y2VwdGlvbiBzdGFjaygweGE4MDZiZmE4IHRvIDB4YTgwNmJmZjApCiAgICBbICAy MDcuMDUwMzY4XSBiZmEwOiAgICAgICAgICAgICAgICAgICAwMDAwMDAwMCAwMDAwMDAwMCBmZWUx ZGVhZCAyODEyMTk2OSAwMTIzNDU2NyAwMDAwMDAwMAogICAgWyAgMjA3LjA1ODU1NF0gYmZjMDog MDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDMgMDAwMDAwNTggMDAwMDAwMDAgMDAwMDAwMDAgMDAw MDAwMDAgMDAwMDAwMDAKICAgIFsgIDIwNy4wNjY3MzddIGJmZTA6IDAwNDlmZmIwIDdlZTEzZDU4 IDAwNDhhODRiIDc2ZjI0NWE2CiAgICBbICAyMDcuMDcxNzk5XSBDb2RlOiBlYmZmZmZhOCBlM2Ew MDAwMCBlOGJkODAxMCBlOTJkNDAxMCAoZTU5MDQwMDQpCiAgICBbICAyMDcuMDc4MDIxXSAtLS1b IGVuZCB0cmFjZSBiZTQ3NDI0ZTNmZDQ2ZTlmIF0tLS0KICAgIFsgIDIwNy4wODI2NDddIEtlcm5l bCBwYW5pYyAtIG5vdCBzeW5jaW5nOiBGYXRhbCBleGNlcHRpb24KICAgIFsgIDIwNy4wODc4OTRd IC0tLVsgZW5kIEtlcm5lbCBwYW5pYyAtIG5vdCBzeW5jaW5nOiBGYXRhbCBleGNlcHRpb24gXS0t LQoKICAgIGMpIHRoZSBlcnJvciBwYXRoIGluIGNvbWJpbmF0aW9uIHdpdGggZHJpdmVyIHJlbW92 YWwgY2F1c2VzCiAgICAgICBpbWJhbGFuY2VkIGNhbGxzIHRvIHRoZSBjbGtfKigpIGFuZCBwbV8o KSogQVBJcwoKYSkgaGFwcGVucyBiZWNhdXNlIHRoZSBvcmlnaW5hbCBpbnRlbmRlZCByZXR1cm4g dmFsdWUgaXMKICAgb3ZlcndyaXR0ZW4gKHdpdGggMCkgYnkgdGhlIHJldHVybiBjb2RlIG9mCiAg IHJlZ3VsYXRvcl9kaXNhYmxlKCkgaW4gY2lfaGRyY19pbXhfcHJvYmUoKSdzIGVycm9yIHBhdGgK YikgaGFwcGVucyBiZWNhdXNlIGNpX3BkZXYgaXMgLUVQUk9CRV9ERUZFUiwgd2hpY2ggY2F1c2Vz CiAgIGNpX2hkcmNfcmVtb3ZlX2RldmljZSgpIHRvIE9PUFMKCkZpeCBhKSBieSBiZWluZyBtb3Jl IGNhcmVmdWwgaW4gY2lfaGRyY19pbXhfcHJvYmUoKSdzIGVycm9yCnBhdGggYW5kIG5vdCBvdmVy d3JpdGluZyB0aGUgcmVhbCBlcnJvciBjb2RlCgpGaXggYikgYnkgY2FsbGluZyB0aGUgcmVzcGVj dGl2ZSBjbGVhbnVwIGZ1bmN0aW9ucyBkdXJpbmcKcmVtb3ZlIG9ubHkgd2hlbiBuZWVkZWQgKHdo ZW4gY2lfcGRldiAhPSBOVUxMLCBpLmUuIHdoZW4KZXZlcnl0aGluZyB3YXMgaW5pdGlhbGlzZWQg Y29ycmVjdGx5KS4gVGhpcyBhbHNvIGhhcyB0aGUKc2lkZSBlZmZlY3Qgb2Ygbm90IGNhdXNpbmcg aW1iYWxhbmNlZCBjbGtfKigpIGFuZCBwbV8qKCkKQVBJIGNhbGxzIGFzIHBhcnQgb2YgdGhlIGVy cm9yIGNvZGUgcGF0aC4KCkZpeGVzOiA3YzhlODkwOTQxN2UgKCJ1c2I6IGNoaXBpZGVhOiBpbXg6 IGFkZCBIU0lDIHN1cHBvcnQiKQpTaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8Z2l0QGFu ZHJlZC5uZXQ+CkNjOiBzdGFibGUgPHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmc+CkNDOiBQZXRlciBD aGVuIDxQZXRlci5DaGVuQG54cC5jb20+CkNDOiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBs aW51eGZvdW5kYXRpb24ub3JnPgpDQzogU2hhd24gR3VvIDxzaGF3bmd1b0BrZXJuZWwub3JnPgpD QzogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgpDQzogUGVuZ3V0cm9uaXgg S2VybmVsIFRlYW0gPGtlcm5lbEBwZW5ndXRyb25peC5kZT4KQ0M6IEZhYmlvIEVzdGV2YW0gPGZl c3RldmFtQGdtYWlsLmNvbT4KQ0M6IE5YUCBMaW51eCBUZWFtIDxsaW51eC1pbXhAbnhwLmNvbT4K Q0M6IGxpbnV4LXVzYkB2Z2VyLmtlcm5lbC5vcmcKQ0M6IGxpbnV4LWFybS1rZXJuZWxAbGlzdHMu aW5mcmFkZWFkLm9yZwpDQzogbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZwpMaW5rOiBodHRw czovL2xvcmUua2VybmVsLm9yZy9yLzIwMTkwODEwMTUwNzU4LjE3Njk0LTEtZ2l0QGFuZHJlZC5u ZXQKU2lnbmVkLW9mZi1ieTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0 aW9uLm9yZz4KLS0tCiBkcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jIHwgMTkgKysr KysrKysrKysrLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDcgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXgu YyBiL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmMKaW5kZXggYTc2NzA4NTAxMjM2 ZC4uNWZhYWU5NjczNWU2MiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRy Y19pbXguYworKysgYi9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jCkBAIC00NTMs OSArNDUzLDExIEBAIHN0YXRpYyBpbnQgY2lfaGRyY19pbXhfcHJvYmUoc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqcGRldikKIAlpbXhfZGlzYWJsZV91bnByZXBhcmVfY2xrcyhkZXYpOwogZGlzYWJs ZV9oc2ljX3JlZ3VsYXRvcjoKIAlpZiAoZGF0YS0+aHNpY19wYWRfcmVndWxhdG9yKQotCQlyZXQg PSByZWd1bGF0b3JfZGlzYWJsZShkYXRhLT5oc2ljX3BhZF9yZWd1bGF0b3IpOworCQkvKiBkb24n dCBvdmVyd3JpdGUgb3JpZ2luYWwgcmV0IChjZi4gRVBST0JFX0RFRkVSKSAqLworCQlyZWd1bGF0 b3JfZGlzYWJsZShkYXRhLT5oc2ljX3BhZF9yZWd1bGF0b3IpOwogCWlmIChwZGF0YS5mbGFncyAm IENJX0hEUkNfUE1RT1MpCiAJCXBtX3Fvc19yZW1vdmVfcmVxdWVzdCgmZGF0YS0+cG1fcW9zX3Jl cSk7CisJZGF0YS0+Y2lfcGRldiA9IE5VTEw7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtNDY4LDE0 ICs0NzAsMTcgQEAgc3RhdGljIGludCBjaV9oZHJjX2lteF9yZW1vdmUoc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqcGRldikKIAkJcG1fcnVudGltZV9kaXNhYmxlKCZwZGV2LT5kZXYpOwogCQlwbV9y dW50aW1lX3B1dF9ub2lkbGUoJnBkZXYtPmRldik7CiAJfQotCWNpX2hkcmNfcmVtb3ZlX2Rldmlj ZShkYXRhLT5jaV9wZGV2KTsKKwlpZiAoZGF0YS0+Y2lfcGRldikKKwkJY2lfaGRyY19yZW1vdmVf ZGV2aWNlKGRhdGEtPmNpX3BkZXYpOwogCWlmIChkYXRhLT5vdmVycmlkZV9waHlfY29udHJvbCkK IAkJdXNiX3BoeV9zaHV0ZG93bihkYXRhLT5waHkpOwotCWlteF9kaXNhYmxlX3VucHJlcGFyZV9j bGtzKCZwZGV2LT5kZXYpOwotCWlmIChkYXRhLT5wbGF0X2RhdGEtPmZsYWdzICYgQ0lfSERSQ19Q TVFPUykKLQkJcG1fcW9zX3JlbW92ZV9yZXF1ZXN0KCZkYXRhLT5wbV9xb3NfcmVxKTsKLQlpZiAo ZGF0YS0+aHNpY19wYWRfcmVndWxhdG9yKQotCQlyZWd1bGF0b3JfZGlzYWJsZShkYXRhLT5oc2lj X3BhZF9yZWd1bGF0b3IpOworCWlmIChkYXRhLT5jaV9wZGV2KSB7CisJCWlteF9kaXNhYmxlX3Vu cHJlcGFyZV9jbGtzKCZwZGV2LT5kZXYpOworCQlpZiAoZGF0YS0+cGxhdF9kYXRhLT5mbGFncyAm IENJX0hEUkNfUE1RT1MpCisJCQlwbV9xb3NfcmVtb3ZlX3JlcXVlc3QoJmRhdGEtPnBtX3Fvc19y ZXEpOworCQlpZiAoZGF0YS0+aHNpY19wYWRfcmVndWxhdG9yKQorCQkJcmVndWxhdG9yX2Rpc2Fi bGUoZGF0YS0+aHNpY19wYWRfcmVndWxhdG9yKTsKKwl9CiAKIAlyZXR1cm4gMDsKIH0KLS0gCjIu MjAuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxp bnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFk ZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4 LWFybS1rZXJuZWwK