Pablo Greco e6a3ae
From 15b59b77a4c7b9ef38e82b57a1dcdeb5c88b3156 Mon Sep 17 00:00:00 2001
Pablo Greco e6a3ae
From: Cornelia Huck <cohuck@redhat.com>
Pablo Greco e6a3ae
Date: Wed, 17 Apr 2019 13:57:28 +0100
Pablo Greco e6a3ae
Subject: [PATCH 11/24] s390x/pci: Set the iommu region size mpcifc request
Pablo Greco e6a3ae
Pablo Greco e6a3ae
RH-Author: Cornelia Huck <cohuck@redhat.com>
Pablo Greco e6a3ae
Message-id: <20190417135741.25297-12-cohuck@redhat.com>
Pablo Greco e6a3ae
Patchwork-id: 85793
Pablo Greco e6a3ae
O-Subject: [RHEL-8.1.0 qemu-kvm PATCH v2 11/24] s390x/pci: Set the iommu region size mpcifc request
Pablo Greco e6a3ae
Bugzilla: 1699070
Pablo Greco e6a3ae
RH-Acked-by: David Hildenbrand <david@redhat.com>
Pablo Greco e6a3ae
RH-Acked-by: Thomas Huth <thuth@redhat.com>
Pablo Greco e6a3ae
RH-Acked-by: Jens Freimann <jfreimann@redhat.com>
Pablo Greco e6a3ae
Pablo Greco e6a3ae
From: Pierre Morel <pmorel@linux.ibm.com>
Pablo Greco e6a3ae
Pablo Greco e6a3ae
The size of the accessible iommu memory region in the guest
Pablo Greco e6a3ae
is given to the IOMMU by the guest through the mpcifc request
Pablo Greco e6a3ae
specifying the PCI Base Address and the PCI Address Limit.
Pablo Greco e6a3ae
Pablo Greco e6a3ae
Let's set the size of the IOMMU region to:
Pablo Greco e6a3ae
    (PCI Address Limit) - (PCI Base Address) + 1.
Pablo Greco e6a3ae
Pablo Greco e6a3ae
Fixes: f7c40aa1e7 ("s390x/pci: fix failures of dma map/unmap")
Pablo Greco e6a3ae
Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
Pablo Greco e6a3ae
Message-Id: <1547125207-16907-2-git-send-email-pmorel@linux.ibm.com>
Pablo Greco e6a3ae
Acked-by: Collin Walling <walling@linux.ibm.com>
Pablo Greco e6a3ae
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
Pablo Greco e6a3ae
(cherry picked from commit dbe9cf606c2fe7365008be2a71d7b1781bbd5435)
Pablo Greco e6a3ae
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
Pablo Greco e6a3ae
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
Pablo Greco e6a3ae
---
Pablo Greco e6a3ae
 hw/s390x/s390-pci-bus.c | 2 +-
Pablo Greco e6a3ae
 1 file changed, 1 insertion(+), 1 deletion(-)
Pablo Greco e6a3ae
Pablo Greco e6a3ae
diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c
Pablo Greco e6a3ae
index e19e134..a785acb 100644
Pablo Greco e6a3ae
--- a/hw/s390x/s390-pci-bus.c
Pablo Greco e6a3ae
+++ b/hw/s390x/s390-pci-bus.c
Pablo Greco e6a3ae
@@ -660,7 +660,7 @@ void s390_pci_iommu_enable(S390PCIIOMMU *iommu)
Pablo Greco e6a3ae
     char *name = g_strdup_printf("iommu-s390-%04x", iommu->pbdev->uid);
Pablo Greco e6a3ae
     memory_region_init_iommu(&iommu->iommu_mr, sizeof(iommu->iommu_mr),
Pablo Greco e6a3ae
                              TYPE_S390_IOMMU_MEMORY_REGION, OBJECT(&iommu->mr),
Pablo Greco e6a3ae
-                             name, iommu->pal + 1);
Pablo Greco e6a3ae
+                             name, iommu->pal - iommu->pba + 1);
Pablo Greco e6a3ae
     iommu->enabled = true;
Pablo Greco e6a3ae
     memory_region_add_subregion(&iommu->mr, 0, MEMORY_REGION(&iommu->iommu_mr));
Pablo Greco e6a3ae
     g_free(name);
Pablo Greco e6a3ae
-- 
Pablo Greco e6a3ae
1.8.3.1
Pablo Greco e6a3ae