On Wed, 2015-11-11 at 06:57 +0100, Peter Krempa wrote:
Based on Alex's explanation [1] in the recent discussion
let's update
the comment explaining the memory lock limit calculation.
[1]
http://www.redhat.com/archives/libvir-list/2015-November/msg00329.html
I'd rather have the reference to Alex's explanation as part of
the comment itself, so that it's easier to look up later
without having to dig through the git log, but that's just my
personal preference.
---
src/qemu/qemu_domain.c | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 12517a5..11cd39e 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -3639,9 +3639,22 @@ qemuDomainGetMlockLimitBytes(virDomainDefPtr def)
goto done;
}
- /* VFIO requires all of the guest's memory to be locked resident, plus some
- * amount for IO space. Alex Williamson suggested adding 1GiB for IO space
- * just to be safe (some finer tuning might be nice, though). */
+ /* For device pasthrough using VFIO the guest memory and MMIO memory regions
s/pasthrough/passthrough/
+ * need to be locked persistent in order to allow DMA.
+ *
+ * Currently the below limit is based on assumptions about the x86 platform.
+ *
+ * The chosen value of 1GiB below originates from x86 systems where it was
+ * the used as space reserved for the MMIO region for the whole system.
s/the used/used/
+ *
+ * On x86_64 systems the MMIO regions of the IOMMU mapped devices don't
+ * count towards the locked memory limit since the memory is owned by the
+ * device. Emulated devices though do count, but the regions are usually
+ * small. Although it's not guaranteed that the limit will be enough for all
+ * configurations it didn't pose a problem for now.
+ *
+ * Note that this may not be valid for all platforms.
+ */
memKB = virDomainDefGetMemoryActual(def) + 1024 * 1024;
done:
ACK with the typos fixed.
Cheers.
--
Andrea Bolognani
Software Engineer - Virtualization Team