
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