Message ID | 1403840976-7456-7-git-send-email-hanjun.guo@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Friday 27 June 2014 11:49:29 Hanjun Guo wrote: > + > +static int __init parse_acpi(char *arg) > +{ > + if (!arg) > + return -EINVAL; > + > + /* "acpi=off" disables both ACPI table parsing and interpreter */ > + if (strcmp(arg, "off") == 0) { > + disable_acpi(); > + } > + /* acpi=strict disables out-of-spec workarounds */ > + else if (strcmp(arg, "strict") == 0) { > + acpi_strict = 1; > + } else { > + /* Core will printk when we return error */ > + return -EINVAL; > + } > + > + return 0; > +} > +early_param("acpi", parse_acpi); Can you explain in the changelog what happens for the acpi=off case? Does this mean we fall back to using data from the dtb instead, or will it just not work? If I understand correctly, this option makes sense on PC systems that will still be able to boot using the legacy BIOS services and implicit assumptions about the hardware, but that never works on arm64. Arnd
On Fri, Jun 27, 2014 at 11:07:48AM +0200, Arnd Bergmann wrote: > On Friday 27 June 2014 11:49:29 Hanjun Guo wrote: > > + > > +static int __init parse_acpi(char *arg) > > +{ > > + if (!arg) > > + return -EINVAL; > > + > > + /* "acpi=off" disables both ACPI table parsing and interpreter */ > > + if (strcmp(arg, "off") == 0) { > > + disable_acpi(); > > + } > > + /* acpi=strict disables out-of-spec workarounds */ > > + else if (strcmp(arg, "strict") == 0) { > > + acpi_strict = 1; > > + } else { > > + /* Core will printk when we return error */ > > + return -EINVAL; > > + } > > + > > + return 0; > > +} > > +early_param("acpi", parse_acpi); > > Can you explain in the changelog what happens for the acpi=off case? Does this > mean we fall back to using data from the dtb instead, or will it just not work? > > If I understand correctly, this option makes sense on PC systems that will > still be able to boot using the legacy BIOS services and implicit assumptions > about the hardware, but that never works on arm64. > Yes the way ACPI has been integrated on ARM64 in these patches if you supply acpi=off it will fall back to DTB if supplied by firmware. Graeme
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 8849049..b7e9fc0 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt @@ -165,7 +165,7 @@ multipliers 'Kilo', 'Mega', and 'Giga', equalling 2^10, 2^20, and 2^30 bytes respectively. Such letter suffixes can also be entirely omitted. - acpi= [HW,ACPI,X86] + acpi= [HW,ACPI,X86,ARM] Advanced Configuration and Power Interface Format: { force | off | strict | noirq | rsdt } force -- enable ACPI if default was off @@ -175,6 +175,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. strictly ACPI specification compliant. rsdt -- prefer RSDT over (default) XSDT copy_dsdt -- copy DSDT to memory + For ARM64, ONLY "off" and "strict" are available. See also Documentation/power/runtime_pm.txt, pci=noacpi diff --git a/drivers/acpi/plat/arm-core.c b/drivers/acpi/plat/arm-core.c index c6c7e03..cf46c25 100644 --- a/drivers/acpi/plat/arm-core.c +++ b/drivers/acpi/plat/arm-core.c @@ -108,3 +108,24 @@ void __init acpi_boot_table_init(void) return; } } + +static int __init parse_acpi(char *arg) +{ + if (!arg) + return -EINVAL; + + /* "acpi=off" disables both ACPI table parsing and interpreter */ + if (strcmp(arg, "off") == 0) { + disable_acpi(); + } + /* acpi=strict disables out-of-spec workarounds */ + else if (strcmp(arg, "strict") == 0) { + acpi_strict = 1; + } else { + /* Core will printk when we return error */ + return -EINVAL; + } + + return 0; +} +early_param("acpi", parse_acpi);