mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: ebiederm@xmission.com (Eric W. Biederman)
To: Linus Torvalds <torvalds@osdl.org>
Cc: Ingo Molnar <mingo@redhat.com>, Komuro <komurojun-mbn@nifty.com>,
	tglx@linutronix.de, Adrian Bunk <bunk@stusta.de>,
	Andrew Morton <akpm@osdl.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: [PATCH] Use delayed disable mode of ioapic edge triggered interrupts
Date: Tue, 14 Nov 2006 10:52:12 -0700	[thread overview]
Message-ID: <m18xidlxv7.fsf_-_@ebiederm.dsl.xmission.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0611140757040.31445@g5.osdl.org> (Linus Torvalds's message of "Tue, 14 Nov 2006 08:10:48 -0800 (PST)")


Linus Torvalds <torvalds@osdl.org> writes:

> Of course, for edge-triggered APIC interrupts, we _have_ to replay the irq 
> (since we don't have any way of even *knowing* whether we might get it 
> again), but for level-triggered and for the old legacy i8259 controller 
> that gets it right for edges anwyay, we should _not_ send the spurious 
> interrupt that is no longer active.
>
> And a lot of code has been tested with either just the i8259 (old machines 
> without any APIC) or with PCI-only devices (which are always level- 
> triggered), so the fact that edge-triggered things have always seen the 
> potential for spurious interrupts is not a reasong to say "well, they have 
> to handle it anyway". True PCI drivers generally do _not_ have to handle 
> the crazy case, and generally have never seen it.
>
> In other words, I think we should just make APIC-edge have the "please 
> delay masking and replay" bit, and nobody else.
>
> Can you send that patch (for both x86 and x86-64), and we can ask Komuro 
> to test it. That would be the "same behaviour as we've always had" thing, 
> which I think is also the _right_ behaviour.

Hopefully this is the trivial patch that solves the problem.

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>

diff --git a/arch/i386/kernel/io_apic.c b/arch/i386/kernel/io_apic.c
index ad84bc2..3b7a63e 100644
--- a/arch/i386/kernel/io_apic.c
+++ b/arch/i386/kernel/io_apic.c
@@ -1287,9 +1287,11 @@ static void ioapic_register_intr(int irq
 			trigger == IOAPIC_LEVEL)
 		set_irq_chip_and_handler_name(irq, &ioapic_chip,
 					 handle_fasteoi_irq, "fasteoi");
-	else
+	else {
+		irq_desc[irq].status |= IRQ_DELAYED_DISABLE;
 		set_irq_chip_and_handler_name(irq, &ioapic_chip,
 					 handle_edge_irq, "edge");
+	}
 	set_intr_gate(vector, interrupt[irq]);
 }
 
diff --git a/arch/x86_64/kernel/io_apic.c b/arch/x86_64/kernel/io_apic.c
index 41bfc49..14654e6 100644
--- a/arch/x86_64/kernel/io_apic.c
+++ b/arch/x86_64/kernel/io_apic.c
@@ -790,9 +790,11 @@ static void ioapic_register_intr(int irq
 			trigger == IOAPIC_LEVEL)
 		set_irq_chip_and_handler_name(irq, &ioapic_chip,
 					      handle_fasteoi_irq, "fasteoi");
-	else
+	else {
+		irq_desc[irq].status |= IRQ_DELAYED_DISABLE;
 		set_irq_chip_and_handler_name(irq, &ioapic_chip,
 					      handle_edge_irq, "edge");
+	}
 }
 
 static void __init setup_IO_APIC_irqs(void)


  reply	other threads:[~2006-11-14 17:53 UTC|newest]

Thread overview: 91+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-11-08  2:33 Linux 2.6.19-rc5 Linus Torvalds
     [not found] ` <20061108085235.GT4729@stusta.de>
2006-11-08  9:29   ` [discuss] 2.6.19-rc5: known regressions Jan Beulich
2006-11-08 10:21     ` Adrian Bunk
2006-11-08  9:34   ` Jens Axboe
2006-11-08 19:09     ` Alex Romosan
2006-11-08 19:29       ` Jens Axboe
2006-11-08 19:38         ` Alex Romosan
2006-11-08 19:45           ` Jens Axboe
2006-11-08 21:40             ` Alex Romosan
2006-11-08 20:03         ` Arjan van de Ven
2006-11-08 20:19           ` Jens Axboe
2006-11-08 11:04   ` Eric W. Biederman
2006-11-08 11:32   ` Thomas Gleixner
     [not found]   ` <7813413.118221162987983254.komurojun-mbn@nifty.com>
2006-11-08 16:00     ` Linus Torvalds
2006-11-10 12:42     ` Re: Re: 2.6.19-rc5: known regressions :SMP kernel can not generate ISA irq Komuro
2006-11-13 16:02       ` Linus Torvalds
2006-11-13 17:11         ` Eric W. Biederman
2006-11-13 20:44           ` Ingo Molnar
2006-11-13 21:11             ` Eric W. Biederman
2006-11-14  8:14               ` [patch] irq: do not mask interrupts by default Ingo Molnar
2006-11-14  8:20                 ` Arjan van de Ven
2006-11-14 16:10                 ` Linus Torvalds
2006-11-14 17:52                   ` Eric W. Biederman [this message]
2006-11-14 23:35                     ` [PATCH] Use delayed disable mode of ioapic edge triggered interrupts Linus Torvalds
2006-11-15  1:17                     ` Linus Torvalds
2006-11-15  5:14                       ` Eric W. Biederman
2006-11-15 16:06                         ` Linus Torvalds
2006-11-15 16:58                           ` Eric W. Biederman
2006-11-15 12:40                   ` Komuro
     [not found]                   ` <20061115090427.GA16173@elte.hu>
2006-11-15 16:13                     ` [patch] genirq: do not mask interrupts by default Linus Torvalds
2006-11-15 17:46                       ` Ingo Molnar
2006-11-14 12:43               ` [patch] irq: " Komuro
     [not found]   ` <m1y7qm425l.fsf@ebiederm.dsl.xmission.com>
     [not found]     ` <Pine.LNX.4.64.0611080745150.3667@g5.osdl.org>
2006-11-08 16:22       ` 2.6.19-rc5: known regressions Adrian Bunk
2006-11-08 23:11         ` Tim Chen
2006-11-09  2:49           ` Tim Chen
2006-11-09  5:10             ` Eric W. Biederman
2006-11-13 22:46               ` Tim Chen
2006-11-14  0:03                 ` Eric W. Biederman
2006-11-08  9:43 ` Linux 2.6.19-rc5 Nigel Cunningham
2006-11-08  9:59   ` Alessandro Suardi
2006-11-08 10:04     ` Nigel Cunningham
2006-11-08 14:19     ` Gene Heskett
2006-11-08 15:43   ` Linus Torvalds
     [not found] ` <20061111015035.GU4729@stusta.de>
2006-11-11  9:08   ` [discuss] 2.6.19-rc5: known regressions (v2) Rafael J. Wysocki
2006-11-11  9:25     ` Paolo Ornati
2006-11-11 10:49       ` Rafael J. Wysocki
2006-11-11 12:29         ` Paolo Ornati
2006-11-14 16:44           ` Paolo Ornati
2006-11-29 10:10             ` [SOLVED] " Paolo Ornati
2006-11-13 22:14 ` 2.6.19-rc5: known regressions with patches Adrian Bunk
2006-11-13 22:56   ` Brian King
2006-11-13 23:15     ` Linus Torvalds
2006-11-14  2:35       ` Jeff Garzik
2006-11-15 10:21 ` 2.6.19-rc5: known regressions (v3) Adrian Bunk
2006-11-15 10:35   ` Jens Axboe
2006-11-15 10:53     ` Adrian Bunk
2006-11-15 10:35   ` Eric Dumazet
2006-11-15 10:50     ` Andi Kleen
2006-11-15 16:40       ` William Cohen
2006-11-15 16:48         ` [discuss] " Andi Kleen
2006-11-15 18:39           ` Andrew Morton
2006-11-15 18:45             ` Andi Kleen
2006-11-15 19:07               ` Linus Torvalds
2006-11-15 19:23                 ` Andi Kleen
2006-11-15 20:21                   ` Andrew Morton
2006-11-15 21:18                     ` Eric W. Biederman
2006-11-15 21:31                       ` Andrew Morton
2006-11-16 10:55                         ` Mikael Pettersson
2006-11-16 20:23                           ` Andrew Morton
2006-11-17  9:59                             ` Mikael Pettersson
2006-11-17 10:13                               ` Andrew Morton
2006-11-19  3:05                                 ` Bill Davidsen
2006-11-17 10:29                               ` Andi Kleen
2006-11-16  3:21                     ` Andi Kleen
2006-11-16  5:05                       ` Andrew Morton
2006-11-16  7:04                         ` Andi Kleen
2006-11-16 15:34                           ` William Cohen
2006-11-16 15:47                             ` Andi Kleen
2006-11-16 21:32                             ` Stephane Eranian
2006-11-22 10:28     ` Eric Dumazet
2006-11-22 10:36       ` Andi Kleen
2006-11-22 18:42         ` Andrew Morton
2006-12-16 11:20           ` Ray Lee
2006-11-22 17:59       ` William Cohen
2006-11-22 18:05       ` William Cohen
2006-11-22 18:26         ` Eric Dumazet
2006-11-15 11:06   ` Brice Goglin
2006-11-15 22:32     ` Adrian Bunk
2006-11-15 12:07   ` Alan
2006-11-15 15:52   ` Stephen Hemminger
2006-11-15 16:35     ` Eric W. Biederman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m18xidlxv7.fsf_-_@ebiederm.dsl.xmission.com \
    --to=ebiederm@xmission.com \
    --cc=akpm@osdl.org \
    --cc=bunk@stusta.de \
    --cc=komurojun-mbn@nifty.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=torvalds@osdl.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®