[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 3/3] vfio: Fix 128 bit handling
From: |
Alexey Kardashevskiy |
Subject: |
[Qemu-devel] [PATCH v3 3/3] vfio: Fix 128 bit handling |
Date: |
Thu, 22 Aug 2013 21:29:25 +1000 |
Upcoming VFIO on SPAPR PPC64 support will initialize the IOMMU
memory region with UINT64_MAX (2^64 bytes) size so int128_get64()
will assert.
The patch takes care of this check. The existing type1 IOMMU code
is not expected to map all 64 bits of RAM so the patch does not
touch that part.
Signed-off-by: Alexey Kardashevskiy <address@hidden>
---
Changes:
v2:
* used new function int128_exts64()
---
hw/misc/vfio.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/hw/misc/vfio.c b/hw/misc/vfio.c
index dfe3a80..3878fc7 100644
--- a/hw/misc/vfio.c
+++ b/hw/misc/vfio.c
@@ -1920,6 +1920,7 @@ static void vfio_listener_region_add(MemoryListener
*listener,
VFIOContainer *container = container_of(listener, VFIOContainer,
iommu_data.listener);
hwaddr iova, end;
+ Int128 llend;
void *vaddr;
int ret;
@@ -1940,13 +1941,17 @@ static void vfio_listener_region_add(MemoryListener
*listener,
}
iova = TARGET_PAGE_ALIGN(section->offset_within_address_space);
- end = (section->offset_within_address_space + int128_get64(section->size))
&
- TARGET_PAGE_MASK;
+ llend = int128_make64(section->offset_within_address_space);
+ llend = int128_add(llend, section->size);
+ llend = int128_and(llend, int128_exts64(TARGET_PAGE_MASK));
- if (iova >= end) {
+ if (int128_ge(int128_make64(iova), llend)) {
return;
}
+ end = (section->offset_within_address_space + int128_get64(section->size))
&
+ TARGET_PAGE_MASK;
+
vaddr = memory_region_get_ram_ptr(section->mr) +
section->offset_within_region +
(iova - section->offset_within_address_space);
--
1.8.4.rc4
- [Qemu-devel] [PATCH v3 0/3] vfio: fixes for better support for 128 bit memory section sizes, Alexey Kardashevskiy, 2013/08/22
- [Qemu-devel] [PATCH v3 1/3] int128: add int128_exts64(), Alexey Kardashevskiy, 2013/08/22
- [Qemu-devel] [PATCH v3 2/3] vfio: Fix debug output for int128 values, Alexey Kardashevskiy, 2013/08/22
- [Qemu-devel] [PATCH v3 3/3] vfio: Fix 128 bit handling,
Alexey Kardashevskiy <=
- Re: [Qemu-devel] [PATCH v3 3/3] vfio: Fix 128 bit handling, Alex Williamson, 2013/08/28
- Re: [Qemu-devel] [PATCH v3 3/3] vfio: Fix 128 bit handling, Alexey Kardashevskiy, 2013/08/28
- Re: [Qemu-devel] [PATCH v3 3/3] vfio: Fix 128 bit handling, Alex Williamson, 2013/08/28
- Re: [Qemu-devel] [PATCH v3 3/3] vfio: Fix 128 bit handling, Alexey Kardashevskiy, 2013/08/28
- Re: [Qemu-devel] [PATCH v3 3/3] vfio: Fix 128 bit handling, Paolo Bonzini, 2013/08/29
- Re: [Qemu-devel] [PATCH v3 3/3] vfio: Fix 128 bit handling, Alexey Kardashevskiy, 2013/08/29
- Re: [Qemu-devel] [PATCH v3 3/3] vfio: Fix 128 bit handling, Paolo Bonzini, 2013/08/29
- Re: [Qemu-devel] [PATCH v3 3/3] vfio: Fix 128 bit handling, Alexey Kardashevskiy, 2013/08/30
- Re: [Qemu-devel] [PATCH v3 3/3] vfio: Fix 128 bit handling, Paolo Bonzini, 2013/08/30
- Re: [Qemu-devel] [PATCH v3 3/3] vfio: Fix 128 bit handling, Alexey Kardashevskiy, 2013/08/30