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

From: Nikolaus Voss
Date: Mon Jun 17 2019 - 02:29:22 EST


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().

Niko