Received: by 2002:a05:6a10:7420:0:0:0:0 with SMTP id hk32csp4434343pxb; Mon, 21 Feb 2022 21:30:20 -0800 (PST) X-Google-Smtp-Source: ABdhPJxdeawNBi5Ia8+ASE0PccI8XRZGZJ25b7IC2Xkxt6uZJ0wuYEzO9sXePbIo3aMWQaqgGM4c X-Received: by 2002:a05:6a00:b84:b0:4e1:b113:d444 with SMTP id g4-20020a056a000b8400b004e1b113d444mr23148332pfj.12.1645507820456; Mon, 21 Feb 2022 21:30:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645507820; cv=none; d=google.com; s=arc-20160816; b=0r2bz57r3MLRSJp9NwOvh3x8Nb9nAbeosvSp1aOvIL6+uG3qEtaGRepexKpeMKKIe4 iQAKcfyWEiVYm8abUPt/X6a/14FDVRu++DeKqb+Py5iGjrkt6WlAi7BId+okww4tZULC qrJunOw028m/a+DZfZ0oBiZPEEKlAz6qquJTLu1hKhW8fAr9YKiBe/a+6PzajNOI9JvK vMvXPOHU0qA/Z1VDWogpA5we3MPGjCq+7jhPht0VZuANexfFUy574Wg3jsvJCAV86+s3 nAHKMz8WseurQ2p4HiSfhp3CoEenPto1THVlnfBW02dbc7KlfMeZDHH/NdrfSYQKyLFj xwJg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=+71G7ja7a3Cwfq9vW11a1F0QW9C+bBZ7MhgZ0yYX5k0=; b=xfuFXD1SgqagltVGXH/Uy5X1DCZHNyMPAlSKXwgBlVqR6KKlprY540AooBR8lDrJj1 RZXU9pdMBRW3JVUQ4xEocbfYo4V21OXzI60jXbuGnrFR0EKdDUrUBNcafOp+esePhAzK n4HvJRVujYXt2KNjnn2UlXwJOx1tQLrm4GYyaTcvL2E7CABFwDkITIAuRdctZPpNXcjx uKsF1biGfcIeKhd4zjTkbpTDONfOz5RogPvmSIP5PjthISepRNGVScX8gIhGLvtF9gjk Y6PvWOz0wTg/bb920mC1NxQ8RoFvF4qdrrqoZ2uGDySRmfAEqxJVFJmcAvoMTW9rNyB8 x76A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=KUSZcSDh; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id bh5si18403936pgb.266.2022.02.21.21.30.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Feb 2022 21:30:20 -0800 (PST) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=KUSZcSDh; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 5CF6179C46; Mon, 21 Feb 2022 20:59:04 -0800 (PST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350629AbiBUJkN (ORCPT + 99 others); Mon, 21 Feb 2022 04:40:13 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:36254 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350315AbiBUJc1 (ORCPT ); Mon, 21 Feb 2022 04:32:27 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A9F7E28982; Mon, 21 Feb 2022 01:13:51 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id E9F1860B1E; Mon, 21 Feb 2022 09:13:23 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D07BBC340E9; Mon, 21 Feb 2022 09:13:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1645434803; bh=/NW4lK+cwpAZ+jx+0oSMQYbrYONrpg8H23rLb64Kxbk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KUSZcSDh/qtbJUlRG/ypl7pq1yerrN6JODEmVnBdLz64Sf3v66eWu1OW6RcLFEpvL Pf6rhpZDxDx2UaNX1nirp+KS/8T5t6mA8MST1iqdXM1QKIJnHEOSiC1FYZN+EVgrqQ Qm0QRh5GVQvIqdupqPP2wZxpdhV5oETBXfgT8Pro= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Bryan ODonoghue , Manivannan Sadhasivam , Miquel Raynal Subject: [PATCH 5.15 136/196] mtd: rawnand: qcom: Fix clock sequencing in qcom_nandc_probe() Date: Mon, 21 Feb 2022 09:49:28 +0100 Message-Id: <20220221084935.469327304@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220221084930.872957717@linuxfoundation.org> References: <20220221084930.872957717@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Bryan O'Donoghue commit 5c23b3f965bc9ee696bf2ed4bdc54d339dd9a455 upstream. Interacting with a NAND chip on an IPQ6018 I found that the qcomsmem NAND partition parser was returning -EPROBE_DEFER waiting for the main smem driver to load. This caused the board to reset. Playing about with the probe() function shows that the problem lies in the core clock being switched off before the nandc_unalloc() routine has completed. If we look at how qcom_nandc_remove() tears down allocated resources we see the expected order is qcom_nandc_unalloc(nandc); clk_disable_unprepare(nandc->aon_clk); clk_disable_unprepare(nandc->core_clk); dma_unmap_resource(&pdev->dev, nandc->base_dma, resource_size(res), DMA_BIDIRECTIONAL, 0); Tweaking probe() to both bring up and tear-down in that order removes the reset if we end up deferring elsewhere. Fixes: c76b78d8ec05 ("mtd: nand: Qualcomm NAND controller driver") Signed-off-by: Bryan O'Donoghue Reviewed-by: Manivannan Sadhasivam Signed-off-by: Miquel Raynal Link: https://lore.kernel.org/linux-mtd/20220103030316.58301-2-bryan.odonoghue@linaro.org Signed-off-by: Greg Kroah-Hartman --- drivers/mtd/nand/raw/qcom_nandc.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) --- a/drivers/mtd/nand/raw/qcom_nandc.c +++ b/drivers/mtd/nand/raw/qcom_nandc.c @@ -2,7 +2,6 @@ /* * Copyright (c) 2016, The Linux Foundation. All rights reserved. */ - #include #include #include @@ -3063,10 +3062,6 @@ static int qcom_nandc_probe(struct platf if (dma_mapping_error(dev, nandc->base_dma)) return -ENXIO; - ret = qcom_nandc_alloc(nandc); - if (ret) - goto err_nandc_alloc; - ret = clk_prepare_enable(nandc->core_clk); if (ret) goto err_core_clk; @@ -3075,6 +3070,10 @@ static int qcom_nandc_probe(struct platf if (ret) goto err_aon_clk; + ret = qcom_nandc_alloc(nandc); + if (ret) + goto err_nandc_alloc; + ret = qcom_nandc_setup(nandc); if (ret) goto err_setup; @@ -3086,15 +3085,14 @@ static int qcom_nandc_probe(struct platf return 0; err_setup: + qcom_nandc_unalloc(nandc); +err_nandc_alloc: clk_disable_unprepare(nandc->aon_clk); err_aon_clk: clk_disable_unprepare(nandc->core_clk); err_core_clk: - qcom_nandc_unalloc(nandc); -err_nandc_alloc: dma_unmap_resource(dev, res->start, resource_size(res), DMA_BIDIRECTIONAL, 0); - return ret; }