virtio-mem: Paravirtualized memory hot(un)plug
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v5 Latest21 patches 5 repliesIn review
- v421 patches 12 repliesSuperseded
- v320 patches 12 repliesSuperseded
Earlier versions · 2
| Version | Posted | Patches | Replies | Status |
|---|---|---|---|---|
| v2 | 19 patches | 4 replies | Superseded | |
| v1 | 17 patches | 29 replies | Superseded |
Changes in v5 from the cover letter
- 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
Patches in v5 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/21 | pc: Support coldplugging of virtio-pmem-pci devices on all buseshw/ | +10 | 0 replies | |
| 2/21 | exec: Introduce ram_block_discard_(disable|require)()balloon.c exec.c include/ | +95 | 0 replies | |
| 3/21 | vfio: Convert to ram_block_discard_disable()hw/ hw/ hw/ +2 more | +44 | 0 replies | |
| 4/21 | accel/kvm: Convert to ram_block_discard_disable()accel/ | +2 | 0 replies | |
| 5/21 | s390x/pv: Convert to ram_block_discard_disable()hw/ | +13 | 0 replies | |
| 6/21 | virtio-balloon: Rip out qemu_balloon_inhibit()balloon.c hw/ include/ +3 more | +17 | 0 replies | |
| 7/21 | target/i386: sev: Use ram_block_discard_disable()target/ | +7 | 0 replies | |
| 8/21 | migration/rdma: Use ram_block_discard_disable()migration/ | +16 | 0 replies | |
| 9/21 | migration/colo: Use ram_block_discard_disable()include/ migration/ migration/ | +17 | 0 replies | |
| 10/21 | virtio-mem: Paravirtualized memory hot(un)plughw/ hw/ hw/ +2 more | +852 | 2 replies | |
| 11/21 | virtio-pci: Proxy for virtio-memhw/ hw/ hw/ +1 more | +164 | 2 replies | |
| 12/21 | MAINTAINERS: Add myself as virtio-mem maintainerMAINTAINERS | +9 | 0 replies | |
| 13/21 | hmp: Handle virtio-mem when printing memory device infomonitor/ | +16 | 0 replies | |
| 14/21 | numa: Handle virtio-mem in NUMA statshw/ | +6 | 0 replies | |
| 15/21 | pc: Support for virtio-mem-pcihw/ hw/ | +29 | 0 replies | |
| 16/21 | virtio-mem: Allow notifiers for size changeshw/ include/ | +25 | 0 replies | |
| 17/21 | virtio-pci: Send qapi events when the virtio-mem size changeshw/ hw/ monitor/ +1 more | +55 | 0 replies | |
| 18/21 | virtio-mem: Migration sanity checkshw/ | +70 | 0 replies | |
| 19/21 | virtio-mem: Add trace eventshw/ hw/ | +19 | 1 reply | |
| 20/21 | virtio-mem: Exclude unplugged memory during migrationhw/ include/ | +56 | 0 replies | |
| 21/21 | numa: Auto-enable NUMA when any memory devices are possiblehw/ hw/ hw/ +4 more | +13 | 0 replies |
Reviews trailers per patch
17 of 21 patches have a Reviewed-by or Acked-by.
| Patch | Pankaj Gupta | Dr. David Alan Gilbert | Tony Krowiak | Cornelia Huck | Michael S. Tsirkin | Lukas Straub |
|---|---|---|---|---|---|---|
| 1/21 | R-b | |||||
| 2/21 | R-b | |||||
| 3/21 | R-b | A-b | ||||
| 4/21 | R-b | |||||
| 5/21 | A-b | |||||
| 6/21 | R-b | R-b | ||||
| 7/21 | R-b | |||||
| 8/21 | R-b | |||||
| 9/21 | R-b | T-b | ||||
| 10/21 | ||||||
| 11/21 | R-b | |||||
| 12/21 | R-b | |||||
| 13/21 | R-b | |||||
| 14/21 | R-b | |||||
| 15/21 | R-b | |||||
| 16/21 | R-b | |||||
| 17/21 | ||||||
| 18/21 | R-b | |||||
| 19/21 | R-b | |||||
| 20/21 | ||||||
| 21/21 |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 6 reviewers.
Cover letter [PATCH v5 00/21] virtio-mem: Paravirtualized memory hot(un)plug
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/[email protected]
[2] https://lkml.kernel.org/r/[email protected]
[3] https://lkml.kernel.org/r/[email protected]
[3] https://lkml.kernel.org/r/[email protected]
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
Signature · 1 line
2.26.2