[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [Xen-devel] [PATCH] Fix hvm vcpu hotplug bug



Ian Jackson wrote:
> Liu, Jinsong writes ("[Xen-devel] [PATCH] Fix hvm vcpu hotplug bug"):
>> When hotplug hvm vcpu by 'xm vcpu-set' command, if it add/remove
>> many vcpus by 1 'xm vcpu-set' command, it has a bug that it cannot
>> add/remove all vcpus that want to be added/removed.
>> This patch is to fix the bug. It delays trigger sci until all
>> xenstore cpu node status are watched.
> 
> This patch seems to arrange to take multiple CPU hot-add/remove events
> and coalesce them into a single event.  It is obvious how this avoids
> triggering a race, but I'm not convinced that it's a correct fix.

It's used to avoid inconsistency of cpu status map (producer: qemu watch 
xenstore cpu nodes; customer: SCI \_L02 control method), so it delay trigger 
SCI until all cpu node are watched.

> 
> The core problem seems to be that somehow the SCI IRQ is lost ?
> Perhaps the real problem is this code:
>         qemu_set_irq(sci_irq, 1);
>         qemu_set_irq(sci_irq, 0);
> 
> I'm not familiar with the way SCI is supposed to work but clearing the
> irq in the qemu add/remove function seems wrong.  Surely the host
> should clear the interrupt when it has serviced the interrupt.
> 
> Can you explain what I'm missing ?
> 
> Ian.

Yes, you are right. 
In fact, it make me puzzling how and when to drop sci_irq to 0.

According to acpi spec, there are 2 level logic: gpe and sci.
1). gpe_en and gpe_sts 'AND' to trigger a gpe event (like pci-hotplug, 
cpu-hotplug);
2). multi gpe event 'OR' to trigger sci, which now wired to i8259[9];

Current qemu-xen implement gpe logic, and directly wired gpe to i8259[9].
Since qemu-xen now only support pci-hotplug event, it can work doing so.
However, if we want to support multi hotplug event, qemu-xen now didn't have 
'gpe events OR to trigger sci' logic.
I think qemu-xen should add this logic level, so that it can support more gpe 
events in the future.

BTW, at qemu-kvm, it do same as our current patch:
         qemu_set_irq(sci_irq, 1);
         qemu_set_irq(sci_irq, 0);
it triggers a sci pulse and works fine.

Thanks,
Jinsong
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.