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 AB473608362A for ; Sat, 7 Nov 2026 10:18:37 +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=I3ZS/t7I; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20260707 header.b=b2UwixhX 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=H6BSWo1FRk0f24dlllzqmq3VixvmQQg8gYOL8TgcWOQ=; b=I3ZS/t7IOVR15s7sP6Zn4AGRBv Vn7TznFJqNtIm7XHOGEoUpif7lqo9H4gsTbvEy1x5eHMBxBcXH90frpEvYXa4u/XniSXpQ6CTRTzJ G3pWyrUiMe1VhsZJHVesIlc/lN7Te7v3Sfk32TWBcgbDosHnufdaGcU2IDau+GFG2YqeXdmfX5fBB U5MHvAJiE1C3uE8cOddd6BLtuzHdTbh0iKDGC5KPGfWslkn/jrSj+J115q6eyPLGoQmMaq0rxfL9h UfWxHXUJPundSo46RW/EFq8wwXYzFDQwYyPvrn/gU9FxgIGJGyriPV01Ajv/R4+e1grA0FMkMM8Oy VhRTlhmA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.100.1 #2 (Red Hat Linux)) id 1xPdVM-0000000EVBi-2V6b; Sat, 07 Nov 2026 10:18:36 +0000 Received: from mail-ot1-x32a.google.com ([2607:f8b0:4864:20::32a]) by bombadil.infradead.org with esmtps (Exim 4.100.1 #2 (Red Hat Linux)) id 1xPdUG-0000000EU75-2OwX for linux-amlogic@lists.infradead.org; Sat, 07 Nov 2026 10:17:33 +0000 Received: by mail-ot1-x32a.google.com with SMTP id 46e09a7af769-8446af403b5so878049a34.2 for ; Sat, 07 Nov 2026 02:17:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20260707; t=1794046647; x=1794651447; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=FiM3FdgX/n0U5FfSnJDnohTAFRzhZZoozip4F2zbWJU=; b=b2UwixhXeTDuwWW7FeqZQSZNEEIp7BXEBPMqNwIYOURwJURzMUk5DOftmsxncQ3VcE Ug+xZlD6ldEAI1+REHIvuhJCpU1XQc6nuqrJLKvJnnn3Ry2aHeHq2dJNntoOzUpkdQ1h RAztCuyX97Xwh2wJ1SzHC4YSS7ZMAnWAKivodulDaBSaKdclW2LGB7TQiTYJY6u2vQht bZmBZKc4JbPzTjz+aQgGrwh850apQCgEjzwR8oZoVUh31zSx6eN6bZpT6IexvdSxLy/4 rE0M8IPAm0csG9vENxNeoI/Y0HfeUfwajENMZeiqGghy482eDS02qRe4NikMgiyn2M+/ m1hA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1794046647; x=1794651447; 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=FiM3FdgX/n0U5FfSnJDnohTAFRzhZZoozip4F2zbWJU=; b=HQGG2eFK2UD801/LafE6cz3jTfxHhGb3NOKK8VcITWo2MrFidXwBcRf5/f7VtLrcDI czbLjTqxWKlJYuVHo9pN9sUTuNABCK4vc4muB+EPLpoK/BOZBTl4eDMM+/gJwXhZfDaX Pluiqb6vUuhTeOyER3MESopuSKbqJeLi5TmDKvPYA+w2OfCLuVIpCxFBrmrri3KTzRKR rbXwq07JBADMuKK0RQ0rbPPqPX1oGOhdZ1kat2f5+0L1Cp1iE2DdxAskjrzDMkyoIA4G uxyRDY7pwALL48s57ojqp3WQxxdAGDNA6xmJsxAeIlWVj9vThqHzh4O9rvnfpSl8nZVW jk8Q== X-Forwarded-Encrypted: i=1; AKwUvByZsxb8aVkcFECEP53e/3mq8HDYn2Yb9K5fFZQ45cEP4Ll4ISc2mhygb/UeJjgsDJ9MiyErfmCyxm40yNBq@lists.infradead.org X-Gm-Message-State: APuU4Z+ZZpooNWAJ29qUXUJEDygO9yMOR0uZIZEMIjxe8nga+gp3tL2s 9Xt0aYeRn60gKR68iwsE3QN5wxdjpc/tzOXrgBniVDgBtwhUDSeXb6qp X-Gm-Gg: AYBFou2pH9ybbiHd5svMWrP1ddHrJT2KgmgvWNjg9G3uvidOGIaerXK+J7E8ru42+Yk GE07pNJbldr1hLXzK0vUHqRHN19g+pQbav/Ht0ki+BsGOmQV6dHN8V4fxRubMr7UVBcq++ichS4 R1PTXuj8wcHTXFHtgiJsIOhlI0zqZHtjxYVDho7kCwWq56mvyR59ckctfy4I1VIqyatHze/pOwB o7tZAlHMM0UQtgODHDDx7DZBf8RibM0qMwjJXc9GF4AdjftxcgWJQ44wY3Us2jOvkQsZpx9++sq zIluPTMRV0ValbQYrGnSxaNIvc5Avp4XryXGkJebjdbmkiRDrKIrbzAyp/BvEnfEKB+feZKOgzs uorl8VW2Kvp8QKyeooYaFpgoioK/yOfSywu4b8AjJUpAxA//Thd98hCze40hOnzhS9g+GcmuwFL 2eJum/MmE0pDoIFVWOspKGBBRC0NtmJaUYczH+iZ0YH56ND4yvN46AUqiSkLrkN938n1zwraxJu d9XEq/WkBwKR/F+di9dT4/BBoUeMxBwJOgfsD12fx/HuAZLUR3MGXk/UKE0LntyOWfnM1t7/fjf o4XWUtZK+Dva4RIIe8AgDDPp0GnmOBT6J7m7jDT97wr8YZVCo6s2xo18lCEmIjy2lLCJOkbu7KG cw6hMLocFCkeEoeOM0//XU9mPCkddq7soAUNktwUaPFoYgryOqwsoDFHwhjJMnCCz3ldWXnW37a AjbxJMCwSYp68zftrcJZyudDyRxe3o+B5BNetcqHTw2xC3cs6DxL64 X-Received: by 2002:a05:6830:4c0e:b0:846:7d51:d9d7 with SMTP id 46e09a7af769-85f1d18bb98mr4287417a34.28.1794046647554; Sat, 07 Nov 2026 02:17:27 -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 46e09a7af769-85f1dbef224sm3990269a34.12.2026.11.07.02.17.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 07 Nov 2026 02:17:27 -0800 (PST) From: James Hilliard Date: Sat, 07 Nov 2026 03:16:19 -0700 Subject: [PATCH 22/58] mtd: rawnand: pasemi: retain open-handle state on removal X-Archived-By: MIME-Version: 1.0 Message-Id: <20261107-submit-rawnand-retained-handle-lifetime-v1-v1-22-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_021730_517801_9223BC1B X-CRM114-Status: GOOD ( 16.88 ) X-Spam-Score: -1.9 (-) 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=-13.8 required=3.0 tests=BAYES_00, 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. Release the LPC region and NAND mapping after disconnection. Signed-off-by: James Hilliard --- drivers/mtd/nand/raw/pasemi_nand.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/drivers/mtd/nand/raw/pasemi_nand.c b/drivers/mtd/nand/raw/pasemi_nand.c index 09409b703d93..d00d57cbb0f1 100644 --- a/drivers/mtd/nand/raw/pasemi_nand.c +++ b/drivers/mtd/nand/raw/pasemi_nand.c @@ -93,6 +93,11 @@ static const struct nand_controller_ops pasemi_ops = { .attach_chip = pasemi_attach_chip, }; +static void pasemi_nand_release(struct nand_controller *controller) +{ + kfree(container_of(controller, struct pasemi_ddata, controller)); +} + static int pasemi_nand_probe(struct platform_device *ofdev) { struct device *dev = &ofdev->dev; @@ -122,8 +127,10 @@ static int pasemi_nand_probe(struct platform_device *ofdev) chip = &ddata->chip; controller = &ddata->controller; + err = devm_nand_controller_init(dev, controller, pasemi_nand_release); + if (err) + return err; controller->ops = &pasemi_ops; - nand_controller_init(controller); chip->controller = controller; pasemi_nand_mtd = nand_to_mtd(chip); @@ -136,7 +143,7 @@ static int pasemi_nand_probe(struct platform_device *ofdev) if (!chip->legacy.IO_ADDR_R) { err = -EIO; - goto out_mtd; + goto out; } pdev = pci_get_device(PCI_VENDOR_ID_PASEMI, 0xa008, NULL); @@ -174,10 +181,15 @@ static int pasemi_nand_probe(struct platform_device *ofdev) if (err) goto out_lpc; + err = nand_set_release(chip, NULL); + if (err) + goto out_cleanup_nand; if (mtd_device_register(pasemi_nand_mtd, NULL, 0)) { dev_err(dev, "Unable to register MTD device\n"); err = -ENODEV; - goto out_cleanup_nand; + nand_disconnect(chip); + mtd_put_master(pasemi_nand_mtd); + goto out_lpc; } dev_info(dev, "PA Semi NAND flash at %pR, control at I/O %x\n", &res, @@ -191,8 +203,6 @@ static int pasemi_nand_probe(struct platform_device *ofdev) release_region(ddata->lpcctl, 4); out_ior: iounmap(chip->legacy.IO_ADDR_R); - out_mtd: - kfree(ddata); out: return err; } @@ -210,14 +220,13 @@ static void pasemi_nand_remove(struct platform_device *ofdev) /* Release resources, unregister device */ ret = mtd_device_unregister(pasemi_nand_mtd); WARN_ON(ret); - nand_cleanup(chip); + nand_disconnect(chip); release_region(ddata->lpcctl, 4); iounmap(chip->legacy.IO_ADDR_R); - /* Free the MTD device structure */ - kfree(ddata); + mtd_put_master(pasemi_nand_mtd); } static const struct of_device_id pasemi_nand_match[] = -- 2.53.0 _______________________________________________ linux-amlogic mailing list linux-amlogic@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-amlogic