From: Matthew Wilcox <matthew@wil.cx>
To: "Randy.Dunlap" <rdunlap@xenotime.net>
Cc: hch@infradead.org, alan@lxorguk.ukuu.org.uk, erich@areca.com.tw,
arjan@infradead.org, linux-scsi@vger.kernel.org,
linux-kernel@vger.kernel.org, billion.wu@areca.com.tw,
akpm@osdl.org, oliver@neukum.org
Subject: Re: Areca RAID driver remaining items?
Date: Sun, 26 Feb 2006 09:02:47 -0700 [thread overview]
Message-ID: <20060226160247.GT28587@parisc-linux.org> (raw)
In-Reply-To: <20060225224112.72c20f2f.rdunlap@xenotime.net>
On Sat, Feb 25, 2006 at 10:41:12PM -0800, Randy.Dunlap wrote:
> OK, updated patch for "pci=nomsi" is now at
> http://www.xenotime.net/linux/patches/pci_nomsi.patch
After sleeping on it, I realised this wouldn't work if CONFIG_PCI_MSI
is disabled. So how about this (not even compile-tested):
Signed-off-by: Matthew Wilcox <matthew@wil.cx>
Index: ./Documentation/kernel-parameters.txt
===================================================================
RCS file: /var/cvs/linux-2.6/Documentation/kernel-parameters.txt,v
retrieving revision 1.41.4.1
diff -u -p -r1.41.4.1 kernel-parameters.txt
--- ./Documentation/kernel-parameters.txt 18 Feb 2006 05:26:01 -0000 1.41.4.1
+++ ./Documentation/kernel-parameters.txt 26 Feb 2006 15:58:40 -0000
@@ -49,6 +49,7 @@ restrictions referred to are that the re
MCA MCA bus support is enabled.
MDA MDA console support is enabled.
MOUSE Appropriate mouse support is enabled.
+ MSI Message Signaled Interrupts (PCI).
MTD MTD support is enabled.
NET Appropriate network support is enabled.
NUMA NUMA support is enabled.
@@ -1135,6 +1136,9 @@ running once the system is up.
Mechanism 2.
nommconf [IA-32,X86_64] Disable use of MMCONFIG for PCI
Configuration
+ nomsi [MSI] If the PCI_MSI kernel config parameter is
+ enabled, this kernel boot option can be used to
+ disable the use of MSI interrupts system-wide.
nosort [IA-32] Don't sort PCI devices according to
order given by the PCI BIOS. This sorting is
done to get a device order compatible with
Index: ./drivers/pci/Kconfig
===================================================================
RCS file: /var/cvs/linux-2.6/drivers/pci/Kconfig,v
retrieving revision 1.8
diff -u -p -r1.8 Kconfig
--- ./drivers/pci/Kconfig 14 Sep 2005 12:56:32 -0000 1.8
+++ ./drivers/pci/Kconfig 26 Feb 2006 15:58:40 -0000
@@ -11,6 +11,10 @@ config PCI_MSI
generate an interrupt using an inbound Memory Write on its
PCI bus instead of asserting a device IRQ pin.
+ Use of PCI MSI interrupts can be disabled at kernel boot time
+ by using the 'pci=nomsi' option. This disables MSI for the
+ entire system.
+
If you don't know what to do here, say N.
config PCI_LEGACY_PROC
Index: ./drivers/pci/msi.c
===================================================================
RCS file: /var/cvs/linux-2.6/drivers/pci/msi.c,v
retrieving revision 1.17
diff -u -p -r1.17 msi.c
--- ./drivers/pci/msi.c 4 Feb 2006 04:51:55 -0000 1.17
+++ ./drivers/pci/msi.c 26 Feb 2006 15:58:40 -0000
@@ -755,6 +755,9 @@ void pci_disable_msi(struct pci_dev* dev
u16 control;
unsigned long flags;
+ if (!pci_msi_enable)
+ return;
+
if (!dev || !(pos = pci_find_capability(dev, PCI_CAP_ID_MSI)))
return;
@@ -1006,6 +1009,9 @@ void pci_disable_msix(struct pci_dev* de
int pos, temp;
u16 control;
+ if (!pci_msi_enable)
+ return;
+
if (!dev || !(pos = pci_find_capability(dev, PCI_CAP_ID_MSIX)))
return;
@@ -1121,6 +1127,11 @@ void msi_remove_pci_irq_vectors(struct p
}
dev->irq = temp; /* Restore IOAPIC IRQ */
}
+}
+
+void pci_no_msi(void)
+{
+ pci_msi_enable = 0;
}
EXPORT_SYMBOL(pci_enable_msi);
Index: ./drivers/pci/pci.c
===================================================================
RCS file: /var/cvs/linux-2.6/drivers/pci/pci.c,v
retrieving revision 1.28
diff -u -p -r1.28 pci.c
--- ./drivers/pci/pci.c 4 Feb 2006 04:51:55 -0000 1.28
+++ ./drivers/pci/pci.c 26 Feb 2006 15:58:40 -0000
@@ -900,8 +900,12 @@ static int __devinit pci_setup(char *str
if (k)
*k++ = 0;
if (*str && (str = pcibios_setup(str)) && *str) {
- /* PCI layer options should be handled here */
- printk(KERN_ERR "PCI: Unknown option `%s'\n", str);
+ if (!strcmp(str, "nomsi")) {
+ pci_no_msi();
+ } else {
+ printk(KERN_ERR "PCI: Unknown option `%s'\n",
+ str);
+ }
}
str = k;
}
Index: ./drivers/pci/pci.h
===================================================================
RCS file: /var/cvs/linux-2.6/drivers/pci/pci.h,v
retrieving revision 1.13
diff -u -p -r1.13 pci.h
--- ./drivers/pci/pci.h 17 Jan 2006 14:51:41 -0000 1.13
+++ ./drivers/pci/pci.h 26 Feb 2006 15:58:40 -0000
@@ -50,8 +50,10 @@ extern int pci_msi_quirk;
#ifdef CONFIG_PCI_MSI
void disable_msi_mode(struct pci_dev *dev, int pos, int type);
+void pci_no_msi(void);
#else
static inline void disable_msi_mode(struct pci_dev *dev, int pos, int type) { }
+static inline void pci_no_msi(void) { }
#endif
extern int pcie_mch_quirk;
next prev parent reply other threads:[~2006-02-26 16:02 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-02-20 18:02 Areca RAID driver remaining items? Dax Kelson
2006-02-20 18:11 ` Arjan van de Ven
2006-02-20 18:20 ` Christoph Hellwig
2006-02-22 6:27 ` erich
2006-02-22 14:57 ` Christoph Hellwig
2006-02-23 6:27 ` erich
2006-02-23 8:25 ` Arjan van de Ven
2006-02-23 9:50 ` erich
2006-02-23 9:56 ` Arjan van de Ven
2006-02-23 11:51 ` erich
2006-02-23 12:07 ` Arjan van de Ven
2006-02-24 2:08 ` erich
2006-02-24 8:50 ` Arjan van de Ven
2006-02-23 11:59 ` Alan Cox
2006-02-24 2:36 ` erich
2006-02-24 16:56 ` Christoph Hellwig
2006-02-24 17:03 ` Randy.Dunlap
2006-02-24 19:38 ` Matthew Wilcox
2006-02-24 20:14 ` Randy.Dunlap
2006-02-26 6:41 ` Randy.Dunlap
2006-02-26 16:02 ` Matthew Wilcox [this message]
2006-02-26 19:00 ` Randy.Dunlap
2006-02-24 3:18 erich
2006-02-27 11:27 erich
2006-02-27 12:36 ` Matthew Wilcox
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=20060226160247.GT28587@parisc-linux.org \
--to=matthew@wil.cx \
--cc=akpm@osdl.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=arjan@infradead.org \
--cc=billion.wu@areca.com.tw \
--cc=erich@areca.com.tw \
--cc=hch@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=oliver@neukum.org \
--cc=rdunlap@xenotime.net \
/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;
as well as URLs for NNTP newsgroup(s).