Messages in this thread Patch in this message |  | | Date | Wed, 19 Sep 2001 08:31:57 -0400 | From | Brian Gerst <> | Subject | [PATCH] Re: Direct PCI access broken in 2.4.10-pre |
| |
David Woodhouse wrote: > > 2.4.10-pre3 and later fail to boot on my Compaq XL box. It claims that PCI > isn't supported. This board doesn't use the PCI BIOS because the entry > point is in high memory. > > 'cvs up -r v2_4_10-pre2 arch/i386/boot/pci-pc.c' fixes it. > > A happy boot with the old pci-pc.c: > PCI: BIOS32 entry (0xc00fa000) in high memory, cannot use. > PCI: Using configuration type 2 > PCI: Probing PCI hardware > > An unhappy boot with the new one: > PCI: BIOS32 entry (0xc00fa000) in high memory, cannot use. > PCI: System does not support PCI
Patch attached that fixes typecasting problems with PCI Type 2 accesses.
--
Brian Gerstdiff -urN linux-2.4.10-pre10/arch/i386/kernel/pci-pc.c linux/arch/i386/kernel/pci-pc.c --- linux-2.4.10-pre10/arch/i386/kernel/pci-pc.c Mon Sep 17 13:20:14 2001 +++ linux/arch/i386/kernel/pci-pc.c Wed Sep 19 08:07:29 2001 @@ -261,18 +261,14 @@ u32 data; result = pci_conf2_read(0, dev->bus->number, PCI_SLOT(dev->devfn), PCI_FUNC(dev->devfn), where, 2, &data); - *value = (u8)data; + *value = (u16)data; return result; } static int pci_conf2_read_config_dword(struct pci_dev *dev, int where, u32 *value) { - int result; - u32 data; - result = pci_conf2_read(0, dev->bus->number, PCI_SLOT(dev->devfn), - PCI_FUNC(dev->devfn), where, 4, &data); - *value = (u8)data; - return result; + return pci_conf2_read(0, dev->bus->number, PCI_SLOT(dev->devfn), + PCI_FUNC(dev->devfn), where, 4, value); } static int pci_conf2_write_config_byte(struct pci_dev *dev, int where, u8 value) |  |