lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.LFD.1.00.0802191143050.7583@apollo.tec.linutronix.de>
Date:	Tue, 19 Feb 2008 11:49:08 +0100 (CET)
From:	Thomas Gleixner <tglx@...utronix.de>
To:	"Hennerich, Michael" <Michael.Hennerich@...log.com>
cc:	mingo@...e.hu, linux-kernel@...r.kernel.org
Subject: Re: [BUG][RFC][GENERIC IRQ] linux-2.6.24 (delayed) disable IRQ
 feature not functional for handle_simple_irq

On Tue, 19 Feb 2008, Hennerich, Michael wrote:
> Thomas,
> 
> I have reasonable doubt that the delayed disable feature on
> linux-2.6.24 for handle_simple_irq is broken.
>
> In 2.6.22 there was something like this:
> 
> 	if (unlikely(!action || (desc->status & IRQ_DISABLED))) {
> 		if (desc->chip->mask)
> 			desc->chip->mask(irq);
> ...
> 
> However in 2.6.24 the "DISABLED" IRQ in case it happens is never going to be masked.  
> 
> 	if (unlikely(!action || (desc->status & IRQ_DISABLED)))
> 		goto out_unlock;
> 
> 
> I see a disabled IRQ being invoked in an endless loop.

Simple irq's are special, see the comment above handle_simple_irq:

Simple interrupts are either sent from a demultiplexing interrupt
handler or come from hardware, where no interrupt hardware control
is necessary.

Note: The caller is expected to handle the ack, clear, mask and
unmask issues if necessary.

Simple irqs are used for low level demultiplex handlers, where the full
control of the irqchip is in the low level handler.

See also the commit log of 971e5b35fb02c5088d49e6c024aab73582a35b71

    In commit 76d2160147f43f982dfe881404cfde9fd0a9da21 lazy irq disabling
    was implemented, and the simple irq handler had a masking set to it.
    
    Remy Bohmer discovered that some devices in the ARM architecture
    would trigger the mask, but never unmask it. His patch to do the
    unmasking was questioned by Russell King about masking simple irqs
    to begin with. Looking further, it was discovered that the problems
    Remy was seeing was due to improper use of the simple handler by
    devices, and he later submitted patches to fix those. But the issue
    that was uncovered was that the simple handler should never mask.
    
    This patch reverts the masking in the simple handler.

Thanks,

	tglx
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ