@@ -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
5052static 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