From 006c4d7ffcf24ab3013f7b4cf64034ad182a6e96 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Thu, 15 Jul 2021 16:07:54 +0000 Subject: [PATCH] archacpi: make *acpi=1 the default --- sys/man/8/plan9.ini | 29 ++++++++++++++++++++--------- sys/src/9/pc/archacpi.c | 14 +++++++------- 2 files changed, 27 insertions(+), 16 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 -.B #P/acpitbls -file in -.IR arch (3) -device. In multiprocessor mode, the kernel will use the ACPI -tables to configure APIC interrupts unless a +This option controls the search for ACPI tables by the kernel. +The .I value -of -.B 0 -is specified. +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 of the +.IR arch (3) +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;