[PATCH v1 00/17] virtio-mem: Paravirtualized memory hot(un)plug

David Hildenbrand posted 17 patches 5 years, 6 months ago
Test docker-mingw@fedora passed
Test checkpatch passed
Test asan passed
Test docker-quick@centos7 passed
Test FreeBSD passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20200506094948.76388-1-david@redhat.com
Maintainers: Markus Armbruster <armbru@redhat.com>, Hailiang Zhang <zhang.zhanghailiang@huawei.com>, Eduardo Habkost <ehabkost@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, Eric Farman <farman@linux.ibm.com>, Christian Borntraeger <borntraeger@de.ibm.com>, Cornelia Huck <cohuck@redhat.com>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Alex Williamson <alex.williamson@redhat.com>, Richard Henderson <rth@twiddle.net>, Halil Pasic <pasic@linux.ibm.com>, Pierre Morel <pmorel@linux.ibm.com>, Eric Blake <eblake@redhat.com>, David Hildenbrand <david@redhat.com>, Juan Quintela <quintela@redhat.com>, "Michael S. Tsirkin" <mst@redhat.com>, Tony Krowiak <akrowiak@linux.ibm.com>, "Dr. David Alan Gilbert" <dgilbert@redhat.com>
MAINTAINERS                                 |   8 +
accel/kvm/kvm-all.c                         |   3 +-
balloon.c                                   |  17 -
exec.c                                      |  48 ++
hw/core/numa.c                              |   6 +
hw/i386/Kconfig                             |   1 +
hw/i386/pc.c                                |  49 +-
hw/s390x/s390-virtio-ccw.c                  |  22 +-
hw/vfio/ap.c                                |  10 +-
hw/vfio/ccw.c                               |  11 +-
hw/vfio/common.c                            |  53 +-
hw/vfio/pci.c                               |   6 +-
hw/virtio/Kconfig                           |  11 +
hw/virtio/Makefile.objs                     |   2 +
hw/virtio/virtio-balloon.c                  |  12 +-
hw/virtio/virtio-mem-pci.c                  | 159 ++++
hw/virtio/virtio-mem-pci.h                  |  34 +
hw/virtio/virtio-mem.c                      | 781 ++++++++++++++++++++
include/exec/memory.h                       |  41 +
include/hw/pci/pci.h                        |   1 +
include/hw/vfio/vfio-common.h               |   4 +-
include/hw/virtio/virtio-mem.h              |  85 +++
include/migration/colo.h                    |   2 +-
include/standard-headers/linux/virtio_ids.h |   1 +
include/standard-headers/linux/virtio_mem.h | 208 ++++++
include/sysemu/balloon.h                    |   2 -
migration/migration.c                       |   8 +-
migration/postcopy-ram.c                    |  23 -
migration/rdma.c                            |  18 +-
migration/savevm.c                          |  11 +-
monitor/hmp-cmds.c                          |  16 +
monitor/monitor.c                           |   1 +
qapi/misc.json                              |  64 +-
target/i386/sev.c                           |   1 +
34 files changed, 1598 insertions(+), 121 deletions(-)
create mode 100644 hw/virtio/virtio-mem-pci.c
create mode 100644 hw/virtio/virtio-mem-pci.h
create mode 100644 hw/virtio/virtio-mem.c
create mode 100644 include/hw/virtio/virtio-mem.h
create mode 100644 include/standard-headers/linux/virtio_mem.h
[PATCH v1 00/17] virtio-mem: Paravirtualized memory hot(un)plug
Posted by David Hildenbrand 5 years, 6 months ago
This is the very basic, initial version of virtio-mem. More info on
virtio-mem in general can be found in the Linux kernel driver posting [1]
and in patch #10.

"The basic idea of virtio-mem is to provide a flexible,
cross-architecture memory hot(un)plug solution that avoids many limitations
imposed by existing technologies, architectures, and interfaces."

There are a lot of addons in the works (esp. protection of unplugged
memory, better hugepage support (esp. when reading unplugged memory),
resizeable memory backends, migration optimizations, support for more
architectures, ...), this is the very basic version to get the ball
rolling.

The first 8 patches make sure we don't have any sudden surprises e.g., if
somebody tries to pin all memory in RAM blocks, resulting in a higher
memory consumption than desired. The remaining patches add basic virtio-mem
along with support for x86-64.

[1] https://lkml.kernel.org/r/20200311171422.10484-1-david@redhat.com

David Hildenbrand (17):
  exec: Introduce ram_block_discard_set_(unreliable|required)()
  vfio: Convert to ram_block_discard_set_broken()
  accel/kvm: Convert to ram_block_discard_set_broken()
  s390x/pv: Convert to ram_block_discard_set_broken()
  virtio-balloon: Rip out qemu_balloon_inhibit()
  target/i386: sev: Use ram_block_discard_set_broken()
  migration/rdma: Use ram_block_discard_set_broken()
  migration/colo: Use ram_block_discard_set_broken()
  linux-headers: update to contain virtio-mem
  virtio-mem: Paravirtualized memory hot(un)plug
  virtio-pci: Proxy for virtio-mem
  MAINTAINERS: Add myself as virtio-mem maintainer
  hmp: Handle virtio-mem when printing memory device info
  numa: Handle virtio-mem in NUMA stats
  pc: Support for virtio-mem-pci
  virtio-mem: Allow notifiers for size changes
  virtio-pci: Send qapi events when the virtio-mem size changes

 MAINTAINERS                                 |   8 +
 accel/kvm/kvm-all.c                         |   3 +-
 balloon.c                                   |  17 -
 exec.c                                      |  48 ++
 hw/core/numa.c                              |   6 +
 hw/i386/Kconfig                             |   1 +
 hw/i386/pc.c                                |  49 +-
 hw/s390x/s390-virtio-ccw.c                  |  22 +-
 hw/vfio/ap.c                                |  10 +-
 hw/vfio/ccw.c                               |  11 +-
 hw/vfio/common.c                            |  53 +-
 hw/vfio/pci.c                               |   6 +-
 hw/virtio/Kconfig                           |  11 +
 hw/virtio/Makefile.objs                     |   2 +
 hw/virtio/virtio-balloon.c                  |  12 +-
 hw/virtio/virtio-mem-pci.c                  | 159 ++++
 hw/virtio/virtio-mem-pci.h                  |  34 +
 hw/virtio/virtio-mem.c                      | 781 ++++++++++++++++++++
 include/exec/memory.h                       |  41 +
 include/hw/pci/pci.h                        |   1 +
 include/hw/vfio/vfio-common.h               |   4 +-
 include/hw/virtio/virtio-mem.h              |  85 +++
 include/migration/colo.h                    |   2 +-
 include/standard-headers/linux/virtio_ids.h |   1 +
 include/standard-headers/linux/virtio_mem.h | 208 ++++++
 include/sysemu/balloon.h                    |   2 -
 migration/migration.c                       |   8 +-
 migration/postcopy-ram.c                    |  23 -
 migration/rdma.c                            |  18 +-
 migration/savevm.c                          |  11 +-
 monitor/hmp-cmds.c                          |  16 +
 monitor/monitor.c                           |   1 +
 qapi/misc.json                              |  64 +-
 target/i386/sev.c                           |   1 +
 34 files changed, 1598 insertions(+), 121 deletions(-)
 create mode 100644 hw/virtio/virtio-mem-pci.c
 create mode 100644 hw/virtio/virtio-mem-pci.h
 create mode 100644 hw/virtio/virtio-mem.c
 create mode 100644 include/hw/virtio/virtio-mem.h
 create mode 100644 include/standard-headers/linux/virtio_mem.h

-- 
2.25.3