From: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
To: linux-ia64@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Subject: [PATCH] fix PCI interrupt setting for ia64
Date: Mon, 08 Mar 2004 02:49:10 +0000 [thread overview]
Message-ID: <MDEEKOKJPMPMKGHIFAMAKECGDGAA.kaneshige.kenji@jp.fujitsu.com> (raw)
Hi,
In ia64 kernel, IOSAPIC's RTEs for PCI interrupts are unmasked at the
boot time before installing device drivers. I think it is very dangerous.
If some PCI devices without device driver generate interrupts, interrupts
are generated repeatedly because these interrupt requests are never
cleared. I think RTEs for PCI interrupts should be unmasked by device
driver.
A following patch fixes this issue.
Regards,
Kenji Kaneshige
diff -Naur linux-2.6.4-rc2/arch/ia64/kernel/iosapic.c
linux-2.6.4-rc2-changed/arch/ia64/kernel/iosapic.c
--- linux-2.6.4-rc2/arch/ia64/kernel/iosapic.c 2004-03-05
15:13:53.155237277 +0900
+++ linux-2.6.4-rc2-changed/arch/ia64/kernel/iosapic.c 2004-03-05
16:48:31.856142526 +0900
@@ -170,7 +170,7 @@
}
static void
-set_rte (unsigned int vector, unsigned int dest)
+set_rte (unsigned int vector, unsigned int dest, int mask)
{
unsigned long pol, trigger, dmode;
u32 low32, high32;
@@ -205,6 +205,7 @@
low32 = ((pol << IOSAPIC_POLARITY_SHIFT) |
(trigger << IOSAPIC_TRIGGER_SHIFT) |
(dmode << IOSAPIC_DELIVERY_SHIFT) |
+ ((mask ? 1 : 0) << IOSAPIC_MASK_SHIFT) |
vector);
/* dest contains both id and eid */
@@ -509,7 +510,7 @@
(trigger = IOSAPIC_EDGE ? "edge" : "level"), dest, vector);
/* program the IOSAPIC routing table */
- set_rte(vector, dest);
+ set_rte(vector, dest, 0);
return vector;
}
@@ -557,7 +558,7 @@
(trigger = IOSAPIC_EDGE ? "edge" : "level"), dest, vector);
/* program the IOSAPIC routing table */
- set_rte(vector, dest);
+ set_rte(vector, dest, 0);
return vector;
}
@@ -583,7 +584,7 @@
trigger = IOSAPIC_EDGE ? "edge" : "level", dest, vector);
/* program the IOSAPIC routing table */
- set_rte(vector, dest);
+ set_rte(vector, dest, 0);
}
void __init
@@ -669,7 +670,7 @@
/* direct the interrupt vector to the running cpu id */
dest = (ia64_getreg(_IA64_REG_CR_LID) >> 16) & 0xffff;
#endif
- set_rte(vector, dest);
+ set_rte(vector, dest, 1);
printk(KERN_INFO "IOSAPIC: vector %d -> CPU 0x%04x, enabled\n",
vector, dest);
next reply other threads:[~2004-03-08 2:49 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-03-08 2:49 Kenji Kaneshige [this message]
2004-03-08 6:30 ` [PATCH] fix PCI interrupt setting for ia64 Grant Grundler
2004-03-08 21:37 ` David Mosberger
2004-03-08 7:34 ` Liu, Benjamin
2004-03-08 7:44 ` Liu, Benjamin
2004-03-08 9:25 ` Takayoshi Kochi
2004-03-08 19:12 ` Bjorn Helgaas
2004-03-08 19:13 ` Bjorn Helgaas
2004-03-08 21:44 ` David Mosberger
2004-03-08 21:54 ` Russell King
2004-03-08 22:05 ` Bjorn Helgaas
2004-03-08 22:10 ` David Mosberger
2004-03-08 22:41 ` Bjorn Helgaas
2004-03-08 22:50 ` David Mosberger
2004-03-08 8:31 ` Kenji Kaneshige
2004-03-08 9:14 ` Liu, Benjamin
2004-03-08 10:42 ` Kenji Kaneshige
2004-03-08 10:46 ` Kenji Kaneshige
2004-03-10 20:09 ` David Mosberger
2004-03-11 0:34 ` Kenji Kaneshige
2004-03-11 1:34 ` Takayoshi Kochi
2004-03-11 7:22 ` David Mosberger
2004-03-11 5:29 ` Kenji Kaneshige
2004-03-11 7:33 ` David Mosberger
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=MDEEKOKJPMPMKGHIFAMAKECGDGAA.kaneshige.kenji@jp.fujitsu.com \
--to=kaneshige.kenji@jp.fujitsu.com \
--cc=linux-ia64@vger.kernel.org \
--cc=linux-kernel@vger.kernel.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