lkml.org 
[lkml]   [2001]   [Sep]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
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)
\
 
 \ /
  Last update: 2005-03-22 13:03    [W:0.048 / U:0.380 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site