From: Philipp Stanner <pstanner@redhat.com>
To: amien Le Moal <dlemoal@kernel.org>,
Niklas Cassel <cassel@kernel.org>,
Basavaraj Natikar <basavaraj.natikar@amd.com>,
Jiri Kosina <jikos@kernel.org>,
Benjamin Tissoires <bentiss@kernel.org>,
Arnd Bergmann <arnd@arndb.de>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Alex Dubov <oakad@yahoo.com>,
Sudarsana Kalluru <skalluru@marvell.com>,
Manish Chopra <manishc@marvell.com>,
Andrew Lunn <andrew+netdev@lunn.ch>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Rasesh Mody <rmody@marvell.com>,
GR-Linux-NIC-Dev@marvell.com,
Igor Mitsyanko <imitsyanko@quantenna.com>,
Sergey Matyukevich <geomatsi@gmail.com>,
Kalle Valo <kvalo@kernel.org>,
Sanjay R Mehta <sanju.mehta@amd.com>,
Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
Jon Mason <jdmason@kudzu.us>, Dave Jiang <dave.jiang@intel.com>,
Allen Hubbe <allenbh@gmail.com>,
Bjorn Helgaas <bhelgaas@google.com>,
Alex Williamson <alex.williamson@redhat.com>,
Juergen Gross <jgross@suse.com>,
Stefano Stabellini <sstabellini@kernel.org>,
Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
Mario Limonciello <mario.limonciello@amd.com>,
Chen Ni <nichen@iscas.ac.cn>,
Philipp Stanner <pstanner@redhat.com>,
Ricky Wu <ricky_wu@realtek.com>,
Al Viro <viro@zeniv.linux.org.uk>,
Breno Leitao <leitao@debian.org>,
Thomas Gleixner <tglx@linutronix.de>,
Kevin Tian <kevin.tian@intel.com>,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Mostafa Saleh <smostafa@google.com>,
Jason Gunthorpe <jgg@ziepe.ca>, Yi Liu <yi.l.liu@intel.com>,
Kunwu Chan <chentao@kylinos.cn>,
Dan Carpenter <dan.carpenter@linaro.org>,
"Dr. David Alan Gilbert" <linux@treblig.org>,
Ankit Agrawal <ankita@nvidia.com>,
Reinette Chatre <reinette.chatre@intel.com>,
Eric Auger <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>
Cc: linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-input@vger.kernel.org, netdev@vger.kernel.org,
linux-wireless@vger.kernel.org, ntb@lists.linux.dev,
linux-pci@vger.kernel.org, kvm@vger.kernel.org,
xen-devel@lists.xenproject.org
Subject: [PATCH v3 11/11] Remove devres from pci_intx()
Date: Mon, 9 Dec 2024 14:06:33 +0100 [thread overview]
Message-ID: <20241209130632.132074-13-pstanner@redhat.com> (raw)
In-Reply-To: <20241209130632.132074-2-pstanner@redhat.com>
pci_intx() is a hybrid function which can sometimes be managed through
devres. This hybrid nature is undesirable.
Since all users of pci_intx() have by now been ported either to
always-managed pcim_intx() or never-managed pci_intx_unmanaged(), the
devres functionality can be removed from pci_intx().
Consequently, pci_intx_unmanaged() is now redundant, because pci_intx()
itself is now unmanaged.
Remove the devres functionality from pci_intx(). Have all users of
pci_intx_unmanaged() call pci_intx(). Remove pci_intx_unmanaged().
Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
drivers/misc/cardreader/rtsx_pcr.c | 2 +-
drivers/misc/tifm_7xx1.c | 6 +--
.../net/ethernet/broadcom/bnx2x/bnx2x_main.c | 2 +-
drivers/net/ethernet/brocade/bna/bnad.c | 2 +-
drivers/ntb/hw/amd/ntb_hw_amd.c | 4 +-
drivers/ntb/hw/intel/ntb_hw_gen1.c | 2 +-
drivers/pci/devres.c | 4 +-
drivers/pci/msi/api.c | 2 +-
drivers/pci/msi/msi.c | 2 +-
drivers/pci/pci.c | 43 +------------------
drivers/vfio/pci/vfio_pci_core.c | 2 +-
drivers/vfio/pci/vfio_pci_intrs.c | 10 ++---
| 2 +-
include/linux/pci.h | 1 -
14 files changed, 22 insertions(+), 62 deletions(-)
diff --git a/drivers/misc/cardreader/rtsx_pcr.c b/drivers/misc/cardreader/rtsx_pcr.c
index e25e6d560dd7..be3d4e0e50cc 100644
--- a/drivers/misc/cardreader/rtsx_pcr.c
+++ b/drivers/misc/cardreader/rtsx_pcr.c
@@ -1057,7 +1057,7 @@ static int rtsx_pci_acquire_irq(struct rtsx_pcr *pcr)
}
pcr->irq = pcr->pci->irq;
- pci_intx_unmanaged(pcr->pci, !pcr->msi_en);
+ pci_intx(pcr->pci, !pcr->msi_en);
return 0;
}
diff --git a/drivers/misc/tifm_7xx1.c b/drivers/misc/tifm_7xx1.c
index 5f9c7ccae8d2..1d54680d6ed2 100644
--- a/drivers/misc/tifm_7xx1.c
+++ b/drivers/misc/tifm_7xx1.c
@@ -327,7 +327,7 @@ static int tifm_7xx1_probe(struct pci_dev *dev,
goto err_out;
}
- pci_intx_unmanaged(dev, 1);
+ pci_intx(dev, 1);
fm = tifm_alloc_adapter(dev->device == PCI_DEVICE_ID_TI_XX21_XX11_FM
? 4 : 2, &dev->dev);
@@ -368,7 +368,7 @@ static int tifm_7xx1_probe(struct pci_dev *dev,
err_out_free:
tifm_free_adapter(fm);
err_out_int:
- pci_intx_unmanaged(dev, 0);
+ pci_intx(dev, 0);
pci_release_regions(dev);
err_out:
if (!pci_dev_busy)
@@ -392,7 +392,7 @@ static void tifm_7xx1_remove(struct pci_dev *dev)
tifm_7xx1_sock_power_off(tifm_7xx1_sock_addr(fm->addr, cnt));
iounmap(fm->addr);
- pci_intx_unmanaged(dev, 0);
+ pci_intx(dev, 0);
pci_release_regions(dev);
pci_disable_device(dev);
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
index 2ae63d6e6792..678829646cec 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
@@ -1669,7 +1669,7 @@ static void bnx2x_igu_int_enable(struct bnx2x *bp)
REG_WR(bp, IGU_REG_PF_CONFIGURATION, val);
if (val & IGU_PF_CONF_INT_LINE_EN)
- pci_intx_unmanaged(bp->pdev, true);
+ pci_intx(bp->pdev, true);
barrier();
diff --git a/drivers/net/ethernet/brocade/bna/bnad.c b/drivers/net/ethernet/brocade/bna/bnad.c
index 2b37462d406e..ece6f3b48327 100644
--- a/drivers/net/ethernet/brocade/bna/bnad.c
+++ b/drivers/net/ethernet/brocade/bna/bnad.c
@@ -2669,7 +2669,7 @@ bnad_enable_msix(struct bnad *bnad)
}
}
- pci_intx_unmanaged(bnad->pcidev, 0);
+ pci_intx(bnad->pcidev, 0);
return;
diff --git a/drivers/ntb/hw/amd/ntb_hw_amd.c b/drivers/ntb/hw/amd/ntb_hw_amd.c
index b146f170e839..d687e8c2cc78 100644
--- a/drivers/ntb/hw/amd/ntb_hw_amd.c
+++ b/drivers/ntb/hw/amd/ntb_hw_amd.c
@@ -791,7 +791,7 @@ static int ndev_init_isr(struct amd_ntb_dev *ndev,
err_msi_enable:
/* Try to set up intx irq */
- pci_intx_unmanaged(pdev, 1);
+ pci_intx(pdev, 1);
rc = request_irq(pdev->irq, ndev_irq_isr, IRQF_SHARED,
"ndev_irq_isr", ndev);
@@ -831,7 +831,7 @@ static void ndev_deinit_isr(struct amd_ntb_dev *ndev)
if (pci_dev_msi_enabled(pdev))
pci_disable_msi(pdev);
else
- pci_intx_unmanaged(pdev, 0);
+ pci_intx(pdev, 0);
}
}
diff --git a/drivers/ntb/hw/intel/ntb_hw_gen1.c b/drivers/ntb/hw/intel/ntb_hw_gen1.c
index 9ad9d7fe227e..079b8cd79785 100644
--- a/drivers/ntb/hw/intel/ntb_hw_gen1.c
+++ b/drivers/ntb/hw/intel/ntb_hw_gen1.c
@@ -445,7 +445,7 @@ int ndev_init_isr(struct intel_ntb_dev *ndev,
/* Try to set up intx irq */
- pci_intx_unmanaged(pdev, 1);
+ pci_intx(pdev, 1);
rc = request_irq(pdev->irq, ndev_irq_isr, IRQF_SHARED,
"ndev_irq_isr", ndev);
diff --git a/drivers/pci/devres.c b/drivers/pci/devres.c
index 3594eea37993..cc3195134721 100644
--- a/drivers/pci/devres.c
+++ b/drivers/pci/devres.c
@@ -416,7 +416,7 @@ static void pcim_intx_restore(struct device *dev, void *data)
struct pci_dev *pdev = to_pci_dev(dev);
struct pcim_intx_devres *res = data;
- pci_intx_unmanaged(pdev, res->orig_intx);
+ pci_intx(pdev, res->orig_intx);
}
static struct pcim_intx_devres *get_or_create_intx_devres(struct device *dev)
@@ -453,7 +453,7 @@ int pcim_intx(struct pci_dev *pdev, int enable)
return -ENOMEM;
res->orig_intx = !enable;
- pci_intx_unmanaged(pdev, enable);
+ pci_intx(pdev, enable);
return 0;
}
diff --git a/drivers/pci/msi/api.c b/drivers/pci/msi/api.c
index c95e2e7dc9ab..b956ce591f96 100644
--- a/drivers/pci/msi/api.c
+++ b/drivers/pci/msi/api.c
@@ -289,7 +289,7 @@ int pci_alloc_irq_vectors_affinity(struct pci_dev *dev, unsigned int min_vecs,
*/
if (affd)
irq_create_affinity_masks(1, affd);
- pci_intx_unmanaged(dev, 1);
+ pci_intx(dev, 1);
return 1;
}
}
diff --git a/drivers/pci/msi/msi.c b/drivers/pci/msi/msi.c
index 53f13b09db50..3a45879d85db 100644
--- a/drivers/pci/msi/msi.c
+++ b/drivers/pci/msi/msi.c
@@ -268,7 +268,7 @@ EXPORT_SYMBOL_GPL(pci_write_msi_msg);
static void pci_intx_for_msi(struct pci_dev *dev, int enable)
{
if (!(dev->dev_flags & PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG))
- pci_intx_unmanaged(dev, enable);
+ pci_intx(dev, enable);
}
static void pci_msi_set_enable(struct pci_dev *dev, int enable)
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 30d17ec771fc..121eb7b0b1b7 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -4483,17 +4483,13 @@ void pci_disable_parity(struct pci_dev *dev)
}
/**
- * pci_intx_unmanaged - enables/disables PCI INTx for device dev,
- * unmanaged version
+ * pci_intx - enables/disables PCI INTx for device dev
* @pdev: the PCI device to operate on
* @enable: boolean: whether to enable or disable PCI INTx
*
* Enables/disables PCI INTx for device @pdev
- *
- * This function behavios identically to pci_intx(), but is never managed with
- * devres.
*/
-void pci_intx_unmanaged(struct pci_dev *pdev, int enable)
+void pci_intx(struct pci_dev *pdev, int enable)
{
u16 pci_command, new;
@@ -4509,41 +4505,6 @@ void pci_intx_unmanaged(struct pci_dev *pdev, int enable)
pci_write_config_word(pdev, PCI_COMMAND, new);
}
-EXPORT_SYMBOL_GPL(pci_intx_unmanaged);
-
-/**
- * pci_intx - enables/disables PCI INTx for device dev
- * @pdev: the PCI device to operate on
- * @enable: boolean: whether to enable or disable PCI INTx
- *
- * Enables/disables PCI INTx for device @pdev
- *
- * NOTE:
- * This is a "hybrid" function: It's normally unmanaged, but becomes managed
- * when pcim_enable_device() has been called in advance. This hybrid feature is
- * DEPRECATED! If you want managed cleanup, use pcim_intx() instead.
- */
-void pci_intx(struct pci_dev *pdev, int enable)
-{
- u16 pci_command, new;
-
- pci_read_config_word(pdev, PCI_COMMAND, &pci_command);
-
- if (enable)
- new = pci_command & ~PCI_COMMAND_INTX_DISABLE;
- else
- new = pci_command | PCI_COMMAND_INTX_DISABLE;
-
- if (new != pci_command) {
- /* Preserve the "hybrid" behavior for backwards compatibility */
- if (pci_is_managed(pdev)) {
- WARN_ON_ONCE(pcim_intx(pdev, enable) != 0);
- return;
- }
-
- pci_write_config_word(pdev, PCI_COMMAND, new);
- }
-}
EXPORT_SYMBOL_GPL(pci_intx);
/**
diff --git a/drivers/vfio/pci/vfio_pci_core.c b/drivers/vfio/pci/vfio_pci_core.c
index 90240c8d51aa..1ab58da9f38a 100644
--- a/drivers/vfio/pci/vfio_pci_core.c
+++ b/drivers/vfio/pci/vfio_pci_core.c
@@ -498,7 +498,7 @@ int vfio_pci_core_enable(struct vfio_pci_core_device *vdev)
if (vfio_pci_nointx(pdev)) {
pci_info(pdev, "Masking broken INTx support\n");
vdev->nointx = true;
- pci_intx_unmanaged(pdev, 0);
+ pci_intx(pdev, 0);
} else
vdev->pci_2_3 = pci_intx_mask_supported(pdev);
}
diff --git a/drivers/vfio/pci/vfio_pci_intrs.c b/drivers/vfio/pci/vfio_pci_intrs.c
index 40abb0b937a2..8382c5834335 100644
--- a/drivers/vfio/pci/vfio_pci_intrs.c
+++ b/drivers/vfio/pci/vfio_pci_intrs.c
@@ -118,7 +118,7 @@ static bool __vfio_pci_intx_mask(struct vfio_pci_core_device *vdev)
*/
if (unlikely(!is_intx(vdev))) {
if (vdev->pci_2_3)
- pci_intx_unmanaged(pdev, 0);
+ pci_intx(pdev, 0);
goto out_unlock;
}
@@ -132,7 +132,7 @@ static bool __vfio_pci_intx_mask(struct vfio_pci_core_device *vdev)
* mask, not just when something is pending.
*/
if (vdev->pci_2_3)
- pci_intx_unmanaged(pdev, 0);
+ pci_intx(pdev, 0);
else
disable_irq_nosync(pdev->irq);
@@ -178,7 +178,7 @@ static int vfio_pci_intx_unmask_handler(void *opaque, void *data)
*/
if (unlikely(!is_intx(vdev))) {
if (vdev->pci_2_3)
- pci_intx_unmanaged(pdev, 1);
+ pci_intx(pdev, 1);
goto out_unlock;
}
@@ -296,7 +296,7 @@ static int vfio_intx_enable(struct vfio_pci_core_device *vdev,
*/
ctx->masked = vdev->virq_disabled;
if (vdev->pci_2_3) {
- pci_intx_unmanaged(pdev, !ctx->masked);
+ pci_intx(pdev, !ctx->masked);
irqflags = IRQF_SHARED;
} else {
irqflags = ctx->masked ? IRQF_NO_AUTOEN : 0;
@@ -569,7 +569,7 @@ static void vfio_msi_disable(struct vfio_pci_core_device *vdev, bool msix)
* via their shutdown paths. Restore for NoINTx devices.
*/
if (vdev->nointx)
- pci_intx_unmanaged(pdev, 0);
+ pci_intx(pdev, 0);
vdev->irq_type = VFIO_PCI_NUM_IRQS;
}
--git a/drivers/xen/xen-pciback/conf_space_header.c b/drivers/xen/xen-pciback/conf_space_header.c
index 8d26d64232e8..fc0332645966 100644
--- a/drivers/xen/xen-pciback/conf_space_header.c
+++ b/drivers/xen/xen-pciback/conf_space_header.c
@@ -106,7 +106,7 @@ static int command_write(struct pci_dev *dev, int offset, u16 value, void *data)
if (dev_data && dev_data->allow_interrupt_control &&
((cmd->val ^ value) & PCI_COMMAND_INTX_DISABLE))
- pci_intx_unmanaged(dev, !(value & PCI_COMMAND_INTX_DISABLE));
+ pci_intx(dev, !(value & PCI_COMMAND_INTX_DISABLE));
cmd->val = value;
diff --git a/include/linux/pci.h b/include/linux/pci.h
index b5eb8bda655d..f05903dd7695 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1350,7 +1350,6 @@ int __must_check pcim_set_mwi(struct pci_dev *dev);
int pci_try_set_mwi(struct pci_dev *dev);
void pci_clear_mwi(struct pci_dev *dev);
void pci_disable_parity(struct pci_dev *dev);
-void pci_intx_unmanaged(struct pci_dev *pdev, int enable);
void pci_intx(struct pci_dev *dev, int enable);
bool pci_check_and_mask_intx(struct pci_dev *dev);
bool pci_check_and_unmask_intx(struct pci_dev *dev);
--
2.47.1
next prev parent reply other threads:[~2024-12-09 13:07 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-09 13:06 [PATCH v3 00/11] Remove implicit devres from pci_intx() Philipp Stanner
2024-12-09 13:06 ` [PATCH v3 01/11] PCI: Prepare removing " Philipp Stanner
2024-12-09 13:06 ` [PATCH v3 02/11] drivers/xen: Use never-managed version of pci_intx() Philipp Stanner
2024-12-09 13:06 ` [PATCH v3 03/11] net/ethernet: " Philipp Stanner
2024-12-12 14:56 ` Paolo Abeni
2024-12-12 19:24 ` Bjorn Helgaas
2024-12-09 13:06 ` [PATCH v3 04/11] net/ntb: " Philipp Stanner
2024-12-09 13:06 ` [PATCH v3 05/11] misc: " Philipp Stanner
2024-12-12 19:26 ` Bjorn Helgaas
2024-12-13 7:31 ` Greg Kroah-Hartman
2025-01-10 14:28 ` Greg Kroah-Hartman
2024-12-09 13:06 ` [PATCH v3 06/11] vfio/pci: " Philipp Stanner
2024-12-12 19:21 ` Bjorn Helgaas
2024-12-12 19:49 ` Alex Williamson
2024-12-09 13:06 ` [PATCH v3 07/11] PCI: MSI: " Philipp Stanner
2024-12-09 13:06 ` [PATCH v3 08/11] ata: Use always-managed " Philipp Stanner
2024-12-09 13:06 ` [PATCH v3 09/11] wifi: qtnfmac: use always-managed version of pcim_intx() Philipp Stanner
2024-12-12 19:29 ` Bjorn Helgaas
2024-12-13 10:30 ` Kalle Valo
2024-12-13 17:53 ` Bjorn Helgaas
2024-12-09 13:06 ` [PATCH v3 10/11] HID: amd_sfh: Use " Philipp Stanner
2024-12-09 13:06 ` Philipp Stanner [this message]
2024-12-12 14:58 ` [PATCH v3 11/11] Remove devres from pci_intx() Paolo Abeni
2024-12-12 19:21 ` [PATCH v3 00/11] Remove implicit " Bjorn Helgaas
2024-12-13 5:25 ` Niklas Cassel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241209130632.132074-13-pstanner@redhat.com \
--to=pstanner@redhat.com \
--cc=GR-Linux-NIC-Dev@marvell.com \
--cc=Shyam-sundar.S-k@amd.com \
--cc=alex.williamson@redhat.com \
--cc=allenbh@gmail.com \
--cc=andrew+netdev@lunn.ch \
--cc=andriy.shevchenko@linux.intel.com \
--cc=ankita@nvidia.com \
--cc=arnd@arndb.de \
--cc=basavaraj.natikar@amd.com \
--cc=bentiss@kernel.org \
--cc=bhelgaas@google.com \
--cc=cassel@kernel.org \
--cc=chentao@kylinos.cn \
--cc=dan.carpenter@linaro.org \
--cc=dave.jiang@intel.com \
--cc=davem@davemloft.net \
--cc=dlemoal@kernel.org \
--cc=edumazet@google.com \
--cc=eric.auger@redhat.com \
--cc=geomatsi@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=imitsyanko@quantenna.com \
--cc=jdmason@kudzu.us \
--cc=jgg@ziepe.ca \
--cc=jgross@suse.com \
--cc=jikos@kernel.org \
--cc=kevin.tian@intel.com \
--cc=kuba@kernel.org \
--cc=kvalo@kernel.org \
--cc=kvm@vger.kernel.org \
--cc=leitao@debian.org \
--cc=linux-ide@vger.kernel.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
--cc=linux@treblig.org \
--cc=manishc@marvell.com \
--cc=mario.limonciello@amd.com \
--cc=netdev@vger.kernel.org \
--cc=nichen@iscas.ac.cn \
--cc=ntb@lists.linux.dev \
--cc=oakad@yahoo.com \
--cc=oleksandr_tyshchenko@epam.com \
--cc=pabeni@redhat.com \
--cc=reinette.chatre@intel.com \
--cc=ricky_wu@realtek.com \
--cc=rmody@marvell.com \
--cc=sanju.mehta@amd.com \
--cc=skalluru@marvell.com \
--cc=smostafa@google.com \
--cc=sstabellini@kernel.org \
--cc=tglx@linutronix.de \
--cc=viro@zeniv.linux.org.uk \
--cc=xen-devel@lists.xenproject.org \
--cc=yebin10@huawei.com \
--cc=yi.l.liu@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.