diff -urN 2.3.30pre3/arch/alpha/kernel/core_mcpcia.c 2.3.30pre3-alpha/arch/alpha/kernel/core_mcpcia.c --- 2.3.30pre3/arch/alpha/kernel/core_mcpcia.c Sun Nov 28 02:18:59 1999 +++ 2.3.30pre3-alpha/arch/alpha/kernel/core_mcpcia.c Sun Nov 28 02:19:05 1999 @@ -205,7 +205,7 @@ static int mcpcia_read_config_byte(struct pci_dev *dev, int where, u8 *value) { - struct pci_controler *hose = dev->sysdata ? : probing_hose; + struct pci_controler *hose = dev->sysdata; unsigned long addr, w; unsigned char type1; @@ -221,7 +221,7 @@ static int mcpcia_read_config_word(struct pci_dev *dev, int where, u16 *value) { - struct pci_controler *hose = dev->sysdata ? : probing_hose; + struct pci_controler *hose = dev->sysdata; unsigned long addr, w; unsigned char type1; @@ -237,7 +237,7 @@ static int mcpcia_read_config_dword(struct pci_dev *dev, int where, u32 *value) { - struct pci_controler *hose = dev->sysdata ? : probing_hose; + struct pci_controler *hose = dev->sysdata; unsigned long addr; unsigned char type1; @@ -252,7 +252,7 @@ static int mcpcia_write_config(struct pci_dev *dev, int where, u32 value, long mask) { - struct pci_controler *hose = dev->sysdata ? : probing_hose; + struct pci_controler *hose = dev->sysdata; unsigned long addr; unsigned char type1; diff -urN 2.3.30pre3/arch/alpha/kernel/core_tsunami.c 2.3.30pre3-alpha/arch/alpha/kernel/core_tsunami.c --- 2.3.30pre3/arch/alpha/kernel/core_tsunami.c Sun Nov 28 02:18:59 1999 +++ 2.3.30pre3-alpha/arch/alpha/kernel/core_tsunami.c Sun Nov 28 03:31:12 1999 @@ -84,7 +84,7 @@ mk_conf_addr(struct pci_dev *dev, int where, unsigned long *pci_addr, unsigned char *type1) { - struct pci_controler *hose = dev->sysdata ? : probing_hose; + struct pci_controler *hose = dev->sysdata; unsigned long addr; u8 bus = dev->bus->number; u8 device_fn = dev->devfn; @@ -264,7 +264,7 @@ hose->index = index; hose->io_space->start = TSUNAMI_IO(index) - TSUNAMI_IO_BIAS; - hose->io_space->end = hose->io_space->start + 0xffff; + hose->io_space->end = hose->io_space->start + TSUNAMI_IO_SPACE; hose->io_space->name = pci_io_names[index]; hose->io_space->flags = IORESOURCE_IO; diff -urN 2.3.30pre3/arch/alpha/kernel/pci.c 2.3.30pre3-alpha/arch/alpha/kernel/pci.c --- 2.3.30pre3/arch/alpha/kernel/pci.c Sun Nov 28 01:53:25 1999 +++ 2.3.30pre3-alpha/arch/alpha/kernel/pci.c Sun Nov 28 02:48:03 1999 @@ -40,7 +40,6 @@ */ struct pci_controler *hose_head, **hose_tail = &hose_head; -struct pci_controler *probing_hose; /* * Quirks. @@ -213,13 +212,12 @@ { /* Propogate hose info into the subordinate devices. */ - struct pci_controler *hose = probing_hose; + struct pci_controler *hose = (struct pci_controler *) bus->sysdata; struct pci_dev *dev; bus->resource[0] = hose->io_space; bus->resource[1] = hose->mem_space; for (dev = bus->devices; dev; dev = dev->sibling) { - dev->sysdata = hose; if ((dev->class >> 8) != PCI_CLASS_BRIDGE_PCI) pcibios_fixup_device_resources(dev, bus); } @@ -297,13 +295,11 @@ for (next_busno = 0, hose = hose_head; hose; hose = hose->next) { hose->first_busno = next_busno; hose->last_busno = 0xff; - probing_hose = hose; bus = pci_scan_bus(next_busno, alpha_mv.pci_ops, hose); hose->bus = bus; next_busno = hose->last_busno = bus->subordinate; next_busno += 1; } - probing_hose = NULL; pci_assign_unassigned_resources(alpha_mv.min_io_address, alpha_mv.min_mem_address); diff -urN 2.3.30pre3/arch/alpha/kernel/pci_impl.h 2.3.30pre3-alpha/arch/alpha/kernel/pci_impl.h --- 2.3.30pre3/arch/alpha/kernel/pci_impl.h Sun Nov 28 01:53:25 1999 +++ 2.3.30pre3-alpha/arch/alpha/kernel/pci_impl.h Sun Nov 28 02:18:37 1999 @@ -125,7 +125,6 @@ /* The hose list. */ extern struct pci_controler *hose_head, **hose_tail; -extern struct pci_controler *probing_hose; extern void common_init_pci(void); extern u8 common_swizzle(struct pci_dev *, u8 *); diff -urN 2.3.30pre3/drivers/pci/pci.c 2.3.30pre3-alpha/drivers/pci/pci.c --- 2.3.30pre3/drivers/pci/pci.c Sun Nov 28 02:18:59 1999 +++ 2.3.30pre3-alpha/drivers/pci/pci.c Sun Nov 28 02:19:05 1999 @@ -437,6 +437,7 @@ dev = dev_cache; memset(dev, 0, sizeof(*dev)); dev->bus = bus; + dev->sysdata = bus->sysdata; dev->devfn = devfn; if (pci_read_config_byte(dev, PCI_HEADER_TYPE, &hdr_type)) @@ -556,6 +557,7 @@ child->self = dev; child->parent = bus; child->ops = bus->ops; + child->sysdata = bus->sysdata; /* * Set up the primary, secondary and subordinate diff -urN 2.3.30pre3/include/asm-alpha/core_tsunami.h 2.3.30pre3-alpha/include/asm-alpha/core_tsunami.h --- 2.3.30pre3/include/asm-alpha/core_tsunami.h Sun Nov 28 01:53:26 1999 +++ 2.3.30pre3-alpha/include/asm-alpha/core_tsunami.h Sun Nov 28 03:30:57 1999 @@ -291,6 +291,8 @@ #define TSUNAMI_IO_BIAS TSUNAMI_IO(0) #define TSUNAMI_MEM_BIAS TSUNAMI_MEM(0) +/* The IO address space is larger than 0xffff */ +#define TSUNAMI_IO_SPACE (TSUNAMI_CONF(0) - TSUNAMI_IO(0)) /* * Data structure for handling TSUNAMI machine checks: