summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/man/8/plan9.ini27
-rw-r--r--sys/src/9/pc/archacpi.c14
2 files changed, 26 insertions, 15 deletions
diff --git a/sys/man/8/plan9.ini b/sys/man/8/plan9.ini
index 94a575798..a3bcc09ac 100644
--- a/sys/man/8/plan9.ini
+++ b/sys/man/8/plan9.ini
@@ -887,16 +887,27 @@ For example:
umbexclude=0xD1800-0xD3FFF
.EE
.SS \fL*acpi=\fIvalue\fP
-The presence of this option enables ACPI and the export of the
+This option controls the search for ACPI tables by the kernel.
+The
+.I value
+is the hexadecimal physical address of the RSD structure
+and is passed by the EFI bootloer
+.IR 9boot (8)
+automatically.
+The special
+.I value
+of 1 or empty make the kernel search for the structure
+in BIOS memory area (This is the default).
+The
+special
+.I value
+of 0 will disable ACPI support (for interrupt routing)
+in the kernel,
+but still make table data available in
.B #P/acpitbls
-file in
+file of the
.IR arch (3)
-device. In multiprocessor mode, the kernel will use the ACPI
-tables to configure APIC interrupts unless a
-.I value
-of
-.B 0
-is specified.
+device.
.SS \fLapm0=\fP
This enables the ``advanced power management'' interface
as described in
diff --git a/sys/src/9/pc/archacpi.c b/sys/src/9/pc/archacpi.c
index 01c911468..044825a8c 100644
--- a/sys/src/9/pc/archacpi.c
+++ b/sys/src/9/pc/archacpi.c
@@ -787,18 +787,18 @@ readtbls(Chan*, void *v, long n, vlong o)
static int
identify(void)
{
- uvlong pa;
+ uvlong v;
char *cp;
Tbl *t;
if((cp = getconf("*acpi")) == nil)
- return 1;
- pa = (uintptr)strtoull(cp, nil, 16);
- if(pa <= 1)
+ cp = "1"; /* search for rsd by default */
+ v = (uintptr)strtoull(cp, nil, 16);
+ if(v <= 1)
rsd = rsdsearch();
else {
- memreserve(pa, sizeof(Rsd));
- rsd = vmap(pa, sizeof(Rsd));
+ memreserve(v, sizeof(Rsd));
+ rsd = vmap(v, sizeof(Rsd));
}
if(rsd == nil)
return 1;
@@ -807,7 +807,7 @@ identify(void)
maptables();
addarchfile("acpitbls", 0444, readtbls, nil);
addarchfile("acpimem", 0600, readmem, writemem);
- if(strcmp(cp, "0") == 0 || findtable("APIC") == nil)
+ if(v == 0 || findtable("APIC") == nil)
return 1;
if((cp = getconf("*nomp")) != nil && strcmp(cp, "0") != 0)
return 1;