PCI/MSI: Correct 'can_mask' test in msi_add_msi_desc()
authorJosef Johansson <josef@oderland.se>
Mon, 14 Feb 2022 10:07:47 +0000 (11:07 +0100)
committerBjorn Helgaas <bhelgaas@google.com>
Fri, 26 Aug 2022 15:47:54 +0000 (10:47 -0500)
71020a3c0dff4 ("PCI/MSI: Use msi_add_msi_desc()") inadvertently reversed
the sense of "msi_attrib.can_mask" in one use:

  - if (entry->pci.msi_attrib.can_mask) {
  -         addr = pci_msix_desc_addr(entry);
  -         entry->pci.msix_ctrl = readl(addr + PCI_MSIX_ENTRY_VECTOR_CTRL);
  + if (!desc.pci.msi_attrib.can_mask) {
  +         addr = pci_msix_desc_addr(&desc);
  +         desc.pci.msix_ctrl = readl(addr + PCI_MSIX_ENTRY_VECTOR_CTRL);

Restore the original test.

[bhelgaas: commit log]
Fixes: 71020a3c0dff4 ("PCI/MSI: Use msi_add_msi_desc()")
Link: https://lore.kernel.org/r/d818f9c9-a432-213e-4152-eaff3b7da52e@oderland.se
Signed-off-by: Josef Johansson <josef@oderland.se>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/pci/msi/msi.c

index 9037a78..fdd2ec0 100644 (file)
@@ -526,7 +526,7 @@ static int msix_setup_msi_descs(struct pci_dev *dev, void __iomem *base,
                desc.pci.msi_attrib.can_mask = !pci_msi_ignore_mask &&
                                               !desc.pci.msi_attrib.is_virtual;
 
-               if (!desc.pci.msi_attrib.can_mask) {
+               if (desc.pci.msi_attrib.can_mask) {
                        addr = pci_msix_desc_addr(&desc);
                        desc.pci.msix_ctrl = readl(addr + PCI_MSIX_ENTRY_VECTOR_CTRL);
                }