From: Tao Cui <cuitao@kylinos.cn>
A few small robustness fixes around cpucfg register sync and kvm device
attribute handling in the LoongArch KVM target.
1/4: kvm_check_cpucfg2() discarded the return value of
KVM_GET_DEVICE_ATTR and used an uninitialized val to mask
cpucfg[2]; check the return value and initialize val.
2/4: kvm_get_stealtime(), kvm_set_stealtime() and kvm_set_pv_features()
pass a struct kvm_device_attr by value to the variadic
kvm_vcpu_ioctl(), which expects a pointer. Pass &attr.
3/4: drop the redundant trace_kvm_failed_get/put_cpucfg() calls and
their now-unused trace events; kvm_get/set_one_reg() already trace
on failure.
4/4: kvm_loongarch_get/put_cpucfg() overwrite ret on each iteration, so
only the last register's result is returned and earlier failures
are lost; on a failed read, get_cpucfg() also stores a stale val.
Accumulate errors with ret |= and only store on a successful read.
Compiled and boot-tested on a loongarch64 KVM host.
Tao Cui (4):
target/loongarch/kvm: fix uninitialized val and unchecked GET in
cpucfg2 check
target/loongarch/kvm: pass device attr by reference to kvm_vcpu_ioctl
target/loongarch/kvm: remove redundant cpucfg failure traces
target/loongarch/kvm: fix cpucfg sync error handling
target/loongarch/kvm/kvm.c | 39 ++++++++++++++++++-----------------
target/loongarch/trace-events | 2 --
2 files changed, 20 insertions(+), 21 deletions(-)
--
2.43.0