RE: [PATCH v2 1/3] ACPI: Resolve objects on host-directed table loads

From: Nikolaus Voss
Date: Tue Jun 18 2019 - 05:26:49 EST


On Mon, 17 Jun 2019, Moore, Robert wrote:
-----Original Message-----
From: Nikolaus Voss [mailto:nv@xxxxxxx]
Sent: Sunday, June 16, 2019 11:24 PM
To: Moore, Robert <robert.moore@xxxxxxxxx>
Cc: Rafael J. Wysocki <rafael@xxxxxxxxxx>; Rafael J. Wysocki
<rjw@xxxxxxxxxxxxx>; Len Brown <lenb@xxxxxxxxxx>; Schmauss, Erik
<erik.schmauss@xxxxxxxxx>; Jacek Anaszewski
<jacek.anaszewski@xxxxxxxxx>; Pavel Machek <pavel@xxxxxx>; Dan Murphy
<dmurphy@xxxxxx>; Thierry Reding <thierry.reding@xxxxxxxxx>; ACPI Devel
Maling List <linux-acpi@xxxxxxxxxxxxxxx>; open list:ACPI COMPONENT
ARCHITECTURE (ACPICA) <devel@xxxxxxxxxx>; linux-leds@xxxxxxxxxxxxxxx;
Linux PWM List <linux-pwm@xxxxxxxxxxxxxxx>; Linux Kernel Mailing List
<linux-kernel@xxxxxxxxxxxxxxx>; nikolaus.voss@xxxxxxxxxxxxxxxxxxxxx
Subject: RE: [PATCH v2 1/3] ACPI: Resolve objects on host-directed table
loads

Bob,

On Fri, 14 Jun 2019, Moore, Robert wrote:


-----Original Message-----
From: Nikolaus Voss [mailto:nv@xxxxxxx]
Sent: Friday, June 14, 2019 2:26 AM
To: Rafael J. Wysocki <rafael@xxxxxxxxxx>
Cc: Rafael J. Wysocki <rjw@xxxxxxxxxxxxx>; Len Brown
<lenb@xxxxxxxxxx>; Moore, Robert <robert.moore@xxxxxxxxx>; Schmauss,
Erik <erik.schmauss@xxxxxxxxx>; Jacek Anaszewski
<jacek.anaszewski@xxxxxxxxx>; Pavel Machek <pavel@xxxxxx>; Dan Murphy
<dmurphy@xxxxxx>; Thierry Reding <thierry.reding@xxxxxxxxx>; ACPI
Devel Maling List <linux-acpi@xxxxxxxxxxxxxxx>; open list:ACPI
COMPONENT ARCHITECTURE (ACPICA) <devel@xxxxxxxxxx>;
linux-leds@xxxxxxxxxxxxxxx; Linux PWM List
<linux-pwm@xxxxxxxxxxxxxxx>; Linux Kernel Mailing List
<linux-kernel@xxxxxxxxxxxxxxx>
Subject: Re: [PATCH v2 1/3] ACPI: Resolve objects on host-directed
table loads

Hi Rafael,

On Fri, 14 Jun 2019, Rafael J. Wysocki wrote:
On Wed, Jun 12, 2019 at 10:36 AM Nikolaus Voss
<nikolaus.voss@xxxxxxxxxxxxxxxxxxxxx> wrote:

If an ACPI SSDT overlay is loaded after built-in tables have been
loaded e.g. via configfs or efivar_ssdt_load() it is necessary to
rewalk the namespace to resolve references. Without this, relative
and absolute paths like ^PCI0.SBUS or \_SB.PCI0.SBUS are not
resolved correctly.

Make configfs load use the same method as efivar_ssdt_load().

Signed-off-by: Nikolaus Voss <nikolaus.voss@xxxxxxxxxxxxxxxxxxxxx>

This is fine by me, so

Acked-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>

Or if you want me to take this patch (without the other two in the
series), please let me know.

thanks. I think it would be the best if you take up this patch as it
is an independent topic. In retrospect it wasn't a good idea to put it
into this series.

Kind regards,
Niko

I would have to ask, why is additional code needed for package
initialization/resolution? It already happens elsewhere in acpica. Bob

for built-in tables loaded via acpi_ex_load_table_op() everything is
fine, because after acpi_tb_load_table() acpi_ns_walk_namespace() is
called to resolve references.

My fix only affects tables loaded dynamically via either acpi_configfs
driver (for debugging purposes) or efivar_ssdt_load() (to specify a
table on the kernel's command line). They use acpi_load_table() to load
the table from a caller-owned buffer. To resolve the references, it is
again necessary to rewalk the namespace, which was simply missing in
acpi_load_table().

[Moore, Robert]

Perhaps you should call AcpiInitializeObjects after the call to AcpiLoadTable, but I will check.

My usage of acpi_load_table() is to load a SSDT which is the intended use of this method according to its description. And my expectation is that the package objects of the loaded table are initialized when this function successfully returns so it aligns with the behavior of acpi_ex_load_table_op() for built-in SSDTs. Otherwise there would be no point in having this function at all, because acpi_tb_install_and_load_table() could be called directly without any difference.

Niko