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 PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 14 Nov 2006 21:43:22 +0900 (JST) From: Komuro <komurojun-mbn@...ty.com> To: Ingo Molnar <mingo@...hat.com> Cc: "Eric W. Biederman" <ebiederm@...ssion.com>, Linus Torvalds <torvalds@...l.org>, Komuro <komurojun-mbn@...ty.com>, tglx@...utronix.de, Adrian Bunk <bunk@...sta.de>, Andrew Morton <akpm@...l.org>, Linux Kernel Mailing List <linux-kernel@...r.kernel.org> Subject: Re: [patch] irq: do not mask interrupts by default Dear Ingo I tried your patch with 2.6.19-rc5. The irq is generated properly. Thanks! Best Regards Komuro >> >------------> >Subject: irq: do not mask interrupts by default >From: Ingo Molnar <mingo@...e.hu> > >never mask interrupts immediately upon request. Disabling >interrupts in high-performance codepaths is rare, and on >the other hand this change could recover lost edges (or >even other types of lost interrupts) by conservatively >only masking interrupts after they happen. (NOTE: with >this change the highlevel irq-disable code still soft-disables >this IRQ line - and if such an interrupt happens then the >IRQ flow handler keeps the IRQ masked.) > >Signed-off-by: Ingo Molnar <mingo@...e.hu> >--- > kernel/irq/chip.c | 13 +++++++------ > 1 file changed, 7 insertions(+), 6 deletions(-) > >Index: linux/kernel/irq/chip.c >=================================================================== >--- linux.orig/kernel/irq/chip.c >+++ linux/kernel/irq/chip.c >@@ -202,10 +202,6 @@ static void default_enable(unsigned int > */ > static void default_disable(unsigned int irq) > { >- struct irq_desc *desc = irq_desc + irq; >- >- if (!(desc->status & IRQ_DELAYED_DISABLE)) >- desc->chip->mask(irq); > } > > /* >@@ -272,8 +268,11 @@ handle_simple_irq(unsigned int irq, stru > kstat_cpu(cpu).irqs[irq]++; > > action = desc->action; >- if (unlikely(!action || (desc->status & IRQ_DISABLED))) >+ if (unlikely(!action || (desc->status & IRQ_DISABLED))) { >+ if (desc->chip->mask) >+ desc->chip->mask(irq); > goto out_unlock; >+ } > > desc->status |= IRQ_INPROGRESS; > spin_unlock(&desc->lock); >@@ -366,11 +365,13 @@ handle_fasteoi_irq(unsigned int irq, str > > /* > * If its disabled or no action available >- * keep it masked and get out of here >+ * then mask it and get out of here: > */ > action = desc->action; > if (unlikely(!action || (desc->status & IRQ_DISABLED))) { > desc->status |= IRQ_PENDING; >+ if (desc->chip->mask) >+ desc->chip->mask(irq); > goto out; > } > > > - 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