kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v5 00/21] virtio-mem: Paravirtualized memory hot(un)plug
@ 2020-06-26  7:22 David Hildenbrand
  2020-06-26  7:22 ` [PATCH v5 01/21] pc: Support coldplugging of virtio-pmem-pci devices on all buses David Hildenbrand
                   ` (21 more replies)
  0 siblings, 22 replies; 29+ messages in thread
From: David Hildenbrand @ 2020-06-26  7:22 UTC (permalink / raw)
  To: qemu-devel
  Cc: kvm, qemu-s390x, Richard Henderson, Paolo Bonzini,
	Dr . David Alan Gilbert, Eduardo Habkost, Michael S . Tsirkin,
	David Hildenbrand, teawater, Pankaj Gupta, Alex Shi,
	Alex Williamson, Christian Borntraeger, Cornelia Huck,
	Eric Blake, Eric Farman, Hailiang Zhang, Halil Pasic,
	Igor Mammedov, Janosch Frank, Juan Quintela, Keith Busch,
	Lukas Straub, Marcel Apfelbaum, Markus Armbruster, Peter Maydell,
	Pierre Morel, qemu-arm, Sergio Lopez, Tony Krowiak, Vivek Goyal

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 v2 posting
[1] and in patch #10. The Linux driver is now upstream.

This series now contains a resend of [3]:
    "[PATCH v1] pc: Support coldplugging of virtio-pmem-pci devices on all
     buses"

The patches can be found at:
    https://github.com/davidhildenbrand/qemu.git virtio-mem-v5

"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, support for more architectures, ...), this is
the very basic version to get the ball rolling.

The first patch is a resend. Patches #2-#9 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. The last patch
indicates to the guest OS the maximum possible PFN using ACPI SRAT, such
that Linux can properly enable the swiotlb when booting only with DMA
memory.

[1] https://lkml.kernel.org/r/20200311171422.10484-1-david@redhat.com
[2] https://lkml.kernel.org/r/20200507140139.17083-1-david@redhat.com
[3] https://lkml.kernel.org/r/20200525084511.51379-1-david@redhat.com
[3] https://lkml.kernel.org/r/20200610075153.33892-1-david@redhat.com

Cc: teawater <teawaterz@linux.alibaba.com>
Cc: Pankaj Gupta <pankaj.gupta.linux@gmail.com>

v4 -> v5:
- Rebased, added acks/rb's
- "pc: Support coldplugging of virtio-pmem-pci devices on all buses"
-- Included it now, for simplicity
- "linux-headers: update to contain virtio-mem"
-- Dropped, because header changes are already upstream now
- "MAINTAINERS: Add myself as virtio-mem maintainer"
-- Reference status page

v3 -> v4
- Adapt to virtio-mem config layout change (block size now is 64bit)
- Added "numa: Auto-enable NUMA when any memory devices are possible"

v2 -> v3:
- Rebased on upstream/[3]
- "virtio-mem: Exclude unplugged memory during migration"
-- Added
- "virtio-mem: Paravirtualized memory hot(un)plug"
-- Simplify bitmap operations, find consecutive areas
-- Tweak error messages
-- Reshuffle some checks
-- Minor cleanups
- "accel/kvm: Convert to ram_block_discard_disable()"
- "target/i386: sev: Use ram_block_discard_disable()"
-- Keep asserts clean of functional things

v1 -> v2:
- Rebased to object_property_*() changes
- "exec: Introduce ram_block_discard_(disable|require)()"
-- Change the function names and rephrase/add comments
- "virtio-balloon: Rip out qemu_balloon_inhibit()"
-- Add and use "migration_in_incoming_postcopy()"
- "migration/rdma: Use ram_block_discard_disable()"
-- Add a comment regarding pin_all vs. !pin_all
- "virtio-mem: Paravirtualized memory hot(un)plug"
-- Replace virtio_mem_discard_inhibited() by
   migration_in_incoming_postcopy()
-- Drop some asserts
-- Drop virtio_mem_bad_request(), use virtio_error() directly, printing
   more information
-- Replace "Note: Discarding should never fail ..." comments by
   error_report()
-- Replace virtio_stw_p() by cpu_to_le16()
-- Drop migration_addr and migration_block_size
-- Minor cleanups
- "linux-headers: update to contain virtio-mem"
-- Updated to latest v4 in Linux
- General changes
-- Fixup the users of the renamed ram_block_discard_(disable|require)
-- Use "X: cannot disable RAM discard"-styled error messages
- Added
-- "virtio-mem: Migration sanity checks"
-- "virtio-mem: Add trace events"

David Hildenbrand (21):
  pc: Support coldplugging of virtio-pmem-pci devices on all buses
  exec: Introduce ram_block_discard_(disable|require)()
  vfio: Convert to ram_block_discard_disable()
  accel/kvm: Convert to ram_block_discard_disable()
  s390x/pv: Convert to ram_block_discard_disable()
  virtio-balloon: Rip out qemu_balloon_inhibit()
  target/i386: sev: Use ram_block_discard_disable()
  migration/rdma: Use ram_block_discard_disable()
  migration/colo: Use ram_block_discard_disable()
  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
  virtio-mem: Migration sanity checks
  virtio-mem: Add trace events
  virtio-mem: Exclude unplugged memory during migration
  numa: Auto-enable NUMA when any memory devices are possible

 MAINTAINERS                    |   9 +
 accel/kvm/kvm-all.c            |   4 +-
 balloon.c                      |  17 -
 exec.c                         |  52 ++
 hw/arm/virt.c                  |   2 +
 hw/core/numa.c                 |  17 +-
 hw/i386/Kconfig                |   1 +
 hw/i386/microvm.c              |   1 +
 hw/i386/pc.c                   |  66 +--
 hw/i386/pc_piix.c              |   1 +
 hw/i386/pc_q35.c               |   1 +
 hw/s390x/s390-virtio-ccw.c     |  22 +-
 hw/vfio/ap.c                   |   8 +-
 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/trace-events         |  10 +
 hw/virtio/virtio-balloon.c     |  10 +-
 hw/virtio/virtio-mem-pci.c     | 157 ++++++
 hw/virtio/virtio-mem-pci.h     |  34 ++
 hw/virtio/virtio-mem.c         | 873 +++++++++++++++++++++++++++++++++
 include/exec/memory.h          |  41 ++
 include/hw/boards.h            |   1 +
 include/hw/pci/pci.h           |   1 +
 include/hw/vfio/vfio-common.h  |   4 +-
 include/hw/virtio/virtio-mem.h |  86 ++++
 include/migration/colo.h       |   2 +-
 include/migration/misc.h       |   2 +
 include/sysemu/balloon.h       |   2 -
 migration/migration.c          |  15 +-
 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              |   7 +
 39 files changed, 1529 insertions(+), 133 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

-- 
2.26.2


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

end of thread, other threads:[~2020-07-06 16:39 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-26  7:22 [PATCH v5 00/21] virtio-mem: Paravirtualized memory hot(un)plug David Hildenbrand
2020-06-26  7:22 ` [PATCH v5 01/21] pc: Support coldplugging of virtio-pmem-pci devices on all buses David Hildenbrand
2020-06-26  7:22 ` [PATCH v5 02/21] exec: Introduce ram_block_discard_(disable|require)() David Hildenbrand
2020-06-26  7:22 ` [PATCH v5 03/21] vfio: Convert to ram_block_discard_disable() David Hildenbrand
2020-06-26  7:22 ` [PATCH v5 04/21] accel/kvm: " David Hildenbrand
2020-06-26  7:22 ` [PATCH v5 05/21] s390x/pv: " David Hildenbrand
2020-06-26  7:22 ` [PATCH v5 06/21] virtio-balloon: Rip out qemu_balloon_inhibit() David Hildenbrand
2020-06-26  7:22 ` [PATCH v5 07/21] target/i386: sev: Use ram_block_discard_disable() David Hildenbrand
2020-06-26  7:22 ` [PATCH v5 08/21] migration/rdma: " David Hildenbrand
2020-06-26  7:22 ` [PATCH v5 09/21] migration/colo: " David Hildenbrand
2020-06-26  7:22 ` [PATCH v5 10/21] virtio-mem: Paravirtualized memory hot(un)plug David Hildenbrand
2020-06-30 10:06   ` Michael S. Tsirkin
2020-06-30 10:21     ` David Hildenbrand
2020-06-26  7:22 ` [PATCH v5 11/21] virtio-pci: Proxy for virtio-mem David Hildenbrand
2020-07-06 15:28   ` Cornelia Huck
2020-07-06 16:39     ` David Hildenbrand
2020-06-26  7:22 ` [PATCH v5 12/21] MAINTAINERS: Add myself as virtio-mem maintainer David Hildenbrand
2020-06-26  7:22 ` [PATCH v5 13/21] hmp: Handle virtio-mem when printing memory device info David Hildenbrand
2020-06-26  7:22 ` [PATCH v5 14/21] numa: Handle virtio-mem in NUMA stats David Hildenbrand
2020-06-26  7:22 ` [PATCH v5 15/21] pc: Support for virtio-mem-pci David Hildenbrand
2020-06-26  7:22 ` [PATCH v5 16/21] virtio-mem: Allow notifiers for size changes David Hildenbrand
2020-06-26  7:22 ` [PATCH v5 17/21] virtio-pci: Send qapi events when the virtio-mem " David Hildenbrand
2020-06-26  7:22 ` [PATCH v5 18/21] virtio-mem: Migration sanity checks David Hildenbrand
2020-06-26  7:22 ` [PATCH v5 19/21] virtio-mem: Add trace events David Hildenbrand
2020-07-02 19:08   ` Dr. David Alan Gilbert
2020-06-26  7:22 ` [PATCH v5 20/21] virtio-mem: Exclude unplugged memory during migration David Hildenbrand
2020-06-26  7:22 ` [PATCH v5 21/21] numa: Auto-enable NUMA when any memory devices are possible David Hildenbrand
2020-07-03 10:40 ` [PATCH v1] virtio-mem: fix cross-compilation due to VIRTIO_MEM_USABLE_EXTENT David Hildenbrand
2020-07-03 11:57   ` Michael S. Tsirkin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).