aboutsummaryrefslogtreecommitdiffstats
path: root/arch/i386/pci/direct.c
diff options
context:
space:
mode:
authorAndi Kleen <ak@suse.de>2006-04-07 13:49:36 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-04-09 14:53:51 -0400
commitec0f08eeea6ac1d8c925f47e3677e4c985fd8f63 (patch)
tree053ede4e6c6648dc8d927a2ad17ef5e03069b3a2 /arch/i386/pci/direct.c
parentfa47dd0ba303599f8adf8d8336ed2fb74efc47c5 (diff)
[PATCH] x86_64: Don't sanity check Type 1 PCI bus access on newer systems
Horus systems don't have anything on bus 0 which makes the Type 1 sanity checks fail. Use the DMI BIOS year to check for newer systems and always assume Type 1 works on them. I used 2001 as an pretty arbitary cutoff year. Cc: gregkh@suse.de Cc: Navin Boppuri <navin.boppuri@newisys.com> Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/i386/pci/direct.c')
-rw-r--r--arch/i386/pci/direct.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/i386/pci/direct.c b/arch/i386/pci/direct.c
index 99012b93bd12..4457cf3eb401 100644
--- a/arch/i386/pci/direct.c
+++ b/arch/i386/pci/direct.c
@@ -4,6 +4,7 @@
4 4
5#include <linux/pci.h> 5#include <linux/pci.h>
6#include <linux/init.h> 6#include <linux/init.h>
7#include <linux/dmi.h>
7#include "pci.h" 8#include "pci.h"
8 9
9/* 10/*
@@ -188,6 +189,10 @@ static int __init pci_sanity_check(struct pci_raw_ops *o)
188 189
189 if (pci_probe & PCI_NO_CHECKS) 190 if (pci_probe & PCI_NO_CHECKS)
190 return 1; 191 return 1;
192 /* Assume Type 1 works for newer systems.
193 This handles machines that don't have anything on PCI Bus 0. */
194 if (dmi_get_year(DMI_BIOS_DATE) >= 2001)
195 return 1;
191 196
192 for (devfn = 0; devfn < 0x100; devfn++) { 197 for (devfn = 0; devfn < 0x100; devfn++) {
193 if (o->read(0, 0, devfn, PCI_CLASS_DEVICE, 2, &x)) 198 if (o->read(0, 0, devfn, PCI_CLASS_DEVICE, 2, &x))