• Lv Zheng's avatar
    ACPICA / Interpreter: Fix a regression triggered because of wrong Linux ECDT support · 5508df89
    Lv Zheng authored
    It is reported that the following commit triggers regressions:
     Linux commit: efaed9be
     ACPICA commit: 31178590dde82368fdb0f6b0e466b6c0add96c57
     Subject: ACPICA: Events: Enhance acpi_ev_execute_reg_method() to
              ensure no _REG evaluations can happen during OS early boot
              stages
    
    This is because that the ECDT support is not corrected in Linux, and Linux
    requires to execute _REG for ECDT (though this sounds so wrong), we need to
    ensure acpi_gbl_namespace_initialized is set before ECDT probing in order
    for _REG to be executed. Since we have to move
    "acpi_gbl_namespace_initialized = TRUE" to the initialization step
    happening before ECDT probing, acpi_load_tables() is the best candidate for
    now. Thus this patch fixes the regression by doing so.
    
    But if the ECDT support is fixed, Linux will not execute _REG for ECDT, and
    ECDT probing will happen before acpi_load_tables(). At that time, we still
    want to ensure acpi_gbl_namespace_initialized is set after executing
    acpi_ns_initialize_objects() (under the condition of
    acpi_gbl_group_module_level_code = FALSE), this patch also moves
    acpi_ns_initialize_objects() to acpi_load_tables() accordingly.
    
    Since acpi_ns_initialize_objects() doesn't seem to be skippable, this
    patch also removes ACPI_NO_OBJECT_INIT for the one invoked in
    acpi_load_tables(). And since the default region handlers should always be
    installed before loading the tables, this patch also removes useless
    acpi_gbl_group_module_level_code check accordingly. Reported by Chris
    Bainbridge, Fixed by Lv Zheng.
    
    Fixes: efaed9be (ACPICA: Events: Enhance acpi_ev_execute_reg_method() to ensure no _REG evaluations can happen during OS early boot stages)
    Reported-and-tested-by: default avatarChris Bainbridge <chris.bainbridge@gmail.com>
    Signed-off-by: default avatarLv Zheng <lv.zheng@intel.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    5508df89
nsinit.c 18.1 KB