Index: drivers/pci/proc.c =================================================================== RCS file: /var/cvs/linux-2.5/drivers/pci/proc.c,v retrieving revision 1.9 diff -u -p -r1.9 proc.c --- drivers/pci/proc.c 14 Jun 2003 22:15:29 -0000 1.9 +++ drivers/pci/proc.c 17 Jun 2003 19:36:50 -0000 @@ -383,7 +383,8 @@ int pci_proc_attach_device(struct pci_de return -EACCES; if (!(de = bus->procdir)) { - sprintf(name, "%02x", bus->number); + if (!pci_name_bus(name, bus)) + return -EEXIST; de = bus->procdir = proc_mkdir(name, proc_bus_pci_dir); if (!de) return -ENOMEM; Index: include/asm-alpha/pci.h =================================================================== RCS file: /var/cvs/linux-2.5/include/asm-alpha/pci.h,v retrieving revision 1.10 diff -u -p -r1.10 pci.h --- include/asm-alpha/pci.h 14 Jun 2003 22:15:52 -0000 1.10 +++ include/asm-alpha/pci.h 17 Jun 2003 19:37:28 -0000 @@ -194,6 +194,13 @@ pcibios_resource_to_bus(struct pci_dev * #define pci_domain_nr(bus) ((struct pci_controller *)(bus)->sysdata)->index +/* We never have overlapping bus numbers on Alpha */ +static inline int pci_name_bus(char *name, struct pci_bus *bus) +{ + sprintf(name, "%02x", bus->number); + return 0; +} + #endif /* __KERNEL__ */ /* Values for the `which' argument to sys_pciconfig_iobase. */ Index: include/asm-ia64/pci.h =================================================================== RCS file: /var/cvs/linux-2.5/include/asm-ia64/pci.h,v retrieving revision 1.8 diff -u -p -r1.8 pci.h --- include/asm-ia64/pci.h 14 Jun 2003 22:15:56 -0000 1.8 +++ include/asm-ia64/pci.h 17 Jun 2003 19:37:45 -0000 @@ -93,6 +93,16 @@ struct pci_controller { #define PCI_CONTROLLER(busdev) ((struct pci_controller *) busdev->sysdata) #define pci_domain_nr(busdev) (PCI_CONTROLLER(busdev)->segment) + +static inline int pci_name_bus(char *name, struct pci_bus *bus) +{ + if (pci_domain_nr(bus) == 0) { + sprintf(name, "%02x", bus->number); + } else { + sprintf(name, "%04x:%02x", pci_domain_nr(bus), bus->number); + } + return 0; +} /* generic pci stuff */ #include Index: include/linux/pci.h =================================================================== RCS file: /var/cvs/linux-2.5/include/linux/pci.h,v retrieving revision 1.17 diff -u -p -r1.17 pci.h --- include/linux/pci.h 14 Jun 2003 22:16:01 -0000 1.17 +++ include/linux/pci.h 17 Jun 2003 19:37:56 -0000 @@ -808,6 +808,11 @@ extern int pci_pci_problems; #ifndef CONFIG_PCI_DOMAINS static inline int pci_domain_nr(struct pci_bus *bus) { return 0; } +static inline int pci_name_bus(char *name, struct pci_bus *bus) +{ + sprintf(name, "%02x", bus->number); + return 0; +} #endif #endif /* __KERNEL__ */