Blame SOURCES/kvm-s390x-pci-Set-the-iommu-region-size-mpcifc-request.patch

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