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

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