Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1342230 > unrolled thread
| Started by | Aleksey Makarov <aleksey.makarov@linaro.org> |
|---|---|
| First post | 2016-02-24 18:20 +0100 |
| Last post | 2016-02-25 17:00 +0100 |
| Articles | 3 — 2 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
[PATCH v2 1/8] arm64: move acpi/dt decision earlier in boot process Aleksey Makarov <aleksey.makarov@linaro.org> - 2016-02-24 18:20 +0100
Re: [PATCH v2 1/8] arm64: move acpi/dt decision earlier in boot process Matthias Brugger <mbrugger@suse.com> - 2016-02-24 19:30 +0100
Re: [PATCH v2 1/8] arm64: move acpi/dt decision earlier in boot process Aleksey Makarov <aleksey.makarov@linaro.org> - 2016-02-25 17:00 +0100
| From | Aleksey Makarov <aleksey.makarov@linaro.org> |
|---|---|
| Date | 2016-02-24 18:20 +0100 |
| Subject | [PATCH v2 1/8] arm64: move acpi/dt decision earlier in boot process |
| Message-ID | <r5Lgv-7GJ-21@gated-at.bofh.it> |
From: Leif Lindholm <leif.lindholm@linaro.org>
In order to support selecting earlycon via either ACPI or DT, move
the decision on whether to attempt ACPI configuration into the
early_param handling. Then make acpi_boot_table_init() bail out if
acpi_disabled.
Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org>
Signed-off-by: Aleksey Makarov <aleksey.makarov@linaro.org>
---
arch/arm64/kernel/acpi.c | 62 +++++++++++++++++++++++-------------------------
1 file changed, 30 insertions(+), 32 deletions(-)
diff --git a/arch/arm64/kernel/acpi.c b/arch/arm64/kernel/acpi.c
index d1ce8e2..3faa323 100644
--- a/arch/arm64/kernel/acpi.c
+++ b/arch/arm64/kernel/acpi.c
@@ -41,26 +41,8 @@ EXPORT_SYMBOL(acpi_disabled);
int acpi_pci_disabled = 1; /* skip ACPI PCI scan and IRQ initialization */
EXPORT_SYMBOL(acpi_pci_disabled);
-static bool param_acpi_off __initdata;
static bool param_acpi_force __initdata;
-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)
- param_acpi_off = true;
- else if (strcmp(arg, "force") == 0) /* force ACPI to be enabled */
- param_acpi_force = true;
- else
- return -EINVAL; /* Core will print when we return error */
-
- return 0;
-}
-early_param("acpi", parse_acpi);
-
static int __init dt_scan_depth1_nodes(unsigned long node,
const char *uname, int depth,
void *data)
@@ -74,6 +56,35 @@ static int __init dt_scan_depth1_nodes(unsigned long node,
return 0;
}
+static int __init parse_acpi(char *arg)
+{
+ if (!arg)
+ return -EINVAL;
+
+ /*
+ * Enable ACPI instead of device tree unless
+ * - ACPI has been disabled explicitly (acpi=off), or
+ * - the device tree is not empty (it has more than just a /chosen node)
+ * and ACPI has not been force enabled (acpi=force)
+ */
+ if (strcmp(arg, "off") == 0)
+ return 0;
+ else if (strcmp(arg, "force") == 0)
+ param_acpi_force = true;
+ else if (of_scan_flat_dt(dt_scan_depth1_nodes, NULL))
+ return 0;
+
+ /*
+ * ACPI is disabled at this point. Enable it in order to parse
+ * the ACPI tables and carry out sanity checks
+ */
+ enable_acpi();
+
+ return 0;
+}
+
+early_param("acpi", parse_acpi);
+
/*
* __acpi_map_table() will be called before page_init(), so early_ioremap()
* or early_memremap() should be called here to for ACPI table mapping.
@@ -181,23 +192,10 @@ out:
*/
void __init acpi_boot_table_init(void)
{
- /*
- * Enable ACPI instead of device tree unless
- * - ACPI has been disabled explicitly (acpi=off), or
- * - the device tree is not empty (it has more than just a /chosen node)
- * and ACPI has not been force enabled (acpi=force)
- */
- if (param_acpi_off ||
- (!param_acpi_force && of_scan_flat_dt(dt_scan_depth1_nodes, NULL)))
+ if (acpi_disabled)
return;
/*
- * ACPI is disabled at this point. Enable it in order to parse
- * the ACPI tables and carry out sanity checks
- */
- enable_acpi();
-
- /*
* If ACPI tables are initialized and FADT sanity checks passed,
* leave ACPI enabled and carry on booting; otherwise disable ACPI
* on initialization error.
--
2.7.1
[toc] | [next] | [standalone]
| From | Matthias Brugger <mbrugger@suse.com> |
|---|---|
| Date | 2016-02-24 19:30 +0100 |
| Subject | Re: [PATCH v2 1/8] arm64: move acpi/dt decision earlier in boot process |
| Message-ID | <r5Mme-8s3-17@gated-at.bofh.it> |
| In reply to | #1342230 |
On 24/02/16 18:10, Aleksey Makarov wrote:
> From: Leif Lindholm <leif.lindholm@linaro.org>
>
> In order to support selecting earlycon via either ACPI or DT, move
> the decision on whether to attempt ACPI configuration into the
> early_param handling. Then make acpi_boot_table_init() bail out if
> acpi_disabled.
>
> Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org>
> Signed-off-by: Aleksey Makarov <aleksey.makarov@linaro.org>
> ---
> arch/arm64/kernel/acpi.c | 62 +++++++++++++++++++++++-------------------------
> 1 file changed, 30 insertions(+), 32 deletions(-)
>
> diff --git a/arch/arm64/kernel/acpi.c b/arch/arm64/kernel/acpi.c
> index d1ce8e2..3faa323 100644
> --- a/arch/arm64/kernel/acpi.c
> +++ b/arch/arm64/kernel/acpi.c
> @@ -41,26 +41,8 @@ EXPORT_SYMBOL(acpi_disabled);
> int acpi_pci_disabled = 1; /* skip ACPI PCI scan and IRQ initialization */
> EXPORT_SYMBOL(acpi_pci_disabled);
>
> -static bool param_acpi_off __initdata;
> static bool param_acpi_force __initdata;
>
> -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)
> - param_acpi_off = true;
> - else if (strcmp(arg, "force") == 0) /* force ACPI to be enabled */
> - param_acpi_force = true;
> - else
> - return -EINVAL; /* Core will print when we return error */
> -
> - return 0;
> -}
> -early_param("acpi", parse_acpi);
> -
> static int __init dt_scan_depth1_nodes(unsigned long node,
> const char *uname, int depth,
> void *data)
> @@ -74,6 +56,35 @@ static int __init dt_scan_depth1_nodes(unsigned long node,
> return 0;
> }
>
> +static int __init parse_acpi(char *arg)
> +{
> + if (!arg)
> + return -EINVAL;
> +
> + /*
> + * Enable ACPI instead of device tree unless
> + * - ACPI has been disabled explicitly (acpi=off), or
> + * - the device tree is not empty (it has more than just a /chosen node)
> + * and ACPI has not been force enabled (acpi=force)
> + */
> + if (strcmp(arg, "off") == 0)
> + return 0;
> + else if (strcmp(arg, "force") == 0)
> + param_acpi_force = true;
> + else if (of_scan_flat_dt(dt_scan_depth1_nodes, NULL))
I think we should strcmp for "on" here and return an error on other
values. IMHO an update to Documentation/kernel-parameters.txt would be
convenient.
I still wonder if we really want to change the default to ACPI disabled.
But that's a decision the maintainers have to take.
Regards,
Matthias
> + return 0;
> +
> + /*
> + * ACPI is disabled at this point. Enable it in order to parse
> + * the ACPI tables and carry out sanity checks
> + */
> + enable_acpi();
> +
> + return 0;
> +}
> +
> +early_param("acpi", parse_acpi);
> +
> /*
> * __acpi_map_table() will be called before page_init(), so early_ioremap()
> * or early_memremap() should be called here to for ACPI table mapping.
> @@ -181,23 +192,10 @@ out:
> */
> void __init acpi_boot_table_init(void)
> {
> - /*
> - * Enable ACPI instead of device tree unless
> - * - ACPI has been disabled explicitly (acpi=off), or
> - * - the device tree is not empty (it has more than just a /chosen node)
> - * and ACPI has not been force enabled (acpi=force)
> - */
> - if (param_acpi_off ||
> - (!param_acpi_force && of_scan_flat_dt(dt_scan_depth1_nodes, NULL)))
> + if (acpi_disabled)
> return;
>
> /*
> - * ACPI is disabled at this point. Enable it in order to parse
> - * the ACPI tables and carry out sanity checks
> - */
> - enable_acpi();
> -
> - /*
> * If ACPI tables are initialized and FADT sanity checks passed,
> * leave ACPI enabled and carry on booting; otherwise disable ACPI
> * on initialization error.
>
[toc] | [prev] | [next] | [standalone]
| From | Aleksey Makarov <aleksey.makarov@linaro.org> |
|---|---|
| Date | 2016-02-25 17:00 +0100 |
| Subject | Re: [PATCH v2 1/8] arm64: move acpi/dt decision earlier in boot process |
| Message-ID | <r66uD-603-17@gated-at.bofh.it> |
| In reply to | #1342295 |
Hi Matthias,
On 02/24/2016 09:22 PM, Matthias Brugger wrote:
>
>
> On 24/02/16 18:10, Aleksey Makarov wrote:
>> From: Leif Lindholm <leif.lindholm@linaro.org>
>>
>> In order to support selecting earlycon via either ACPI or DT, move
>> the decision on whether to attempt ACPI configuration into the
>> early_param handling. Then make acpi_boot_table_init() bail out if
>> acpi_disabled.
>>
>> Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org>
>> Signed-off-by: Aleksey Makarov <aleksey.makarov@linaro.org>
>> ---
>> arch/arm64/kernel/acpi.c | 62 +++++++++++++++++++++++-------------------------
>> 1 file changed, 30 insertions(+), 32 deletions(-)
>>
>> diff --git a/arch/arm64/kernel/acpi.c b/arch/arm64/kernel/acpi.c
>> index d1ce8e2..3faa323 100644
>> --- a/arch/arm64/kernel/acpi.c
>> +++ b/arch/arm64/kernel/acpi.c
>> @@ -41,26 +41,8 @@ EXPORT_SYMBOL(acpi_disabled);
>> int acpi_pci_disabled = 1; /* skip ACPI PCI scan and IRQ initialization */
>> EXPORT_SYMBOL(acpi_pci_disabled);
>>
>> -static bool param_acpi_off __initdata;
>> static bool param_acpi_force __initdata;
>>
>> -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)
>> - param_acpi_off = true;
>> - else if (strcmp(arg, "force") == 0) /* force ACPI to be enabled */
>> - param_acpi_force = true;
>> - else
>> - return -EINVAL; /* Core will print when we return error */
>> -
>> - return 0;
>> -}
>> -early_param("acpi", parse_acpi);
>> -
>> static int __init dt_scan_depth1_nodes(unsigned long node,
>> const char *uname, int depth,
>> void *data)
>> @@ -74,6 +56,35 @@ static int __init dt_scan_depth1_nodes(unsigned long node,
>> return 0;
>> }
>>
>> +static int __init parse_acpi(char *arg)
>> +{
>> + if (!arg)
>> + return -EINVAL;
>> +
>> + /*
>> + * Enable ACPI instead of device tree unless
>> + * - ACPI has been disabled explicitly (acpi=off), or
>> + * - the device tree is not empty (it has more than just a /chosen node)
>> + * and ACPI has not been force enabled (acpi=force)
>> + */
>> + if (strcmp(arg, "off") == 0)
>> + return 0;
>> + else if (strcmp(arg, "force") == 0)
>> + param_acpi_force = true;
>> + else if (of_scan_flat_dt(dt_scan_depth1_nodes, NULL))
>
> I think we should strcmp for "on" here and return an error on other values. IMHO an update to Documentation/kernel-parameters.txt would be convenient.
Actually this patch is not correct at all.
on x86:
- if default is off then "acpi=force" enables it.
- if default is on then "acpi=off" disables it.
on ARM64 by default OF is preferred to ACPI, but ACPI is used if OF does not provide any nontrivial data.
So we need both "force" and "off"
- "acpi=force" forces ACPI,
- "acpi=off" disables ACPI
The patch makes incorrect code transformation, it changes the default behaviour.
This patch should just be dropped. The rest of the patchset does not depend on it.
> I still wonder if we really want to change the default to ACPI disabled.
> But that's a decision the maintainers have to take.
I did not realize that the patch changes default.
Thank you
Aleksey Makarov
> Regards,
> Matthias
>
>> + return 0;
>> +
>> + /*
>> + * ACPI is disabled at this point. Enable it in order to parse
>> + * the ACPI tables and carry out sanity checks
>> + */
>> + enable_acpi();
>> +
>> + return 0;
>> +}
>> +
>> +early_param("acpi", parse_acpi);
>> +
>> /*
>> * __acpi_map_table() will be called before page_init(), so early_ioremap()
>> * or early_memremap() should be called here to for ACPI table mapping.
>> @@ -181,23 +192,10 @@ out:
>> */
>> void __init acpi_boot_table_init(void)
>> {
>> - /*
>> - * Enable ACPI instead of device tree unless
>> - * - ACPI has been disabled explicitly (acpi=off), or
>> - * - the device tree is not empty (it has more than just a /chosen node)
>> - * and ACPI has not been force enabled (acpi=force)
>> - */
>> - if (param_acpi_off ||
>> - (!param_acpi_force && of_scan_flat_dt(dt_scan_depth1_nodes, NULL)))
>> + if (acpi_disabled)
>> return;
>>
>> /*
>> - * ACPI is disabled at this point. Enable it in order to parse
>> - * the ACPI tables and carry out sanity checks
>> - */
>> - enable_acpi();
>> -
>> - /*
>> * If ACPI tables are initialized and FADT sanity checks passed,
>> * leave ACPI enabled and carry on booting; otherwise disable ACPI
>> * on initialization error.
>>
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web