Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp1879414pxu; Sun, 6 Dec 2020 10:20:42 -0800 (PST) X-Google-Smtp-Source: ABdhPJyWBCSQKuLL0+m26rS4vLq9ptUDeLrggqDhc1Y29qoLsi6kooJal9HrmNaXuC2paaJKfgiW X-Received: by 2002:a50:b2c1:: with SMTP id p59mr17298793edd.318.1607278842336; Sun, 06 Dec 2020 10:20:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1607278842; cv=none; d=google.com; s=arc-20160816; b=G0xEc0GE+6BOIJaRZggKcDfwuBO6ddGuhzEQ4SnvcRfGCFQHw0Y2Edvsyir65cQ/yq g9W61j5bKtY/ZdPn9x8eLa9AJgFiUWe12vLmIZR8Lx4bBsLPXMlpcpvCdXORZiQGU5pt oW7Hpn9x9eVHLwWhA0kJB6UMBvLKUbmTAJBiWDWQff87E9ESRfnjEmFcGkS8ynQP8Hgg /ZCjwY1k0uhgh3HWL2+u/IWX2VdP5Vc6YbFbNsT9bE/4OdrHur718HWLRnkfIJnYYSTB xZ4tBw2SF5v9+e8Q3TUxsfFySlMz4EplFd7yzDb5BIpuXiiFvEhFnKE0mBJscmAp2NNT fd0w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date; bh=d8iUzrIBg4Dak3RCtLe8bcT/XnE24MJz0CryN+I4tAY=; b=XZd/P/iVhVPIccSVga7Bqts8zO61LjwKwqVH+mqhtESk3hZeDNegFHnrRTc+46lpPw rVrxHgUv49XaL5tEZgRtunncEgRnz2wilteHCjYLEpVILYnGmvKefUOmAuLeyHTijiKu d3X+lxkKSfmcUt+2OQOk8OjlFyOF7p1wez9jk2NvcNDRw6MPXVPztni0ZxE91k3xxYAd 0Ug1VHeXDTQt0GEQmrfq2m0V8Snp1L7vojagVFJQPrh50EHrUOg2uXLad7b1nCl5kD/o WD45g1fhqzaVOjYZCPtQiUOIEuiKzPJNpDoBtRdjE7rTymEw89nYdc2EZ3KsiE0/eWSy WkyQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id i59si6733787edd.308.2020.12.06.10.20.19; Sun, 06 Dec 2020 10:20:42 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727427AbgLFSQ5 (ORCPT + 99 others); Sun, 6 Dec 2020 13:16:57 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51464 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726318AbgLFSQ5 (ORCPT ); Sun, 6 Dec 2020 13:16:57 -0500 Received: from bmailout2.hostsharing.net (bmailout2.hostsharing.net [IPv6:2a01:37:3000::53df:4ef0:0]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 76F06C0613D1 for ; Sun, 6 Dec 2020 10:16:16 -0800 (PST) Received: from h08.hostsharing.net (h08.hostsharing.net [83.223.95.28]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "*.hostsharing.net", Issuer "COMODO RSA Domain Validation Secure Server CA" (not verified)) by bmailout2.hostsharing.net (Postfix) with ESMTPS id 3FBB3282269E8; Sun, 6 Dec 2020 19:15:57 +0100 (CET) Received: by h08.hostsharing.net (Postfix, from userid 100393) id EB15EF67; Sun, 6 Dec 2020 19:16:12 +0100 (CET) Date: Sun, 6 Dec 2020 19:16:12 +0100 From: Lukas Wunner To: Sowjanya Komatineni Cc: thierry.reding@gmail.com, jonathanh@nvidia.com, broonie@kernel.org, linux-spi@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v1 3/7] spi: qspi-tegra: Add support for Tegra210 QSPI controller Message-ID: <20201206181612.GA26286@wunner.de> References: <1606857168-5839-1-git-send-email-skomatineni@nvidia.com> <1606857168-5839-4-git-send-email-skomatineni@nvidia.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1606857168-5839-4-git-send-email-skomatineni@nvidia.com> User-Agent: Mutt/1.10.1 (2018-07-13) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Dec 01, 2020 at 01:12:44PM -0800, Sowjanya Komatineni wrote: > + ret = devm_spi_register_master(&pdev->dev, master); [...] > +static int tegra_qspi_remove(struct platform_device *pdev) > +{ > + struct spi_master *master = platform_get_drvdata(pdev); > + struct tegra_qspi_data *tqspi = spi_master_get_devdata(master); > + > + free_irq(tqspi->irq, tqspi); > + > + tegra_qspi_deinit_dma_param(tqspi, false); > + tegra_qspi_deinit_dma_param(tqspi, true); > + > + pm_runtime_disable(&pdev->dev); > + if (!pm_runtime_status_suspended(&pdev->dev)) > + tegra_qspi_runtime_suspend(&pdev->dev); > + > + return 0; > +} With devm_spi_register_master(), the SPI controller is unregistered *after* tegra_qspi_remove(). SPI transactions may still be ongoing until the SPI controller is unregistered, yet you perform teardown steps (such as freeing the IRQ) while it is still registered. Bottom line is, you can't use devm_spi_register_master() in this case. You need to use spi_register_master() and explicitly call spi_unregister_master() in tegra_qspi_remove() *before* performing teardown steps. However, be sure to use the devm variant to *allocate* the SPI controller, i.e. use devm_spi_alloc_master() instead of spi_alloc_master(). Thanks, Lukas