All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH 0/3] Balloon inhibit enhancements
@ 2018-07-17 22:47 ` Alex Williamson
  0 siblings, 0 replies; 58+ messages in thread
From: Alex Williamson @ 2018-07-17 22:47 UTC (permalink / raw)
  To: qemu-devel; +Cc: kvm

Directly assigned vfio devices have never been compatible with
ballooning.  Zapping MADV_DONTNEED pages happens completely
independent of vfio page pinning and IOMMU mapping, leaving us with
inconsistent GPA to HPA mapping between vCPUs and assigned devices
when the balloon deflates.  Mediated devices can theoretically do
better, if we make the assumption that the mdev vendor driver is fully
synchronized to the actual working set of the guest driver.  In that
case the guest balloon driver should never be able to allocate an mdev
pinned page for balloon inflation.  Unfortunately, QEMU can't know the
workings of the vendor driver pinning, and doesn't actually know the
difference between mdev devices and directly assigned devices.  Until
we can sort out how the vfio IOMMU backend can tell us if ballooning
is safe, the best approach is to disabling ballooning any time a vfio
devices is attached.

To do that, simply make the balloon inhibitor a counter rather than a
boolean, fixup a case where KVM can then simply use the inhibit
interface, and inhibit ballooning any time a vfio device is attached.
I'm expecting we'll expose some sort of flag similar to
KVM_CAP_SYNC_MMU from the vfio IOMMU for cases where we can resolve
this.  An addition we could consider here would be yet another device
option for vfio, such as x-disable-balloon-inhibit, in case there are
mdev devices that behave in a manner compatible with ballooning.

Please let me know if this looks like a good idea.  Thanks,

Alex

---

Alex Williamson (3):
      balloon: Allow nested inhibits
      kvm: Use inhibit to prevent ballooning without synchronous mmu
      vfio: Inhibit ballooning


 accel/kvm/kvm-all.c        |    4 ++++
 balloon.c                  |    7 ++++---
 hw/vfio/common.c           |    6 ++++++
 hw/virtio/virtio-balloon.c |    4 +---
 4 files changed, 15 insertions(+), 6 deletions(-)

^ permalink raw reply	[flat|nested] 58+ messages in thread

end of thread, other threads:[~2018-07-30 17:35 UTC | newest]

Thread overview: 58+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-17 22:47 [RFC PATCH 0/3] Balloon inhibit enhancements Alex Williamson
2018-07-17 22:47 ` [Qemu-devel] " Alex Williamson
2018-07-17 22:47 ` [RFC PATCH 1/3] balloon: Allow nested inhibits Alex Williamson
2018-07-17 22:47   ` [Qemu-devel] " Alex Williamson
2018-07-18  6:40   ` Peter Xu
2018-07-18  6:40     ` [Qemu-devel] " Peter Xu
2018-07-18 16:37     ` Alex Williamson
2018-07-18 16:37       ` [Qemu-devel] " Alex Williamson
2018-07-19  4:45       ` Peter Xu
2018-07-19  4:45         ` [Qemu-devel] " Peter Xu
2018-07-17 22:47 ` [RFC PATCH 2/3] kvm: Use inhibit to prevent ballooning without synchronous mmu Alex Williamson
2018-07-17 22:47   ` [Qemu-devel] " Alex Williamson
2018-07-17 22:47 ` [RFC PATCH 3/3] vfio: Inhibit ballooning Alex Williamson
2018-07-17 22:47   ` [Qemu-devel] " Alex Williamson
2018-07-18  6:48 ` [RFC PATCH 0/3] Balloon inhibit enhancements Peter Xu
2018-07-18  6:48   ` [Qemu-devel] " Peter Xu
2018-07-18  9:36   ` Cornelia Huck
2018-07-18  9:36     ` [Qemu-devel] " Cornelia Huck
2018-07-19  4:49     ` Peter Xu
2018-07-19  4:49       ` [Qemu-devel] " Peter Xu
2018-07-19  8:42       ` Cornelia Huck
2018-07-19  8:42         ` [Qemu-devel] " Cornelia Huck
2018-07-19  9:30         ` Peter Xu
2018-07-19  9:30           ` [Qemu-devel] " Peter Xu
2018-07-19 15:31       ` Alex Williamson
2018-07-19 15:31         ` [Qemu-devel] " Alex Williamson
2018-07-18 16:31   ` Alex Williamson
2018-07-18 16:31     ` [Qemu-devel] " Alex Williamson
2018-07-19  5:40     ` Peter Xu
2018-07-19  5:40       ` [Qemu-devel] " Peter Xu
2018-07-19 15:01       ` Alex Williamson
2018-07-19 15:01         ` [Qemu-devel] " Alex Williamson
2018-07-20  2:56         ` Peter Xu
2018-07-20  2:56           ` [Qemu-devel] " Peter Xu
2018-07-30 13:34 ` Michael S. Tsirkin
2018-07-30 13:34   ` [Qemu-devel] " Michael S. Tsirkin
2018-07-30 13:54   ` David Hildenbrand
2018-07-30 13:54     ` [Qemu-devel] " David Hildenbrand
2018-07-30 13:59     ` Michael S. Tsirkin
2018-07-30 13:59       ` [Qemu-devel] " Michael S. Tsirkin
2018-07-30 14:46       ` David Hildenbrand
2018-07-30 14:46         ` [Qemu-devel] " David Hildenbrand
2018-07-30 14:58         ` Michael S. Tsirkin
2018-07-30 14:58           ` [Qemu-devel] " Michael S. Tsirkin
2018-07-30 15:05           ` David Hildenbrand
2018-07-30 15:05             ` [Qemu-devel] " David Hildenbrand
2018-07-30 14:39   ` Alex Williamson
2018-07-30 14:39     ` [Qemu-devel] " Alex Williamson
2018-07-30 14:51     ` Michael S. Tsirkin
2018-07-30 14:51       ` [Qemu-devel] " Michael S. Tsirkin
2018-07-30 15:01       ` Alex Williamson
2018-07-30 15:01         ` [Qemu-devel] " Alex Williamson
2018-07-30 15:49         ` Michael S. Tsirkin
2018-07-30 15:49           ` [Qemu-devel] " Michael S. Tsirkin
2018-07-30 16:42           ` Alex Williamson
2018-07-30 16:42             ` [Qemu-devel] " Alex Williamson
2018-07-30 17:35             ` Michael S. Tsirkin
2018-07-30 17:35               ` [Qemu-devel] " Michael S. Tsirkin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.