This patch fixes offset of MSI-X memory mapped table.
Current code does not set dev->msix->table_off variable.
The offset of MSI-X memory mapped table is treated as 0.
The wrong region is unmapped from guest physical memory space.
As a result, guest device driver can't access memory mapped resource.
The patch fixes this issue. My MegaRAID SAS assigned to guest domain
becomes working with the patch.
Signed-off-by: Yuji Shimada <shimada-yxb@necst.nec.co.jp>
(cherry picked from commit
5c3b16ef00b18d0c43574060ef124b4c52b2e998)
table_off = pci_read_long(pd, pos + PCI_MSIX_TABLE);
bar_index = dev->msix->bar_index = table_off & PCI_MSIX_BIR;
- table_off &= table_off & ~PCI_MSIX_BIR;
+ table_off = dev->msix->table_off = table_off & ~PCI_MSIX_BIR;
dev->msix->table_base = dev->pci_dev->base_addr[bar_index];
PT_LOG("get MSI-X table bar base %llx\n",
(unsigned long long)dev->msix->table_base);