code: plan9front

Download patch

ref: 006c4d7ffcf24ab3013f7b4cf64034ad182a6e96
parent: 3b1c450cd53eb2dddca40ae23603179ff06c8a50
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Thu Jul 15 12:07:54 EDT 2021

archacpi: make *acpi=1 the default

--- a/sys/man/8/plan9.ini
+++ b/sys/man/8/plan9.ini
@@ -887,16 +887,27 @@
     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
--- a/sys/src/9/pc/archacpi.c
+++ b/sys/src/9/pc/archacpi.c
@@ -787,18 +787,18 @@
 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 @@
 	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;