bug-hurd
[Top][All Lists]
Advanced

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

Re: irq handling in DDE Linux26


From: Da Zheng
Subject: Re: irq handling in DDE Linux26
Date: Wed, 12 May 2010 17:36:36 +0800
User-agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4

On 10-5-12 上午6:03, Samuel Thibault wrote:
> Da Zheng, le Sat 08 May 2010 23:19:08 +0800, a écrit :
>> A stupid question: when disable_irq_nosync is called, IRQ_DISABLED is set in 
>> the
>> irq descriptor in the Linux kernel and the corresponding hardirq line should 
>> be
>> masked as well (at least, it seems the kernel for x86 does so).
> 
> AIUI, on unmask the hardware will trigger the interrupt that was raised
> by the hardware in the meanwhile. Which precise x86 file are you looking
> at? What do you exactly mean by "hardirq": the actual hardware chip or
> the software hardIRQ handler?
In disable_irq_nosync, there is code as follow:
                desc->status |= IRQ_DISABLED;
                desc->chip->disable(irq);
For the x86 platform, `disable' points to disable_8259A_irq. So when
disable_irq_nosync is called, IRQ_DISABLED is set and the irq line (the
hardware) is masked.
> 
>> How can handle_edge_irq be called?
> 
> AIUI, on hardware irq unmasking.
When hardware irq is unmasked, IRQ_DISABLED should have been removed. I meant,
how can handle_edge_irq be called when IRQ_DISABLED is still set? It seems to me
that IRQ_PENDING cannot be set in handle_edge_irq when the irq line is disabled.

Best regards,
Zheng Da



reply via email to

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