mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 18:09:56 +00:00
ACPI: Add acpi=nospcr to disable ACPI SPCR as default console on ARM64
For varying privacy and security reasons, sometimes we would like to completely silence the _serial_ console, and only enable it when needed. But there are many existing systems that depend on this _serial_ console, so add acpi=nospcr to disable console in ACPI SPCR table as default _serial_ console. Signed-off-by: Liu Wei <liuwei09@cestc.cn> Suggested-by: Prarit Bhargava <prarit@redhat.com> Suggested-by: Will Deacon <will@kernel.org> Suggested-by: Andrew Lunn <andrew@lunn.ch> Reviewed-by: Hanjun Guo <guohanjun@huawei.com> Reviewed-by: Prarit Bhargava <prarit@redhat.com> Link: https://lore.kernel.org/r/20240625030504.58025-1-liuwei09@cestc.cn Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
This commit is contained in:
@@ -12,7 +12,7 @@
|
|||||||
acpi= [HW,ACPI,X86,ARM64,RISCV64,EARLY]
|
acpi= [HW,ACPI,X86,ARM64,RISCV64,EARLY]
|
||||||
Advanced Configuration and Power Interface
|
Advanced Configuration and Power Interface
|
||||||
Format: { force | on | off | strict | noirq | rsdt |
|
Format: { force | on | off | strict | noirq | rsdt |
|
||||||
copy_dsdt }
|
copy_dsdt | nospcr }
|
||||||
force -- enable ACPI if default was off
|
force -- enable ACPI if default was off
|
||||||
on -- enable ACPI but allow fallback to DT [arm64,riscv64]
|
on -- enable ACPI but allow fallback to DT [arm64,riscv64]
|
||||||
off -- disable ACPI if default was on
|
off -- disable ACPI if default was on
|
||||||
@@ -21,8 +21,12 @@
|
|||||||
strictly ACPI specification compliant.
|
strictly ACPI specification compliant.
|
||||||
rsdt -- prefer RSDT over (default) XSDT
|
rsdt -- prefer RSDT over (default) XSDT
|
||||||
copy_dsdt -- copy DSDT to memory
|
copy_dsdt -- copy DSDT to memory
|
||||||
For ARM64 and RISCV64, ONLY "acpi=off", "acpi=on" or
|
nospcr -- disable console in ACPI SPCR table as
|
||||||
"acpi=force" are available
|
default _serial_ console on ARM64
|
||||||
|
For ARM64, ONLY "acpi=off", "acpi=on", "acpi=force" or
|
||||||
|
"acpi=nospcr" are available
|
||||||
|
For RISCV64, ONLY "acpi=off", "acpi=on" or "acpi=force"
|
||||||
|
are available
|
||||||
|
|
||||||
See also Documentation/power/runtime_pm.rst, pci=noacpi
|
See also Documentation/power/runtime_pm.rst, pci=noacpi
|
||||||
|
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ EXPORT_SYMBOL(acpi_pci_disabled);
|
|||||||
static bool param_acpi_off __initdata;
|
static bool param_acpi_off __initdata;
|
||||||
static bool param_acpi_on __initdata;
|
static bool param_acpi_on __initdata;
|
||||||
static bool param_acpi_force __initdata;
|
static bool param_acpi_force __initdata;
|
||||||
|
static bool param_acpi_nospcr __initdata;
|
||||||
|
|
||||||
static int __init parse_acpi(char *arg)
|
static int __init parse_acpi(char *arg)
|
||||||
{
|
{
|
||||||
@@ -58,6 +59,8 @@ static int __init parse_acpi(char *arg)
|
|||||||
param_acpi_on = true;
|
param_acpi_on = true;
|
||||||
else if (strcmp(arg, "force") == 0) /* force ACPI to be enabled */
|
else if (strcmp(arg, "force") == 0) /* force ACPI to be enabled */
|
||||||
param_acpi_force = true;
|
param_acpi_force = true;
|
||||||
|
else if (strcmp(arg, "nospcr") == 0) /* disable SPCR as default console */
|
||||||
|
param_acpi_nospcr = true;
|
||||||
else
|
else
|
||||||
return -EINVAL; /* Core will print when we return error */
|
return -EINVAL; /* Core will print when we return error */
|
||||||
|
|
||||||
@@ -237,7 +240,20 @@ done:
|
|||||||
acpi_put_table(facs);
|
acpi_put_table(facs);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
acpi_parse_spcr(earlycon_acpi_spcr_enable, true);
|
|
||||||
|
/*
|
||||||
|
* For varying privacy and security reasons, sometimes need
|
||||||
|
* to completely silence the serial console output, and only
|
||||||
|
* enable it when needed.
|
||||||
|
* But there are many existing systems that depend on this
|
||||||
|
* behaviour, use acpi=nospcr to disable console in ACPI SPCR
|
||||||
|
* table as default serial console.
|
||||||
|
*/
|
||||||
|
acpi_parse_spcr(earlycon_acpi_spcr_enable,
|
||||||
|
!param_acpi_nospcr);
|
||||||
|
pr_info("Use ACPI SPCR as default console: %s\n",
|
||||||
|
param_acpi_nospcr ? "No" : "Yes");
|
||||||
|
|
||||||
if (IS_ENABLED(CONFIG_ACPI_BGRT))
|
if (IS_ENABLED(CONFIG_ACPI_BGRT))
|
||||||
acpi_table_parse(ACPI_SIG_BGRT, acpi_parse_bgrt);
|
acpi_table_parse(ACPI_SIG_BGRT, acpi_parse_bgrt);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user