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

Reply via email to