From: Greg KH <greg@kroah.com>
To: Lv Zheng <lv.zheng@intel.com>
Cc: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
"Rafael J. Wysocki" <rjw@rjwysocki.net>,
Len Brown <len.brown@intel.com>, Lv Zheng <zetalog@gmail.com>,
stable@vger.kernel.org, linux-acpi@vger.kernel.org
Subject: Re: [PATCH] ACPICA / Interpreter: Fix a regression triggered because of wrong Linux ECDT support
Date: Wed, 20 Apr 2016 14:58:06 +0900 [thread overview]
Message-ID: <20160420055806.GA6285@kroah.com> (raw)
In-Reply-To: <1461119996-1861-1-git-send-email-lv.zheng@intel.com>
On Wed, Apr 20, 2016 at 10:39:56AM +0800, Lv Zheng wrote:
> 4.5-stable review patch. If anyone has any objects, please let me know.
Huh? I don't understand this email...
>
> ---------------
>
> From: Lv Zheng <lv.zheng@intel.com>
>
> commit 5508df89756f8378024828e185724a9bd2348985 upstream.
>
> It is reported that the following commit triggers regressions:
> Linux commit: efaed9be998b5ae0afb7458e057e5f4402b43fa0
> ACPICA commit: 31178590dde82368fdb0f6b0e466b6c0add96c57
> Subject: ACPICA: Events: Enhance acpi_ev_execute_reg_method() to
> ensure no _REG evaluations can happen during OS early boot
> stages
>
> This is because that the ECDT support is not corrected in Linux, and Linux
> requires to execute _REG for ECDT (though this sounds so wrong), we need to
> ensure acpi_gbl_reg_methods_enabled is set before ECDT probing in order
> for _REG to be executed. Since we have to move
> "acpi_gbl_reg_methods_enabled = TRUE" to the initialization step
> happening before ECDT probing, acpi_load_tables() is the best candidate for
> now. Thus this patch fixes the regression by doing so.
>
> But if the ECDT support is fixed, Linux will not execute _REG for ECDT, and
> ECDT probing will happen before acpi_load_tables(). At that time, we still
> want to ensure acpi_gbl_reg_methods_enabled is set after executing
> acpi_ns_initialize_objects() (under the condition of
> acpi_gbl_group_module_level_code = FALSE), this patch also moves
> acpi_ns_initialize_objects() to acpi_load_tables() accordingly.
>
> Since acpi_ns_initialize_objects() doesn't seem to be skippable, this
> patch also removes ACPI_NO_OBJECT_INIT for the one invoked in
> acpi_load_tables(). Reported by Chris Bainbridge, Fixed by Lv Zheng.
>
> Fixes: efaed9be998b (ACPICA: Events: Enhance acpi_ev_execute_reg_method() to ensure no _REG evaluations can happen during OS early boot stages)
> Reported-and-tested-by: Chris Bainbridge <chris.bainbridge@gmail.com>
> Signed-off-by: Lv Zheng <lv.zheng@intel.com>
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> ---
> drivers/acpi/acpica/nsinit.c | 2 ++
> drivers/acpi/acpica/tbxfload.c | 14 ++++++++++++++
> drivers/acpi/acpica/utxfinit.c | 25 +++++++++++--------------
> 3 files changed, 27 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/acpi/acpica/nsinit.c b/drivers/acpi/acpica/nsinit.c
> index bd75d46..ddb436f 100644
> --- a/drivers/acpi/acpica/nsinit.c
> +++ b/drivers/acpi/acpica/nsinit.c
> @@ -83,6 +83,8 @@ acpi_status acpi_ns_initialize_objects(void)
>
> ACPI_FUNCTION_TRACE(ns_initialize_objects);
>
> + ACPI_DEBUG_PRINT((ACPI_DB_EXEC,
> + "[Init] Completing Initialization of ACPI Objects\n"));
> ACPI_DEBUG_PRINT((ACPI_DB_DISPATCH,
> "**** Starting initialization of namespace objects ****\n"));
> ACPI_DEBUG_PRINT_RAW((ACPI_DB_INIT,
> diff --git a/drivers/acpi/acpica/tbxfload.c b/drivers/acpi/acpica/tbxfload.c
> index 278666e..c37d479 100644
> --- a/drivers/acpi/acpica/tbxfload.c
> +++ b/drivers/acpi/acpica/tbxfload.c
> @@ -83,6 +83,20 @@ acpi_status __init acpi_load_tables(void)
> "While loading namespace from ACPI tables"));
> }
>
> + if (!acpi_gbl_group_module_level_code) {
> + /*
> + * Initialize the objects that remain uninitialized. This
> + * runs the executable AML that may be part of the
> + * declaration of these objects:
> + * operation_regions, buffer_fields, Buffers, and Packages.
> + */
> + status = acpi_ns_initialize_objects();
> + if (ACPI_FAILURE(status)) {
> + return_ACPI_STATUS(status);
> + }
> + }
> +
> + acpi_gbl_reg_methods_enabled = TRUE;
> return_ACPI_STATUS(status);
> }
>
> diff --git a/drivers/acpi/acpica/utxfinit.c b/drivers/acpi/acpica/utxfinit.c
> index 721b87c..638fbd4 100644
> --- a/drivers/acpi/acpica/utxfinit.c
> +++ b/drivers/acpi/acpica/utxfinit.c
> @@ -267,7 +267,6 @@ acpi_status __init acpi_initialize_objects(u32 flags)
> * initialized, even if they contain executable AML (see the call to
> * acpi_ns_initialize_objects below).
> */
> - acpi_gbl_reg_methods_enabled = TRUE;
> if (!(flags & ACPI_NO_ADDRESS_SPACE_INIT)) {
> ACPI_DEBUG_PRINT((ACPI_DB_EXEC,
> "[Init] Executing _REG OpRegion methods\n"));
> @@ -299,20 +298,18 @@ acpi_status __init acpi_initialize_objects(u32 flags)
> */
> if (acpi_gbl_group_module_level_code) {
> acpi_ns_exec_module_code_list();
> - }
>
> - /*
> - * Initialize the objects that remain uninitialized. This runs the
> - * executable AML that may be part of the declaration of these objects:
> - * operation_regions, buffer_fields, Buffers, and Packages.
> - */
> - if (!(flags & ACPI_NO_OBJECT_INIT)) {
> - ACPI_DEBUG_PRINT((ACPI_DB_EXEC,
> - "[Init] Completing Initialization of ACPI Objects\n"));
> -
> - status = acpi_ns_initialize_objects();
> - if (ACPI_FAILURE(status)) {
> - return_ACPI_STATUS(status);
> + /*
> + * Initialize the objects that remain uninitialized. This
> + * runs the executable AML that may be part of the
> + * declaration of these objects:
> + * operation_regions, buffer_fields, Buffers, and Packages.
> + */
> + if (!(flags & ACPI_NO_OBJECT_INIT)) {
> + status = acpi_ns_initialize_objects();
> + if (ACPI_FAILURE(status)) {
> + return_ACPI_STATUS(status);
> + }
> }
> }
>
> --
> 1.7.10
>
> --
> To unsubscribe from this list: send the line "unsubscribe stable" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2016-04-20 5:58 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-20 2:39 [PATCH] ACPICA / Interpreter: Fix a regression triggered because of wrong Linux ECDT support Lv Zheng
2016-04-20 5:58 ` Greg KH [this message]
2016-04-22 3:05 ` Zheng, Lv
2016-04-22 3:14 ` Greg KH
2016-04-20 10:27 ` Rafael J. Wysocki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160420055806.GA6285@kroah.com \
--to=greg@kroah.com \
--cc=len.brown@intel.com \
--cc=linux-acpi@vger.kernel.org \
--cc=lv.zheng@intel.com \
--cc=rafael.j.wysocki@intel.com \
--cc=rjw@rjwysocki.net \
--cc=stable@vger.kernel.org \
--cc=zetalog@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).