msix_flush_writes() is being called exclusively after calling msi_set_mask_bit(),
and that function already does follow writel() by readl() in the MSI-X case.

Signed-off-by: Jan Beulich
Reviewed-by: Grant Grundler

---
drivers/pci/msi.c | 25 -------------------------
1 file changed, 25 deletions(-)

--- linux-2.6.28-rc4/drivers/pci/msi.c 2008-11-11 11:11:20.000000000 +0100
+++ 2.6.28-rc4-pci-msix-flush-writes/drivers/pci/msi.c 2008-11-07 09:11:36.000000000 +0100
@@ -103,29 +103,6 @@ static void msix_set_enable(struct pci_d
}
}

-static void msix_flush_writes(unsigned int irq)
-{
- struct msi_desc *entry;
-
- entry = get_irq_msi(irq);
- BUG_ON(!entry || !entry->dev);
- switch (entry->msi_attrib.type) {
- case PCI_CAP_ID_MSI:
- /* nothing to do */
- break;
- case PCI_CAP_ID_MSIX:
- {
- int offset = entry->msi_attrib.entry_nr * PCI_MSIX_ENTRY_SIZE +
- PCI_MSIX_ENTRY_VECTOR_CTRL_OFFSET;
- readl(entry->mask_base + offset);
- break;
- }
- default:
- BUG();
- break;
- }
-}
-
/*
* PCI 2.3 does not specify mask bits for each MSI interrupt. Attempting to
* mask all MSI interrupts by clearing the MSI enable bit does not work
@@ -255,13 +232,11 @@ void write_msi_msg(unsigned int irq, str
void mask_msi_irq(unsigned int irq)
{
msi_set_mask_bits(irq, 1, 1);
- msix_flush_writes(irq);
}

void unmask_msi_irq(unsigned int irq)
{
msi_set_mask_bits(irq, 1, 0);
- msix_flush_writes(irq);
}

static int msi_free_irqs(struct pci_dev* dev);



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/