|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v6 1/5] xen/arm: observe itargets setting in vgic_enable_irqs and vgic_disable_irqs
On Tue, 24 Jun 2014, Julien Grall wrote:
> On 24/06/14 12:38, Stefano Stabellini wrote:
> > > Sorry for not having catch this earlier. I don't really like the idea to
> > > extend the rank lock to vgic_{enable/disable}_irqs. The 2 functions
> > > can be long to execute as it may touch the GIC distributor.
> > >
> > > In another way, the rank lock is only taken in the distributor emulation.
> > >
> > > Assuming we consider that distributor access may be slow:
> >
> > We could end up enabling or disabling the wrong set of interrupts
> > without this change. I think it is necessary.
>
> AFAIU, this lock only protects the rank when we retrieve the target VCPU, the
> other part of the function will still work without it.
>
> What I meant is to call vgic_get_target_vcpu, so the lock will protect only
> what is necessary and not more.
I don't think so (unless I misunderstood your suggestion): setting
ienable and enabling the interrupts need to be atomic. Otherwise this
can happen:
VCPU0 VCPU1
- rank_lock
- write icenabler
- get target vcpus
- rank_unlock
- rank_lock
- write icenable
- get target vcpus (some are the same)
- rank_unlock
- vgic_enable_irqs
- vgic_enable_irqs
we now have an inconsistent state: we enabled the irqs written from
vcpu0 but icenable reflects what was written from vcpu1.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |