[PATCH v3 0/2] KVM: RISC-V: Add CPU PM notifier for non-retention idle states

From: Yong-Xuan Wang

Date: Fri Jun 26 2026 - 05:39:54 EST


This series adds CPU_PM notifier support to save and restore hypervisor
CSR state when CPUs enter non-retention idle states where the CPU domain
is powered off.
Patch 1 fixes a VCPU cache invalidation bug that could cause incorrect
CSR restoration after power state transitions.

Patch 2 implements the CPU_PM notifier to handle CSR save/restore during
CPU idle, completing KVM's power management coverage alongside existing
CPU hotplug and system suspend mechanisms.

---
Changes in v3:
- Remove the error kvm_riscv_nacl_disable() call in kvm_riscv_csr_disable()
(sashiko)
- Unregister CPU PM notifier first in riscv_kvm_exit() (sashiko)
- Link to v2: https://patch.msgid.link/20260626-kvm-cpu-pm-v2-0-478e5ef8dc9b@xxxxxxxxxx

Changes in v2:
- Add patch 1 force restore VCPU after power state transitions (sashiko)
- Added CPU_PM_ENTER_FAILED event handling (sashiko)
- Optimized HGEIE save/restore with saved_value field (sashiko)
- Fixed HIE CSR restoration in lightweight idle resume path (sashiko)
- Link to v1: https://patch.msgid.link/20260624-kvm-cpu-pm-v1-1-52088e127a55@xxxxxxxxxx

---

To: Anup Patel <anup@xxxxxxxxxxxxxx>
To: Atish Patra <atish.patra@xxxxxxxxx>
To: Paul Walmsley <pjw@xxxxxxxxxx>
To: Palmer Dabbelt <palmer@xxxxxxxxxxx>
To: Albert Ou <aou@xxxxxxxxxxxxxxxxx>
To: Alexandre Ghiti <alex@xxxxxxxx>
To: Radim Krčmář <radim.krcmar@xxxxxxxxxxxxxxxx>
To: Andrew Jones <andrew.jones@xxxxxxxxxxxxxxxx>
To: Nutty Liu <nutty.liu@xxxxxxxxxxx>
To: Jinyu Tang <tjytimi@xxxxxxx>
Cc: greentime.hu@xxxxxxxxxx
Cc: vincent.chen@xxxxxxxxxx
Cc: zong.li@xxxxxxxxxx
Cc: kvm@xxxxxxxxxxxxxxx
Cc: kvm-riscv@xxxxxxxxxxxxxxxxxxx
Cc: linux-riscv@xxxxxxxxxxxxxxxxxxx
Cc: linux-kernel@xxxxxxxxxxxxxxx

---
Yong-Xuan Wang (2):
KVM: RISC-V: Clear former VCPU cache on virtualization disable
KVM: RISC-V: Add CPU PM notifier for non-retention idle states

arch/riscv/include/asm/kvm_aia.h | 15 +++-
arch/riscv/include/asm/kvm_host.h | 2 +
arch/riscv/kvm/aia.c | 144 +++++++++++++++++++++-----------------
arch/riscv/kvm/main.c | 98 +++++++++++++++++++++-----
arch/riscv/kvm/vcpu.c | 11 +++
5 files changed, 187 insertions(+), 83 deletions(-)
---
base-commit: 52738352a6f29279e15285fcb7b50241ef867e27
change-id: 20260624-kvm-cpu-pm-94141aecd5fa