Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp2681415ybe; Thu, 12 Sep 2019 13:10:42 -0700 (PDT) X-Google-Smtp-Source: APXvYqy5pzoE5GBtwcxYUeQ/rQZGGrqavEPv6ZIcKIdHporqay/G7e0WHArU5W/LIPWGflmUqAvo X-Received: by 2002:a17:906:3087:: with SMTP id 7mr3931423ejv.212.1568319042194; Thu, 12 Sep 2019 13:10:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1568319042; cv=none; d=google.com; s=arc-20160816; b=BsOe4Wk5B53hsvm8U8cINEG4AOJ1ZCCBTn4hpUEzzOwDKF3UQNMUKsqUlihqCDy6CH m57T1HpNZThhdHu1SZGyeOP8Cel1NxtIeu4I3RYyNWRUAXYsEpYV1P0WiEjlEmf95Rb5 803t6E7IzJo+jtWFPRkZGJ6jqpSJ0id69yYoFSgbHnscLPoT9wG8O/ui+SxpLQeCuFf3 Tk2iqz7tWGE9E4sNn63kE0w6uHOk1DS0gHP5Z1zyIhB8dfaHGQiGHSqKqMJjz1xMAW67 6FfcpPyAPlTfG9Rgri6dDeYCj2YJN9nDeclNqMSS8cD+bwzsMSXWU0FUblmPig7lqf0y Cf/g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:newsgroups:cc:to:subject; bh=dTuxRlCa+9CWG+USyXRZesBzaN7qWc1MJhjEEraUDss=; b=YD/wZOvPH9bVL74K0Byl4tv0eajhOo1o0Nxr0oCebB5cvF0LiDMuQD+B3FJumHQWsM LHoB8pAMmDHzX1ODGZ4OTusV3ZcTiYIgSTx8Vz7jL1w2gL5Q3GQaY2QTdmH2yxonef/X +gXign+DXc8zRkmkc79UoYWp44g9S2WjgjnkEUuQt08/ftjgASisbNxjvKWlt/RdrCi8 G9ENu2+aBcDRn5t9jJn4kLqUMwW6NxByGht7sBjLN+OoaxXtSp7hdfX/Iev2tcxmDQDE 2b4/v7NJMx7it77kXVyaDUkM8igyhoXz+bLtY22hdpev4gydmTcEfK0xztPioXEXrbhf aQyQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=telfort.nl Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k17si15431882edd.38.2019.09.12.13.10.18; Thu, 12 Sep 2019 13:10:42 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=telfort.nl Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726899AbfILTxE (ORCPT + 99 others); Thu, 12 Sep 2019 15:53:04 -0400 Received: from mailfilter03-out40.webhostingserver.nl ([195.211.72.99]:55572 "EHLO mailfilter03-out40.webhostingserver.nl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726132AbfILTxE (ORCPT ); Thu, 12 Sep 2019 15:53:04 -0400 X-Greylist: delayed 962 seconds by postgrey-1.27 at vger.kernel.org; Thu, 12 Sep 2019 15:53:01 EDT X-Halon-ID: a1826e13-d594-11e9-ba6d-001a4a4cb9a5 Received: from s198.webhostingserver.nl (unknown [195.211.72.171]) by mailfilter03.webhostingserver.nl (Halon) with ESMTPSA id a1826e13-d594-11e9-ba6d-001a4a4cb9a5; Thu, 12 Sep 2019 19:36:35 +0000 (UTC) Received: from cust-178-250-146-69.breedbanddelft.nl ([178.250.146.69] helo=[10.8.0.10]) by s198.webhostingserver.nl with esmtpa (Exim 4.92.2) (envelope-from ) id 1i8Utk-00F8TM-4J; Thu, 12 Sep 2019 21:36:56 +0200 Subject: Re: [PATCH] ACPICA: make acpi_load_table() return table index To: "Moore, Robert" , Nikolaus Voss , "Shevchenko, Andriy" , "Schmauss, Erik" , "Rafael J. Wysocki" Cc: Len Brown , Jacek Anaszewski , Pavel Machek , Dan Murphy , "linux-acpi@vger.kernel.org" , "devel@acpica.org" , "linux-kernel@vger.kernel.org" , "nv@vosn.de" Newsgroups: gmane.linux.kernel,gmane.linux.acpi.devel References: <20190906174605.GY2680@smile.fi.intel.com> <20190912080742.24642-1-nikolaus.voss@loewensteinmedical.de> <94F2FBAB4432B54E8AACC7DFDE6C92E3B9679CE8@ORSMSX110.amr.corp.intel.com> From: Ferry Toth Message-ID: <4929b1d2-c2a7-4efd-89e4-f02205e79c01@telfort.nl> Date: Thu, 12 Sep 2019 21:36:54 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: <94F2FBAB4432B54E8AACC7DFDE6C92E3B9679CE8@ORSMSX110.amr.corp.intel.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-SendingUser: hidden X-SendingServer: hidden X-Antivirus-Scanner: Clean mail though you should still use an Antivirus X-Authenticated-Id: hidden X-SendingUser: hidden X-SendingServer: hidden Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Op 12-09-19 om 16:19 schreef Moore, Robert: > Nikolaus, > The ability to unload an ACPI table (especially AML tables such as SSDTs) is in the process of being deprecated in ACPICA -- since it is also deprecated in the current ACPI specification. This is being done because of the difficulty of deleting the namespace entries for the table. FYI, Windows does not properly support this function either. I really hope this is not the case. On x86 loading/unloading SSDTs has proven to be a powerful way to handle reconfigurable hardware without rebooting and without requiring dedicated platform drivers. Same for user plugable hardware on i2c/spi busses. This has worked before and will violate the "don't break user space" rule. I don't see why Windows is an example to follow. On Windows platform drivers don't get compiled into the kernel and don't need to be upstreamed. > Bob > > > -----Original Message----- > From: Nikolaus Voss [mailto:nikolaus.voss@loewensteinmedical.de] > Sent: Thursday, September 12, 2019 1:08 AM > To: Shevchenko, Andriy ; Schmauss, Erik ; Rafael J. Wysocki ; Moore, Robert > Cc: Len Brown ; Jacek Anaszewski ; Pavel Machek ; Dan Murphy ; linux-acpi@vger.kernel.org; devel@acpica.org; linux-kernel@vger.kernel.org; nv@vosn.de; Nikolaus Voss > Subject: [PATCH] ACPICA: make acpi_load_table() return table index > > 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. > > Reported-by: Andy Shevchenko > Fixes: d06c47e3dd07f ("ACPI: configfs: Resolve objects on host-directed table loads") > Signed-off-by: Nikolaus Voss > --- > 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, 11 insertions(+), 6 deletions(-) > > diff --git a/drivers/acpi/acpi_configfs.c b/drivers/acpi/acpi_configfs.c index 57d9d574d4dde..77f81242a28e6 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 c6e25734dc5cd..e1b6e54a96ac1 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 86f1693f6d29a..d08cd8ffcbdb6 100644 > --- a/drivers/acpi/acpica/tbxfload.c > +++ b/drivers/acpi/acpica/tbxfload.c > @@ -268,7 +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 > * > * DESCRIPTION: Dynamically load an ACPI table from the caller's buffer. Must @@ -278,7 +279,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 +298,9 @@ 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 ad3b1f4866b35..9773e4212baef 100644 > --- a/drivers/firmware/efi/efi.c > +++ b/drivers/firmware/efi/efi.c > @@ -308,7 +308,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 3845c8fcc94e5..c90bbdc4146a6 100644 > --- a/include/acpi/acpixf.h > +++ b/include/acpi/acpixf.h > @@ -452,7 +452,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_parent_table(acpi_handle object)) > -- > 2.17.1 > >