summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@cvs.openbsd.org>2011-01-05 22:29:32 +0000
committerMark Kettenis <kettenis@cvs.openbsd.org>2011-01-05 22:29:32 +0000
commitd2e4356a36b105293b12063292c5dc723c47a523 (patch)
tree074d2a3dc4fd89f0ce788a9e27d58914a32dc9e0
parent0366f9ef3969200de0b1cf0264b860fdac62b384 (diff)
Ignore MCFG tables with an empty bus range. Makes stu@'s amd64 machine
boot again.
-rw-r--r--sys/dev/acpi/acpimcfg.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/sys/dev/acpi/acpimcfg.c b/sys/dev/acpi/acpimcfg.c
index ee265db9918..23772cae0aa 100644
--- a/sys/dev/acpi/acpimcfg.c
+++ b/sys/dev/acpi/acpimcfg.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: acpimcfg.c,v 1.1 2011/01/04 21:17:49 kettenis Exp $ */
+/* $OpenBSD: acpimcfg.c,v 1.2 2011/01/05 22:29:31 kettenis Exp $ */
/*
* Copyright (c) 2010 Mark Kettenis <kettenis@openbsd.org>
*
@@ -67,6 +67,13 @@ acpimcfg_attach(struct device *parent, struct device *self, void *aux)
printf(" addr 0x%llx, bus %d-%d\n", mcfg->base_address,
mcfg->min_bus_number, mcfg->max_bus_number);
+ /*
+ * Some (broken?) BIOSen have an MCFG table for an empty bus
+ * range. Ignore those tables.
+ */
+ if (mcfg->min_bus_number == mcfg->max_bus_number)
+ return;
+
pci_mcfg_addr = mcfg->base_address;
pci_mcfg_min_bus = mcfg->min_bus_number;
pci_mcfg_max_bus = mcfg->max_bus_number;