summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYi Min Zhao <zyimin@linux.vnet.ibm.com>2016-06-19 19:20:46 +0800
committerCornelia Huck <cornelia.huck@de.ibm.com>2016-07-11 09:48:05 +0200
commitf7c40aa1e7feb50bc4d4bc171fa811bdd9a93e51 (patch)
tree40df3ca5f514ded25a90bb5709d01fa6ea129812
parentb804e8a62a25b82637b19aea68ab7d5a7a1ce0fb (diff)
downloadqemu-f7c40aa1e7feb50bc4d4bc171fa811bdd9a93e51.tar.gz
qemu-f7c40aa1e7feb50bc4d4bc171fa811bdd9a93e51.tar.bz2
qemu-f7c40aa1e7feb50bc4d4bc171fa811bdd9a93e51.zip
s390x/pci: fix failures of dma map/unmap
In commit d78c19b5cf4821d0c198f4132a085bdbf19dda4c, vfio code stores the IOMMU's offset_within_address_space and adjusts the IOVA before calling vfio_dma_map/vfio_dma_unmap. But s390_translate_iommu already considers the base address of an IOMMU memory region. Thus we use pal as the size and 0x0 as the base address to initialize IOMMU memory subregion. Signed-off-by: Yi Min Zhao <zyimin@linux.vnet.ibm.com> Reviewed-by: Pierre Morel <pmorel@linux.vnet.ibm.com> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
-rw-r--r--hw/s390x/s390-pci-bus.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c
index a77c10ce9e..8f03b82469 100644
--- a/hw/s390x/s390-pci-bus.c
+++ b/hw/s390x/s390-pci-bus.c
@@ -498,11 +498,9 @@ static const MemoryRegionOps s390_msi_ctrl_ops = {
void s390_pci_iommu_enable(S390PCIBusDevice *pbdev)
{
- uint64_t size = pbdev->pal - pbdev->pba + 1;
-
memory_region_init_iommu(&pbdev->iommu_mr, OBJECT(&pbdev->mr),
- &s390_iommu_ops, "iommu-s390", size);
- memory_region_add_subregion(&pbdev->mr, pbdev->pba, &pbdev->iommu_mr);
+ &s390_iommu_ops, "iommu-s390", pbdev->pal + 1);
+ memory_region_add_subregion(&pbdev->mr, 0, &pbdev->iommu_mr);
pbdev->iommu_enabled = true;
}