Skip to content

Commit

Permalink
s390x: raise CPU hotplug irq after really hotplugged
Browse files Browse the repository at this point in the history
Let's move it into the machine, so we trigger the IRQ after setting
ms->possible_cpus (which SCLP uses to construct the list of
online CPUs).

This also fixes a problem reported by Thomas Huth, whereby qemu can be
crashed using the none machine

qemu-s390x-softmmu -M none -monitor stdio
-> device_add qemu-s390-cpu

Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: David Hildenbrand <david@redhat.com>
Message-Id: <20170928134609.16985-3-david@redhat.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
  • Loading branch information
davidhildenbrand authored and cohuck committed Oct 6, 2017
1 parent 040078e commit c5b9343
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 8 deletions.
4 changes: 4 additions & 0 deletions hw/s390x/s390-virtio-ccw.c
Expand Up @@ -307,6 +307,10 @@ static void s390_cpu_plug(HotplugHandler *hotplug_dev,

g_assert(!ms->possible_cpus->cpus[cpu->env.core_id].cpu);
ms->possible_cpus->cpus[cpu->env.core_id].cpu = OBJECT(dev);

if (dev->hotplugged) {
raise_irq_cpu_hotplug();
}
}

static void s390_machine_reset(void)
Expand Down
8 changes: 0 additions & 8 deletions target/s390x/cpu.c
Expand Up @@ -41,7 +41,6 @@
#include "hw/hw.h"
#include "sysemu/arch_init.h"
#include "sysemu/sysemu.h"
#include "hw/s390x/sclp.h"
#endif

#define CR0_RESET 0xE0UL
Expand Down Expand Up @@ -227,13 +226,6 @@ static void s390_cpu_realizefn(DeviceState *dev, Error **errp)
#endif

scc->parent_realize(dev, &err);

#if !defined(CONFIG_USER_ONLY)
if (dev->hotplugged) {
raise_irq_cpu_hotplug();
}
#endif

out:
error_propagate(errp, err);
}
Expand Down

0 comments on commit c5b9343

Please sign in to comment.