Commit b0c44a5e authored by Thomas Gleixner's avatar Thomas Gleixner
Browse files

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: default avatarThomas Gleixner <tglx@linutronix.de>
Acked-by: default avatarBjorn Helgaas <bhelgaas@google.com>
Link: https://lore.kernel.org/all/20250319105506.383222333@linutronix.de
parent 497f68cf
Loading
Loading
Loading
Loading
+3 −8
Original line number Diff line number Diff line
@@ -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);