[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: |
Gleb Natapov |
Subject: |
Re: [Qemu-devel] [RFC] create a single workqueue for each vm to update vm irq routing table |
Date: |
Tue, 26 Nov 2013 18:37:01 +0200 |
On Tue, Nov 26, 2013 at 05:28:23PM +0100, Paolo Bonzini wrote:
> Il 26/11/2013 17:24, Gleb Natapov ha scritto:
> >> VCPU writes to routing table
> >> e = entry from IRQ routing table
> >> kvm_irq_routing_update(kvm, new);
> >> VCPU resumes execution
> >> kvm_set_msi_irq(e, &irq);
> >> kvm_irq_delivery_to_apic_fast();
> >>
> >> where the entry is stale but the VCPU has already resumed execution.
> >
> > So how is it different from what we have now:
> >
> > disable_irq()
> > VCPU writes to routing table
> > e = entry from IRQ routing table
> > kvm_set_msi_irq(e, &irq);
> > kvm_irq_delivery_to_apic_fast();
> > kvm_irq_routing_update(kvm, new);
> > synchronize_rcu()
> > VCPU resumes execution
> > enable_irq()
> > receive stale irq
>
> Adding a "disable/enable IRQs" looks like a relatively big change. But
> perhaps it's not for some reason I'm missing.
>
You will receive stale irq even without disable/enable IRQs of course. I
put it there so that guest would have a chance to do stupid things like
zeroing idt before receiving interrupt, but on real HW timing is
different from what we emulate, so the same race may happen even without
disable/enable IRQs.
--
Gleb.
- Re: [Qemu-devel] [RFC] create a single workqueue for each vm to update vm irq routing table, (continued)
- Re: [Qemu-devel] [RFC] create a single workqueue for each vm to update vm irq routing table, Michael S. Tsirkin, 2013/11/26
- Re: [Qemu-devel] [RFC] create a single workqueue for each vm to update vm irq routing table, Gleb Natapov, 2013/11/26
- Re: [Qemu-devel] [RFC] create a single workqueue for each vm to update vm irq routing table, Avi Kivity, 2013/11/26
- Re: [Qemu-devel] [RFC] create a single workqueue for each vm to update vm irq routing table, Gleb Natapov, 2013/11/26
- Re: [Qemu-devel] [RFC] create a single workqueue for each vm to update vm irq routing table, Paolo Bonzini, 2013/11/26
- Re: [Qemu-devel] [RFC] create a single workqueue for each vm to update vm irq routing table, Avi Kivity, 2013/11/26
- Re: [Qemu-devel] [RFC] create a single workqueue for each vm to update vm irq routing table,
Gleb Natapov <=
- Re: [Qemu-devel] [RFC] create a single workqueue for each vm to update vm irq routing table, Zhanghaoyu (A), 2013/11/28
- Re: [Qemu-devel] [RFC] create a single workqueue for each vm to update vm irq routing table, Paolo Bonzini, 2013/11/28
- Re: [Qemu-devel] [RFC] create a single workqueue for each vm to update vm irq routing table, Gleb Natapov, 2013/11/28
- Re: [Qemu-devel] [RFC] create a single workqueue for each vm to update vm irq routing table, Paolo Bonzini, 2013/11/28
- Re: [Qemu-devel] [RFC] create a single workqueue for each vm to update vm irq routing table, Gleb Natapov, 2013/11/28
- Re: [Qemu-devel] [RFC] create a single workqueue for each vm to update vm irq routing table, Avi Kivity, 2013/11/28
- Re: [Qemu-devel] [RFC] create a single workqueue for each vm to update vm irq routing table, Paolo Bonzini, 2013/11/28
- Re: [Qemu-devel] [RFC] create a single workqueue for each vm to update vm irq routing table, Avi Kivity, 2013/11/28
- Re: [Qemu-devel] [RFC] create a single workqueue for each vm to update vm irq routing table, Paolo Bonzini, 2013/11/28
- Re: [Qemu-devel] [RFC] create a single workqueue for each vm to update vm irq routing table, Avi Kivity, 2013/11/28