[Qemu-devel] [PATCH] s390x/pci: Set the iommu region size as guest wants

Pierre Morel posted 1 patch 6 years, 10 months ago
Test checkpatch passed
Test asan passed
Test docker-mingw@fedora passed
Test docker-quick@centos7 passed
Test docker-clang@ubuntu passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/1546968819-8166-1-git-send-email-pmorel@linux.ibm.com
hw/s390x/s390-pci-bus.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[Qemu-devel] [PATCH] s390x/pci: Set the iommu region size as guest wants
Posted by Pierre Morel 6 years, 10 months ago
The size of the accessible iommu memory region in the guest
is calculated by the gues as:
    (PCI Address Limit) - (PCI Base Address) + 1.

Let's use this value to limit the IOMMU region size.

Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
---
 hw/s390x/s390-pci-bus.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c
index 69e0671..e97696a 100644
--- a/hw/s390x/s390-pci-bus.c
+++ b/hw/s390x/s390-pci-bus.c
@@ -660,7 +660,7 @@ void s390_pci_iommu_enable(S390PCIIOMMU *iommu)
     char *name = g_strdup_printf("iommu-s390-%04x", iommu->pbdev->uid);
     memory_region_init_iommu(&iommu->iommu_mr, sizeof(iommu->iommu_mr),
                              TYPE_S390_IOMMU_MEMORY_REGION, OBJECT(&iommu->mr),
-                             name, iommu->pal + 1);
+                             name, iommu->pal - iommu->pba + 1);
     iommu->enabled = true;
     memory_region_add_subregion(&iommu->mr, 0, MEMORY_REGION(&iommu->iommu_mr));
     g_free(name);
-- 
2.7.4


Re: [Qemu-devel] [PATCH] s390x/pci: Set the iommu region size as guest wants
Posted by Cornelia Huck 6 years, 10 months ago
On Tue,  8 Jan 2019 18:33:39 +0100
Pierre Morel <pmorel@linux.ibm.com> wrote:

> The size of the accessible iommu memory region in the guest
> is calculated by the gues as:

s/gues/guest/

>     (PCI Address Limit) - (PCI Base Address) + 1.
> 
> Let's use this value to limit the IOMMU region size.

These are values provided by the guest in the mpcifc call, aren't they?
Let's mention that in the patch description, so it is more obvious :)

> 
> Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
> ---
>  hw/s390x/s390-pci-bus.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c
> index 69e0671..e97696a 100644
> --- a/hw/s390x/s390-pci-bus.c
> +++ b/hw/s390x/s390-pci-bus.c
> @@ -660,7 +660,7 @@ void s390_pci_iommu_enable(S390PCIIOMMU *iommu)
>      char *name = g_strdup_printf("iommu-s390-%04x", iommu->pbdev->uid);
>      memory_region_init_iommu(&iommu->iommu_mr, sizeof(iommu->iommu_mr),
>                               TYPE_S390_IOMMU_MEMORY_REGION, OBJECT(&iommu->mr),
> -                             name, iommu->pal + 1);
> +                             name, iommu->pal - iommu->pba + 1);
>      iommu->enabled = true;
>      memory_region_add_subregion(&iommu->mr, 0, MEMORY_REGION(&iommu->iommu_mr));
>      g_free(name);


Re: [Qemu-devel] [PATCH] s390x/pci: Set the iommu region size as guest wants
Posted by Pierre Morel 6 years, 10 months ago
On 09/01/2019 13:59, Cornelia Huck wrote:
> On Tue,  8 Jan 2019 18:33:39 +0100
> Pierre Morel <pmorel@linux.ibm.com> wrote:
> 
>> The size of the accessible iommu memory region in the guest
>> is calculated by the gues as:
> 
> s/gues/guest/
> 
>>      (PCI Address Limit) - (PCI Base Address) + 1.
>>
>> Let's use this value to limit the IOMMU region size.
> 
> These are values provided by the guest in the mpcifc call, aren't they?
> Let's mention that in the patch description, so it is more obvious :)
> 

OK thanks.

Regards,
Pierre

-- 
Pierre Morel
Linux/KVM/QEMU in Böblingen - Germany