KVM/riscv fixes for 6.16, take #1 - Fix the size parameter check in SBI SFENCE calls - Don't treat SBI HFENCE calls as NOPs
Unified · Split
| @@ -103,7 +103,7 @@ static int kvm_sbi_ext_rfence_handler(struct kvm_vcpu *vcpu, struct kvm_run *run · 102 unmodified lines | |||
| 103 | kvm_riscv_vcpu_pmu_incr_fw(vcpu, SBI_PMU_FW_FENCE_I_SENT); | 103 | kvm_riscv_vcpu_pmu_incr_fw(vcpu, SBI_PMU_FW_FENCE_I_SENT); |
| 104 | break; | 104 | break; |
| 105 | case SBI_EXT_RFENCE_REMOTE_SFENCE_VMA: | 105 | case SBI_EXT_RFENCE_REMOTE_SFENCE_VMA: |
| 106 | if (cp->a2 == 0 && cp->a3 == 0) | 106 | if ((cp->a2 == 0 && cp->a3 == 0) || cp->a3 == -1UL) |
| 107 | kvm_riscv_hfence_vvma_all(vcpu->kvm, hbase, hmask); | 107 | kvm_riscv_hfence_vvma_all(vcpu->kvm, hbase, hmask); |
| 108 | else | 108 | else |
| 109 | kvm_riscv_hfence_vvma_gva(vcpu->kvm, hbase, hmask, | 109 | kvm_riscv_hfence_vvma_gva(vcpu->kvm, hbase, hmask, |
| @@ -111,7 +111,7 @@ static int kvm_sbi_ext_rfence_handler(struct kvm_vcpu *vcpu, struct kvm_run *run · 1 unmodified line | |||
| 111 | kvm_riscv_vcpu_pmu_incr_fw(vcpu, SBI_PMU_FW_HFENCE_VVMA_SENT); | 111 | kvm_riscv_vcpu_pmu_incr_fw(vcpu, SBI_PMU_FW_HFENCE_VVMA_SENT); |
| 112 | break; | 112 | break; |
| 113 | case SBI_EXT_RFENCE_REMOTE_SFENCE_VMA_ASID: | 113 | case SBI_EXT_RFENCE_REMOTE_SFENCE_VMA_ASID: |
| 114 | if (cp->a2 == 0 && cp->a3 == 0) | 114 | if ((cp->a2 == 0 && cp->a3 == 0) || cp->a3 == -1UL) |
| 115 | kvm_riscv_hfence_vvma_asid_all(vcpu->kvm, | 115 | kvm_riscv_hfence_vvma_asid_all(vcpu->kvm, |
| 116 | hbase, hmask, cp->a4); | 116 | hbase, hmask, cp->a4); |
| 117 | else | 117 | else |
| @@ -127,9 +127,9 @@ static int kvm_sbi_ext_rfence_handler(struct kvm_vcpu *vcpu, struct kvm_run *run · 9 unmodified lines | |||
| 127 | case SBI_EXT_RFENCE_REMOTE_HFENCE_VVMA_ASID: | 127 | case SBI_EXT_RFENCE_REMOTE_HFENCE_VVMA_ASID: |
| 128 | /* | 128 | /* |
| 129 | * Until nested virtualization is implemented, the | 129 | * Until nested virtualization is implemented, the |
| 130 | * SBI HFENCE calls should be treated as NOPs | 130 | * SBI HFENCE calls should return not supported |
| 131 | * hence fallthrough. | ||
| 131 | */ | 132 | */ |
| 132 | break; | ||
| 133 | default: | 133 | default: |
| 134 | retdata->err_val = SBI_ERR_NOT_SUPPORTED; | 134 | retdata->err_val = SBI_ERR_NOT_SUPPORTED; |
| 135 | } | 135 | } |