[<prev] [next>] [day] [month] [year] [list]
Message-ID: <20251228092222.130954-1-me@shenghaoyang.info>
Date: Sun, 28 Dec 2025 17:22:22 +0800
From: Shenghao Yang <me@...nghaoyang.info>
To: x86@...nel.org
Cc: Jonathan Corbet <corbet@....net>,
"Rafael J. Wysocki" <rafael@...nel.org>,
Len Brown <lenb@...nel.org>,
Thomas Gleixner <tglx@...utronix.de>,
Ingo Molnar <mingo@...hat.com>,
Borislav Petkov <bp@...en8.de>,
Dave Hansen <dave.hansen@...ux.intel.com>,
"H. Peter Anvin" <hpa@...or.com>,
linux-doc@...r.kernel.org,
linux-kernel@...r.kernel.org,
linux-acpi@...r.kernel.org,
Shenghao Yang <me@...nghaoyang.info>
Subject: [PATCH] x86/acpi: Add acpi=spcr to use SPCR-provided default console
Commit 0231d00082f6 ("ACPI: SPCR: Make SPCR available to x86")
made SPCR available as an earlycon option on x86 but did not add
it as a preferred console to avoid breaking existing setups -
users have to round trip the dumped console options
("SPCR: console: uart,io,0x3f8,115200") back via their
bootloader.
Let users opt in so serial console configuration can be made
automatic.
Signed-off-by: Shenghao Yang <me@...nghaoyang.info>
---
Documentation/admin-guide/kernel-parameters.txt | 2 ++
arch/x86/kernel/acpi/boot.c | 7 ++++++-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index a8d0afde7f85..f9c5b6e4eda9 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -125,6 +125,8 @@ Kernel parameters
may result in duplicate corrected error reports.
nospcr -- disable console in ACPI SPCR table as
default _serial_ console on ARM64
+ spcr -- enable console in ACPI SPCR table as
+ default _serial_ console on X86
For ARM64, ONLY "acpi=off", "acpi=on", "acpi=force" or
"acpi=nospcr" are available
For RISCV64, ONLY "acpi=off", "acpi=on" or "acpi=force"
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index 9fa321a95eb3..83bbfa1d6f1f 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -47,6 +47,7 @@ EXPORT_SYMBOL(acpi_disabled);
int acpi_noirq; /* skip ACPI IRQ initialization */
static int acpi_nobgrt; /* skip ACPI BGRT */
+static int acpi_spcr_add __initdata; /* add SPCR-provided console */
int acpi_pci_disabled; /* skip ACPI PCI scan and IRQ initialization */
EXPORT_SYMBOL(acpi_pci_disabled);
@@ -1666,7 +1667,7 @@ int __init acpi_boot_init(void)
x86_init.pci.init = pci_acpi_init;
/* Do not enable ACPI SPCR console by default */
- acpi_parse_spcr(earlycon_acpi_spcr_enable, false);
+ acpi_parse_spcr(earlycon_acpi_spcr_enable, acpi_spcr_add);
return 0;
}
@@ -1703,6 +1704,10 @@ static int __init parse_acpi(char *arg)
/* "acpi=nocmcff" disables FF mode for corrected errors */
else if (strcmp(arg, "nocmcff") == 0) {
acpi_disable_cmcff = 1;
+ }
+ /* "acpi=spcr" adds the SPCR-provided console as a preferred one */
+ else if (strcmp(arg, "spcr") == 0) {
+ acpi_spcr_add = 1;
} else {
/* Core will printk when we return error. */
return -EINVAL;
--
2.52.0
Powered by blists - more mailing lists