[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