From f15425484be04e34b3302255b5412a05b3247df4 Mon Sep 17 00:00:00 2001 From: Mark Kettenis Date: Sun, 28 Dec 2008 22:27:11 +0000 Subject: 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@ --- sys/arch/amd64/amd64/acpi_machdep.c | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) (limited to 'sys/arch/amd64') diff --git a/sys/arch/amd64/amd64/acpi_machdep.c b/sys/arch/amd64/amd64/acpi_machdep.c index cbb2cc83437..1a51f04b79f 100644 --- a/sys/arch/amd64/amd64/acpi_machdep.c +++ b/sys/arch/amd64/amd64/acpi_machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: acpi_machdep.c,v 1.13 2008/06/01 17:59:55 marco Exp $ */ +/* $OpenBSD: acpi_machdep.c,v 1.14 2008/12/28 22:27:10 kettenis Exp $ */ /* * Copyright (c) 2005 Thorsten Lockert * @@ -105,19 +105,9 @@ acpi_probe(struct device *parent, struct cfdata *match, struct bios_attach_args struct acpi_mem_map handle; u_int8_t *ptr; paddr_t ebda; - 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; - } - - /* - * 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"); @@ -133,7 +123,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, -- cgit v1.2.3