All of lore.kernel.org
 help / color / mirror / Atom feed
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

  reply	other threads:[~2016-04-20  5:58 UTC|newest]

Thread overview: 9+ 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  2:39 ` 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
  -- strict thread matches above, loose matches on Subject: below --
2016-03-10  2:54 Lv Zheng
2016-03-10  2:54 ` Lv Zheng
2016-03-10 22:10 ` 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.