summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkettenis <kettenis@openbsd.org>2011-01-05 22:29:31 +0000
committerkettenis <kettenis@openbsd.org>2011-01-05 22:29:31 +0000
commitefef306f0089831e89b9e08376d750348b835d85 (patch)
tree1d92f766530e6460ed1f04dd76831bc1a8536683
parentPass pmap_bootstrap() the memory range used by the PROM/BUG/firmware/whatever, (diff)
downloadwireguard-openbsd-efef306f0089831e89b9e08376d750348b835d85.tar.xz
wireguard-openbsd-efef306f0089831e89b9e08376d750348b835d85.zip
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;