On 07/01/2009 10:22, "Akio Takebe" <takebe_akio@xxxxxxxxxxxxxx> wrote:
Doesn't vioapic_irq_positive_edge() clearly expect to be called with that
lock held?
I concern about that vioapic_deliver() calls vcpu_kick(). If vcpu0 has the
lock and
vcpu1 cannot get lock and spin then vcpu0 sleep in another function,
it may cause deadlock because vioapic_irq_positive_edge() may call
vcpu_kick().
For example, the following function is OK?
I still don't see the problem. You'll have to spell out a concrete example,
explaining where the two CPUs would be spinning and what state they're in
(i.e, why they are depending on each other, and why no progress can be
made).