On 01/28/2015 01:13 PM, Bjorn Helgaas wrote:
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
index fd60806..c3e7dfc 100644
--- a/drivers/pci/msi.c
+++ b/drivers/pci/msi.c
@@ -694,11 +694,16 @@ static void __iomem *msix_map_region(struct pci_dev *dev, unsigned nr_entries)
{
resource_size_t phys_addr;
u32 table_offset;
+ unsigned long flags;
u8 bir;
pci_read_config_dword(dev, dev->msix_cap + PCI_MSIX_TABLE,
&table_offset);
bir = (u8)(table_offset & PCI_MSIX_TABLE_BIR);
+ flags = pci_resource_flags(dev, bir);
+ if (!flags || (flags & IORESOURCE_UNSET))
+ return NULL;
Thanks, this looks better.
There's similar code in xen_initdom_setup_msi_irqs() that looks like it
might require a similar fix.
Right, I think it does.
One question: do we need to check flags for IORESOURCE_DISABLED as well?
Currently IORESOURCE_DISABLED and IORESOURCE_UNSET are set together for
PCI so it probably doesn't matter right now but if this changes we won't
want to use BAR that's disabled, will we?
-boris
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html