[PATCH 17/18] KVM: riscv: instructions are little endian

Ben Dooks ben.dooks at codethink.co.uk
Fri Aug 22 09:52:47 PDT 2025


The instructions are always little endian, so ensure the
correct instruction endian.

Signed-off-by: Ben Dooks <ben.dooks at codethink.co.uk>
---
 arch/riscv/kvm/vcpu_insn.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/arch/riscv/kvm/vcpu_insn.c b/arch/riscv/kvm/vcpu_insn.c
index 97dec18e6989..b1edc7b10d7a 100644
--- a/arch/riscv/kvm/vcpu_insn.c
+++ b/arch/riscv/kvm/vcpu_insn.c
@@ -453,6 +453,8 @@ int kvm_riscv_vcpu_virtual_insn(struct kvm_vcpu *vcpu, struct kvm_run *run,
 				kvm_riscv_vcpu_trap_redirect(vcpu, &utrap);
 				return 1;
 			}
+
+			insn = le32_to_cpu(insn);
 		}
 		if (INSN_IS_16BIT(insn))
 			return truly_illegal_insn(vcpu, run, insn);
@@ -509,6 +511,8 @@ int kvm_riscv_vcpu_mmio_load(struct kvm_vcpu *vcpu, struct kvm_run *run,
 			kvm_riscv_vcpu_trap_redirect(vcpu, &utrap);
 			return 1;
 		}
+
+		insn = le32_to_cpu(insn);
 		insn_len = INSN_LEN(insn);
 	}
 
@@ -635,6 +639,8 @@ int kvm_riscv_vcpu_mmio_store(struct kvm_vcpu *vcpu, struct kvm_run *run,
 			kvm_riscv_vcpu_trap_redirect(vcpu, &utrap);
 			return 1;
 		}
+
+		insn = le32_to_cpu(insn);
 		insn_len = INSN_LEN(insn);
 	}
 
-- 
2.37.2.352.g3c44437643




More information about the linux-riscv mailing list