aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/pci.txt37
-rw-r--r--arch/alpha/Kconfig5
-rw-r--r--arch/arm/Kconfig5
-rw-r--r--arch/frv/Kconfig5
-rw-r--r--arch/m32r/Kconfig5
-rw-r--r--arch/m68k/Kconfig5
-rw-r--r--arch/mips/Kconfig5
-rw-r--r--arch/sh/drivers/pci/Kconfig5
-rw-r--r--arch/sparc64/Kconfig5
-rw-r--r--arch/x86/Kconfig5
-rw-r--r--arch/x86/kernel/quirks.c43
-rw-r--r--arch/x86/pci/fixup.c22
-rw-r--r--arch/xtensa/Kconfig5
-rw-r--r--drivers/ata/pata_cs5520.c2
-rw-r--r--drivers/i2c/busses/scx200_acb.c2
-rw-r--r--drivers/ide/pci/cs5520.c10
-rw-r--r--drivers/ide/setup-pci.c6
-rw-r--r--drivers/pci/bus.c18
-rw-r--r--drivers/pci/dmar.c20
-rw-r--r--drivers/pci/hotplug/Kconfig4
-rw-r--r--drivers/pci/hotplug/Makefile4
-rw-r--r--drivers/pci/hotplug/acpiphp.h1
-rw-r--r--drivers/pci/hotplug/acpiphp_glue.c5
-rw-r--r--drivers/pci/hotplug/fakephp.c39
-rw-r--r--drivers/pci/hotplug/ibmphp_core.c11
-rw-r--r--drivers/pci/hotplug/pci_hotplug_core.c4
-rw-r--r--drivers/pci/hotplug/pciehp.h9
-rw-r--r--drivers/pci/hotplug/pciehp_core.c33
-rw-r--r--drivers/pci/hotplug/pciehp_ctrl.c27
-rw-r--r--drivers/pci/hotplug/pciehp_hpc.c314
-rw-r--r--drivers/pci/hotplug/pciehp_pci.c43
-rw-r--r--drivers/pci/hotplug/rpaphp.h1
-rw-r--r--drivers/pci/hotplug/rpaphp_pci.c14
-rw-r--r--drivers/pci/hotplug/rpaphp_slot.c47
-rw-r--r--drivers/pci/hotplug/shpchp_hpc.c2
-rw-r--r--drivers/pci/intel-iommu.c2
-rw-r--r--drivers/pci/msi.c94
-rw-r--r--drivers/pci/pci-acpi.c7
-rw-r--r--drivers/pci/pci-driver.c4
-rw-r--r--drivers/pci/pci-sysfs.c11
-rw-r--r--drivers/pci/pci.c93
-rw-r--r--drivers/pci/pci.h16
-rw-r--r--drivers/pci/pcie/Kconfig20
-rw-r--r--drivers/pci/pcie/Makefile3
-rw-r--r--drivers/pci/pcie/aer/aerdrv_acpi.c24
-rw-r--r--drivers/pci/pcie/aspm.c802
-rw-r--r--drivers/pci/pcie/portdrv_core.c5
-rw-r--r--drivers/pci/probe.c80
-rw-r--r--drivers/pci/proc.c17
-rw-r--r--drivers/pci/quirks.c483
-rw-r--r--drivers/pci/remove.c10
-rw-r--r--drivers/pci/rom.c6
-rw-r--r--drivers/pci/setup-bus.c64
-rw-r--r--drivers/pci/setup-res.c7
-rw-r--r--drivers/pci/syscall.c5
-rw-r--r--drivers/scsi/lpfc/lpfc_init.c3
-rw-r--r--drivers/scsi/qla2xxx/qla_def.h1
-rw-r--r--drivers/scsi/qla2xxx/qla_os.c21
-rw-r--r--drivers/usb/host/pci-quirks.c22
-rw-r--r--include/linux/aspm.h44
-rw-r--r--include/linux/pci-acpi.h11
-rw-r--r--include/linux/pci.h367
-rw-r--r--include/linux/pci_regs.h8
63 files changed, 2101 insertions, 897 deletions
diff --git a/Documentation/pci.txt b/Documentation/pci.txt
index 7754f5aea4e9..72b20c639596 100644
--- a/Documentation/pci.txt
+++ b/Documentation/pci.txt
@@ -274,8 +274,6 @@ the PCI device by calling pci_enable_device(). This will:
274 o allocate an IRQ (if BIOS did not). 274 o allocate an IRQ (if BIOS did not).
275 275
276NOTE: pci_enable_device() can fail! Check the return value. 276NOTE: pci_enable_device() can fail! Check the return value.
277NOTE2: Also see pci_enable_device_bars() below. Drivers can
278 attempt to enable only a subset of BARs they need.
279 277
280[ OS BUG: we don't check resource allocations before enabling those 278[ OS BUG: we don't check resource allocations before enabling those
281 resources. The sequence would make more sense if we called 279 resources. The sequence would make more sense if we called
@@ -605,40 +603,7 @@ device lists. This is still possible but discouraged.
605 603
606 604
607 605
60810. pci_enable_device_bars() and Legacy I/O Port space 60610. MMIO Space and "Write Posting"
609~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
610
611Large servers may not be able to provide I/O port resources to all PCI
612devices. I/O Port space is only 64KB on Intel Architecture[1] and is
613likely also fragmented since the I/O base register of PCI-to-PCI
614bridge will usually be aligned to a 4KB boundary[2]. On such systems,
615pci_enable_device() and pci_request_region() will fail when
616attempting to enable I/O Port regions that don't have I/O Port
617resources assigned.
618
619Fortunately, many PCI devices which request I/O Port resources also
620provide access to the same registers via MMIO BARs. These devices can
621be handled without using I/O port space and the drivers typically
622offer a CONFIG_ option to only use MMIO regions
623(e.g. CONFIG_TULIP_MMIO). PCI devices typically provide I/O port
624interface for legacy OSes and will work when I/O port resources are not
625assigned. The "PCI Local Bus Specification Revision 3.0" discusses
626this on p.44, "IMPLEMENTATION NOTE".
627
628If your PCI device driver doesn't need I/O port resources assigned to
629I/O Port BARs, you should use pci_enable_device_bars() instead of
630pci_enable_device() in order not to enable I/O port regions for the
631corresponding devices. In addition, you should use
632pci_request_selected_regions() and pci_release_selected_regions()
633instead of pci_request_regions()/pci_release_regions() in order not to
634request/release I/O port regions for the corresponding devices.
635
636[1] Some systems support 64KB I/O port space per PCI segment.
637[2] Some PCI-to-PCI bridges support optional 1KB aligned I/O base.
638
639
640
64111. MMIO Space and "Write Posting"
642~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 607~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
643 608
644Converting a driver from using I/O Port space to using MMIO space 609Converting a driver from using I/O Port space to using MMIO space
diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig
index 4c002ba37e50..c613d5fb0daa 100644
--- a/arch/alpha/Kconfig
+++ b/arch/alpha/Kconfig
@@ -318,11 +318,6 @@ config PCI
318 your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or 318 your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
319 VESA. If you have PCI, say Y, otherwise N. 319 VESA. If you have PCI, say Y, otherwise N.
320 320
321 The PCI-HOWTO, available from
322 <http://www.tldp.org/docs.html#howto>, contains valuable
323 information about which PCI hardware does work under Linux and which
324 doesn't.
325
326config PCI_DOMAINS 321config PCI_DOMAINS
327 bool 322 bool
328 default y 323 default y
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 77201d3f7479..5d5997ca7011 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -577,11 +577,6 @@ config PCI
577 your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or 577 your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
578 VESA. If you have PCI, say Y, otherwise N. 578 VESA. If you have PCI, say Y, otherwise N.
579 579
580 The PCI-HOWTO, available from
581 <http://www.tldp.org/docs.html#howto>, contains valuable
582 information about which PCI hardware does work under Linux and which
583 doesn't.
584
585config PCI_SYSCALL 580config PCI_SYSCALL
586 def_bool PCI 581 def_bool PCI
587 582
diff --git a/arch/frv/Kconfig b/arch/frv/Kconfig
index 43153e767bb1..afb19b0d761d 100644
--- a/arch/frv/Kconfig
+++ b/arch/frv/Kconfig
@@ -322,11 +322,6 @@ config PCI
322 onboard. If you have one of these boards and you wish to use the PCI 322 onboard. If you have one of these boards and you wish to use the PCI
323 facilities, say Y here. 323 facilities, say Y here.
324 324
325 The PCI-HOWTO, available from
326 <http://www.tldp.org/docs.html#howto>, contains valuable
327 information about which PCI hardware does work under Linux and which
328 doesn't.
329
330config RESERVE_DMA_COHERENT