[libvirt] [PATCH 0/3] qemu: Don't call qemuMonitorGetCPUInfo to update vCPU halted state
Viktor Mihajlovski
mihajlov at linux.vnet.ibm.com
Tue Nov 22 11:52:26 UTC 2016
On 22.11.2016 09:22, Peter Krempa wrote:
> On Mon, Nov 21, 2016 at 17:14:42 +0100, Viktor Mihajlovski wrote:
>> On 21.11.2016 16:30, Peter Krempa wrote:
>>> The original implementation reused qemuMonitorGetCPUInfo to update the halted
>>> state. The function is very complex and should not be called all the time just
>>> to update a trivial parameter.
>>>
>>> Add infrastructure to properly update the state without the need to match in
>>> hotplug parameters.
>>>
>>> Peter Krempa (3):
>>> qemu: monitor: Extract qemu cpu id along with other data
>>> qemu: monitor: Extract halted state to a bitmap indexed by cpu id
>>> qemu: domain: Refresh vcpu halted state using qemuMonitorGetCpuHalted
>>>
>>> src/qemu/qemu_domain.c | 20 ++++++++------------
>>> src/qemu/qemu_domain.h | 1 +
>>> src/qemu/qemu_monitor.c | 40 ++++++++++++++++++++++++++++++++++++++++
>>> src/qemu/qemu_monitor.h | 3 +++
>>> src/qemu/qemu_monitor_json.c | 3 +++
>>> src/qemu/qemu_monitor_text.c | 11 +++++++++++
>>> tests/qemumonitorjsontest.c | 8 ++++----
>>> 7 files changed, 70 insertions(+), 16 deletions(-)
>>>
>> Could you please hold off pushing? I've just run a sniff test on s390x
>> and see erratic values for halted. I'll try to investigate and get back
>> to you.
>
> I've already pushed it. The hiccup might be in the fallback code that
> does not remember correctly the cpu numbers as reported by qemu.
>
> I'll post patches if it's so.
>
Yep ... with the following squashed in, it worked for me, (legacy) hotplug
and all.
diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
index 3bace53..2d4ccbe 100644
--- a/src/qemu/qemu_monitor.c
+++ b/src/qemu/qemu_monitor.c
@@ -1729,6 +1729,7 @@ qemuMonitorGetCPUInfoLegacy(struct qemuMonitorQueryCpusEntry *cpuentrie
if (i < ncpuentries) {
vcpus[i].tid = cpuentries[i].tid;
vcpus[i].halted = cpuentries[i].halted;
+ vcpus[i].qemu_id = cpuentries[i].qemu_id;
}
/* for legacy hotplug to work we need to fake the vcpu count added by
More information about the libvir-list
mailing list