82 lines
2.2 KiB
Diff
82 lines
2.2 KiB
Diff
|
|
From 717faefc8f56490ad94ef69b42c2d2491225ace8 Mon Sep 17 00:00:00 2001
|
||
|
|
From: Bibo Mao <maobibo@loongson.cn>
|
||
|
|
Date: Sun, 28 Apr 2024 11:16:51 +0800
|
||
|
|
Subject: [PATCH 43/78] target/loongarch: Put cpucfg operation before CSR
|
||
|
|
register
|
||
|
|
|
||
|
|
On Loongarch, cpucfg is register for cpu feature, some other registers
|
||
|
|
depend on cpucfg feature such as perf CSR registers. Here put cpucfg
|
||
|
|
read/write operations before CSR register, so that KVM knows how many
|
||
|
|
perf CSR registers are valid from pre-set cpucfg feature information.
|
||
|
|
|
||
|
|
Signed-off-by: Bibo Mao <maobibo@loongson.cn>
|
||
|
|
Reviewed-by: Song Gao <gaosong@loongson.cn>
|
||
|
|
Message-Id: <20240428031651.1354587-1-maobibo@loongson.cn>
|
||
|
|
Signed-off-by: Song Gao <gaosong@loongson.cn>
|
||
|
|
Signed-off-by: Xianglai Li <lixianglai@loongson.cn>
|
||
|
|
---
|
||
|
|
target/loongarch/kvm/kvm.c | 16 ++++++++--------
|
||
|
|
1 file changed, 8 insertions(+), 8 deletions(-)
|
||
|
|
|
||
|
|
diff --git a/target/loongarch/kvm/kvm.c b/target/loongarch/kvm/kvm.c
|
||
|
|
index 5c88270132..407d454919 100644
|
||
|
|
--- a/target/loongarch/kvm/kvm.c
|
||
|
|
+++ b/target/loongarch/kvm/kvm.c
|
||
|
|
@@ -714,22 +714,22 @@ int kvm_arch_get_registers(CPUState *cs)
|
||
|
|
return ret;
|
||
|
|
}
|
||
|
|
|
||
|
|
- ret = kvm_loongarch_get_csr(cs);
|
||
|
|
+ ret = kvm_loongarch_get_cpucfg(cs);
|
||
|
|
if (ret) {
|
||
|
|
return ret;
|
||
|
|
}
|
||
|
|
|
||
|
|
- ret = kvm_loongarch_get_regs_fp(cs);
|
||
|
|
+ ret = kvm_loongarch_get_csr(cs);
|
||
|
|
if (ret) {
|
||
|
|
return ret;
|
||
|
|
}
|
||
|
|
|
||
|
|
- ret = kvm_loongarch_get_mpstate(cs);
|
||
|
|
+ ret = kvm_loongarch_get_regs_fp(cs);
|
||
|
|
if (ret) {
|
||
|
|
return ret;
|
||
|
|
}
|
||
|
|
|
||
|
|
- ret = kvm_loongarch_get_cpucfg(cs);
|
||
|
|
+ ret = kvm_loongarch_get_mpstate(cs);
|
||
|
|
return ret;
|
||
|
|
}
|
||
|
|
|
||
|
|
@@ -742,22 +742,22 @@ int kvm_arch_put_registers(CPUState *cs, int level)
|
||
|
|
return ret;
|
||
|
|
}
|
||
|
|
|
||
|
|
- ret = kvm_loongarch_put_csr(cs, level);
|
||
|
|
+ ret = kvm_loongarch_put_cpucfg(cs);
|
||
|
|
if (ret) {
|
||
|
|
return ret;
|
||
|
|
}
|
||
|
|
|
||
|
|
- ret = kvm_loongarch_put_regs_fp(cs);
|
||
|
|
+ ret = kvm_loongarch_put_csr(cs, level);
|
||
|
|
if (ret) {
|
||
|
|
return ret;
|
||
|
|
}
|
||
|
|
|
||
|
|
- ret = kvm_loongarch_put_mpstate(cs);
|
||
|
|
+ ret = kvm_loongarch_put_regs_fp(cs);
|
||
|
|
if (ret) {
|
||
|
|
return ret;
|
||
|
|
}
|
||
|
|
|
||
|
|
- ret = kvm_loongarch_put_cpucfg(cs);
|
||
|
|
+ ret = kvm_loongarch_put_mpstate(cs);
|
||
|
|
return ret;
|
||
|
|
}
|
||
|
|
|
||
|
|
--
|
||
|
|
2.39.1
|
||
|
|
|