Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp308741pxj; Tue, 18 May 2021 04:02:24 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwL9eA0lx+pE6IzWZA6qSXKeqje0u3UEo31OwTBAH0EFk+6PCvuStgZJBebPkJSKMUWscTX X-Received: by 2002:a17:906:af72:: with SMTP id os18mr2589997ejb.327.1621335744034; Tue, 18 May 2021 04:02:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621335744; cv=none; d=google.com; s=arc-20160816; b=Gt5w5baoXi6sTsRhfqevO6YnFFe3KwASzAqb5yD6Oue/cHg7E7wJ7rFDEcoGdrBajw yEd5Ydu+HdyWe1Z8GilF06OoM4G+DYRJGZFypg7r3W56dK2wMavbfaRe4C5WPKxUw/5w XXAxci3L9GQ/rSOXO5flpNxIBmGC9FPe3+G28bbD+IfBciJjKtgXBdAgMExSkzqCEr1f 4w5vHDTwfXLnuawOjhz2MaBem+9fybYESI/DnNr55DsQV8oASFWptdJy7mkCHj/BH6Dl NytOnHjjq4Y9yHYAIPk8RaiHJzvoVgBQ+S8YOOEtGZ253CROYfSiIJzfLt+S/04Zc3AK ytzw== 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=HprS8FLnA/j6UFxZXhu4uNoV2Ux+1rpMK6EeXbqnA4w=; b=w8Ta42sngSaftKfyhNGy62WrPakflMIC4TJ/YcPrTSxbQLnUka2+bY+oGIGT9rG0lQ cpe4+6JwrUyxIXRcUN+gpMLmG1wdteJkRdoLdrFjzMBfHNEsaVI4XqhWA2xQfLZOVPs5 dr6Xew7avG171SCRtFcPBRzPdHNa8DHv61k6tkPxrh758ZhYeTHXfzWcJ6whemIddaGT VJTK600hyNEvGzcnlPoCerMX9SoRK2H/hRaGKOWKZ1UJpkf+m1PPMFaFyzSGpfoDRxbH lyCduRH9t9AMGqpjcS5NFeUsYgBNEEOUNOFh0Uzi+u/FCVEpIYs3tzlZFpPQax3KB7em +t7Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=rd6ilQpw; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id ca17si16278492edb.207.2021.05.18.04.01.46; Tue, 18 May 2021 04:02:24 -0700 (PDT) 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; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=rd6ilQpw; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243665AbhEQPQD (ORCPT + 99 others); Mon, 17 May 2021 11:16:03 -0400 Received: from mail.kernel.org ([198.145.29.99]:45488 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241607AbhEQPGH (ORCPT ); Mon, 17 May 2021 11:06:07 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id E234C61AC0; Mon, 17 May 2021 14:28:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1621261737; bh=FP7CkVDM5F+Zmp3JSwT8Gk4VEl93hQDEDRSLlgZ8jog=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rd6ilQpweuI1W0f1cTaIo9UjT868pMgTeNUL138XGplYe4EfFL+R+QnK1MYpK5sc2 V622etOfOycDq06kYNGxBgpC/9Opf8XdrGAnK3DISe/vHIkS0+VUG6GmFkkCQegWFw T9P99myAU8WEJCsRvp7Sal+qnEvyUnUo+jMRT1TE= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Jason Gunthorpe , Dave Jiang , Dan Williams , Vinod Koul , Sasha Levin Subject: [PATCH 5.11 157/329] dmaengine: idxd: removal of pcim managed mmio mapping Date: Mon, 17 May 2021 16:01:08 +0200 Message-Id: <20210517140307.425201533@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517140302.043055203@linuxfoundation.org> References: <20210517140302.043055203@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Dave Jiang [ Upstream commit a39c7cd0438ee2f0b859ee1eb86cdc52217d2223 ] The devm managed lifetime is incompatible with 'struct device' objects that resides in idxd context. This is one of the series that clean up the idxd driver 'struct device' lifetime. Remove pcim_* management of the PCI device and the ioremap of MMIO BAR and replace with unmanaged versions. This is for consistency of removing all the pcim/devm based calls. Reported-by: Jason Gunthorpe Fixes: bfe1d56091c1 ("dmaengine: idxd: Init and probe for Intel data accelerators") Signed-off-by: Dave Jiang Reviewed-by: Dan Williams Link: https://lore.kernel.org/r/161852984150.2203940.8043988289748519056.stgit@djiang5-desk3.ch.intel.com Signed-off-by: Vinod Koul Signed-off-by: Sasha Levin --- drivers/dma/idxd/init.c | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/drivers/dma/idxd/init.c b/drivers/dma/idxd/init.c index d54a5e5f82a2..ababd059da6f 100644 --- a/drivers/dma/idxd/init.c +++ b/drivers/dma/idxd/init.c @@ -378,32 +378,36 @@ static int idxd_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) struct idxd_device *idxd; int rc; - rc = pcim_enable_device(pdev); + rc = pci_enable_device(pdev); if (rc) return rc; dev_dbg(dev, "Alloc IDXD context\n"); idxd = idxd_alloc(pdev); - if (!idxd) - return -ENOMEM; + if (!idxd) { + rc = -ENOMEM; + goto err_idxd_alloc; + } dev_dbg(dev, "Mapping BARs\n"); - idxd->reg_base = pcim_iomap(pdev, IDXD_MMIO_BAR, 0); - if (!idxd->reg_base) - return -ENOMEM; + idxd->reg_base = pci_iomap(pdev, IDXD_MMIO_BAR, 0); + if (!idxd->reg_base) { + rc = -ENOMEM; + goto err_iomap; + } dev_dbg(dev, "Set DMA masks\n"); rc = pci_set_dma_mask(pdev, DMA_BIT_MASK(64)); if (rc) rc = pci_set_dma_mask(pdev, DMA_BIT_MASK(32)); if (rc) - return rc; + goto err; rc = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)); if (rc) rc = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32)); if (rc) - return rc; + goto err; idxd_set_type(idxd); @@ -417,13 +421,13 @@ static int idxd_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) rc = idxd_probe(idxd); if (rc) { dev_err(dev, "Intel(R) IDXD DMA Engine init failed\n"); - return -ENODEV; + goto err; } rc = idxd_setup_sysfs(idxd); if (rc) { dev_err(dev, "IDXD sysfs setup failed\n"); - return -ENODEV; + goto err; } idxd->state = IDXD_DEV_CONF_READY; @@ -432,6 +436,13 @@ static int idxd_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) idxd->hw.version); return 0; + + err: + pci_iounmap(pdev, idxd->reg_base); + err_iomap: + err_idxd_alloc: + pci_disable_device(pdev); + return rc; } static void idxd_flush_pending_llist(struct idxd_irq_entry *ie) @@ -487,6 +498,8 @@ static void idxd_shutdown(struct pci_dev *pdev) idxd_msix_perm_clear(idxd); pci_free_irq_vectors(pdev); + pci_iounmap(pdev, idxd->reg_base); + pci_disable_device(pdev); destroy_workqueue(idxd->wq); } -- 2.30.2