diff options
Diffstat (limited to 'drivers/pci/msi.c')
-rw-r--r-- | drivers/pci/msi.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c index fd60806d3fd0..c3e7dfcf9ff5 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) | |||
694 | { | 694 | { |
695 | resource_size_t phys_addr; | 695 | resource_size_t phys_addr; |
696 | u32 table_offset; | 696 | u32 table_offset; |
697 | unsigned long flags; | ||
697 | u8 bir; | 698 | u8 bir; |
698 | 699 | ||
699 | pci_read_config_dword(dev, dev->msix_cap + PCI_MSIX_TABLE, | 700 | pci_read_config_dword(dev, dev->msix_cap + PCI_MSIX_TABLE, |
700 | &table_offset); | 701 | &table_offset); |
701 | bir = (u8)(table_offset & PCI_MSIX_TABLE_BIR); | 702 | bir = (u8)(table_offset & PCI_MSIX_TABLE_BIR); |
703 | flags = pci_resource_flags(dev, bir); | ||
704 | if (!flags || (flags & IORESOURCE_UNSET)) | ||
705 | return NULL; | ||
706 | |||
702 | table_offset &= PCI_MSIX_TABLE_OFFSET; | 707 | table_offset &= PCI_MSIX_TABLE_OFFSET; |
703 | phys_addr = pci_resource_start(dev, bir) + table_offset; | 708 | phys_addr = pci_resource_start(dev, bir) + table_offset; |
704 | 709 | ||