diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-18 20:50:40 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-18 20:50:40 -0400 |
commit | b6aefcce747b3bc54d701d3c329416d0c9616f10 (patch) | |
tree | 18340f3dea5abf9f1c67b2ff0e0e4941a432b46e /Documentation | |
parent | 65740356ccfa66703e7e0d47fbe372ba5193916b (diff) | |
parent | 7a54f25cef6c763f16c9fd49ae382de162147873 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/pci-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/pci-2.6: (22 commits)
PCI Hotplug: move pci_hotplug.h to include/linux/
change pci hotplug subsystem maintainer to Kristen
PCI: optionally sort device lists breadth-first
cpcihp_generic: prevent loading without "bridge" parameter
pci: Additional search functions
PCI: quirks: switch quirks code offender to use pci_get API
PCI: Update MSI-HOWTO.txt according to pci_msi_supported()
PCI: Improve pci_msi_supported() comments
PCI hotplug: ioremap balanced with iounmap
shpchp: remove unnecessary cmd_busy member from struct controller
shpchp: fix command completion check
pci: Stamp out pci_find_* usage in fakephp
PCI: fix pcie_portdrv_restore_config undefined without CONFIG_PM error
Fix DMA resource allocation in ACPIPnP
PCI: Turn pci_fixup_video into generic for embedded VGA
PCI: add ICH7/8 ACPI/GPIO io resource quirks
PCI: pcie-check-and-return-bus_register-errors fix
PCI: VIA IRQ quirk behaviour change
pciehp: Remove unnecessary check in pciehp_ctrl.c
pciehp - add missing locking
...
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/MSI-HOWTO.txt | 63 | ||||
-rw-r--r-- | Documentation/kernel-parameters.txt | 5 |
2 files changed, 67 insertions, 1 deletions
diff --git a/Documentation/MSI-HOWTO.txt b/Documentation/MSI-HOWTO.txt index c70306abb7b2..5c34910665d1 100644 --- a/Documentation/MSI-HOWTO.txt +++ b/Documentation/MSI-HOWTO.txt | |||
@@ -470,7 +470,68 @@ LOC: 324553 325068 | |||
470 | ERR: 0 | 470 | ERR: 0 |
471 | MIS: 0 | 471 | MIS: 0 |
472 | 472 | ||
473 | 6. FAQ | 473 | 6. MSI quirks |
474 | |||
475 | Several PCI chipsets or devices are known to not support MSI. | ||
476 | The PCI stack provides 3 possible levels of MSI disabling: | ||
477 | * on a single device | ||
478 | * on all devices behind a specific bridge | ||
479 | * globally | ||
480 | |||
481 | 6.1. Disabling MSI on a single device | ||
482 | |||
483 | Under some circumstances, it might be required to disable MSI on a | ||
484 | single device, It may be achived by either not calling pci_enable_msi() | ||
485 | or all, or setting the pci_dev->no_msi flag before (most of the time | ||
486 | in a quirk). | ||
487 | |||
488 | 6.2. Disabling MSI below a bridge | ||
489 | |||
490 | The vast majority of MSI quirks are required by PCI bridges not | ||
491 | being able to route MSI between busses. In this case, MSI have to be | ||
492 | disabled on all devices behind this bridge. It is achieves by setting | ||
493 | the PCI_BUS_FLAGS_NO_MSI flag in the pci_bus->bus_flags of the bridge | ||
494 | subordinate bus. There is no need to set the same flag on bridges that | ||
495 | are below the broken brigde. When pci_enable_msi() is called to enable | ||
496 | MSI on a device, pci_msi_supported() takes care of checking the NO_MSI | ||
497 | flag in all parent busses of the device. | ||
498 | |||
499 | Some bridges actually support dynamic MSI support enabling/disabling | ||
500 | by changing some bits in their PCI configuration space (especially | ||
501 | the Hypertransport chipsets such as the nVidia nForce and Serverworks | ||
502 | HT2000). It may then be required to update the NO_MSI flag on the | ||
503 | corresponding devices in the sysfs hierarchy. To enable MSI support | ||
504 | on device "0000:00:0e", do: | ||
505 | |||
506 | echo 1 > /sys/bus/pci/devices/0000:00:0e/msi_bus | ||
507 | |||
508 | To disable MSI support, echo 0 instead of 1. Note that it should be | ||
509 | used with caution since changing this value might break interrupts. | ||
510 | |||
511 | 6.3. Disabling MSI globally | ||
512 | |||
513 | Some extreme cases may require to disable MSI globally on the system. | ||
514 | For now, the only known case is a Serverworks PCI-X chipsets (MSI are | ||
515 | not supported on several busses that are not all connected to the | ||
516 | chipset in the Linux PCI hierarchy). In the vast majority of other | ||
517 | cases, disabling only behind a specific bridge is enough. | ||
518 | |||
519 | For debugging purpose, the user may also pass pci=nomsi on the kernel | ||
520 | command-line to explicitly disable MSI globally. But, once the appro- | ||
521 | priate quirks are added to the kernel, this option should not be | ||
522 | required anymore. | ||
523 | |||
524 | 6.4. Finding why MSI cannot be enabled on a device | ||
525 | |||
526 | Assuming that MSI are not enabled on a device, you should look at | ||
527 | dmesg to find messages that quirks may output when disabling MSI | ||
528 | on some devices, some bridges or even globally. | ||
529 | Then, lspci -t gives the list of bridges above a device. Reading | ||
530 | /sys/bus/pci/devices/0000:00:0e/msi_bus will tell you whether MSI | ||
531 | are enabled (1) or disabled (0). In 0 is found in a single bridge | ||
532 | msi_bus file above the device, MSI cannot be enabled. | ||
533 | |||
534 | 7. FAQ | ||
474 | 535 | ||
475 | Q1. Are there any limitations on using the MSI? | 536 | Q1. Are there any limitations on using the MSI? |
476 | 537 | ||
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index ff571f9298e0..dd00fd556a60 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -1231,6 +1231,11 @@ and is between 256 and 4096 characters. It is defined in the file | |||
1231 | machine check when some devices' config space | 1231 | machine check when some devices' config space |
1232 | is read. But various workarounds are disabled | 1232 | is read. But various workarounds are disabled |
1233 | and some IOMMU drivers will not work. | 1233 | and some IOMMU drivers will not work. |
1234 | bfsort Sort PCI devices into breadth-first order. | ||
1235 | This sorting is done to get a device | ||
1236 | order compatible with older (<= 2.4) kernels. | ||
1237 | nobfsort Don't sort PCI devices into breadth-first order. | ||
1238 | |||
1234 | pcmv= [HW,PCMCIA] BadgePAD 4 | 1239 | pcmv= [HW,PCMCIA] BadgePAD 4 |
1235 | 1240 | ||
1236 | pd. [PARIDE] | 1241 | pd. [PARIDE] |