Message ID | 1410530416-30200-7-git-send-email-hanjun.guo@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, Sep 12, 2014 at 10:00:04PM +0800, Hanjun Guo wrote: > From: Al Stone <al.stone@linaro.org> > > Introduce one early parameters "off" for "acpi" to disable ACPI on > ARM64. > > This ensures the kernel uses the DT on a platform that provides both > ACPI tables and DT. > > Signed-off-by: Al Stone <al.stone@linaro.org> > Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org> > Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> > --- > Documentation/kernel-parameters.txt | 3 ++- > arch/arm64/kernel/acpi.c | 15 +++++++++++++++ > 2 files changed, 17 insertions(+), 1 deletion(-) > > diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt > index 5ae8608..9dfb1d8 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] ARM64, not 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 "acpi=off" is available. Both force and off should be made available, since they're the two main switches here. > See also Documentation/power/runtime_pm.txt, pci=noacpi > > diff --git a/arch/arm64/kernel/acpi.c b/arch/arm64/kernel/acpi.c > index 9252f72..693da7f 100644 > --- a/arch/arm64/kernel/acpi.c > +++ b/arch/arm64/kernel/acpi.c > @@ -67,3 +67,18 @@ void __init acpi_boot_table_init(void) > if (acpi_table_init()) > disable_acpi(); > } > + > +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(); > + else > + return -EINVAL; /* Core will print when we return error */ For symmetry, you should handle acpi=force here too (i.e. if someone disables by default, which I expect we'll ask for when this code is first merged). > + > + return 0; > +} > +early_param("acpi", parse_acpi); > -- > 1.7.9.5 >
On Mon, Sep 15, 2014 at 07:28:24AM +0100, Olof Johansson wrote: > On Fri, Sep 12, 2014 at 10:00:04PM +0800, Hanjun Guo wrote: > > See also Documentation/power/runtime_pm.txt, pci=noacpi > > > > diff --git a/arch/arm64/kernel/acpi.c b/arch/arm64/kernel/acpi.c > > index 9252f72..693da7f 100644 > > --- a/arch/arm64/kernel/acpi.c > > +++ b/arch/arm64/kernel/acpi.c > > @@ -67,3 +67,18 @@ void __init acpi_boot_table_init(void) > > if (acpi_table_init()) > > disable_acpi(); > > } > > + > > +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(); > > + else > > + return -EINVAL; /* Core will print when we return error */ > > For symmetry, you should handle acpi=force here too (i.e. if someone > disables by default, which I expect we'll ask for when this code is > first merged). Does this mean you want another Kconfig option - ACPI_DEFAULT_OFF (which would be set by default)?
On Mon, Sep 15, 2014 at 03:51:07PM +0100, Catalin Marinas wrote: > On Mon, Sep 15, 2014 at 07:28:24AM +0100, Olof Johansson wrote: > > On Fri, Sep 12, 2014 at 10:00:04PM +0800, Hanjun Guo wrote: > > > See also Documentation/power/runtime_pm.txt, pci=noacpi > > > > > > diff --git a/arch/arm64/kernel/acpi.c b/arch/arm64/kernel/acpi.c > > > index 9252f72..693da7f 100644 > > > --- a/arch/arm64/kernel/acpi.c > > > +++ b/arch/arm64/kernel/acpi.c > > > @@ -67,3 +67,18 @@ void __init acpi_boot_table_init(void) > > > if (acpi_table_init()) > > > disable_acpi(); > > > } > > > + > > > +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(); > > > + else > > > + return -EINVAL; /* Core will print when we return error */ > > > > For symmetry, you should handle acpi=force here too (i.e. if someone > > disables by default, which I expect we'll ask for when this code is > > first merged). > > Does this mean you want another Kconfig option - ACPI_DEFAULT_OFF (which > would be set by default)? No, adding another config option isn't going to help anyone. Instead, this gives us the full symmetry and option to just always by default keep ACPI off, even if it is merged. My argument on when ACPI should be merged is not new (i.e. once we've seen more than just the simple system parts solved with it and solved successfully), then we're still likely to have a transition period when it's in tree but not enabled by default. That's what acpi=force is for, for those who want to test with it during that time. So, my suggestion is just there now to make sure that whichever way we go, things will just work as expected (and the same way as on x86, which is a goal for some). -Olof
On 09/15/2014 10:51 AM, Catalin Marinas wrote: > On Mon, Sep 15, 2014 at 07:28:24AM +0100, Olof Johansson wrote: >> On Fri, Sep 12, 2014 at 10:00:04PM +0800, Hanjun Guo wrote: >>> See also Documentation/power/runtime_pm.txt, pci=noacpi >>> >>> diff --git a/arch/arm64/kernel/acpi.c b/arch/arm64/kernel/acpi.c >>> index 9252f72..693da7f 100644 >>> --- a/arch/arm64/kernel/acpi.c >>> +++ b/arch/arm64/kernel/acpi.c >>> @@ -67,3 +67,18 @@ void __init acpi_boot_table_init(void) >>> if (acpi_table_init()) >>> disable_acpi(); >>> } >>> + >>> +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(); >>> + else >>> + return -EINVAL; /* Core will print when we return error */ >> >> For symmetry, you should handle acpi=force here too (i.e. if someone >> disables by default, which I expect we'll ask for when this code is >> first merged). > > Does this mean you want another Kconfig option - ACPI_DEFAULT_OFF (which > would be set by default)? This would make sense. I mentioned this before since it gives distros an opportunity to set this differently for their shipping preference without the upstream having to default to being on. Jon.
On 2014?09?15? 14:28, Olof Johansson wrote: > On Fri, Sep 12, 2014 at 10:00:04PM +0800, Hanjun Guo wrote: >> From: Al Stone <al.stone@linaro.org> >> >> Introduce one early parameters "off" for "acpi" to disable ACPI on >> ARM64. >> >> This ensures the kernel uses the DT on a platform that provides both >> ACPI tables and DT. >> >> Signed-off-by: Al Stone <al.stone@linaro.org> >> Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org> >> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> >> --- >> Documentation/kernel-parameters.txt | 3 ++- >> arch/arm64/kernel/acpi.c | 15 +++++++++++++++ >> 2 files changed, 17 insertions(+), 1 deletion(-) >> >> diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt >> index 5ae8608..9dfb1d8 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] > ARM64, not ARM. I will update it. Thanks Hanjun
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 5ae8608..9dfb1d8 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 "acpi=off" is available. See also Documentation/power/runtime_pm.txt, pci=noacpi diff --git a/arch/arm64/kernel/acpi.c b/arch/arm64/kernel/acpi.c index 9252f72..693da7f 100644 --- a/arch/arm64/kernel/acpi.c +++ b/arch/arm64/kernel/acpi.c @@ -67,3 +67,18 @@ void __init acpi_boot_table_init(void) if (acpi_table_init()) disable_acpi(); } + +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(); + else + return -EINVAL; /* Core will print when we return error */ + + return 0; +} +early_param("acpi", parse_acpi);