qemu/hw/s390x
Claudio Imbrenda c3a073c610 s390x/pv: Add support for asynchronous teardown for reboot
This patch adds support for the asynchronous teardown for reboot for
protected VMs.

When attempting to tear down a protected VM, try to use the new
asynchronous interface first. If that fails, fall back to the classic
synchronous one.

The asynchronous interface involves invoking the new
KVM_PV_ASYNC_DISABLE_PREPARE command for the KVM_S390_PV_COMMAND ioctl.

This will prepare the current protected VM for asynchronous teardown.
Once the protected VM is prepared for teardown, execution can continue
immediately.

Once the protected VM has been prepared, a new thread is started to
actually perform the teardown. The new thread uses the new
KVM_PV_ASYNC_DISABLE command for the KVM_S390_PV_COMMAND ioctl. The
previously prepared protected VM is torn down in the new thread.

Once KVM_PV_ASYNC_DISABLE is invoked, it is possible to use
KVM_PV_ASYNC_DISABLE_PREPARE again. If a protected VM has already been
prepared and its cleanup has not started, it will not be possible to
prepare a new VM. In that case the classic synchronous teardown has to
be performed.

The synchronous teardown will now also clean up any prepared VMs whose
asynchronous teardown has not been initiated yet.

This considerably speeds up the reboot of a protected VM; for large VMs
especially, it could take a long time to perform a reboot with the
traditional synchronous teardown, while with this patch it is almost
immediate.

Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-Id: <20230214163035.44104-3-imbrenda@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
2023-02-27 09:15:39 +01:00
..
3270-ccw.c s390x/css: Refactor IRB construction 2021-06-21 08:48:21 +02:00
ap-bridge.c qbus: Rename qbus_create() to qbus_new() 2021-09-30 13:44:08 +01:00
ap-device.c
ccw-device.c hw/s390x/ccw: Register qbus type in abstract TYPE_CCW_DEVICE parent 2021-05-20 14:19:30 +02:00
ccw-device.h hw/s390x/ccw: Register qbus type in abstract TYPE_CCW_DEVICE parent 2021-05-20 14:19:30 +02:00
css-bridge.c qbus: Rename qbus_create() to qbus_new() 2021-09-30 13:44:08 +01:00
css.c s390x/css: revert SCSW ctrl/flag bits on error 2022-11-06 12:27:35 +01:00
event-facility.c hw/s390x/event-facility: Replace DO_UPCAST(SCLPEvent) by SCLP_EVENT() 2023-02-14 09:11:27 +01:00
ipl.c machine: use QAPI struct for boot configuration 2022-05-12 12:29:43 +02:00
ipl.h s390x: Fix spelling errors 2022-11-16 10:15:26 +01:00
Kconfig
meson.build s390x/pci: enable for load/store interpretation 2022-09-26 17:23:47 +02:00
pv.c s390x/pv: Add support for asynchronous teardown for reboot 2023-02-27 09:15:39 +01:00
s390-ccw.c misc: fix commonly doubled up words 2022-08-01 11:58:02 +02:00
s390-pci-bus.c s390x/pci: reset ISM passthrough devices on shutdown and system reset 2022-12-15 15:02:34 +01:00
s390-pci-inst.c * s390x header clean-ups from Philippe 2023-01-09 15:54:31 +00:00
s390-pci-kvm.c Revert "s390x/s390-virtio-ccw: add zpcii-disable machine property" 2022-11-08 10:10:57 +01:00
s390-pci-vfio.c s390x/pci: reset ISM passthrough devices on shutdown and system reset 2022-12-15 15:02:34 +01:00
s390-skeys-kvm.c hw/s390x/s390-skeys: rename skeys_enabled to skeys_are_enabled 2021-09-06 16:24:05 +02:00
s390-skeys.c hw/s390x/s390-skeys: lazy storage key enablement under TCG 2021-09-06 16:24:05 +02:00
s390-stattrib-kvm.c target/s390x: move kvm files into kvm/ 2021-07-07 14:01:59 +02:00
s390-stattrib.c migration: Rename res_{postcopy,precopy}_only 2023-02-15 20:04:30 +01:00
s390-virtio-ccw.c s390x/pv: Add support for asynchronous teardown for reboot 2023-02-27 09:15:39 +01:00
s390-virtio-hcall.c
s390-virtio-hcall.h
sclp.c Mark remaining global TypeInfo instances as const 2022-02-21 13:30:20 +00:00
sclpcpu.c Do not include cpu.h if it's not really necessary 2021-05-02 17:24:51 +02:00
sclpquiesce.c
tod-kvm.c s390x/tod-kvm: don't save/restore the TOD in PV guests 2022-10-27 09:09:50 +02:00
tod-tcg.c Mark remaining global TypeInfo instances as const 2022-02-21 13:30:20 +00:00
tod.c Mark remaining global TypeInfo instances as const 2022-02-21 13:30:20 +00:00
trace-events docs: fix references to docs/devel/tracing.rst 2021-06-02 06:51:09 +02:00
trace.h
vhost-scsi-ccw.c virtio-ccw: move device type declarations to .c files 2022-04-06 14:31:56 +02:00
vhost-user-fs-ccw.c
vhost-vsock-ccw.c virtio-ccw: move device type declarations to .c files 2022-04-06 14:31:56 +02:00
virtio-ccw-9p.c virtio-ccw: move device type declarations to .c files 2022-04-06 14:31:56 +02:00
virtio-ccw-balloon.c virtio-ccw: move device type declarations to .c files 2022-04-06 14:31:56 +02:00
virtio-ccw-blk.c virtio-ccw: move device type declarations to .c files 2022-04-06 14:31:56 +02:00
virtio-ccw-crypto.c virtio-ccw: move device type declarations to .c files 2022-04-06 14:31:56 +02:00
virtio-ccw-gpu.c modules: introduces module_kconfig directive 2022-06-06 09:26:53 +02:00
virtio-ccw-input.c virtio-ccw: move device type declarations to .c files 2022-04-06 14:31:56 +02:00
virtio-ccw-net.c virtio-ccw: move device type declarations to .c files 2022-04-06 14:31:56 +02:00
virtio-ccw-rng.c virtio-ccw: move device type declarations to .c files 2022-04-06 14:31:56 +02:00
virtio-ccw-scsi.c virtio-ccw: move device type declarations to .c files 2022-04-06 14:31:56 +02:00
virtio-ccw-serial.c Drop duplicate #include 2023-02-08 07:28:05 +01:00
virtio-ccw.c virtio: stop ioeventfd on reset 2022-06-14 16:50:30 +02:00
virtio-ccw.h virtio-ccw: do not include headers for all virtio devices 2022-04-06 14:31:56 +02:00