Re: [PATCH] ACPICA: make acpi_load_table() return table index

From: Ferry Toth
Date: Fri Sep 13 2019 - 12:55:12 EST


Hello all,

Sorry to have sent our message with cancelled e-mail address. I have correct this now.

Op 13-09-19 om 17:12 schreef Shevchenko, Andriy:
On Fri, Sep 13, 2019 at 05:20:21PM +0300, Moore, Robert wrote:
-----Original Message-----
From: Nikolaus Voss [mailto:nv@xxxxxxx]
Sent: Friday, September 13, 2019 12:44 AM
To: Moore, Robert <robert.moore@xxxxxxxxx>
Cc: Shevchenko, Andriy <andriy.shevchenko@xxxxxxxxx>; Schmauss, Erik <erik.schmauss@xxxxxxxxx>; Rafael J. Wysocki <rjw@xxxxxxxxxxxxx>; Len Brown <lenb@xxxxxxxxxx>; Jacek Anaszewski <jacek.anaszewski@xxxxxxxxx>; Pavel Machek <pavel@xxxxxx>; Dan Murphy <dmurphy@xxxxxx>; linux-acpi@xxxxxxxxxxxxxxx; devel@xxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; Ferry Toth <ftoth@xxxxxxxxxx>; nikolaus.voss@xxxxxxxxxxxxxxxxxxxxx
Subject: RE: [PATCH] ACPICA: make acpi_load_table() return table index

Bob,

On Thu, 12 Sep 2019, Moore, Robert wrote:
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.

ok, I see it can be a problem to unload an AML table with all it's consequences e.g. with respect to driver unregistering in setups with complex dependencies. It will only work properly under certain conditions
- nevertheless acpi_tb_unload_table() is still exported in ACPICA and we should get this working as it worked before.

AcpiTbUnloadTable is not exported, it is an internal interface only -- as
recognized by the "AcpiTb".

In Linux it became a part of ABI when the

commit 772bf1e2878ecfca0d1f332071c83e021dd9cf01
Author: Jan Kiszka <jan.kiszka@xxxxxxxxxxx>
Date: Fri Jun 9 20:36:31 2017 +0200

ACPI: configfs: Unload SSDT on configfs entry removal

appeared in the kernel.

And the commit message explains quite well why it is an important feature:

"This allows to change SSDTs without rebooting the system.
It also allows to destroy devices again that a dynamically loaded SSDT
created.

This is widely similar to the DT overlay behavior."

I'm not sure that I want to change the interface
to AcpiLoadTable just for something that is being deprecated. Already, we
throw an ACPI_EXCEPTION if the Unload operator is encountered in the AML byte
stream. The same thing with AcpiUnloadParentTable - it is being deprecated.

ACPI_EXCEPTION ((AE_INFO, AE_NOT_IMPLEMENTED,
"AML Unload operator is not supported"));