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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list