This series fixes three bugs in the SBI FWFT (Firmware Features) extension
and improves the related selftest infrastructure.
The bugs are:
1. Missing CSR dirty marking: When userspace sets FWFT feature values via
KVM_SET_ONE_REG, modified CSRs (e.g., henvcfg.PMM for pointer masking)
are not marked dirty, leading to stale state after vCPU scheduling or
migration.
2. Hardware probing side effects: The try_to_set_pmm() function modifies
HENVCFG.PMM during hardware capability detection but fails to restore
the original value, leaving the CSR in an altered state that affects
subsequent operations.
3. Stale feature exposure: FWFT feature support is cached at vCPU
initialization time. When userspace subsequently disables ISA extensions
via KVM_SET_ONE_REG, the cached support status is not updated, allowing
guests to access features that depend on disabled extensions.
Patches 1-3 fix these bugs separately.
The selftest improvements (patches 4-5) enhance the get-reg-list test by
refactoring the extension sublist infrastructure and splitting FWFT
feature testing into separate, properly-gated sublists.
---
Changes in v5:
- Add CSR dirty marking fix (new patch 1/5) (sashiko-bot)
- Split original FWFT bug fix into two focused patches
- Add init() callback with try_to_set_pmm() restoration fix (new patch
2/5) (sashiko-bot)
- Keep runtime supported() checks as separate patch (patch 3/5)
- Link to v4:
https://patch.msgid.link/[email protected]
Changes in v4:
- Rename the title of cover letter
- Disable preemption when running try_to_set_pmm() (sashiko-bot)
- Remove check_supported_reg() (sashiko-bot)
- Link to v3:
https://patch.msgid.link/[email protected]
Changes in v3:
- Restore 'supported' field with init() callback for initialization probing
(sashiko-bot)
- Add NULL checks before calling feature->supported() in all functions
- Fix isa_ext_enabled tracking logic and restore isa_ext_cant_disable array
- Add sbi_ext_enabled tracking and enhance dependency checking (sashiko-bot)
- Refine code organization and variable naming consistency (sashiko-bot)
- Link to v2:
https://patch.msgid.link/[email protected]
Changes in v2:
- Fix FWFT stale feature exposure by removing static 'supported' field
- Refactor get-reg-list test to use unified extension sublist macros
- Split FWFT testing into per-feature sublists with runtime checks
(Andrew)
To: Anup Patel <[email protected]>
To: Atish Patra <[email protected]>
To: Paul Walmsley <[email protected]>
To: Palmer Dabbelt <[email protected]>
To: Albert Ou <[email protected]>
To: Alexandre Ghiti <[email protected]>
To: Clément Léger <[email protected]>
To: Andrew Jones <[email protected]>
To: Paolo Bonzini <[email protected]>
To: Shuah Khan <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
---
Yong-Xuan Wang (5):
KVM: RISC-V: SBI FWFT: Mark vCPU CSRs dirty after setting feature value
KVM: RISC-V: SBI FWFT: Add optional init() callback for hardware probing
KVM: RISC-V: SBI FWFT: Fix stale feature exposure after runtime extension
changes
KVM: riscv: selftests: Refactor ISA and SBI extension sublist macros
KVM: riscv: selftests: Split SBI FWFT into separate feature-specific
sublists
arch/riscv/kvm/vcpu_sbi_fwft.c | 44 +++++++-
tools/testing/selftests/kvm/riscv/get-reg-list.c | 138 ++++++++++++++---------
2 files changed, 125 insertions(+), 57 deletions(-)
---
base-commit: c7832534a8160276cccb9a8cc8cafb5614c579d0
change-id: 20260526-kvm-get_reg_list-v2-f9f36961ac6c