[PATCH v2 0/4] target/loongarch/kvm: cpucfg and device attr fixes

Tao Cui posted 4 patches 1 month ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20260626052742.810726-1-cui.tao@linux.dev
Maintainers: Song Gao <gaosong@loongson.cn>
target/loongarch/kvm/kvm.c    | 46 ++++++++++++++++++++---------------
target/loongarch/trace-events |  2 --
2 files changed, 26 insertions(+), 22 deletions(-)
[PATCH v2 0/4] target/loongarch/kvm: cpucfg and device attr fixes
Posted by Tao Cui 1 month ago
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(-)

---
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().

-- 
2.43.0
Re: [PATCH v2 0/4] target/loongarch/kvm: cpucfg and device attr fixes
Posted by gaosong 3 weeks, 5 days ago
在 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().
>