From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CA00F606D829 for ; Sat, 7 Nov 2026 20:13:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=jwdUv8zB 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:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Unsubscribe-Post:List-Owner; bh=PdEfXQGr3riWMlgzRwqDt1BOlYVTHvgjtctiienHs9c=; b=jwdUv8zBpMgRaWOEv9pCZY/ZQw KGuIdYETyXt6a9JDWUpaB21ZVeX9C2GCcfOhjJzV4yDyScN31PwV46A0tO2sWFfHSzU3g2bKEqRsz MYV30ZeHI79nkqP8iEHaH1IuWl39TUB6iCOjf4TfVuiPeANn3UjPvlJmVDbVhF8LIw5LpabCP0fMI qJ06Co/3/uL0D7JkXwA/3vNcaGzEUcmMCPPLMsMwlOykDkyK/FbLRUdFMIuTvhF9DY/bD6ypJtOOV ZBUvLgw1Gv9RIHD+9oZduDo0QyHCeYgbjjrqg59BPBzgya9TzneyOhLSfS65Fbrf6fXVAnh/Vqyzf OKTU9QCw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.100.1 #2 (Red Hat Linux)) id 1xPmmo-0000000FHRz-0xXE; Sat, 07 Nov 2026 20:13:14 +0000 Received: from mail-oi1-f182.google.com ([209.85.167.182]) by bombadil.infradead.org with esmtps (Exim 4.100.1 #2 (Red Hat Linux)) id 1xPmme-0000000FH9B-3T2M for linux-amlogic@lists.infradead.org; Sat, 07 Nov 2026 20:13:09 +0000 Received: by mail-oi1-f182.google.com with SMTP id 5614622812f47-55650fe1f0dso3493b6e.2 for ; Sat, 07 Nov 2026 12:13:04 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1794082384; x=1794687184; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=XCEPTuAB8BTrLNvcVsDlta09WPBy7nz8SllM0LSIn30=; b=a0z1Z/lWAJk9vZr/3yeOgd9c11Cy8qaNA9rDVfqFro2r4buUYYFyiUAgdXHyYyqchJ OCsm0r1oqmJKnL4xCxX4gPqdW6Z1fHslT1fayKmkAxjkBmtDO+BVX+2ti5grwMK8vDDM aNSG6ubyaY/TOMdjMJAzfX6glc36igBOge6kegYMBr5RbQA+7rzH8ELZRbrxW8AqSqLt i8Hz2nppYINGVqAx2qAZIT4O16cifsxtxnjdXnuwfV+s4r0vq9hvit23xq2G9Bi1pS9+ LnDHRdhXxF1wa47pFQayh1VmPOv1UXIszGEDrPEXgjvXotoYNMfb55qBCex16fbSBxEh fFog== X-Forwarded-Encrypted: i=1; AKwUvBxU1LWEUSMsdYEdxOf1IywesuipbeUSjhDeHHd77N8UszcPzwZCuCSyDBer3H5qsRzTcsNNOSRWpCoDT7mt@lists.infradead.org X-Gm-Message-State: APuU4Z+X8/f74HGuzbKPde3NlkSzffg+08vcJ+g+Fsp7A9IICdt96n3x ZJtPTgYj6k64D7VZ0nJzlka0Wkf45VF7PY93iVNALYgEkVR/4bY/4KUschOiS+3lbAg= X-Gm-Gg: AYBFou1GXy+t6ur/6PGvMzKYsxU9iYGa/7b77sMjjn1h0TBs2hchmryNrft73tD+2RH 1XcX+FBfBT2EMK1hzpTO3N8qP1eqzdlu/Vjv+n2/7Z1pfvy4oWjSC0fH/2ZQ8fMqgIIPf/U1dei qvr/iBCetxNdTJ6Gzd1ee1K7eAF+lF8XgXnPXx3BjXZvYWPnN+4BgkF6MO/D3udd9B1U8AKPeBL IbL05BpYq+KK7AC9C0nb8qnAmoX/nV1qCpMNIiV0ZgmRkun8VlY79BFrikJld+M6cU8/DI9K1ZR fJOdsNpoDWAuwZCMR3gt6mZE7wXeVDT1NvgufR1uVGZJ4cvi0WdAWD69dxIb55IvEf4MnAnaOMd 5CTz4goJQxrrmXiKMPjbcll92hvKuOKbCj/cGOVMXEgpyOgV5YvO0C2+PDYzBnnzkmwj/6JH/2B 4OhCO+fVcaqdYrdiw6JfCj8I2Zi8Se2Ks/mJPRS3qop83I9Fq8HlFDwmaZGnvY6iohsg/V90np8 4YFdFkjXC00Tp4++WFrR0hoPy8OHN7hw3lz2CcawOfYtEKcpUxUYiDoVyODJgbVttIuIbDMoBU2 AEmIY+pzMUr9cWNkNJquq51Sk1eMp565Pe8xTl6VAeazWmvbIzVkFGXAWCnW X-Received: by 2002:a05:6808:238c:b0:4f1:c824:fd06 with SMTP id 5614622812f47-567e14c28c5mr4851806b6e.14.1794082383637; Sat, 07 Nov 2026 12:13:03 -0800 (PST) Received: from [127.0.1.1] (174-29-1-49.hlrn.qwest.net. [174.29.1.49]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-4ade68aa561sm226096fac.5.2026.11.07.12.13.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 07 Nov 2026 12:13:03 -0800 (PST) From: James Hilliard Date: Sat, 07 Nov 2026 03:16:28 -0700 Subject: [PATCH 31/58] mtd: rawnand: mxc: retain open-handle state on removal X-Archived-By: MIME-Version: 1.0 Message-Id: <20261107-submit-rawnand-retained-handle-lifetime-v1-v1-31-0181ef0cc4c8@gmail.com> References: <20261107-submit-rawnand-retained-handle-lifetime-v1-v1-0-0181ef0cc4c8@gmail.com> In-Reply-To: <20261107-submit-rawnand-retained-handle-lifetime-v1-v1-0-0181ef0cc4c8@gmail.com> To: Miquel Raynal , Richard Weinberger , Vignesh Raghavendra , Brian Norris , Boris Brezillon , Arseniy Krasnov , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Thomas Gleixner , Vitaly Wool , David Woodhouse , Russell King , David Woodhouse , Mike Rapoport , Maxime Coquelin , Alexandre Torgue , Christophe Kerello , Jason Roberts , Michal Simek , Boris Brezillon , Mason Yang , Ramuthevar Vadivel Murugan , Stefan Agner , Lucas Stach , Thierry Reding , Jonathan Hunter , Dmitry Osipenko , Matthias Brugger , AngeloGioacchino Del Regno , Jorge Ramirez-Ortiz , Heiko Stuebner , Yifeng Zhao , Nicolas Ferre , Alexandre Belloni , Claudiu Beznea , Keguang Zhang , Jacky Huang , Shan-Chun Hung , Frank Li , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Han Xu , Liang Yang , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , Manivannan Sadhasivam , Kamal Dasu , Broadcom internal kernel review list , Vladimir Zapolskiy , Piotr Wojtaszczyk , Paul Cercueil , Harvey Hunt , Maxim Levitsky , Michael Walle , Srinivas Kandagatla Cc: Tze Yee Ng , linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-tegra@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-mips@vger.kernel.org, imx@lists.linux.dev, linux-renesas-soc@vger.kernel.org, linux-amlogic@lists.infradead.org, linux-arm-msm@vger.kernel.org, James Hilliard X-Mailer: b4 0.15.2 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20261107_121304_953121_8B8A1031 X-CRM114-Status: GOOD ( 18.37 ) X-Spam-Score: 1.7 (+) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-amlogic" X-Spam-Status: No, score=-12.3 required=3.0 tests=BAYES_00,DATE_IN_PAST_06_12, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on aws-us-west-2-korg-listserv-alma10-1 Keep chip metadata and controller storage alive until the final MTD reference is released. Unregister and disconnect each published chip before releasing the resources used by its hardware operations. Retain the embedded legacy controller and drain I/O before clock disable. Signed-off-by: James Hilliard --- drivers/mtd/nand/raw/mxc_nand.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/drivers/mtd/nand/raw/mxc_nand.c b/drivers/mtd/nand/raw/mxc_nand.c index 4d8b92e7e672..d9f1e57c1ebf 100644 --- a/drivers/mtd/nand/raw/mxc_nand.c +++ b/drivers/mtd/nand/raw/mxc_nand.c @@ -1686,6 +1686,11 @@ static const struct nand_controller_ops mxcnd_controller_ops = { .exec_op = mxcnd_exec_op, }; +static void mxcnd_release(struct nand_controller *controller) +{ + kfree(container_of(controller, struct mxc_nand_host, nand.legacy.dummy_controller)); +} + static int mxcnd_probe(struct platform_device *pdev) { struct nand_chip *this; @@ -1694,10 +1699,14 @@ static int mxcnd_probe(struct platform_device *pdev) int err = 0; /* Allocate memory for MTD device structure and private data */ - host = devm_kzalloc(&pdev->dev, sizeof(struct mxc_nand_host), - GFP_KERNEL); + host = kzalloc_obj(*host); if (!host) return -ENOMEM; + this = &host->nand; + this->controller = &this->legacy.dummy_controller; + err = devm_nand_controller_init(&pdev->dev, this->controller, mxcnd_release); + if (err) + return err; /* allocate a temporary buffer for the nand_scan_ident() */ host->data_buf = devm_kzalloc(&pdev->dev, PAGE_SIZE, GFP_KERNEL); @@ -1796,9 +1805,15 @@ static int mxcnd_probe(struct platform_device *pdev) goto escan; /* Register the partitions */ - err = mtd_device_parse_register(mtd, part_probes, NULL, NULL, 0); + err = nand_set_release(this, NULL); if (err) goto cleanup_nand; + err = mtd_device_parse_register(mtd, part_probes, NULL, NULL, 0); + if (err) { + nand_disconnect(this); + mtd_put_master(mtd); + goto escan; + } platform_set_drvdata(pdev, host); @@ -1821,9 +1836,10 @@ static void mxcnd_remove(struct platform_device *pdev) ret = mtd_device_unregister(nand_to_mtd(chip)); WARN_ON(ret); - nand_cleanup(chip); + nand_disconnect(chip); if (host->clk_act) clk_disable_unprepare(host->clk); + mtd_put_master(nand_to_mtd(chip)); } static struct platform_driver mxcnd_driver = { -- 2.53.0 _______________________________________________ linux-amlogic mailing list linux-amlogic@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-amlogic