Skip to content

Commit 012c722

Browse files
committed
Merge tag 'kvm-riscv-fixes-5.18-2' of https://github.com/kvm-riscv/linux into HEAD
KVM/riscv fixes for 5.18, take #2 - Remove 's' & 'u' as valid ISA extension - Do not allow disabling the base extensions 'i'/'m'/'a'/'c'
2 parents b2d229d + 38d9a4a commit 012c722

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

arch/riscv/kvm/vcpu.c

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,16 @@ const struct kvm_stats_header kvm_vcpu_stats_header = {
3838
sizeof(kvm_vcpu_stats_desc),
3939
};
4040

41-
#define KVM_RISCV_ISA_ALLOWED (riscv_isa_extension_mask(a) | \
42-
riscv_isa_extension_mask(c) | \
43-
riscv_isa_extension_mask(d) | \
44-
riscv_isa_extension_mask(f) | \
45-
riscv_isa_extension_mask(i) | \
46-
riscv_isa_extension_mask(m) | \
47-
riscv_isa_extension_mask(s) | \
48-
riscv_isa_extension_mask(u))
41+
#define KVM_RISCV_ISA_DISABLE_ALLOWED (riscv_isa_extension_mask(d) | \
42+
riscv_isa_extension_mask(f))
43+
44+
#define KVM_RISCV_ISA_DISABLE_NOT_ALLOWED (riscv_isa_extension_mask(a) | \
45+
riscv_isa_extension_mask(c) | \
46+
riscv_isa_extension_mask(i) | \
47+
riscv_isa_extension_mask(m))
48+
49+
#define KVM_RISCV_ISA_ALLOWED (KVM_RISCV_ISA_DISABLE_ALLOWED | \
50+
KVM_RISCV_ISA_DISABLE_NOT_ALLOWED)
4951

5052
static void kvm_riscv_reset_vcpu(struct kvm_vcpu *vcpu)
5153
{
@@ -219,7 +221,8 @@ static int kvm_riscv_vcpu_set_reg_config(struct kvm_vcpu *vcpu,
219221
switch (reg_num) {
220222
case KVM_REG_RISCV_CONFIG_REG(isa):
221223
if (!vcpu->arch.ran_atleast_once) {
222-
vcpu->arch.isa = reg_val;
224+
/* Ignore the disable request for these extensions */
225+
vcpu->arch.isa = reg_val | KVM_RISCV_ISA_DISABLE_NOT_ALLOWED;
223226
vcpu->arch.isa &= riscv_isa_extension_base(NULL);
224227
vcpu->arch.isa &= KVM_RISCV_ISA_ALLOWED;
225228
kvm_riscv_vcpu_fp_reset(vcpu);

0 commit comments

Comments
 (0)