Clean up warnings (part 2, asm/pci-bridge.h)
Subsystems (24)
Bjorn Helgaas
maintainercover Clean up warnings (part 2, asm/pci-bridge.h)
We've had some non-arch-specific stuff (pci_has_flag() and associated definitions like PCI_PROBE_ONLY) in asm/pci-bridge.h. This leads to warnings like:
drivers/pci/host/pcie-designware.c:562:20: error: 'PCI_PROBE_ONLY' undeclared (first use in this function) drivers/pci/host/pcie-designware.c:562:7: error: implicit declaration of function 'pci_has_flag' [-Werror=implicit-function-declaration]
because arches don't consistently supply asm/pci-bridge.h, and several drivers include it when they shouldn't.
This series moves the generic stuff to linux/pci.h, so it's the same for everybody, and removes the now-empty asm-generic/pci-bridge.h.
There still a few arches that provide asm/pci-bridge.h (microblaze, powerpc, and xtensa), but now they contain truly arch-dependent things like struct pci_controller definitions, and they're only included by arch-specific files.
---
Bjorn Helgaas (5):
PCI: Move pci_set_flags() from asm-generic/pci-bridge.h to linux/pci.h
PCI: Remove includes of empty asm-generic/pci-bridge.h
ARM64: PCI: Remove generated include of asm-generic/pci-bridge.h
PCI: Remove empty asm-generic/pci-bridge.h
PCI: Remove includes of asm/pci-bridge.h
arch/alpha/include/asm/pci.h | 1 arch/arm/include/asm/pci.h | 3 - arch/arm64/include/asm/Kbuild | 3 - arch/arm64/include/asm/pci.h | 1 arch/arm64/kernel/pci.c | 2 - arch/mips/include/asm/pci.h | 1 arch/powerpc/include/asm/pci-bridge.h | 1 arch/unicore32/include/asm/pci.h | 2 - arch/x86/pci/common.c | 1 drivers/ata/pata_macio.c | 2 - drivers/char/agp/uninorth-agp.c | 1 drivers/gpu/drm/radeon/radeon_combios.c | 1 drivers/ide/pdc202xx_new.c | 1 drivers/ide/pmac.c | 1 drivers/macintosh/macio_asic.c | 1 drivers/misc/cxl/pci.c | 1 drivers/net/ethernet/sun/sungem.c | 1 drivers/net/ethernet/toshiba/spider_net.c | 1 drivers/of/of_pci.c | 1 drivers/pci/pci.c | 1 drivers/pci/probe.c | 8 +++ drivers/pci/setup-bus.c | 1 drivers/scsi/mac53c94.c | 2 - drivers/scsi/mesh.c | 2 - drivers/usb/core/hcd-pci.c | 1 drivers/video/fbdev/aty/aty128fb.c | 1 drivers/video/fbdev/aty/radeon_base.c | 1 drivers/video/fbdev/imsttfb.c | 1 drivers/video/fbdev/matrox/matroxfb_base.h | 1 drivers/video/fbdev/offb.c | 4 -- include/asm-generic/pci-bridge.h | 74 ---------------------------- include/linux/pci.h | 22 ++++++++ sound/ppc/pmac.c | 1 33 files changed, 32 insertions(+), 114 deletions(-) delete mode 100644 include/asm-generic/pci-bridge.h
Bjorn Helgaas
maintainerPATCH 1/5 PCI: Move pci_set_flags() from asm-generic/pci-bridge.h to linux/pci.h
The PCI flag management constants and functions were previously declared in include/asm-generic/pci-bridge.h. But they are not specific to bridges, and arches did not include pci-bridge.h consistently.
Move the following interfaces and related constants to include/linux/pci.h and remove pci-bridge.h:
pci_set_flags()
pci_add_flags()
pci_clear_flags()
pci_has_flag()
This fixes these warnings when building for some arches:
drivers/pci/host/pcie-designware.c:562:20: error: 'PCI_PROBE_ONLY' undeclared (first use in this function) drivers/pci/host/pcie-designware.c:562:7: error: implicit declaration of function 'pci_has_flag' [-Werror=implicit-function-declaration]
--- drivers/pci/probe.c | 7 ++++ include/asm-generic/pci-bridge.h | 65 -------------------------------------- include/linux/pci.h | 22 +++++++++++++ 3 files changed, 29 insertions(+), 65 deletions(-)
drivers/pci/probe.c +7 -0
@@ -1803,6 +1803,13 @@ static int only_one_child(struct pci_bus *bus)return 0 ;if (pci_pcie_type (parent) ==PCI_EXP_TYPE_ROOT_PORT )return 1 ; + +/* +* PCIe downstream ports are bridges that normally lead to only a +* device 0, but if PCI_SCAN_ALL_PCIE_DEVS is set, scan all +* possible devices, not just device 0. See PCIe spec r3.0, +* sec 7.3.1. +*/ if (parent->has_secondary_link && !pci_has_flag (PCI_SCAN_ALL_PCIE_DEVS ))return 1 ;
include/asm-generic/pci-bridge.h +0 -65
69 lines not on this page · raw message
include/linux/pci.h +22 -0
@@ -746,9 +746,26 @@ struct pci_driver { .vendor = PCI_VENDOR_ID_##vend, .device = (dev), \ .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID, 0, 0 +enum { +PCI_REASSIGN_ALL_RSRC =0x00000001 ,/* ignore firmware setup */ +PCI_REASSIGN_ALL_BUS =0x00000002 ,/* reassign all bus numbers */ +PCI_PROBE_ONLY =0x00000004 ,/* use existing setup */ +PCI_CAN_SKIP_ISA_ALIGN =0x00000008 ,/* don't do ISA alignment */ +PCI_ENABLE_PROC_DOMAINS =0x00000010 ,/* enable domains in /proc */ +PCI_COMPAT_DOMAIN_0 =0x00000020 ,/* ... except domain 0 */ +PCI_SCAN_ALL_PCIE_DEVS =0x00000040 ,/* scan all, not just dev 0 */ +}; +/* these external functions are only available when PCI support is enabled */ #ifdef CONFIG_PCI +extern unsigned int pci_flags; + +static inline void pci_set_flags (int flags) { pci_flags = flags; } +static inline void pci_add_flags (int flags) { pci_flags |= flags; } +static inline void pci_clear_flags (int flags) { pci_flags &= ~flags; } +static inline int pci_has_flag (int flag) {return pci_flags & flag; } +void pcie_bus_configure_settings (struct pci_bus *bus); enum pcie_bus_config_types {
@@ -1405,6 +1422,11 @@ void pci_register_set_vga_state(arch_set_vga_state_t func);#else /* CONFIG_PCI is not enabled */ +static inline void pci_set_flags (int flags) { } +static inline void pci_add_flags (int flags) { } +static inline void pci_clear_flags (int flags) { } +static inline int pci_has_flag (int flag) {return 0 ; } +/* * If the system does not have PCI, clearly these return errors. Define * these as simple inline functions to avoid hair in drivers.
Bjorn Helgaas
maintainerPATCH 2/5 PCI: Remove includes of empty asm-generic/pci-bridge.h
In reply to Bjorn Helgaasinclude/asm-generic/pci-bridge.h is now empty, so remove every #include of it.
--- arch/alpha/include/asm/pci.h | 1 - arch/arm/include/asm/pci.h | 3 --- arch/arm64/include/asm/pci.h | 1 - arch/mips/include/asm/pci.h | 1 - arch/powerpc/include/asm/pci-bridge.h | 1 - arch/unicore32/include/asm/pci.h | 2 -- arch/x86/pci/common.c | 1 - drivers/of/of_pci.c | 1 - drivers/pci/pci.c | 1 - drivers/pci/probe.c | 1 - drivers/pci/setup-bus.c | 1 - 11 files changed, 14 deletions(-)
arch/alpha/include/asm/pci.h +0 -1
@@ -7,7 +7,6 @@#include <linux/dma-mapping.h> #include <linux/scatterlist.h> #include <asm/machvec.h> -#include <asm-generic/pci-bridge.h> /* * The following structure is used to manage multiple PCI busses.
arch/arm/include/asm/pci.h +0 -3
@@ -3,8 +3,6 @@#ifdef __KERNEL__#include <asm-generic/pci-dma-compat.h> -#include <asm-generic/pci-bridge.h> -#include <asm/mach/pci.h> /* for pci_sys_data */ extern unsigned long pcibios_min_io;
@@ -41,5 +39,4 @@ static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) }#endif /* __KERNEL__ */ -#endif
arch/arm64/include/asm/pci.h +0 -1
@@ -7,7 +7,6 @@#include <linux/dma-mapping.h> #include <asm/io.h> -#include <asm-generic/pci-bridge.h> #include <asm-generic/pci-dma-compat.h> #define PCIBIOS_MIN_IO 0x1000
arch/mips/include/asm/pci.h +0 -1
@@ -102,7 +102,6 @@ static inline void pci_resource_to_user(const struct pci_dev *dev, int bar,#include <linux/scatterlist.h> #include <linux/string.h> #include <asm/io.h> -#include <asm-generic/pci-bridge.h> struct pci_dev ;
arch/powerpc/include/asm/pci-bridge.h +0 -1
@@ -10,7 +10,6 @@#include <linux/pci.h> #include <linux/list.h> #include <linux/ioport.h> -#include <asm-generic/pci-bridge.h> struct device_node ;
arch/unicore32/include/asm/pci.h +0 -2
@@ -14,7 +14,6 @@#ifdef __KERNEL__#include <asm-generic/pci-dma-compat.h> -#include <asm-generic/pci-bridge.h> #include <asm-generic/pci.h> #include <mach/hardware.h> /* for PCIBIOS_MIN_* */
@@ -23,5 +22,4 @@ extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, enum pci_mmap_state mmap_state, int write_combine);#endif /* __KERNEL__ */ -#endif
arch/x86/pci/common.c +0 -1
@@ -12,7 +12,6 @@#include <linux/dmi.h> #include <linux/slab.h> -#include <asm-generic/pci-bridge.h> #include <asm/acpi.h> #include <asm/segment.h> #include <asm/io.h>
drivers/of/of_pci.c +0 -1
@@ -5,7 +5,6 @@#include <linux/of_device.h> #include <linux/of_pci.h> #include <linux/slab.h> -#include <asm-generic/pci-bridge.h> static inline int __of_pci_pci_compare (struct device_node *node,unsigned int data)
drivers/pci/pci.c +0 -1
@@ -25,7 +25,6 @@#include <linux/device.h> #include <linux/pm_runtime.h> #include <linux/pci_hotplug.h> -#include <asm-generic/pci-bridge.h> #include <asm/setup.h> #include <linux/aer.h> #include "pci.h"
drivers/pci/probe.c +0 -1
@@ -15,7 +15,6 @@#include <linux/pci-aspm.h> #include <linux/aer.h> #include <linux/acpi.h> -#include <asm-generic/pci-bridge.h> #include "pci.h" #define CARDBUS_LATENCY_TIMER 176/* secondary latency timer */
drivers/pci/setup-bus.c +0 -1
@@ -25,7 +25,6 @@#include <linux/ioport.h> #include <linux/cache.h> #include <linux/slab.h> -#include <asm-generic/pci-bridge.h> #include "pci.h" unsigned int pci_flags;
Bjorn Helgaas
maintainerPATCH 3/5 ARM64: PCI: Remove generated include of asm-generic/pci-bridge.h
In reply to Bjorn Helgaasarm64 generates asm/pci-bridge.h, which merely includes the now-empty asm-generic/pci-bridge.h. Stop generating asm/pci-bridge.h, and stop including it.
--- arch/arm64/include/asm/Kbuild | 3 --- arch/arm64/kernel/pci.c | 2 -- 2 files changed, 5 deletions(-)
arch/arm64/include/asm/Kbuild +0 -3
@@ -1,5 +1,3 @@ - - generic-y += bug.h generic-y += bugs.h generic-y += checksum.h
@@ -31,7 +29,6 @@ generic-y += msgbuf.h generic-y += msi.h generic-y += mutex.h generic-y += pci.h -generic-y += pci-bridge.h generic-y += poll.h generic-y += preempt.h generic-y += resource.h
arch/arm64/kernel/pci.c +0 -2
@@ -19,8 +19,6 @@#include <linux/of_platform.h> #include <linux/slab.h> -#include <asm/pci-bridge.h> -/* * Called after each bus is probed, but before its children are examined */
Bjorn Helgaas
maintainerPATCH 4/5 PCI: Remove empty asm-generic/pci-bridge.h
In reply to Bjorn Helgaasinclude/asm-generic/pci-bridge.h is empty, and nobody includes it, so remove it.
--- include/asm-generic/pci-bridge.h | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 include/asm-generic/pci-bridge.h
include/asm-generic/pci-bridge.h deleted +0 -9
@@ -1,9 +0,0 @@ -/* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License -* as published by the Free Software Foundation; either version -* 2 of the License, or (at your option) any later version. -*/ -#ifndef _ASM_GENERIC_PCI_BRIDGE_H -#define _ASM_GENERIC_PCI_BRIDGE_H -#endif /* _ASM_GENERIC_PCI_BRIDGE_H */
Bjorn Helgaas
maintainerPATCH 5/5 PCI: Remove includes of asm/pci-bridge.h
In reply to Bjorn HelgaasDrivers should include asm/pci-bridge.h only when they need the arch- specific things provided there. Outside of the arch/ directories, the only drivers that actually need things provided by asm/pci-bridge.h are the powerpc RPA hotplug drivers in drivers/pci/hotplug/rpa*.
Remove the includes of asm/pci-bridge.h from the other drivers, adding an include of linux/pci.h if necessary.
--- drivers/ata/pata_macio.c | 2 +- drivers/char/agp/uninorth-agp.c | 1 - drivers/gpu/drm/radeon/radeon_combios.c | 1 - drivers/ide/pdc202xx_new.c | 1 - drivers/ide/pmac.c | 1 - drivers/macintosh/macio_asic.c | 1 - drivers/misc/cxl/pci.c | 1 - drivers/net/ethernet/sun/sungem.c | 1 - drivers/net/ethernet/toshiba/spider_net.c | 1 - drivers/scsi/mac53c94.c | 2 +- drivers/scsi/mesh.c | 2 +- drivers/usb/core/hcd-pci.c | 1 - drivers/video/fbdev/aty/aty128fb.c | 1 - drivers/video/fbdev/aty/radeon_base.c | 1 - drivers/video/fbdev/imsttfb.c | 1 - drivers/video/fbdev/matrox/matroxfb_base.h | 1 - drivers/video/fbdev/offb.c | 4 ---- sound/ppc/pmac.c | 1 - 18 files changed, 3 insertions(+), 21 deletions(-)
drivers/ata/pata_macio.c +1 -1
@@ -22,6 +22,7 @@#include <linux/scatterlist.h> #include <linux/of.h> #include <linux/gfp.h> +#include <linux/pci.h> #include <scsi/scsi.h> #include <scsi/scsi_host.h>
@@ -30,7 +31,6 @@#include <asm/macio.h> #include <asm/io.h> #include <asm/dbdma.h> -#include <asm/pci-bridge.h> #include <asm/machdep.h> #include <asm/pmac_feature.h> #include <asm/mediabay.h>
drivers/char/agp/uninorth-agp.c +0 -1
@@ -10,7 +10,6 @@#include <linux/delay.h> #include <linux/vmalloc.h> #include <asm/uninorth.h> -#include <asm/pci-bridge.h> #include <asm/prom.h> #include <asm/pmac_feature.h> #include "agp.h"
drivers/gpu/drm/radeon/radeon_combios.c +0 -1
@@ -34,7 +34,6 @@#include <asm/machdep.h> #include <asm/pmac_feature.h> #include <asm/prom.h> -#include <asm/pci-bridge.h> #endif /* CONFIG_PPC_PMAC */ /* from radeon_legacy_encoder.c */
drivers/ide/pdc202xx_new.c +0 -1
@@ -28,7 +28,6 @@#ifdef CONFIG_PPC_PMAC #include <asm/prom.h> -#include <asm/pci-bridge.h> #endif #define DRV_NAME "pdc202xx_new"
drivers/ide/pmac.c +0 -1
@@ -40,7 +40,6 @@#include <asm/io.h> #include <asm/dbdma.h> #include <asm/ide.h> -#include <asm/pci-bridge.h> #include <asm/machdep.h> #include <asm/pmac_feature.h> #include <asm/sections.h>
drivers/macintosh/macio_asic.c +0 -1
@@ -31,7 +31,6 @@#include <asm/macio.h> #include <asm/pmac_feature.h> #include <asm/prom.h> -#include <asm/pci-bridge.h> #undef DEBUG
drivers/misc/cxl/pci.c +0 -1
@@ -19,7 +19,6 @@#include <linux/delay.h> #include <asm/opal.h> #include <asm/msi_bitmap.h> -#include <asm/pci-bridge.h> /* for struct pci_controller */ #include <asm/pnv-pci.h> #include <asm/io.h>
drivers/net/ethernet/sun/sungem.c +0 -1
@@ -51,7 +51,6 @@#endif #ifdef CONFIG_PPC_PMAC -#include <asm/pci-bridge.h> #include <asm/prom.h> #include <asm/machdep.h> #include <asm/pmac_feature.h>
drivers/net/ethernet/toshiba/spider_net.c +0 -1
@@ -48,7 +48,6 @@#include <linux/wait.h> #include <linux/workqueue.h> #include <linux/bitops.h> -#include <asm/pci-bridge.h> #include <net/checksum.h> #include "spider_net.h"
drivers/scsi/mac53c94.c +1 -1
@@ -18,11 +18,11 @@#include <linux/spinlock.h> #include <linux/interrupt.h> #include <linux/module.h> +#include <linux/pci.h> #include <asm/dbdma.h> #include <asm/io.h> #include <asm/pgtable.h> #include <asm/prom.h> -#include <asm/pci-bridge.h> #include <asm/macio.h> #include <scsi/scsi.h>
drivers/scsi/mesh.c +1 -1
@@ -29,6 +29,7 @@#include <linux/interrupt.h> #include <linux/reboot.h> #include <linux/spinlock.h> +#include <linux/pci.h> #include <asm/dbdma.h> #include <asm/io.h> #include <asm/pgtable.h>
@@ -38,7 +39,6 @@#include <asm/processor.h> #include <asm/machdep.h> #include <asm/pmac_feature.h> -#include <asm/pci-bridge.h> #include <asm/macio.h> #include <scsi/scsi.h>
drivers/usb/core/hcd-pci.c +0 -1
@@ -28,7 +28,6 @@#ifdef CONFIG_PPC_PMAC #include <asm/machdep.h> #include <asm/pmac_feature.h> -#include <asm/pci-bridge.h> #include <asm/prom.h> #endif
drivers/video/fbdev/aty/aty128fb.c +0 -1
@@ -68,7 +68,6 @@#include <asm/machdep.h> #include <asm/pmac_feature.h> #include <asm/prom.h> -#include <asm/pci-bridge.h> #include "../macmodes.h" #endif
drivers/video/fbdev/aty/radeon_base.c +0 -1
@@ -76,7 +76,6 @@#ifdef CONFIG_PPC -#include <asm/pci-bridge.h> #include "../macmodes.h" #ifdef CONFIG_BOOTX_TEXT
drivers/video/fbdev/imsttfb.c +0 -1
@@ -33,7 +33,6 @@#if defined(CONFIG_PPC )#include <linux/nvram.h> #include <asm/prom.h> -#include <asm/pci-bridge.h> #include "macmodes.h" #endif
drivers/video/fbdev/matrox/matroxfb_base.h +0 -1
@@ -47,7 +47,6 @@#if defined(CONFIG_PPC_PMAC )#include <asm/prom.h> -#include <asm/pci-bridge.h> #include "../macmodes.h" #endif
drivers/video/fbdev/offb.c +0 -4
@@ -28,10 +28,6 @@#include <linux/pci.h> #include <asm/io.h> -#ifdef CONFIG_PPC64 -#include <asm/pci-bridge.h> -#endif -#ifdef CONFIG_PPC32 #include <asm/bootx.h> #endif
sound/ppc/pmac.c +0 -1
@@ -34,7 +34,6 @@#include "pmac.h" #include <sound/pcm_params.h> #include <asm/pmac_feature.h> -#include <asm/pci-bridge.h> /* fixed frequency table for awacs, screamer, burgundy, DACA (44100 max) */
Quoted 10 lines · Bjorn Helgaas
We've had some non-arch-specific stuff (
pci_has_flag()and associated definitions likePCI_PROBE_ONLY) inasm/pci-bridge.h. This leads to warnings like:
drivers/pci/host/pcie-designware.c:562:20: error: 'PCI_PROBE_ONLY' undeclared (first use in this function)drivers/pci/host/pcie-designware.c:562:7: error: implicit declaration of function 'pci_has_flag' [-Werror=implicit-function-declaration]because arches don't consistently supply
asm/pci-bridge.h, and several drivers include it when they shouldn't.
Quoted 7 lines
This series moves the generic stuff to
linux/pci.h, so it's the same for everybody, and removes the now-emptyasm-generic/pci-bridge.h.There still a few arches that provide
asm/pci-bridge.h(microblaze, powerpc, and xtensa), but now they contain truly arch-dependent things like structpci_controllerdefinitions, and they're only included by arch-specific files.
For the arm64 bits:
Will
Bjorn Helgaas
AppliedQuoted 18 lines · Bjorn Helgaas
We've had some non-arch-specific stuff (
pci_has_flag()and associated definitions likePCI_PROBE_ONLY) inasm/pci-bridge.h. This leads to warnings like:
drivers/pci/host/pcie-designware.c:562:20: error: 'PCI_PROBE_ONLY' undeclared (first use in this function)drivers/pci/host/pcie-designware.c:562:7: error: implicit declaration of function 'pci_has_flag' [-Werror=implicit-function-declaration]because arches don't consistently supply
asm/pci-bridge.h, and several drivers include it when they shouldn't.This series moves the generic stuff to
linux/pci.h, so it's the same for everybody, and removes the now-emptyasm-generic/pci-bridge.h.There still a few arches that provide
asm/pci-bridge.h(microblaze, powerpc, and xtensa), but now they contain truly arch-dependent things like structpci_controllerdefinitions, and they're only included by arch-specific files.
Quoted 8 lines
---
Bjorn Helgaas (5):
PCI: Movepci_set_flags()fromasm-generic/pci-bridge.htolinux/pci.h
PCI: Remove includes of emptyasm-generic/pci-bridge.h
ARM64: PCI: Remove generated include ofasm-generic/pci-bridge.h
PCI: Remove emptyasm-generic/pci-bridge.h
PCI: Remove includes ofasm/pci-bridge.h
I applied these, with Will's ack on the arm64 parts, to pci/misc for v4.6.
Quoted 39 lines
arch/alpha/include/asm/pci.h | 1 arch/arm/include/asm/pci.h | 3 - arch/arm64/include/asm/Kbuild | 3 - arch/arm64/include/asm/pci.h | 1 arch/arm64/kernel/pci.c | 2 - arch/mips/include/asm/pci.h | 1 arch/powerpc/include/asm/pci-bridge.h | 1 arch/unicore32/include/asm/pci.h | 2 - arch/x86/pci/common.c | 1 drivers/ata/pata_macio.c | 2 - drivers/char/agp/uninorth-agp.c | 1 drivers/gpu/drm/radeon/radeon_combios.c | 1 drivers/ide/pdc202xx_new.c | 1 drivers/ide/pmac.c | 1 drivers/macintosh/macio_asic.c | 1 drivers/misc/cxl/pci.c | 1 drivers/net/ethernet/sun/sungem.c | 1 drivers/net/ethernet/toshiba/spider_net.c | 1 drivers/of/of_pci.c | 1 drivers/pci/pci.c | 1 drivers/pci/probe.c | 8 +++ drivers/pci/setup-bus.c | 1 drivers/scsi/mac53c94.c | 2 - drivers/scsi/mesh.c | 2 - drivers/usb/core/hcd-pci.c | 1 drivers/video/fbdev/aty/aty128fb.c | 1 drivers/video/fbdev/aty/radeon_base.c | 1 drivers/video/fbdev/imsttfb.c | 1 drivers/video/fbdev/matrox/matroxfb_base.h | 1 drivers/video/fbdev/offb.c | 4 -- include/asm-generic/pci-bridge.h | 74 ---------------------------- include/linux/pci.h | 22 ++++++++ sound/ppc/pmac.c | 1 33 files changed, 32 insertions(+), 114 deletions(-) delete mode 100644 include/asm-generic/pci-bridge.h--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html