This series is based on:
[PATCH v2] virtio: kconfig: memory devices are PCI only [1]
I finally found the time (IOW forced myself) to finish virtio-mem
support on s390x. The last RFC was from 2020, so I won't talk about
what changed -- a lot changed in the meantime :)
There is really not much left to do on s390x, because virtio-mem already
implements most things we need today (e.g., early-migration,
unplugged-inaccessible). The biggest part of this series is just doing what
we do with virtio-pci, wiring it up in the machine hotplug handler and ...
well, messing with the physical memory layout where we can now exceed
initial RAM size and have sparsity (memory holes).
I tested a lot of things, including:
* Memory hotplug/unplug
* Device hotplug/unplug
* System resets / reboots
* Migrate to/from file (including storage attributes under KVM)
* Basic live migration
* Basic postcopy live migration
More details on how to use it on s390x -- which is pretty much how
we use it on other architectures, except
s/virtio-mem-pci/virtio-mem-ccw/ --- is in the last patch.
This series introduces a new diag(500) "STORAGE LIMIT" subcode that will
be documented at [2] once this+kernel part go upstream.
There are not many s390x-specific virtio-mem future work items, except:
* Storage attribute migration might be improved
* We might want to reset storage attributes of unplugged memory
(might or might not be required for upcoming page table reclaim in
Linux; TBD)
I'll send out the kernel driver bits soon.
[1] https://lkml.kernel.org/r/[email protected]
[2] https://gitlab.com/davidhildenbrand/s390x-os-virt-spec
Cc: Paolo Bonzini <[email protected]>
Cc: Thomas Huth <[email protected]>
Cc: Halil Pasic <[email protected]>
Cc: Christian Borntraeger <[email protected]>
Cc: Eric Farman <[email protected]>
Cc: Richard Henderson <[email protected]>
Cc: David Hildenbrand <[email protected]>
Cc: Ilya Leoshkevich <[email protected]>
Cc: Janosch Frank <[email protected]>
Cc: "Michael S. Tsirkin" <[email protected]>
Cc: Cornelia Huck <[email protected]>
David Hildenbrand (14):
s390x/s390-virtio-ccw: don't crash on weird RAM sizes
s390x/s390-virtio-hcall: remove hypercall registration mechanism
s390x/s390-virtio-hcall: prepare for more diag500 hypercalls
s390x: rename s390-virtio-hcall* to s390-hypercall*
s390x/s390-virtio-ccw: move setting the maximum guest size from sclp
to machine code
s390x: introduce s390_get_memory_limit()
s390x/s390-hypercall: introduce DIAG500 STORAGE_LIMIT
s390x/s390-stattrib-kvm: prepare memory devices and sparse memory
layouts
s390x/s390-skeys: prepare for memory devices
s390x/pv: check initial, not maximum RAM size
s390x/s390-virtio-ccw: prepare for memory devices
s390x: introduce s390_get_max_pagesize()
s390x/virtio-ccw: add support for virtio based memory devices
s390x: virtio-mem support
MAINTAINERS | 4 +
hw/s390x/Kconfig | 1 +
hw/s390x/meson.build | 4 +-
hw/s390x/s390-hypercall.c | 77 +++++++++++
hw/s390x/s390-hypercall.h | 25 ++++
hw/s390x/s390-skeys.c | 4 +-
hw/s390x/s390-stattrib-kvm.c | 63 +++++----
hw/s390x/s390-virtio-ccw.c | 143 +++++++++++++--------
hw/s390x/s390-virtio-hcall.c | 41 ------
hw/s390x/s390-virtio-hcall.h | 25 ----
hw/s390x/sclp.c | 17 +--
hw/s390x/virtio-ccw-md.c | 153 ++++++++++++++++++++++
hw/s390x/virtio-ccw-md.h | 44 +++++++
hw/s390x/virtio-ccw-mem.c | 226 +++++++++++++++++++++++++++++++++
hw/s390x/virtio-ccw-mem.h | 34 +++++
hw/virtio/Kconfig | 1 +
hw/virtio/virtio-mem.c | 4 +-
target/s390x/cpu-sysemu.c | 35 ++++-
target/s390x/cpu.h | 2 +
target/s390x/kvm/kvm.c | 12 +-
target/s390x/kvm/pv.c | 2 +-
target/s390x/tcg/misc_helper.c | 6 +-
22 files changed, 746 insertions(+), 177 deletions(-)
create mode 100644 hw/s390x/s390-hypercall.c
create mode 100644 hw/s390x/s390-hypercall.h
delete mode 100644 hw/s390x/s390-virtio-hcall.c
delete mode 100644 hw/s390x/s390-virtio-hcall.h
create mode 100644 hw/s390x/virtio-ccw-md.c
create mode 100644 hw/s390x/virtio-ccw-md.h
create mode 100644 hw/s390x/virtio-ccw-mem.c
create mode 100644 hw/s390x/virtio-ccw-mem.h
--
2.46.0