在 2026/6/26 下午1:27, Tao Cui 写道:
> 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, warn and skip the mask on a GET
> failure (best-effort negotiation), 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 | 46 ++++++++++++++++++++---------------
> target/loongarch/trace-events | 2 --
> 2 files changed, 26 insertions(+), 22 deletions(-)
>
> ---
Applied to loongarch-next.
Thanks.
Song Gao
> Changes in v2:
> - 1/4: on KVM_GET_DEVICE_ATTR failure, warn and skip the cpucfg2 mask
> instead of failing the register sync; the &= mask is best-effort, and a
> GET failure after a successful HAS is most likely a copy_{from,to}_user
> issue. Switched the report from error_report() to warn_report().
>