diff options
author | Andi Kleen <ak@suse.de> | 2006-04-07 13:49:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-04-09 14:53:51 -0400 |
commit | ec0f08eeea6ac1d8c925f47e3677e4c985fd8f63 (patch) | |
tree | 053ede4e6c6648dc8d927a2ad17ef5e03069b3a2 /arch/i386 | |
parent | fa47dd0ba303599f8adf8d8336ed2fb74efc47c5 (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')
-rw-r--r-- | arch/i386/pci/direct.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/i386/pci/direct.c b/arch/i386/pci/direct.c index 99012b93bd1..4457cf3eb40 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)) |