On Wed, Mar 20, 2024 at 04:43:17PM +0800, Kai-Heng Feng wrote: > The following error can be observed at boot: > [ 3.717920] ACPI Error: No handler for Region [SYSI] (00000000ab9e62c5) [IPMI] (20230628/evregion-130) > [ 3.717928] ACPI Error: Region IPMI (ID=7) has no handler (20230628/exfldio-261) > > [ 3.717936] No Local Variables are initialized for Method [_GHL] > > [ 3.717938] No Arguments are initialized for method [_GHL] > > [ 3.717940] ACPI Error: Aborting method \_SB.PMI0._GHL due to previous error (AE_NOT_EXIST) (20230628/psparse-529) > [ 3.717949] ACPI Error: Aborting method \_SB.PMI0._PMC due to previous error (AE_NOT_EXIST) (20230628/psparse-529) > [ 3.717957] ACPI: \_SB_.PMI0: _PMC evaluation failed: AE_NOT_EXIST > > On Dell systems several methods of acpi_power_meter access variables in > IPMI region [0], so wait until IPMI space handler is installed by > acpi_ipmi and also wait until SMI is selected to make the space handler > fully functional. > > Since the dependency is inside BIOS's ASL code and it's not > discoverable, so use this fixup is a hack to workaround BIOS issue. ... > + if (dmi_match(DMI_SYS_VENDOR, "Dell Inc.")) { > + ipi_device = acpi_dev_get_first_match_dev("IPI0001", NULL, -1); > + > + if (ipi_device) { > + if (acpi_wait_for_acpi_ipmi()) > + dev_warn(&device->dev, "Waiting for ACPI IPMI timeout"); > + acpi_dev_put(ipi_device); > + } Can be written as if (dmi_match(DMI_SYS_VENDOR, "Dell Inc.")) { ipi_device = acpi_dev_get_first_match_dev("IPI0001", NULL, -1); if (ipi_device && acpi_wait_for_acpi_ipmi()) dev_warn(&device->dev, "Waiting for ACPI IPMI timeout"); acpi_dev_put(ipi_device); > + } -- With Best Regards, Andy Shevchenko