[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC PATCH 0/9] accel: Only include qdev-realized vCPUs in global &cpus_
From: |
Philippe Mathieu-Daudé |
Subject: |
[RFC PATCH 0/9] accel: Only include qdev-realized vCPUs in global &cpus_queue |
Date: |
Tue, 28 Jan 2025 15:21:43 +0100 |
Hi,
The goal of this series is to expose vCPUs in a stable state
to the accelerators, in particular the QDev 'REALIZED' step.
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(-)
--
2.47.1
- [RFC PATCH 0/9] accel: Only include qdev-realized vCPUs in global &cpus_queue,
Philippe Mathieu-Daudé <=
- [RFC PATCH 1/9] accel/tcg: Simplify use of &first_cpu in rr_cpu_thread_fn(), Philippe Mathieu-Daudé, 2025/01/28
- [RFC PATCH 2/9] accel/tcg: Invalidate TB jump cache with global vCPU queue locked, Philippe Mathieu-Daudé, 2025/01/28
- [RFC PATCH 3/9] cpus: Remove cpu from global queue after UNREALIZE completed, Philippe Mathieu-Daudé, 2025/01/28
- [RFC PATCH 4/9] hw/qdev: Introduce DeviceClass::[un]wire() handlers, Philippe Mathieu-Daudé, 2025/01/28
- [PATCH 5/9] cpus: Add DeviceClass::[un]wire() stubs, Philippe Mathieu-Daudé, 2025/01/28