On 28/05/2015 14:08, Shannon Zhao wrote:
>-static qemu_irq *irq_cpu_hotplug; /* Only used in this file */
>+static qemu_irq irq_cpu_hotplug; /* Only used in this file */
>
> #define EVENT_QUAL_CPU_CHANGE 1
>
> void raise_irq_cpu_hotplug(void)
> {
>- qemu_irq_raise(*irq_cpu_hotplug);
>+ qemu_irq_raise(irq_cpu_hotplug);
> }
>
> static unsigned int send_mask(void)
>@@ -81,7 +81,10 @@ static void trigger_signal(void *opaque, int n, int level)
>
> static int irq_cpu_hotplug_init(SCLPEvent *event)
> {
>- irq_cpu_hotplug = qemu_allocate_irqs(trigger_signal, event, 1);
>+ qemu_irq irq = qemu_allocate_irq(trigger_signal, event, 0);
>+
>+ irq_cpu_hotplug = irq;
>+ qemu_free_irq(irq);
> return 0;
This is wrong, you cannot free the IRQ after you have stored it in
irq_cpu_hotplug.