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/2024052221.232114-1-salil.me...@huawei.com/
>
Reviewed-by: Nicholas Piggin
> Suggested-by: Nicholas Piggin
> Signed-off-by: Harsh Prateek Bora
> ---
> 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;