On Wed, 19 Jun 2019, Moore, Robert wrote:


-----Original Message-----
From: Nikolaus Voss [mailto:[email protected]]
Sent: Wednesday, June 19, 2019 2:31 AM
To: Moore, Robert <[email protected]>
Cc: Rafael J. Wysocki <[email protected]>; Rafael J. Wysocki
<[email protected]>; Len Brown <[email protected]>; Schmauss, Erik
<[email protected]>; Jacek Anaszewski
<[email protected]>; Pavel Machek <[email protected]>; Dan Murphy
<[email protected]>; Thierry Reding <[email protected]>; ACPI Devel
Maling List <[email protected]>; open list:ACPI COMPONENT
ARCHITECTURE (ACPICA) <[email protected]>; [email protected];
Linux PWM List <[email protected]>; Linux Kernel Mailing List
<[email protected]>; [email protected]
Subject: RE: [PATCH v2 1/3] ACPI: Resolve objects on host-directed table
loads

Hi Bob,

On Tue, 18 Jun 2019, Moore, Robert wrote:


-----Original Message-----
From: Moore, Robert
Sent: Tuesday, June 18, 2019 1:25 PM
To: 'Nikolaus Voss' <[email protected]>
Cc: 'Rafael J. Wysocki' <[email protected]>; 'Rafael J. Wysocki'
<[email protected]>; 'Len Brown' <[email protected]>; Schmauss, Erik
<[email protected]>; 'Jacek Anaszewski'
<[email protected]>; 'Pavel Machek' <[email protected]>; 'Dan
Murphy' <[email protected]>; 'Thierry Reding'
<[email protected]>; 'ACPI Devel Maling List'
<[email protected]>; 'open list:ACPI COMPONENT ARCHITECTURE
(ACPICA)' <[email protected]>; 'linux- [email protected]' <linux-
[email protected]>; 'Linux PWM List'
<[email protected]>; 'Linux Kernel Mailing List' <linux-
[email protected]>
Subject: RE: [PATCH v2 1/3] ACPI: Resolve objects on host-directed
table loads

If it is in fact the AcpiLoadTable interface that is incorrect, that
of course is different. I'll check that out next.

[Moore, Robert]

Yes, this is the issue, not specifically the Load() operator, but the
AcpiLoadTable interface only.

thanks for checking this out. So what is the conclusion? Is my fix of
AcpiLoadTable() sufficient or do we need a different solution?

Niko



Your change is in the correct area. We want to do something like this, however:

diff --git a/source/components/executer/exconfig.c 
b/source/components/executer/exconfig.c
index 84a058ada..eba1a6d28 100644
--- a/source/components/executer/exconfig.c
+++ b/source/components/executer/exconfig.c
@@ -342,10 +342,9 @@ AcpiExLoadTableOp (
        return_ACPI_STATUS (Status);
    }

-    /* Complete the initialization/resolution of package objects */
+    /* Complete the initialization/resolution of new objects */

-    Status = AcpiNsWalkNamespace (ACPI_TYPE_PACKAGE, ACPI_ROOT_OBJECT,
-        ACPI_UINT32_MAX, 0, AcpiNsInitOnePackage, NULL, NULL, NULL);
+    AcpiNsInitializeObjects ();

    /* Parameter Data (optional) */

@@ -620,10 +619,11 @@ AcpiExLoadOp (
        return_ACPI_STATUS (Status);
    }

-    /* Complete the initialization/resolution of package objects */
+    /* Complete the initialization/resolution of new objects */

-    Status = AcpiNsWalkNamespace (ACPI_TYPE_PACKAGE, ACPI_ROOT_OBJECT,
-        ACPI_UINT32_MAX, 0, AcpiNsInitOnePackage, NULL, NULL, NULL);
+    AcpiExExitInterpreter ();
+    AcpiNsInitializeObjects ();
+    AcpiExEnterInterpreter ();

    /* Store the DdbHandle into the Target operand */

diff --git a/source/components/tables/tbxfload.c 
b/source/components/tables/tbxfload.c
index 217d54bf0..1e17db6c8 100644
--- a/source/components/tables/tbxfload.c
+++ b/source/components/tables/tbxfload.c
@@ -479,6 +479,13 @@ AcpiLoadTable (
    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 ();
+    }
+
    return_ACPI_STATUS (Status);
}

Ok, I see your are taking this up (I was a bit unsure after your previous post). Thanks,
Niko

Reply via email to