Index: arch/alpha/Kconfig =================================================================== RCS file: /var/cvs/linux-2.5/arch/alpha/Kconfig,v retrieving revision 1.13 diff -u -p -r1.13 Kconfig --- arch/alpha/Kconfig 5 May 2003 17:05:24 -0000 1.13 +++ arch/alpha/Kconfig 9 Jun 2003 14:59:36 -0000 @@ -295,6 +295,10 @@ config PCI information about which PCI hardware does work under Linux and which doesn't. +config PCI_DOMAINS + bool + default PCI + config ALPHA_CORE_AGP bool depends on ALPHA_GENERIC || ALPHA_TITAN || ALPHA_MARVEL Index: arch/alpha/kernel/pci.c =================================================================== RCS file: /var/cvs/linux-2.5/arch/alpha/kernel/pci.c,v retrieving revision 1.15 diff -u -p -r1.15 pci.c --- arch/alpha/kernel/pci.c 24 Apr 2003 01:34:51 -0000 1.15 +++ arch/alpha/kernel/pci.c 9 Jun 2003 16:28:46 -0000 @@ -484,11 +484,3 @@ sys_pciconfig_iobase(long which, unsigne return -EOPNOTSUPP; } - -/* Return the index of the PCI controller for device PDEV. */ -int -pci_controller_num(struct pci_dev *pdev) -{ - struct pci_controller *hose = pdev->sysdata; - return (hose ? (int) hose->index : -ENXIO); -} Index: arch/ia64/Kconfig =================================================================== RCS file: /var/cvs/linux-2.5/arch/ia64/Kconfig,v retrieving revision 1.12 diff -u -p -r1.12 Kconfig --- arch/ia64/Kconfig 27 May 2003 17:21:18 -0000 1.12 +++ arch/ia64/Kconfig 8 Jun 2003 16:27:35 -0000 @@ -543,6 +543,10 @@ config PCI information about which PCI hardware does work under Linux and which doesn't. +config PCI_DOMAINS + bool + default PCI + source "drivers/pci/Kconfig" config HOTPLUG Index: arch/ia64/hp/common/sba_iommu.c =================================================================== RCS file: /var/cvs/linux-2.5/arch/ia64/hp/common/sba_iommu.c,v retrieving revision 1.7 diff -u -p -r1.7 sba_iommu.c --- arch/ia64/hp/common/sba_iommu.c 27 May 2003 17:21:18 -0000 1.7 +++ arch/ia64/hp/common/sba_iommu.c 8 Jun 2003 16:06:36 -0000 @@ -1889,7 +1889,7 @@ sba_connect_bus(struct pci_bus *bus) handle = parent; } while (ACPI_SUCCESS(status)); - printk(KERN_WARNING "No IOC for PCI Bus %02x:%02x in ACPI\n", PCI_SEGMENT(bus), bus->number); + printk(KERN_WARNING "No IOC for PCI Bus %04x:%02x in ACPI\n", pci_domain_nr(bus), bus->number); } static int __init Index: arch/ia64/pci/pci.c =================================================================== RCS file: /var/cvs/linux-2.5/arch/ia64/pci/pci.c,v retrieving revision 1.7 diff -u -p -r1.7 pci.c --- arch/ia64/pci/pci.c 27 May 2003 17:21:22 -0000 1.7 +++ arch/ia64/pci/pci.c 8 Jun 2003 16:05:53 -0000 @@ -87,14 +87,14 @@ __pci_sal_write (int seg, int bus, int d static int pci_sal_read (struct pci_bus *bus, unsigned int devfn, int where, int size, u32 *value) { - return __pci_sal_read(PCI_SEGMENT(bus), bus->number, PCI_SLOT(devfn), PCI_FUNC(devfn), + return __pci_sal_read(pci_domain_nr(bus), bus->number, PCI_SLOT(devfn), PCI_FUNC(devfn), where, size, value); } static int pci_sal_write (struct pci_bus *bus, unsigned int devfn, int where, int size, u32 value) { - return __pci_sal_write(PCI_SEGMENT(bus), bus->number, PCI_SLOT(devfn), PCI_FUNC(devfn), + return __pci_sal_write(pci_domain_nr(bus), bus->number, PCI_SLOT(devfn), PCI_FUNC(devfn), where, size, value); } Index: arch/ppc/Kconfig =================================================================== RCS file: /var/cvs/linux-2.5/arch/ppc/Kconfig,v retrieving revision 1.12 diff -u -p -r1.12 Kconfig --- arch/ppc/Kconfig 27 May 2003 17:21:39 -0000 1.12 +++ arch/ppc/Kconfig 9 Jun 2003 16:49:12 -0000 @@ -757,6 +757,10 @@ config PCI your box. If you say Y here, the kernel will include drivers and infrastructure code to support PCI bus devices. +config PCI_DOMAINS + bool + default PCI + config PC_KEYBOARD bool "PC PS/2 style Keyboard" depends on 4xx || 8260 Index: arch/ppc/kernel/pci.c =================================================================== RCS file: /var/cvs/linux-2.5/arch/ppc/kernel/pci.c,v retrieving revision 1.7 diff -u -p -r1.7 pci.c --- arch/ppc/kernel/pci.c 25 Mar 2003 03:17:43 -0000 1.7 +++ arch/ppc/kernel/pci.c 9 Jun 2003 16:31:32 -0000 @@ -1253,16 +1253,6 @@ pci_resource_to_bus(struct pci_dev *pdev } /* - * Return the index of the PCI controller for device pdev. - */ -int pci_controller_num(struct pci_dev *dev) -{ - struct pci_controller *hose = (struct pci_controller *) dev->sysdata; - - return hose->index; -} - -/* * Platform support for /proc/bus/pci/X/Y mmap()s, * modelled on the sparc64 implementation by Dave Miller. * -- paulus. Index: arch/ppc64/Kconfig =================================================================== RCS file: /var/cvs/linux-2.5/arch/ppc64/Kconfig,v retrieving revision 1.11 diff -u -p -r1.11 Kconfig --- arch/ppc64/Kconfig 5 May 2003 17:05:54 -0000 1.11 +++ arch/ppc64/Kconfig 9 Jun 2003 16:49:19 -0000 @@ -164,6 +164,10 @@ config PCI your box. If you say Y here, the kernel will include drivers and infrastructure code to support PCI bus devices. +config PCI_DOMAINS + bool + default PCI + # only elf supported, a.out is not -- Cort config KCORE_ELF bool Index: arch/ppc64/kernel/pci.c =================================================================== RCS file: /var/cvs/linux-2.5/arch/ppc64/kernel/pci.c,v retrieving revision 1.10 diff -u -p -r1.10 pci.c --- arch/ppc64/kernel/pci.c 27 May 2003 17:21:51 -0000 1.10 +++ arch/ppc64/kernel/pci.c 9 Jun 2003 16:37:05 -0000 @@ -371,11 +371,11 @@ int pcibios_enable_device(struct pci_dev } /* - * Return the index of the PCI controller for device pdev. + * Return the domain number for this bus. */ -int pci_controller_num(struct pci_dev *dev) +int pci_domain_nr(struct pci_bus *bus) { - struct pci_controller *hose = PCI_GET_PHB_PTR(dev); + struct pci_controller *hose = PCI_GET_PHB_PTR(bus); return hose->global_number; } Index: arch/sparc64/Kconfig =================================================================== RCS file: /var/cvs/linux-2.5/arch/sparc64/Kconfig,v retrieving revision 1.14 diff -u -p -r1.14 Kconfig --- arch/sparc64/Kconfig 27 May 2003 17:22:04 -0000 1.14 +++ arch/sparc64/Kconfig 9 Jun 2003 16:49:26 -0000 @@ -318,6 +318,10 @@ config PCI information about which PCI hardware does work under Linux and which doesn't. +config PCI_DOMAINS + bool + default PCI + config RTC tristate depends on PCI Index: arch/sparc64/kernel/pci.c =================================================================== RCS file: /var/cvs/linux-2.5/arch/sparc64/kernel/pci.c,v retrieving revision 1.9 diff -u -p -r1.9 pci.c --- arch/sparc64/kernel/pci.c 8 Apr 2003 15:18:40 -0000 1.9 +++ arch/sparc64/kernel/pci.c 9 Jun 2003 16:44:36 -0000 @@ -802,11 +802,11 @@ int pci_mmap_page_range(struct pci_dev * return 0; } -/* Return the index of the PCI controller for device PDEV. */ +/* Return the domain nuber for this pci bus */ -int pci_controller_num(struct pci_dev *pdev) +int pci_domain_nr(struct pci_bus *bus) { - struct pcidev_cookie *cookie = pdev->sysdata; + struct pcidev_cookie *cookie = bus->sysdata; int ret; if (cookie != NULL) { Index: drivers/pci/probe.c =================================================================== RCS file: /var/cvs/linux-2.5/drivers/pci/probe.c,v retrieving revision 1.14 diff -u -p -r1.14 probe.c --- drivers/pci/probe.c 27 May 2003 17:25:03 -0000 1.14 +++ drivers/pci/probe.c 8 Jun 2003 16:36:59 -0000 @@ -528,7 +528,8 @@ pci_scan_device(struct pci_bus *bus, int pci_name_device(dev); /* now put in global tree */ - strcpy(dev->dev.bus_id,dev->slot_name); + sprintf(dev->dev.bus_id, "%04x:%s", pci_domain_nr(bus), + dev->slot_name); dev->dev.dma_mask = &dev->dma_mask; return dev; Index: drivers/pci/proc.c =================================================================== RCS file: /var/cvs/linux-2.5/drivers/pci/proc.c,v retrieving revision 1.8 diff -u -p -r1.8 proc.c --- drivers/pci/proc.c 10 Feb 2003 22:23:43 -0000 1.8 +++ drivers/pci/proc.c 9 Jun 2003 16:46:36 -0000 @@ -210,7 +210,7 @@ static int proc_bus_pci_ioctl(struct ino switch (cmd) { case PCIIOC_CONTROLLER: - ret = pci_controller_num(dev); + ret = pci_domain_nr(dev->bus); break; #ifdef HAVE_PCI_MMAP Index: include/asm-alpha/pci.h =================================================================== RCS file: /var/cvs/linux-2.5/include/asm-alpha/pci.h,v retrieving revision 1.9 diff -u -p -r1.9 pci.h --- include/asm-alpha/pci.h 24 Apr 2003 01:37:20 -0000 1.9 +++ include/asm-alpha/pci.h 9 Jun 2003 16:25:23 -0000 @@ -188,12 +188,11 @@ pci_dac_dma_sync_single(struct pci_dev * /* Nothing to do. */ } -/* Return the index of the PCI controller for device PDEV. */ -extern int pci_controller_num(struct pci_dev *pdev); - extern void pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region, struct resource *res); + +#define pci_domain_nr(bus) ((struct pci_controller *)(bus)->sysdata)->index #endif /* __KERNEL__ */ Index: include/asm-arm/pci.h =================================================================== RCS file: /var/cvs/linux-2.5/include/asm-arm/pci.h,v retrieving revision 1.8 diff -u -p -r1.8 pci.h --- include/asm-arm/pci.h 18 Mar 2003 00:58:40 -0000 1.8 +++ include/asm-arm/pci.h 9 Jun 2003 16:25:33 -0000 @@ -128,14 +128,6 @@ static inline int pci_dma_supported(stru */ #define pci_dac_dma_supported(pci_dev, mask) (0) -/* - * Return the index of the PCI controller for device PDEV. - */ -static inline int pci_controller_num(struct pci_dev *dev) -{ - return 0; -} - #if defined(CONFIG_SA1111) && !defined(CONFIG_PCI) /* Index: include/asm-h8300/pci.h =================================================================== RCS file: /var/cvs/linux-2.5/include/asm-h8300/pci.h,v retrieving revision 1.2 diff -u -p -r1.2 pci.h --- include/asm-h8300/pci.h 24 Apr 2003 01:37:23 -0000 1.2 +++ include/asm-h8300/pci.h 9 Jun 2003 16:25:52 -0000 @@ -19,7 +19,4 @@ extern inline void pcibios_penalize_isa_ /* We don't do dynamic PCI IRQ allocation */ } -/* Return the index of the PCI controller for device PDEV. */ -#define pci_controller_num(PDEV) (0) - #endif /* _ASM_H8300_PCI_H */ Index: include/asm-i386/pci.h =================================================================== RCS file: /var/cvs/linux-2.5/include/asm-i386/pci.h,v retrieving revision 1.5 diff -u -p -r1.5 pci.h --- include/asm-i386/pci.h 18 Mar 2003 00:58:42 -0000 1.5 +++ include/asm-i386/pci.h 9 Jun 2003 16:25:58 -0000 @@ -90,12 +90,6 @@ pci_dac_dma_sync_single(struct pci_dev * #define sg_dma_address(sg) ((sg)->dma_address) #define sg_dma_len(sg) ((sg)->length) -/* Return the index of the PCI controller for device. */ -static inline int pci_controller_num(struct pci_dev *dev) -{ - return 0; -} - #define HAVE_PCI_MMAP extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, enum pci_mmap_state mmap_state, int write_combine); Index: include/asm-ia64/pci.h =================================================================== RCS file: /var/cvs/linux-2.5/include/asm-ia64/pci.h,v retrieving revision 1.7 diff -u -p -r1.7 pci.h --- include/asm-ia64/pci.h 27 May 2003 17:28:04 -0000 1.7 +++ include/asm-ia64/pci.h 9 Jun 2003 16:26:10 -0000 @@ -70,9 +70,6 @@ extern int pcibios_prep_mwi (struct pci_ #define pci_dac_dma_to_offset(dev,dma_addr) ((dma_addr) & ~PAGE_MASK) #define pci_dac_dma_sync_single(dev,dma_addr,len,dir) do { mb(); } while (0) -/* Return the index of the PCI controller for device PDEV. */ -#define pci_controller_num(PDEV) (0) - #define sg_dma_len(sg) ((sg)->dma_length) #define sg_dma_address(sg) ((sg)->dma_address) @@ -95,7 +92,7 @@ struct pci_controller { }; #define PCI_CONTROLLER(busdev) ((struct pci_controller *) busdev->sysdata) -#define PCI_SEGMENT(busdev) (PCI_CONTROLLER(busdev)->segment) +#define pci_domain_nr(busdev) (PCI_CONTROLLER(busdev)->segment) /* generic pci stuff */ #include Index: include/asm-m68k/pci.h =================================================================== RCS file: /var/cvs/linux-2.5/include/asm-m68k/pci.h,v retrieving revision 1.4 diff -u -p -r1.4 pci.h --- include/asm-m68k/pci.h 5 Nov 2002 18:10:51 -0000 1.4 +++ include/asm-m68k/pci.h 9 Jun 2003 16:26:15 -0000 @@ -45,9 +45,6 @@ extern inline void pcibios_penalize_isa_ /* We don't do dynamic PCI IRQ allocation */ } -/* Return the index of the PCI controller for device PDEV. */ -#define pci_controller_num(PDEV) (0) - /* The PCI address space does equal the physical memory * address space. The networking and block device layers use * this boolean for bounce buffer decisions. Index: include/asm-mips/pci.h =================================================================== RCS file: /var/cvs/linux-2.5/include/asm-mips/pci.h,v retrieving revision 1.4 diff -u -p -r1.4 pci.h --- include/asm-mips/pci.h 18 Mar 2003 00:58:47 -0000 1.4 +++ include/asm-mips/pci.h 9 Jun 2003 16:26:25 -0000 @@ -237,9 +237,6 @@ extern inline int pci_dma_supported(stru } -/* Return the index of the PCI controller for device. */ -#define pci_controller_num(pdev) (0) - /* * These macros should be used after a pci_map_sg call has been done * to get bus addresses of each of the SG entries and their lengths. Index: include/asm-mips64/pci.h =================================================================== RCS file: /var/cvs/linux-2.5/include/asm-mips64/pci.h,v retrieving revision 1.4 diff -u -p -r1.4 pci.h --- include/asm-mips64/pci.h 18 Mar 2003 00:58:49 -0000 1.4 +++ include/asm-mips64/pci.h 9 Jun 2003 16:26:30 -0000 @@ -256,11 +256,6 @@ static inline int pci_dma_supported(stru } /* - * Return the index of the PCI controller for device. - */ -#define pci_controller_num(pdev) (0) - -/* * These macros should be used after a pci_map_sg call has been done * to get bus addresses of each of the SG entries and their lengths. * You should only work with the number of sg entries pci_map_sg Index: include/asm-parisc/pci.h =================================================================== RCS file: /var/cvs/linux-2.5/include/asm-parisc/pci.h,v retrieving revision 1.8 diff -u -p -r1.8 pci.h --- include/asm-parisc/pci.h 18 Mar 2003 00:58:51 -0000 1.8 +++ include/asm-parisc/pci.h 9 Jun 2003 16:26:36 -0000 @@ -180,9 +180,6 @@ extern inline void pcibios_register_hba( /* Don't support DAC yet. */ #define pci_dac_dma_supported(pci_dev, mask) (0) -/* Return the index of the PCI controller for device PDEV. */ -#define pci_controller_num(PDEV) (0) - /* export the pci_ DMA API in terms of the dma_ one */ #include Index: include/asm-ppc/pci-bridge.h =================================================================== RCS file: /var/cvs/linux-2.5/include/asm-ppc/pci-bridge.h,v retrieving revision 1.5 diff -u -p -r1.5 pci-bridge.h --- include/asm-ppc/pci-bridge.h 11 Jan 2003 23:05:45 -0000 1.5 +++ include/asm-ppc/pci-bridge.h 9 Jun 2003 16:47:43 -0000 @@ -39,7 +39,7 @@ pci_process_bridge_OF_ranges(struct pci_ * Structure of a PCI controller (host bridge) */ struct pci_controller { - int index; /* used for pci_controller_num */ + int index; /* PCI domain number */ struct pci_controller *next; struct pci_bus *bus; void *arch_data; Index: include/asm-ppc/pci.h =================================================================== RCS file: /var/cvs/linux-2.5/include/asm-ppc/pci.h,v retrieving revision 1.6 diff -u -p -r1.6 pci.h --- include/asm-ppc/pci.h 27 May 2003 17:28:25 -0000 1.6 +++ include/asm-ppc/pci.h 9 Jun 2003 16:52:44 -0000 @@ -266,7 +266,7 @@ pci_dac_dma_sync_single(struct pci_dev * } /* Return the index of the PCI controller for device PDEV. */ -extern int pci_controller_num(struct pci_dev *pdev); +#define pci_domain_nr(bus) ((struct pci_controller *)(bus)->sysdata)->index /* Map a range of PCI memory or I/O space for a device into user space */ int pci_mmap_page_range(struct pci_dev *pdev, struct vm_area_struct *vma, Index: include/asm-ppc64/pci.h =================================================================== RCS file: /var/cvs/linux-2.5/include/asm-ppc64/pci.h,v retrieving revision 1.5 diff -u -p -r1.5 pci.h --- include/asm-ppc64/pci.h 8 Apr 2003 15:20:34 -0000 1.5 +++ include/asm-ppc64/pci.h 9 Jun 2003 16:37:38 -0000 @@ -86,8 +86,7 @@ static inline int pci_dma_supported(stru return 1; } -/* Return the index of the PCI controller for device PDEV. */ -extern int pci_controller_num(struct pci_dev *pdev); +extern int pci_domain_nr(struct pci_bus *bus); struct vm_area_struct; /* Map a range of PCI memory or I/O space for a device into user space */ Index: include/asm-sh/pci.h =================================================================== RCS file: /var/cvs/linux-2.5/include/asm-sh/pci.h,v retrieving revision 1.4 diff -u -p -r1.4 pci.h --- include/asm-sh/pci.h 18 Mar 2003 00:58:55 -0000 1.4 +++ include/asm-sh/pci.h 9 Jun 2003 16:27:25 -0000 @@ -226,9 +226,6 @@ static inline int pci_dma_supported(stru */ #define pci_dac_dma_supported(pci_dev, mask) (0) -/* Return the index of the PCI controller for device PDEV. */ -#define pci_controller_num(PDEV) (0) - /* These macros should be used after a pci_map_sg call has been done * to get bus addresses of each of the SG entries and their lengths. * You should only work with the number of sg entries pci_map_sg Index: include/asm-sparc/pci.h =================================================================== RCS file: /var/cvs/linux-2.5/include/asm-sparc/pci.h,v retrieving revision 1.4 diff -u -p -r1.4 pci.h --- include/asm-sparc/pci.h 24 Apr 2003 01:37:42 -0000 1.4 +++ include/asm-sparc/pci.h 9 Jun 2003 16:27:29 -0000 @@ -132,9 +132,6 @@ extern inline int pci_dma_supported(stru #define pci_dac_dma_supported(dev, mask) (0) -/* Return the index of the PCI controller for device PDEV. */ -#define pci_controller_num(PDEV) (0) - #endif /* __KERNEL__ */ /* generic pci stuff */ Index: include/asm-sparc64/pci.h =================================================================== RCS file: /var/cvs/linux-2.5/include/asm-sparc64/pci.h,v retrieving revision 1.7 diff -u -p -r1.7 pci.h --- include/asm-sparc64/pci.h 5 May 2003 17:09:29 -0000 1.7 +++ include/asm-sparc64/pci.h 9 Jun 2003 16:45:13 -0000 @@ -189,7 +189,7 @@ pci_dac_dma_sync_single(struct pci_dev * /* Return the index of the PCI controller for device PDEV. */ -extern int pci_controller_num(struct pci_dev *pdev); +extern int pci_domain_nr(struct pci_bus *bus); /* Platform support for /proc/bus/pci/X/Y mmap()s. */ Index: include/asm-v850/rte_cb.h =================================================================== RCS file: /var/cvs/linux-2.5/include/asm-v850/rte_cb.h,v retrieving revision 1.3 diff -u -p -r1.3 rte_cb.h --- include/asm-v850/rte_cb.h 24 Apr 2003 01:37:44 -0000 1.3 +++ include/asm-v850/rte_cb.h 9 Jun 2003 16:46:56 -0000 @@ -54,7 +54,6 @@ instead, perversely enough, this becomes always true! */ #define pci_dma_supported(dev, mask) 1 #define pci_dac_dma_supported(dev, mask) 0 -#define pci_controller_num(dev) 0 #define pcibios_assign_all_busses() 1 Index: include/asm-x86_64/pci.h =================================================================== RCS file: /var/cvs/linux-2.5/include/asm-x86_64/pci.h,v retrieving revision 1.7 diff -u -p -r1.7 pci.h --- include/asm-x86_64/pci.h 27 May 2003 17:28:44 -0000 1.7 +++ include/asm-x86_64/pci.h 9 Jun 2003 16:27:56 -0000 @@ -270,12 +270,6 @@ pci_dac_dma_sync_single(struct pci_dev * #define sg_dma_address(sg) ((sg)->dma_address) #define sg_dma_len(sg) ((sg)->length) -/* Return the index of the PCI controller for device. */ -static inline int pci_controller_num(struct pci_dev *dev) -{ - return 0; -} - #define HAVE_PCI_MMAP extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, enum pci_mmap_state mmap_state, int write_combine); Index: include/linux/pci.h =================================================================== RCS file: /var/cvs/linux-2.5/include/linux/pci.h,v retrieving revision 1.16 diff -u -p -r1.16 pci.h --- include/linux/pci.h 27 May 2003 17:29:00 -0000 1.16 +++ include/linux/pci.h 9 Jun 2003 14:58:42 -0000 @@ -868,5 +868,15 @@ extern int pci_pci_problems; #define PCIPCI_VSFX 16 #define PCIPCI_ALIMAGIK 32 +/* + * PCI domain support. Sometimes called PCI segment (eg by ACPI), + * a PCI domain is defined to be a set of PCI busses which share + * configuration space. + */ + +#ifndef CONFIG_PCI_DOMAINS +#define pci_domain_nr(bus) 0 +#endif + #endif /* __KERNEL__ */ #endif /* LINUX_PCI_H */