]> git.ipfire.org Git - thirdparty/qemu.git/commit
spapr_pci: map the MSI window in each PHB
authorGreg Kurz <gkurz@linux.vnet.ibm.com>
Wed, 27 Aug 2014 16:17:12 +0000 (18:17 +0200)
committerMichael Roth <mdroth@linux.vnet.ibm.com>
Wed, 24 Dec 2014 22:08:16 +0000 (16:08 -0600)
commit490a0f887e108c4c5bd06cfb5e698129f84e89dd
treee68f4eb8452d9b82f79f0b32faca3974250662aa
parente4fb3debc3b33387fe48aaad7cee2e06b09056b1
spapr_pci: map the MSI window in each PHB

On sPAPR, virtio devices are connected to the PCI bus and use MSI-X.
Commit cc943c36faa192cd4b32af8fe5edb31894017d35 has modified MSI-X
so that writes are made using the bus master address space and follow
the IOMMU path.

Unfortunately, the IOMMU address space address space does not have an
MSI window: the notification is silently dropped in unassigned_mem_write
instead of reaching the guest... The most visible effect is that all
virtio devices are non-functional on sPAPR since then. :(

This patch does the following:
1) map the MSI window into the IOMMU address space for each PHB
   - since each PHB instantiates its own IOMMU address space, we
     can safely map the window at a fixed address (SPAPR_PCI_MSI_WINDOW)
   - no real need to keep the MSI window setup in a separate function,
     the spapr_pci_msi_init() code moves to spapr_phb_realize().

2) kill the global MSI window as it is not needed in the end

Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
(cherry picked from commit 8c46f7ec85a4dd9663489b2fa2b425cd7b3653e1)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
hw/ppc/spapr.c
hw/ppc/spapr_pci.c
include/hw/pci-host/spapr.h
include/hw/ppc/spapr.h