]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
RISC-V: KVM: Add SBI MPXY extension support for Guest
authorAnup Patel <apatel@ventanamicro.com>
Fri, 17 Oct 2025 15:59:24 +0000 (21:29 +0530)
committerAnup Patel <anup@brainfault.org>
Mon, 24 Nov 2025 04:25:36 +0000 (09:55 +0530)
The SBI MPXY extension is a platform-level functionality so KVM only
needs to forward SBI MPXY calls to KVM user-space.

Signed-off-by: Anup Patel <apatel@ventanamicro.com>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
Link: https://lore.kernel.org/r/20251017155925.361560-4-apatel@ventanamicro.com
Signed-off-by: Anup Patel <anup@brainfault.org>
arch/riscv/include/asm/kvm_vcpu_sbi.h
arch/riscv/include/uapi/asm/kvm.h
arch/riscv/kvm/vcpu_sbi.c
arch/riscv/kvm/vcpu_sbi_forward.c

index 446f4a8eb3cd03776c5ba769a24993c6f748d560..c1a7e3b40d9cedefa95ec2d004ef696c7b3cf034 100644 (file)
@@ -107,6 +107,7 @@ extern const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_dbcn;
 extern const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_susp;
 extern const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_sta;
 extern const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_fwft;
+extern const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_mpxy;
 extern const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_experimental;
 extern const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_vendor;
 
index 759a4852c09a564a150d58f0a6b9095bfa5001ce..37213d86c0d1444b4014b7bc4df7dc8ef512926d 100644 (file)
@@ -211,6 +211,7 @@ enum KVM_RISCV_SBI_EXT_ID {
        KVM_RISCV_SBI_EXT_STA,
        KVM_RISCV_SBI_EXT_SUSP,
        KVM_RISCV_SBI_EXT_FWFT,
+       KVM_RISCV_SBI_EXT_MPXY,
        KVM_RISCV_SBI_EXT_MAX,
 };
 
index fd4106c276d8009a2ddbbd2691b2797ced6e743e..46ab7b989432b9d4a1e48a856dea9be156c03c20 100644 (file)
@@ -82,6 +82,10 @@ static const struct kvm_riscv_sbi_extension_entry sbi_ext[] = {
                .ext_idx = KVM_RISCV_SBI_EXT_FWFT,
                .ext_ptr = &vcpu_sbi_ext_fwft,
        },
+       {
+               .ext_idx = KVM_RISCV_SBI_EXT_MPXY,
+               .ext_ptr = &vcpu_sbi_ext_mpxy,
+       },
        {
                .ext_idx = KVM_RISCV_SBI_EXT_EXPERIMENTAL,
                .ext_ptr = &vcpu_sbi_ext_experimental,
index dbfa70c2c77566ddaf9c557423919807bec3fec1..5a3c75eb23c5a74765e4fafab92ccf6f23cb64f0 100644 (file)
@@ -25,3 +25,10 @@ const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_dbcn = {
        .default_disabled = true,
        .handler = kvm_riscv_vcpu_sbi_forward_handler,
 };
+
+const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_mpxy = {
+       .extid_start = SBI_EXT_MPXY,
+       .extid_end = SBI_EXT_MPXY,
+       .default_disabled = true,
+       .handler = kvm_riscv_vcpu_sbi_forward_handler,
+};