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

Re: [Xen-devel] [PATCH v3 1/2] IOMMU/spinlock: Fix a bug found in AMD IOMMU initialization



CC Kevin, 

On March 09, 2016 11:00pm, <dario.faggioli@xxxxxxxxxx> wrote:
> On Wed, 2016-03-09 at 21:17 +0800, Quan Xu wrote:
> > pcidevs_lock should be held with interrupt enabled.
> >
> There's a message from Jan when he says:
> <<Well, I'd say something like "pcidevs_lock doesn't require interrupts to be
> disabled while being acquired".>>
> 
> :-O
> 
> > However there remains
> > an exception in AMD IOMMU code, where the lock is acquired with
> > interrupt disabled. This inconsistency might lead to deadlock.
> >
> I appreciate that 'might' is weaker than 'can'. Personally, I still dob't 
> find this
> correct, or at least clear enough, referred to this patch, but I won't be in 
> the
> way because of this.
> 
> > The fix is straightforward to use spin_lock instead. Also interrupt
> > has been enabled when this function is invoked, so we're sure
> > consistency around pcidevs_lock can be guaranteed after this fix.
> >
> And I also can't really get what "so we're sure consistency around 
> pcidevs_lock
> can be guaranteed after this fix" actually means, but again, that's probably 
> me,
> and it's fine.
> 
> However,
> 
> > Signed-off-by: Quan Xu <quan.xu@xxxxxxxxx>
> > Reviewed-by: Dario Faggioli <dario.faggioli@xxxxxxxxxx>
> >
> This still stands **only** if the very first sentence "pcidevs_lock should be 
> held
> with interrupt enabled" is changed to "pcidevs_lock doesn't require 
> interrupts to
> be disabled while being acquired".
> 

Dario,
I am open for this change:).

When I read:
1. (look at "Lesson 3: spinlocks revisited.")
  https://www.kernel.org/doc/Documentation/locking/spinlocks.txt
2. comment inside check_lock(), in xen/common/spinlock.c, in Xen's codebase.
3. the "Linux Device Drivers, 3rd Edition" book , 
http://www.makelinux.net/ldd3/chp-5-sect-5 

I found that:
    - "We partition locks into IRQ-safe (__always__ held with IRQs disabled) 
and IRQ-unsafe (__always__ held with IRQs enabled) types".

It looks like Kevin's description is better. 

I also found that you mentioned in this thread:
"...  __except for very special situations__".
If it is true, I think your description is better.

Thanks for your time..:):)


Quan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

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