Re: [RFC PATCH 0/9] accel: Only include qdev-realized vCPUs in global &cpus_queue

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 28 Jan 2025 15:21:43 +0100
Philippe Mathieu-Daudé <philmd@xxxxxxxxxx> wrote:

> Hi,
> 
> The goal of this series is to expose vCPUs in a stable state
> to the accelerators, in particular the QDev 'REALIZED' step.

I'll take some of your patches (with Richard's feedback fixed),
and respin series focusing mostly on realize part.
(and drop wire/unwire parts, reshuffling cpu code instead)

> 
> To do so we split the QTAILQ_INSERT/REMOVE calls from
> cpu_list_add() / cpu_list_remove(), by moving them to the
> DeviceClass::[un]wire() handlers, guaranty to be called just
> before a vCPU is exposed to the guest, as "realized".
> 
> First we have to modify how &first_cpu is used in TCG round
> robin implementation, and ensure we invalidate the TB jmpcache
> with &qemu_cpu_list locked.
> 
> I'm really out of my comfort zone here, so posting as RFC. At
> least all test suite is passing...
> 
> I expect these changes to allow CPUState::cpu_index clarifications
> and simplifications, but this will be addressed (and commented) in
> a separate series.
> 
> Regards,
> 
> Phil.
> 
> Philippe Mathieu-Daudé (9):
>   accel/tcg: Simplify use of &first_cpu in rr_cpu_thread_fn()
>   accel/tcg: Invalidate TB jump cache with global vCPU queue locked
>   cpus: Remove cpu from global queue after UNREALIZE completed
>   hw/qdev: Introduce DeviceClass::[un]wire() handlers
>   cpus: Add DeviceClass::[un]wire() stubs
>   cpus: Call hotplug handlers in DeviceWire()
>   cpus: Only expose REALIZED vCPUs to global &cpus_queue
>   accel/kvm: Assert vCPU is created when calling kvm_dirty_ring_reap*()
>   accel/kvm: Remove unreachable assertion in kvm_dirty_ring_reap*()
> 
>  include/hw/qdev-core.h       |  7 +++++++
>  accel/kvm/kvm-all.c          |  9 ---------
>  accel/tcg/tb-maint.c         |  2 ++
>  accel/tcg/tcg-accel-ops-rr.c | 15 ++++++++-------
>  cpu-common.c                 |  2 --
>  cpu-target.c                 |  7 ++-----
>  hw/core/cpu-common.c         | 18 +++++++++++++++++-
>  hw/core/qdev.c               | 20 +++++++++++++++++++-
>  8 files changed, 55 insertions(+), 25 deletions(-)
> 






[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux