Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp2289215ybe; Thu, 12 Sep 2019 07:22:58 -0700 (PDT) X-Google-Smtp-Source: APXvYqxql2K3SU2b/uL46NopI6tJJfcQSyrt67Q85LsICnP13x4jW1KdvIqjmvdd0k2cYdJYgaTl X-Received: by 2002:a17:906:d216:: with SMTP id w22mr17557649ejz.14.1568298178173; Thu, 12 Sep 2019 07:22:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1568298178; cv=none; d=google.com; s=arc-20160816; b=jDDjCJ373bN1WxHLlFwb4LLIyojg9N2GrdJ/d1pgfQNMijBZZCZwijYKHt3ZwSF4Ty vSEnrxTSRTpZFnW6yG4juEBu1MW4SqtHd2SaD5O3cGL48rUyQAcnGuFE2pzIdvLcYJqv tuZpP5smDUthiRnMfPjeYZJqmGCGgOWtzCLIQYg7U0QkXtBBHob01KbXgKuUHGVY4IH/ 8O8uLTPGtHdrT+6hteO/5ROPF44f0Gn6Xzho5ATLFsr43hGv8RX4cdZgVkNptjW9bTBg 2kuJtxYlvBvegh6xGnlDwzHotPeyHLyZwag7X28k85R6ZOAqWtt2tVfBY3ASI0E/Xshc 8x/A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :dlp-reaction:dlp-version:dlp-product:content-language :accept-language:in-reply-to:references:message-id:date:thread-index :thread-topic:subject:cc:to:from; bh=ncsCCc0hj/OQZwsw9unQt0+JGoq+6AU0NB/blEtMI0o=; b=GrZWox50pM6NyvAtc/UzyCRZ4wE5a2qOAahSku2rkKsND60PqyUUugpOa2n37SNejT HdEZnhrmOxbm5TKhuzhfr/Latibydad/WIjxbjhKBApXnocU3/sT6wZXLMwAMJkrbdRL XGreGKI3mRxHkJHLOu5AJ07j65+48ToT2HL+YBYHCDwy12uTgDbFHAKvao0CV0HtGxRT EypnWH0kIJ06XsuHAdhsNjZHgl78KfGYMW9xZxvjpIZxdqvgef++D4KmPeYdM87hPXf5 DwUd8vGrGLX+W+xBzhRyNTmxSpdJFUARKY5GRLBEwSCx6NsrM38ubu/k83xi+1111TO2 /fsA== 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=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id ga7si6439177ejb.260.2019.09.12.07.22.33; Thu, 12 Sep 2019 07:22:58 -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=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732657AbfILOTo convert rfc822-to-8bit (ORCPT + 99 others); Thu, 12 Sep 2019 10:19:44 -0400 Received: from mga17.intel.com ([192.55.52.151]:62735 "EHLO mga17.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732123AbfILOTn (ORCPT ); Thu, 12 Sep 2019 10:19:43 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 12 Sep 2019 07:19:43 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,492,1559545200"; d="scan'208";a="175978702" Received: from orsmsx104.amr.corp.intel.com ([10.22.225.131]) by orsmga007.jf.intel.com with ESMTP; 12 Sep 2019 07:19:42 -0700 Received: from orsmsx116.amr.corp.intel.com (10.22.240.14) by ORSMSX104.amr.corp.intel.com (10.22.225.131) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 12 Sep 2019 07:19:42 -0700 Received: from orsmsx110.amr.corp.intel.com ([169.254.10.57]) by ORSMSX116.amr.corp.intel.com ([169.254.7.63]) with mapi id 14.03.0439.000; Thu, 12 Sep 2019 07:19:41 -0700 From: "Moore, Robert" To: 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" Subject: RE: [PATCH] ACPICA: make acpi_load_table() return table index Thread-Topic: [PATCH] ACPICA: make acpi_load_table() return table index Thread-Index: AQHVaUE6M44QnoJV0UqVXW85SrAmnKcoFnTQ Date: Thu, 12 Sep 2019 14:19:40 +0000 Message-ID: <94F2FBAB4432B54E8AACC7DFDE6C92E3B9679CE8@ORSMSX110.amr.corp.intel.com> References: <20190906174605.GY2680@smile.fi.intel.com> <20190912080742.24642-1-nikolaus.voss@loewensteinmedical.de> In-Reply-To: <20190912080742.24642-1-nikolaus.voss@loewensteinmedical.de> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZGQ1MTRmYTYtNzI3Ni00ZGY0LTk0OGItMDkyMDhjMWVmMTQzIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiclFuS2NzYUFGTFBVTXNvZnFGSnVUOW9FMVpqRFwvNnljaEMrRlZTMXpBVUdTRU1EQWdWbnNlNkYzYklETUpKRUMifQ== x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.22.254.138] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8BIT MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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. 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