[PATCH]2.6.3-rc2 MSI Documentation

From: Martine Silbermann
Date: Tue Feb 17 2004 - 16:37:12 EST


While trying to enable MSI I noticed that the documentation
that describes how to do it is slightly out of date. This
is mostly due to the fact that the code for MSI support has
been incorporated in the 2.6.1 kernel. Below is a patch that
should bring this documentation current.

Martine
--- linux-2.6.3-rc2/Documentation/MSI-HOWTO.txt 2004-02-09 22:00:01.000000000 -0500
+++ linux-2.6.3-rc2_mine/Documentation/MSI-HOWTO.txt 2004-02-12 14:54:39.602300480 -0500
@@ -1,6 +1,8 @@
The MSI Driver Guide HOWTO
Tom L Nguyen tom.l.nguyen@xxxxxxxxx
10/03/2003
+ Revised Feb 12, 2004 by Martine Silbermann
+ email: Martine.Silbermann@xxxxxx

1. About this guide

@@ -90,17 +92,14 @@
5. Configuring a driver to use MSI/MSI-X

By default, the kernel will not enable MSI/MSI-X on all devices that
-support this capability once the patch is installed. A kernel
-configuration option must be selected to enable MSI/MSI-X support.
+support this capability. The CONFIG_PCI_USE_VECTOR kernel option
+must be selected to enable MSI/MSI-X support.

5.1 Including MSI support into the kernel

-To include MSI support into the kernel requires users to patch the
-VECTOR-base patch first and then the MSI patch because the MSI
-support needs VECTOR based scheme. Once these patches are installed,
-setting CONFIG_PCI_USE_VECTOR enables the VECTOR based scheme and
-the option for MSI-capable device drivers to selectively enable MSI
-(using pci_enable_msi as desribed below).
+To allow MSI-Capable device drivers to selectively enable MSI (using
+pci_enable_msi as described below), the VECTOR based scheme needs to
+be enabled by setting CONFIG_PCI_USE_VECTOR.

Since the target of the inbound message is the local APIC, providing
CONFIG_PCI_USE_VECTOR is dependent on whether CONFIG_X86_LOCAL_APIC
@@ -125,12 +124,12 @@
| | <=============== | |
| MSI MODE | | PIN-IRQ ASSERTION MODE |
| | ===============> | |
- ------------ free_irq ------------------------
+ ------------ msi_free_vectors ------------------------

5.2 Configuring for MSI support

Due to the non-contiguous fashion in vector assignment of the
-existing Linux kernel, this patch does not support multiple
+existing Linux kernel, this version does not support multiple
messages regardless of the device function is capable of supporting
more than one vector. The bus driver initializes only entry 0 of
this capability if pci_enable_msi(...) is called successfully by
@@ -232,7 +231,7 @@
CONFIG_X86_LOCAL_APIC. Once CONFIG_X86_LOCAL_APIC=y, setting
CONFIG_PCI_USE_VECTOR enables the VECTOR based scheme and
the option for MSI-capable device drivers to selectively enable
-MSI (using pci_enable_msi as desribed below).
+MSI (using pci_enable_msi as described below).

Note that CONFIG_X86_IO_APIC setting is irrelevant because MSI
vector is allocated new during runtime and MSI support does not