[Top][All Lists]

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

Re: [Qemu-devel] [RFC] create a single workqueue for each vm to update v

From: Avi Kivity
Subject: Re: [Qemu-devel] [RFC] create a single workqueue for each vm to update vm irq routing table
Date: Tue, 26 Nov 2013 16:36:03 +0200

On Tue, Nov 26, 2013 at 3:47 PM, Paolo Bonzini <address@hidden> wrote:
Il 26/11/2013 14:18, Avi Kivity ha scritto:
>> I don't think a workqueue is even needed.  You just need to use call_rcu
>> to free "old" after releasing kvm->irq_lock.
>> What do you think?
> Can this cause an interrupt to be delivered to the wrong (old) vcpu?

No, this would be exactly the same code that is running now:

        old = kvm->irq_routing;
        kvm_irq_routing_update(kvm, new);

        return 0;

Except that the kfree would run in the call_rcu kernel thread instead of
the vcpu thread.  But the vcpus already see the new routing table after
the rcu_assign_pointer that is in kvm_irq_routing_update.

I understood the proposal was also to eliminate the synchronize_rcu(), so while new interrupts would see the new routing table, interrupts already in flight could pick up the old one.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]