On Thu May 23, 2024 at 5:26 PM AEST, Harsh Prateek Bora wrote: > There are distinct helpers for creating and parking a KVM vCPU. > However, there can be cases where a platform needs to create and > immediately park the vCPU during early stages of vcpu init which > can later be reused when vcpu thread gets initialized. This would > help detect failures with kvm_create_vcpu at an early stage. > > Based on api refactoring to create/park vcpus introduced in 1/8 of patch > series: > https://lore.kernel.org/qemu-devel/20240522211111.232114-1-salil.me...@huawei.com/ >
Reviewed-by: Nicholas Piggin <npig...@gmail.com> > Suggested-by: Nicholas Piggin <npig...@gmail.com> > Signed-off-by: Harsh Prateek Bora <hars...@linux.ibm.com> > --- > accel/kvm/kvm-cpus.h | 8 ++++++++ > accel/kvm/kvm-all.c | 12 ++++++++++++ > 2 files changed, 20 insertions(+) > > diff --git a/accel/kvm/kvm-cpus.h b/accel/kvm/kvm-cpus.h > index 2e6bb38b5d..00e534b3b9 100644 > --- a/accel/kvm/kvm-cpus.h > +++ b/accel/kvm/kvm-cpus.h > @@ -46,4 +46,12 @@ void kvm_park_vcpu(CPUState *cpu); > * @returns: KVM fd > */ > int kvm_unpark_vcpu(KVMState *s, unsigned long vcpu_id); > + > +/** > + * * kvm_create_and_park_vcpu - Create and park a KVM vCPU > + * * @cpu: QOM CPUState object for which KVM vCPU has to be created and > parked. > + * * > + * * @returns: 0 when success, errno (<0) when failed. > + * */ Something went wrong with re-flowing the comment? Don't worry about resending for that just now, at least until we work out the dependency with Salil's series and ready to merge. Thanks, Nick > +int kvm_create_and_park_vcpu(CPUState *cpu); > #endif /* KVM_CPUS_H */ > diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c > index fc30e5d5b8..d70ca62ff5 100644 > --- a/accel/kvm/kvm-all.c > +++ b/accel/kvm/kvm-all.c > @@ -398,6 +398,18 @@ int kvm_create_vcpu(CPUState *cpu) > return 0; > } > > +int kvm_create_and_park_vcpu(CPUState *cpu) > +{ > + int ret = 0; > + > + ret = kvm_create_vcpu(cpu); > + if (!ret) { > + kvm_park_vcpu(cpu); > + } > + > + return ret; > +} > + > static int do_kvm_destroy_vcpu(CPUState *cpu) > { > KVMState *s = kvm_state;