From: Juraj Marcin <jmarcin@redhat.com>
To: qemu-devel@nongnu.org
Cc: Juraj Marcin <jmarcin@redhat.com>,
David Hildenbrand <david@redhat.com>,
Peter Maydell <peter.maydell@linaro.org>
Subject: [PATCH v3 0/4] virtio-mem: Implement support for suspend+wake-up with plugged memory
Date: Wed, 4 Sep 2024 12:37:11 +0200 [thread overview]
Message-ID: <20240904103722.946194-1-jmarcin@redhat.com> (raw)
Currently, the virtio-mem device would unplug all the memory with any
reset request, including when the machine wakes up from a suspended
state (deep sleep). This would lead to a loss of the contents of the
guest memory and therefore is disabled by the virtio-mem Linux Kernel
driver unless the VIRTIO_MEM_F_PERSISTENT_SUSPEND virtio feature is
exposed. [1]
To make deep sleep with virtio-mem possible, we need to differentiate
cold start reset from wake-up reset. The first patch updates
qemu_system_reset() and MachineClass children to accept ResetType
instead of ShutdownCause, which then could be passed down the device
tree. The second patch then introduces the new reset type for the
wake-up event and updates the i386 wake-up method (only architecture
using the explicit wake-up method).
The third patch replaces LegacyReset with the Resettable interface in
virtio-mem, so the memory device can access the reset type in the hold
phase. The last patch of the series implements the final support in the
hold phase of the virtio-mem reset callback and exposes
VIRTIO_MEM_F_PERSISTENT_SUSPEND to the kernel.
[1]: https://lore.kernel.org/all/20240318120645.105664-1-david@redhat.com/
v3:
- Updated RESET_TYPE_WAKEUP documentation so it is more clear when reset
could occur and when reset type should be used, thanks to Peter and
David for feedback
v2:
- Removed unnecessary include directive changes
- Updated RESET_TYPE_WAKEUP documentation
- Removed unnecessary interface from VirtIOMEMClass type info
Juraj Marcin (4):
reset: Use ResetType for qemu_devices_reset() and
MachineClass::reset()
reset: Add RESET_TYPE_WAKEUP
virtio-mem: Use new Resettable framework instead of LegacyReset
virtio-mem: Add support for suspend+wake-up with plugged memory
docs/devel/reset.rst | 11 ++++++++
hw/arm/aspeed.c | 4 +--
hw/arm/mps2-tz.c | 4 +--
hw/core/reset.c | 5 +---
hw/hppa/machine.c | 4 +--
hw/i386/microvm.c | 4 +--
hw/i386/pc.c | 6 ++---
hw/ppc/pegasos2.c | 4 +--
hw/ppc/pnv.c | 4 +--
hw/ppc/spapr.c | 6 ++---
hw/s390x/s390-virtio-ccw.c | 4 +--
hw/virtio/virtio-mem.c | 48 ++++++++++++++++++++++++----------
hw/virtio/virtio-qmp.c | 3 +++
include/hw/boards.h | 3 ++-
include/hw/resettable.h | 2 ++
include/hw/virtio/virtio-mem.h | 4 +++
include/sysemu/reset.h | 5 ++--
system/runstate.c | 13 +++++++--
18 files changed, 91 insertions(+), 43 deletions(-)
--
2.46.0
next reply other threads:[~2024-09-04 10:44 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-04 10:37 Juraj Marcin [this message]
2024-09-04 10:37 ` [PATCH v3 1/4] reset: Use ResetType for qemu_devices_reset() and MachineClass::reset() Juraj Marcin
2024-09-04 10:37 ` [PATCH v3 2/4] reset: Add RESET_TYPE_WAKEUP Juraj Marcin
2024-09-04 10:37 ` [PATCH v3 3/4] virtio-mem: Use new Resettable framework instead of LegacyReset Juraj Marcin
2024-09-04 10:37 ` [PATCH v3 4/4] virtio-mem: Add support for suspend+wake-up with plugged memory Juraj Marcin
2024-09-09 12:08 ` [PATCH v3 0/4] virtio-mem: Implement " David Hildenbrand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240904103722.946194-1-jmarcin@redhat.com \
--to=jmarcin@redhat.com \
--cc=david@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).