[Top][All Lists]

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

irq handling in DDE Linux26

From: Da Zheng
Subject: irq handling in DDE Linux26
Date: Fri, 07 May 2010 00:53:20 +0800
User-agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv: Gecko/20100317 Thunderbird/3.0.4


In DDE Linux26, the interrupt is ignored when an interrupt line is disabled,
i.e., the handle_irq field of ddekit_irq_ctrl is 0.

In ne2k-pci, an example in DDE Linux26, when a packet is transmitted by the
driver, disable_irq_nosync_lockdep_irqsave() is called to disable irq. Then it
triggers a send and calls enable_irq_lockdep_irqrestore().

Now the problem is that after a packet is transmitted, the transmission-done
interrupt can be delivered before enable_irq_lockdep_irqrestore is called, so
the interrupt is ignored and the driver thinks the packet cannot be transmitted.
This situation happens when I run ne2k-pci in the Hurd porting of DDE Linux26.

disable_irq_nosync_lockdep_irqsave is exactly the same as disable_irq_nosync
when there isn't CONFIG_LOCKDEP. It seems to me that ne2k-pci shouldn't call it
in the first place when transmitting packets, but Linux drivers should be
correct. Then what goes wrong? Should the interrupt handler delays interrupts
instead of ignoring them silently when the interrupt line is disabled?

Best regards,
Zheng Da

reply via email to

[Prev in Thread] Current Thread [Next in Thread]