All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Erik Schmauss <erik.schmauss@intel.com>
Cc: "Rafael J . Wysocki" <rafael@kernel.org>,
	linux-acpi@vger.kernel.org,
	Nikolaus Voss <nikolaus.voss@loewensteinmedical.de>,
	Bob Moore <robert.moore@intel.com>
Subject: Re: [PATCH v2 05/12] ACPICA: make acpi_load_table() return table index
Date: Mon, 28 Oct 2019 17:52:19 +0200	[thread overview]
Message-ID: <20191028155219.GM32742@smile.fi.intel.com> (raw)
In-Reply-To: <20191025213700.14685-6-erik.schmauss@intel.com>

On Fri, Oct 25, 2019 at 02:36:53PM -0700, Erik Schmauss wrote:
> From: Nikolaus Voss <nikolaus.voss@loewensteinmedical.de>
> 
> ACPICA commit d1716a829d19be23277d9157c575a03b9abb7457
> 
> For unloading an ACPI table, it is necessary to provide the index of
> the table. The method intended for dynamically loading or hotplug
> addition of tables, acpi_load_table(), should provide this information
> via an optional pointer to the loaded table index.
> 
> This patch fixes the table unload function of acpi_configfs.

I have tested this one as is and with the following change

--- a/drivers/acpi/acpi_configfs.c
+++ b/drivers/acpi/acpi_configfs.c
@@ -223,7 +223,7 @@ static void acpi_table_drop_item(struct config_group *group,
        struct acpi_table *table = container_of(cfg, struct acpi_table, cfg);

        ACPI_INFO(("Host-directed Dynamic ACPI Table Unload"));
-       acpi_tb_unload_table(table->index);
+       acpi_unload_table(table->index);
 }


...and it works in both cases

Tested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

> 
> Reported-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Fixes: d06c47e3dd07f ("ACPI: configfs: Resolve objects on host-directed table loads")
> 
> Link: https://github.com/acpica/acpica/commit/d1716a82
> Signed-off-by: Nikolaus Voss <nikolaus.voss@loewensteinmedical.de>
> Signed-off-by: Erik Schmauss <erik.schmauss@intel.com>
> Signed-off-by: Bob Moore <robert.moore@intel.com>
> ---
>  drivers/acpi/acpi_configfs.c   | 2 +-
>  drivers/acpi/acpica/dbfileio.c | 2 +-
>  drivers/acpi/acpica/tbxfload.c | 8 +++++++-
>  drivers/firmware/efi/efi.c     | 2 +-
>  include/acpi/acpixf.h          | 3 ++-
>  5 files changed, 12 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/acpi/acpi_configfs.c b/drivers/acpi/acpi_configfs.c
> index 57d9d574d4dd..77f81242a28e 100644
> --- a/drivers/acpi/acpi_configfs.c
> +++ b/drivers/acpi/acpi_configfs.c
> @@ -53,7 +53,7 @@ static ssize_t acpi_table_aml_write(struct config_item *cfg,
>  	if (!table->header)
>  		return -ENOMEM;
>  
> -	ret = acpi_load_table(table->header);
> +	ret = acpi_load_table(table->header, &table->index);
>  	if (ret) {
>  		kfree(table->header);
>  		table->header = NULL;
> diff --git a/drivers/acpi/acpica/dbfileio.c b/drivers/acpi/acpica/dbfileio.c
> index c6e25734dc5c..e1b6e54a96ac 100644
> --- a/drivers/acpi/acpica/dbfileio.c
> +++ b/drivers/acpi/acpica/dbfileio.c
> @@ -93,7 +93,7 @@ acpi_status acpi_db_load_tables(struct acpi_new_table_desc *list_head)
>  	while (table_list_head) {
>  		table = table_list_head->table;
>  
> -		status = acpi_load_table(table);
> +		status = acpi_load_table(table, NULL);
>  		if (ACPI_FAILURE(status)) {
>  			if (status == AE_ALREADY_EXISTS) {
>  				acpi_os_printf
> diff --git a/drivers/acpi/acpica/tbxfload.c b/drivers/acpi/acpica/tbxfload.c
> index ce86e7945e90..0782acf85722 100644
> --- a/drivers/acpi/acpica/tbxfload.c
> +++ b/drivers/acpi/acpica/tbxfload.c
> @@ -268,6 +268,8 @@ ACPI_EXPORT_SYMBOL_INIT(acpi_install_table)
>   *
>   * PARAMETERS:  table               - Pointer to a buffer containing the ACPI
>   *                                    table to be loaded.
> + *              table_idx           - Pointer to a u32 for storing the table
> + *                                    index, might be NULL
>   *
>   * RETURN:      Status
>   *
> @@ -278,7 +280,7 @@ ACPI_EXPORT_SYMBOL_INIT(acpi_install_table)
>   *              to ensure that the table is not deleted or unmapped.
>   *
>   ******************************************************************************/
> -acpi_status acpi_load_table(struct acpi_table_header *table)
> +acpi_status acpi_load_table(struct acpi_table_header *table, u32 *table_idx)
>  {
>  	acpi_status status;
>  	u32 table_index;
> @@ -297,6 +299,10 @@ acpi_status acpi_load_table(struct acpi_table_header *table)
>  	status = acpi_tb_install_and_load_table(ACPI_PTR_TO_PHYSADDR(table),
>  						ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL,
>  						FALSE, &table_index);
> +	if (table_idx) {
> +		*table_idx = table_index;
> +	}
> +
>  	if (ACPI_SUCCESS(status)) {
>  
>  		/* Complete the initialization/resolution of new objects */
> diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c
> index 69f00f7453a3..0d65cb21519d 100644
> --- a/drivers/firmware/efi/efi.c
> +++ b/drivers/firmware/efi/efi.c
> @@ -296,7 +296,7 @@ static __init int efivar_ssdt_load(void)
>  			goto free_data;
>  		}
>  
> -		ret = acpi_load_table(data);
> +		ret = acpi_load_table(data, NULL);
>  		if (ret) {
>  			pr_err("failed to load table: %d\n", ret);
>  			goto free_data;
> diff --git a/include/acpi/acpixf.h b/include/acpi/acpixf.h
> index 109b2f14b6c6..867170049b07 100644
> --- a/include/acpi/acpixf.h
> +++ b/include/acpi/acpixf.h
> @@ -458,7 +458,8 @@ ACPI_EXTERNAL_RETURN_STATUS(acpi_status ACPI_INIT_FUNCTION
>  					       u8 physical))
>  
>  ACPI_EXTERNAL_RETURN_STATUS(acpi_status
> -			    acpi_load_table(struct acpi_table_header *table))
> +			    acpi_load_table(struct acpi_table_header *table,
> +					    u32 *table_idx))
>  
>  ACPI_EXTERNAL_RETURN_STATUS(acpi_status
>  			    acpi_unload_table(u32 table_index))
> -- 
> 2.21.0
> 

-- 
With Best Regards,
Andy Shevchenko



  parent reply	other threads:[~2019-10-28 15:52 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-25 21:36 [PATCH v2 00/12] ACPICA version 20191018v2 Erik Schmauss
2019-10-25 21:36 ` [PATCH v2 01/12] ACPICA: Results from Clang changes/fixes From Clang V5.0.1. Mostly "set but never read" warnings Erik Schmauss
2019-10-25 21:36 ` [PATCH v2 02/12] ACPICA: Win OSL: Replace get_tick_count with get_tick_count64 Erik Schmauss
2019-10-25 21:36 ` [PATCH v2 03/12] ACPICA: More Clang changes - V8.0.1 Fixed all "dead assignment" warnings Erik Schmauss
2019-10-25 21:36 ` [PATCH v2 04/12] ACPICA: Add new external interface, acpi_unload_table Erik Schmauss
2019-10-25 21:36 ` [PATCH v2 05/12] ACPICA: make acpi_load_table() return table index Erik Schmauss
2019-10-26 14:44   ` Andy Shevchenko
2019-10-28 17:15     ` Schmauss, Erik
2019-10-28 15:52   ` Andy Shevchenko [this message]
2019-10-25 21:36 ` [PATCH v2 06/12] ACPICA: utilities: add flag to only display data when dumping buffers Erik Schmauss
2019-10-25 21:36 ` [PATCH v2 07/12] ACPICA: debugger: add command to dump all fields of a particular subtype Erik Schmauss
2019-10-25 21:36 ` [PATCH v2 08/12] ACPICA: debugger: surround field unit output with braces '{' Erik Schmauss
2019-10-25 21:36 ` [PATCH v2 09/12] ACPICA: debugger: add field unit support for acpi_db_get_next_token Erik Schmauss
2019-10-25 21:36 ` [PATCH v2 10/12] ACPICA: acpiexec: initialize all simple types and field units from user input Erik Schmauss
2019-10-25 21:36 ` [PATCH v2 11/12] ACPICA: debugger: remove leading whitespaces when converting a string to a buffer Erik Schmauss
2019-10-25 21:37 ` [PATCH v2 12/12] ACPICA: Update version to 20191018 Erik Schmauss
2019-10-26 14:42 ` [PATCH v2 00/12] ACPICA version 20191018v2 Andy Shevchenko
2019-10-28 15:58 ` Andy Shevchenko
2019-10-28 17:49   ` Schmauss, Erik
2019-10-28 21:16     ` Rafael J. Wysocki
2019-10-29  9:56       ` Andy Shevchenko

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=20191028155219.GM32742@smile.fi.intel.com \
    --to=andriy.shevchenko@linux.intel.com \
    --cc=erik.schmauss@intel.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=nikolaus.voss@loewensteinmedical.de \
    --cc=rafael@kernel.org \
    --cc=robert.moore@intel.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.