Linux-ACPI Archive on lore.kernel.org
 help / color / Atom feed
From: Nikolaus Voss <nv@vosn.de>
To: "Moore, Robert" <robert.moore@intel.com>
Cc: Ferry Toth <fntoth@gmail.com>,
	"Shevchenko, Andriy" <andriy.shevchenko@intel.com>,
	"Schmauss, Erik" <erik.schmauss@intel.com>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Len Brown <lenb@kernel.org>,
	Jacek Anaszewski <jacek.anaszewski@gmail.com>,
	Pavel Machek <pavel@ucw.cz>, Dan Murphy <dmurphy@ti.com>,
	"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
	"devel@acpica.org" <devel@acpica.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Jan Kiszka <jan.kiszka@siemens.com>
Subject: RE: [PATCH] ACPICA: make acpi_load_table() return table index
Date: Wed, 25 Sep 2019 12:18:11 +0200 (CEST)
Message-ID: <alpine.DEB.2.20.1909251131060.65328@fox.voss.local> (raw)
In-Reply-To: <94F2FBAB4432B54E8AACC7DFDE6C92E3B968B639@ORSMSX110.amr.corp.intel.com>

On Tue, 24 Sep 2019, Moore, Robert wrote:
> How about this:
> Go back to using acpi_tb_install_and_load_table(), but then call acpi_ns_initialize_objects afterwards This is what acpi_load_table does.
>
>
>    ACPI_INFO (("Host-directed Dynamic ACPI Table Load:"));
>    Status = AcpiTbInstallAndLoadTable (ACPI_PTR_TO_PHYSADDR (Table),
>        ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL, FALSE, &TableIndex);
>    if (ACPI_SUCCESS (Status))
>    {
>        /* Complete the initialization/resolution of new objects */
>
>        AcpiNsInitializeObjects ();
>    }

The idea was to have all drivers use the same interface for dynamically 
loading ACPI tables, i.e. efivar_ssdt_load() (which already used 
acpi_load_table()) and the acpi_configfs driver. The efivar driver doesn't 
provide a possibility to unload the table, so acpi_load_table() is okay 
for this purpose. According to Bob, acpi_tb_install_and_load_table() is 
not part of the external ACPICA API declared under include/acpi (though it 
is exported).

The counterpart of acpi_load_table() - inline comment "Note1: Mainly 
intended to support hotplug addition of SSDTs" - seems to be 
acpi_unload_parent_table() - inline comment "Note: Mainly intended to 
support hotplug removal of SSDTs" - but it doesn't expect a table index 
but an acpi_handle as argument, and it is only used within ACPICA, so IMO 
the API can't be properly used in our case and should be improved even 
though unloading tables is deprecated.

If changing the API is not an option, we can choose between Rafael's way 
(extending the API instead of changing it) or Bob's proposal (doing the 
same thing - hotplug-loading a SSDT - in different ways, in case of 
acpi_configfs using ACPICA internal API). I don't have a clear favorite, 
but I'm tending to Rafael's solution my favorite being the API change.

Niko

>
>
> -----Original Message-----
> From: Nikolaus Voss <nv@vosn.de>
> Sent: Monday, September 23, 2019 2:05 AM
> To: Moore, Robert <robert.moore@intel.com>
> Cc: Ferry Toth <fntoth@gmail.com>; Shevchenko, Andriy <andriy.shevchenko@intel.com>; Schmauss, Erik <erik.schmauss@intel.com>; Rafael J. Wysocki <rjw@rjwysocki.net>; Len Brown <lenb@kernel.org>; Jacek Anaszewski <jacek.anaszewski@gmail.com>; Pavel Machek <pavel@ucw.cz>; Dan Murphy <dmurphy@ti.com>; linux-acpi@vger.kernel.org; devel@acpica.org; linux-kernel@vger.kernel.org; Jan Kiszka <jan.kiszka@siemens.com>
> Subject: RE: [PATCH] ACPICA: make acpi_load_table() return table index
>
> On Thu, 19 Sep 2019, Moore, Robert wrote:
>>
>>
>> -----Original Message-----
>> From: Nikolaus Voss [mailto:nv@vosn.de]
>> Sent: Wednesday, September 18, 2019 7:32 AM
>> To: Moore, Robert <robert.moore@intel.com>
>> Cc: Ferry Toth <fntoth@gmail.com>; Shevchenko, Andriy
>> <andriy.shevchenko@intel.com>; Schmauss, Erik
>> <erik.schmauss@intel.com>; Rafael J. Wysocki <rjw@rjwysocki.net>; Len
>> Brown <lenb@kernel.org>; Jacek Anaszewski
>> <jacek.anaszewski@gmail.com>; Pavel Machek <pavel@ucw.cz>; Dan Murphy
>> <dmurphy@ti.com>; linux-acpi@vger.kernel.org; devel@acpica.org;
>> linux-kernel@vger.kernel.org; Jan Kiszka <jan.kiszka@siemens.com>
>> Subject: RE: [PATCH] ACPICA: make acpi_load_table() return table index
>>
>> On Wed, 18 Sep 2019, Moore, Robert wrote:
>>>
>>>
>>> -----Original Message-----
>>> From: Nikolaus Voss [mailto:nv@vosn.de]
>>> Sent: Monday, September 16, 2019 2:47 AM
>>> To: Moore, Robert <robert.moore@intel.com>
>>> Cc: Ferry Toth <fntoth@gmail.com>; Shevchenko, Andriy
>>> <andriy.shevchenko@intel.com>; Schmauss, Erik
>>> <erik.schmauss@intel.com>; Rafael J. Wysocki <rjw@rjwysocki.net>; Len
>>> Brown <lenb@kernel.org>; Jacek Anaszewski
>>> <jacek.anaszewski@gmail.com>; Pavel Machek <pavel@ucw.cz>; Dan Murphy
>>> <dmurphy@ti.com>; linux-acpi@vger.kernel.org; devel@acpica.org;
>>> linux-kernel@vger.kernel.org; Jan Kiszka <jan.kiszka@siemens.com>
>>> Subject: RE: [PATCH] ACPICA: make acpi_load_table() return table
>>> index
>>>
>>> On Fri, 13 Sep 2019, Moore, Robert wrote:
>>>>
>>>>
>>>> -----Original Message-----
>>>> From: Ferry Toth [mailto:fntoth@gmail.com]
>>>> Sent: Friday, September 13, 2019 9:48 AM
>>>> To: Shevchenko, Andriy <andriy.shevchenko@intel.com>; Moore, Robert
>>>> <robert.moore@intel.com>
>>>> Cc: Nikolaus Voss <nv@vosn.de>; Schmauss, Erik
>>>> <erik.schmauss@intel.com>; Rafael J. Wysocki <rjw@rjwysocki.net>;
>>>> Len Brown <lenb@kernel.org>; Jacek Anaszewski
>>>> <jacek.anaszewski@gmail.com>; Pavel Machek <pavel@ucw.cz>; Dan
>>>> Murphy <dmurphy@ti.com>; linux-acpi@vger.kernel.org;
>>>> devel@acpica.org; linux-kernel@vger.kernel.org;
>>>> nikolaus.voss@loewensteinmedical.de;
>>>> Jan Kiszka <jan.kiszka@siemens.com>
>>>> Subject: Re: [PATCH] ACPICA: make acpi_load_table() return table
>>>> index
>>>>
>>>> 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@vosn.de]
>>>>>> Sent: Friday, September 13, 2019 12:44 AM
>>>>>> To: Moore, Robert <robert.moore@intel.com>
>>>>>> Cc: Shevchenko, Andriy <andriy.shevchenko@intel.com>; Schmauss,
>>>>>> Erik <erik.schmauss@intel.com>; Rafael J. Wysocki
>>>>>> <rjw@rjwysocki.net>; Len Brown <lenb@kernel.org>; Jacek Anaszewski
>>>>>> <jacek.anaszewski@gmail.com>; Pavel Machek <pavel@ucw.cz>; Dan
>>>>>> Murphy <dmurphy@ti.com>; linux-acpi@vger.kernel.org;
>>>>>> devel@acpica.org; linux-kernel@vger.kernel.org; Ferry Toth
>>>>>> <ftoth@telfort.nl>; nikolaus.voss@loewensteinmedical.de
>>>>>> 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@siemens.com>
>>>>> 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.
>>>>
>>>> The biggest problem AFAIK is that under linux, many drivers cannot be unloaded. Also, there are many race conditions as the namespace entries "owned" by an SSDT being unloaded are deleted (out from underneath a driver).
>>>>
>>>> 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"));
>>>
>>> Bob, what is your suggestion to fix the regression then?
>>>
>>> We could revert acpi_configfs.c to use
>>> acpi_tb_install_and_load_table() instead of acpi_load_table(),
>>> leaving loaded APCI objects uninitalized, but at least, unloading will work again.
>>>
>>> I guess my next question is: why do you want to unload a table in the
>>> first place?
>>
>> Because it worked before and there are people who rely on it. If it's
>> deprecated there should be a user notification and a reasonable
>> end-of-life timeline to give these users a chance to develop an
>> alternative solution.
>>
>> So, I still don't understand why this no longer works. We did not make
>> any purposeful changes in this area - AFAIK. Bob
>
> It's because the acpi_configfs driver formerly used
> acpi_tb_install_and_load_table() which returns the table index, but doesn't resolve the references. It now uses acpi_load_table() which resolves the references, but doesn't return the table index, so unloading doesn't work any more.
>
>>
>> Niko
>>
>>>
>>>
>>> Do we have any other options?
>>>
>>> Niko
>>>
>>


  reply index

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-29 12:18 [PATCH 0/3] PWM framework: add support referencing PWMs from ACPI Nikolaus Voss
2019-05-29 12:18 ` [PATCH 1/3] ACPI: Resolve objects on host-directed table loads Nikolaus Voss
2019-05-30 14:42   ` Dan Murphy
2019-05-31 12:23     ` Pavel Machek
2019-05-31 12:45       ` Dan Murphy
2019-05-31 12:46     ` Dan Murphy
2019-06-03  9:12       ` Nikolaus Voss
2019-08-14 18:50   ` Andy Shevchenko
2019-08-14 20:27     ` Schmauss, Erik
2019-08-16 11:57       ` Nikolaus Voss
2019-08-30 14:53         ` Shevchenko, Andriy
2019-09-04  7:20           ` Nikolaus Voss
2019-09-06 17:46             ` Shevchenko, Andriy
2019-09-12  8:05               ` Nikolaus Voss
2019-09-12  8:07               ` [PATCH] ACPICA: make acpi_load_table() return table index Nikolaus Voss
2019-09-12 14:19                 ` Moore, Robert
2019-09-12 19:36                   ` Ferry Toth
2019-09-25 18:13                     ` Schmauss, Erik
2019-09-26  8:09                       ` Shevchenko, Andriy
2019-09-13  7:44                   ` Nikolaus Voss
2019-09-13 14:20                     ` Moore, Robert
2019-09-13 15:12                       ` Shevchenko, Andriy
2019-09-13 16:48                         ` Ferry Toth
2019-09-13 16:48                           ` Ferry Toth
2019-09-13 17:40                           ` Moore, Robert
2019-09-13 19:56                             ` Rafael J. Wysocki
2019-09-16  9:46                             ` Nikolaus Voss
2019-09-18 14:13                               ` Moore, Robert
2019-09-18 14:31                                 ` Nikolaus Voss
2019-09-19 17:05                                   ` Moore, Robert
2019-09-23  9:05                                     ` Nikolaus Voss
2019-09-24 19:41                                       ` Moore, Robert
2019-09-25 10:18                                         ` Nikolaus Voss [this message]
2019-09-25 10:53                                           ` Shevchenko, Andriy
2019-09-19  8:13                 ` Rafael J. Wysocki
2019-09-23  9:08                   ` Nikolaus Voss
2019-09-23  9:47                   ` [PATCH] ACPICA: Introduce acpi_load_table_with_index() Nikolaus Voss
2019-09-24 12:07                     ` Shevchenko, Andriy
2019-09-24 12:08                       ` Shevchenko, Andriy
2019-09-25 10:20                         ` Nikolaus Voss
2019-09-24 15:11                     ` Andy Shevchenko
2019-09-25 10:22                       ` Nikolaus Voss
2019-09-26 16:09                 ` [PATCH] ACPICA: make acpi_load_table() return table index Schmauss, Erik
2019-09-26 16:35                   ` Shevchenko, Andriy
2019-09-26 16:51                     ` Schmauss, Erik
2019-09-26 17:47                       ` Shevchenko, Andriy
2019-09-26 18:44                       ` Nikolaus Voss
2019-09-26 19:26                         ` Rafael J. Wysocki
2019-09-26 19:41                           ` Schmauss, Erik
2019-09-26 18:43                   ` Nikolaus Voss
2019-05-29 12:18 ` [PATCH 2/3] PWM framework: add support referencing PWMs from ACPI Nikolaus Voss
2019-05-30 14:54   ` Dan Murphy
2019-05-31 12:24     ` Pavel Machek
2019-06-03  9:27     ` Nikolaus Voss
2019-05-29 12:18 ` [PATCH 3/3] leds-pwm.c: support ACPI via firmware-node framework Nikolaus Voss
2019-05-30 15:14   ` Dan Murphy
2019-06-03  9:44     ` Nikolaus Voss

Reply instructions:

You may reply publically 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=alpine.DEB.2.20.1909251131060.65328@fox.voss.local \
    --to=nv@vosn.de \
    --cc=andriy.shevchenko@intel.com \
    --cc=devel@acpica.org \
    --cc=dmurphy@ti.com \
    --cc=erik.schmauss@intel.com \
    --cc=fntoth@gmail.com \
    --cc=jacek.anaszewski@gmail.com \
    --cc=jan.kiszka@siemens.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pavel@ucw.cz \
    --cc=rjw@rjwysocki.net \
    --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

Linux-ACPI Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-acpi/0 linux-acpi/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-acpi linux-acpi/ https://lore.kernel.org/linux-acpi \
		linux-acpi@vger.kernel.org
	public-inbox-index linux-acpi

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-acpi


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git