login
Header Space

 
 

Re: MSI interrupts and disable_irq

Score:
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Ayaz Abdulla <aabdulla@...>
Cc: Manfred Spraul <manfred@...>, nedev <netdev@...>, Linux Kernel Mailing List <linux-kernel@...>, David Miller <davem@...>, Andrew Morton <akpm@...>
Date: Friday, September 28, 2007 - 10:47 pm

Ayaz Abdulla wrote:

(added linux-kernel to CC, since I think it's more of a general kernel 
issue)

To be brutally frank, I always thought this disable_irq() mess was a 
hack both ugly and fragile.  This disable_irq() work that appeared in a 
couple net drivers was correct at the time, so I didn't feel I had the 
justification to reject it, but it still gave me a bad feeling.

I think the scenario you outline is an illustration of the approach's 
fragility:  disable_irq() is a heavy hammer that originated with INTx, 
and it relies on a chip-specific disable method (kernel/irq/manage.c) 
that practically guarantees behavior will vary across MSI/INTx/etc.

Practices like forcedeth's unique locking work for a time, but it should 
be a warning sign any time you stray from the normal spin_lock_irqsave() 
method of synchronization.

Based on your report, it is certainly possible that there is a problem 
with MSI's desc->chip->disable() method...  but I would actually 
recommend working around the problem by making the forcedeth locking 
more standardized by removing all those disable_irq() hacks.

Using spinlocks like other net drivers (note: avoid NETIF_F_LLTX 
drivers) has a high probability of both fixing your current problem, and 
giving forcedeth a more stable foundation for the long term.  In my 
humble opinion :)

	Jeff


-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: MSI interrupts and disable_irq, Jeff Garzik, (Fri Sep 28, 10:47 pm)
Re: MSI interrupts and disable_irq, Manfred Spraul, (Sat Oct 13, 5:30 am)
Re: MSI interrupts and disable_irq, Jeff Garzik, (Mon Oct 15, 6:17 pm)
Re: MSI interrupts and disable_irq, Yinghai Lu, (Tue Oct 16, 1:23 pm)
Re: MSI interrupts and disable_irq, Jeff Garzik, (Tue Oct 16, 1:39 pm)
Re: MSI interrupts and disable_irq, Yinghai Lu, (Tue Oct 16, 2:01 pm)
Re: MSI interrupts and disable_irq, Manfred Spraul, (Wed Oct 17, 3:43 pm)
Re: MSI interrupts and disable_irq, Yinghai Lu, (Tue Oct 16, 1:59 pm)
Re: MSI interrupts and disable_irq, Jeff Garzik, (Tue Oct 16, 3:44 pm)
Re: MSI interrupts and disable_irq, Yinghai Lu, (Sun Oct 14, 1:59 am)
Re: MSI interrupts and disable_irq, Manfred Spraul, (Sun Oct 14, 3:15 am)
Re: MSI interrupts and disable_irq, Benjamin Herrenschmidt, (Sun Oct 14, 5:47 pm)
Re: MSI interrupts and disable_irq, Yinghai Lu, (Sun Oct 14, 7:15 pm)
Re: MSI interrupts and disable_irq, Benjamin Herrenschmidt, (Sun Oct 14, 7:36 pm)
Re: MSI interrupts and disable_irq, Yinghai Lu, (Sun Oct 14, 3:55 pm)
Re: MSI interrupts and disable_irq, Yinghai Lu, (Sat Oct 6, 1:43 pm)
Re: MSI interrupts and disable_irq, Jeff Garzik, (Sat Oct 6, 1:59 pm)
Re: MSI interrupts and disable_irq, Manfred Spraul, (Sun Oct 7, 12:54 pm)
Re: MSI interrupts and disable_irq, Stephen Hemminger, (Fri Sep 28, 11:08 pm)
Re: MSI interrupts and disable_irq, Eric W. Biederman, (Fri Oct 5, 6:12 pm)
Re: MSI interrupts and disable_irq, Yinghai Lu, (Sat Oct 6, 2:23 am)
speck-geostationary