summaryrefslogtreecommitdiff
path: root/sys/arch/i386
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@cvs.openbsd.org>2008-12-28 22:27:11 +0000
committerMark Kettenis <kettenis@cvs.openbsd.org>2008-12-28 22:27:11 +0000
commitf15425484be04e34b3302255b5412a05b3247df4 (patch)
tree713f42e2384bd7b44134c212adab6fa6c50518fe /sys/arch/i386
parent458e0a5bff35351ad58928b6809093b53753d747 (diff)
No longer look for RSDP in memory marked as "ACPI Reclaim" in the BIOS memory
map. The standard doesn't tell us to look there, Linux and NetBSD don't look there either. It seems that some BIOSes use this memory as a scratch area to build the final ACPI tables which means we can accidentally find what seems like a valid RSDP there. Fixes PR 5847. ok krw@, marco@
Diffstat (limited to 'sys/arch/i386')
-rw-r--r--sys/arch/i386/i386/acpi_machdep.c26
1 files changed, 3 insertions, 23 deletions
diff --git a/sys/arch/i386/i386/acpi_machdep.c b/sys/arch/i386/i386/acpi_machdep.c
index 65358152934..e4244315dd8 100644
--- a/sys/arch/i386/i386/acpi_machdep.c
+++ b/sys/arch/i386/i386/acpi_machdep.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: acpi_machdep.c,v 1.14 2008/12/26 17:09:52 deraadt Exp $ */
+/* $OpenBSD: acpi_machdep.c,v 1.15 2008/12/28 22:27:10 kettenis Exp $ */
/*
* Copyright (c) 2005 Thorsten Lockert <tholo@sigmasoft.com>
*
@@ -32,13 +32,8 @@
#include <dev/acpi/acpireg.h>
#include <dev/acpi/acpivar.h>
-#include "bios.h"
#include "apm.h"
-#if NBIOS > 0
-#include <machine/biosvar.h>
-#endif
-
#if NAPM > 0
int haveacpibutusingapm;
#endif
@@ -119,23 +114,8 @@ acpi_probe(struct device *parent, struct cfdata *match, struct bios_attach_args
extern int apm_attached;
#endif
-#if NBIOS > 0
- {
- bios_memmap_t *im;
-
- /*
- * First look for ACPI entries in the BIOS memory map
- */
- for (im = bios_memmap; im->type != BIOS_MAP_END; im++)
- if (im->type == BIOS_MAP_ACPI) {
- if ((ptr = acpi_scan(&handle, im->addr, im->size)))
- goto havebase;
- }
- }
-#endif
-
/*
- * Next try to find ACPI table entries in the EBDA
+ * First try to find ACPI table entries in the EBDA
*/
if (acpi_map(0, NBPG, &handle))
printf("acpi: failed to map BIOS data area\n");
@@ -151,7 +131,7 @@ acpi_probe(struct device *parent, struct cfdata *match, struct bios_attach_args
}
/*
- * Finally try to find the ACPI table entries in the
+ * Next try to find the ACPI table entries in the
* BIOS memory
*/
if ((ptr = acpi_scan(&handle, ACPI_BIOS_RSDP_WINDOW_BASE,