On Llu, 2004-06-14 at 16:12, Nicolas DET wrote:
> Also, we replace spin_lock_irqxxx/spin_unlock_irq by spin_lock/unlock
> (for SMP/PREEMPT kernel) + stop/start_interrupt.
This requires a lot of care to do right. Remember that on PC systems
interrupts can be substantially posted. A "stop_interrupt" may prevent
IRQ issue but if an IRQ is already on the PC APIC bus it will kill you
later on because the IRQ delivery and PCI bus access on the PC class
machines are totally asynchronous
ie
Interrupt leaves PCI devices
Interrupt hits APIC
stop_interrupt
IRQ masked on PCI device (but too late for APIC)
spin_lock
Interrupt arrives down slow Pentium III APIC bus
spin_lock
Deadlock
so you actually can't pull this stunt and a PIII will deadlock every day
or so if you do (painful experience with the ne2k-pci until I figured
that one out)
Alan
-------------------------------------------------------
This SF.Net email is sponsored by The 2004 JavaOne(SM) Conference
Learn from the experts at JavaOne(SM), Sun's Worldwide Java Developer
Conference, June 28 - July 1 at the Moscone Center in San Francisco, CA
REGISTER AND SAVE! http://java.sun.com/javaone/sf Priority Code NWMGYKND
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel