Re: [PATCH v5 0/5] KVM: riscv: Fix stale FWFT feature exposure and enhance selftests

From: Anup Patel

Date: Fri Jun 05 2026 - 12:42:55 EST


On Mon, Jun 1, 2026 at 3:56 PM Yong-Xuan Wang <yongxuan.wang@xxxxxxxxxx> wrote:
>
> 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/20260601-kvm-get_reg_list-v2-v4-0-c88abc81ebda@xxxxxxxxxx
>
> 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/20260528-kvm-get_reg_list-v2-v3-0-170969a8599f@xxxxxxxxxx
>
> 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/20260526-kvm-get_reg_list-v2-v2-0-7940a401454a@xxxxxxxxxx
>
> 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 <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: Clément Léger <cleger@xxxxxxxxxxxx>
> To: Andrew Jones <ajones@xxxxxxxxxxxxxxxx>
> To: Paolo Bonzini <pbonzini@xxxxxxxxxx>
> To: Shuah Khan <shuah@xxxxxxxxxx>
> 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
> Cc: linux-kselftest@xxxxxxxxxxxxxxx
>
> ---
> 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

Queued this series for Linux-7.2

Regards,
Anup