summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>2008-12-26 17:09:53 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>2008-12-26 17:09:53 +0000
commitc76c4eab21094e895bc49910778dae42e8e8a690 (patch)
tree407a438e0eb4b9a61cb6d0a48db22a374bb6ea6a /sys
parent04a028b56126b89edbd4a15b95ad9253060adfb6 (diff)
If we have usable acpi, but chose to use amp instead for various reasons,
then mpbios should not be used because it is probably full of lies. ok kettenis, though he hates the variable name used.
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/i386/i386/acpi_machdep.c21
-rw-r--r--sys/arch/i386/i386/mpbios.c15
2 files changed, 26 insertions, 10 deletions
diff --git a/sys/arch/i386/i386/acpi_machdep.c b/sys/arch/i386/i386/acpi_machdep.c
index b2159967be9..65358152934 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.13 2008/06/01 17:59:55 marco Exp $ */
+/* $OpenBSD: acpi_machdep.c,v 1.14 2008/12/26 17:09:52 deraadt Exp $ */
/*
* Copyright (c) 2005 Thorsten Lockert <tholo@sigmasoft.com>
*
@@ -39,13 +39,13 @@
#include <machine/biosvar.h>
#endif
+#if NAPM > 0
+int haveacpibutusingapm;
+#endif
+
#define ACPI_BIOS_RSDP_WINDOW_BASE 0xe0000
#define ACPI_BIOS_RSDP_WINDOW_SIZE 0x20000
-#if NAPM > 0 && NBIOS > 0
-extern bios_apminfo_t *apm;
-#endif
-
u_int8_t *acpi_scan(struct acpi_mem_map *, paddr_t, size_t);
int
@@ -117,10 +117,8 @@ acpi_probe(struct device *parent, struct cfdata *match, struct bios_attach_args
paddr_t ebda;
#if NAPM > 0
extern int apm_attached;
-
- if (apm_attached)
- return (0);
#endif
+
#if NBIOS > 0
{
bios_memmap_t *im;
@@ -165,7 +163,12 @@ acpi_probe(struct device *parent, struct cfdata *match, struct bios_attach_args
havebase:
ba->ba_acpipbase = ptr - handle.va + handle.pa;
acpi_unmap(&handle);
-
+#if NAPM > 0
+ if (apm_attached) {
+ haveacpibutusingapm = 1;
+ return (0);
+ }
+#endif
return (1);
}
diff --git a/sys/arch/i386/i386/mpbios.c b/sys/arch/i386/i386/mpbios.c
index f97a6dac3f2..003feeccf40 100644
--- a/sys/arch/i386/i386/mpbios.c
+++ b/sys/arch/i386/i386/mpbios.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mpbios.c,v 1.27 2008/12/22 18:01:46 kettenis Exp $ */
+/* $OpenBSD: mpbios.c,v 1.28 2008/12/26 17:09:52 deraadt Exp $ */
/* $NetBSD: mpbios.c,v 1.2 2002/10/01 12:56:57 fvdl Exp $ */
/*-
@@ -123,6 +123,11 @@
#include "pci.h"
+#include "apm.h"
+#include "acpi.h"
+#if NAPM > 0 && NACPI > 0
+extern int haveacpibutusingapm;
+#endif
static struct mpbios_ioapic default_ioapic = {
2, 0, 1, IOAPICENTRY_FLAG_EN, (caddr_t)IOAPIC_BASE_DEFAULT
@@ -264,6 +269,14 @@ mpbios_probe(struct device *self)
struct mp_map t;
/*
+ * If we have acpi but chose to use apm, then we really should
+ * not go use mpbios. Systems with usable acpi typically have
+ * unuseable mpbios
+ */
+ if (haveacpibutusingapm)
+ return (0);
+
+ /*
* Skip probe if someone else (e.g. acpi) already provided the
* necessary details.
*/