diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2025-03-19 11:56:49 +0100 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2025-04-09 20:47:29 +0200 |
commit | b0c44a5ec3552f89c47dac9903d99c22d796d87f (patch) | |
tree | f7c70cd8b50f2bce8ddeba162081e111594409e0 | |
parent | 497f68cff6219713a66a70a45e1fa4caf237a76b (diff) |
PCI/MSI: Set pci_dev:: Msi_enabled late
The comment claiming that pci_dev::msi_enabled has to be set across setup
is a leftover from ancient code versions. Nothing in the setup code
requires the flag to be set anymore.
Set it in the success path and remove the extra goto label.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Link: https://lore.kernel.org/all/20250319105506.383222333@linutronix.de
-rw-r--r-- | drivers/pci/msi/msi.c | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/drivers/pci/msi/msi.c b/drivers/pci/msi/msi.c index 3283baa257ed..c26e51682a4a 100644 --- a/drivers/pci/msi/msi.c +++ b/drivers/pci/msi/msi.c @@ -358,12 +358,8 @@ static int msi_capability_init(struct pci_dev *dev, int nvec, if (nvec > 1 && !pci_msi_domain_supports(dev, MSI_FLAG_MULTI_PCI_MSI, ALLOW_LEGACY)) return 1; - /* - * Disable MSI during setup in the hardware, but mark it enabled - * so that setup code can evaluate it. - */ + /* Disable MSI during setup in the hardware to erase stale state */ pci_msi_set_enable(dev, 0); - dev->msi_enabled = 1; if (affd) masks = irq_create_affinity_masks(nvec, affd); @@ -371,7 +367,7 @@ static int msi_capability_init(struct pci_dev *dev, int nvec, msi_lock_descs(&dev->dev); ret = msi_setup_msi_desc(dev, nvec, masks); if (ret) - goto fail; + goto unlock; /* All MSIs are unmasked by default; mask them all */ entry = msi_first_desc(&dev->dev, MSI_DESC_ALL); @@ -393,6 +389,7 @@ static int msi_capability_init(struct pci_dev *dev, int nvec, goto err; /* Set MSI enabled bits */ + dev->msi_enabled = 1; pci_intx_for_msi(dev, 0); pci_msi_set_enable(dev, 1); @@ -403,8 +400,6 @@ static int msi_capability_init(struct pci_dev *dev, int nvec, err: pci_msi_unmask(&desc, msi_multi_mask(&desc)); pci_free_msi_irqs(dev); -fail: - dev->msi_enabled = 0; unlock: msi_unlock_descs(&dev->dev); kfree(masks); |