ACPI BIOS Error (bug) Could not resolve symbol

From Thomas-Krenn-Wiki
Jump to navigation Jump to search

On certain systems, error messages appear during the boot process of the Linux kernel ACPI BIOS Error (bug) Could not resolve symbol that can also be called up via dmesg. In this article, we show background information and approaches how to solve problems of the ACPI table.

Example of error messages in dmesg

The following output is taken from a test system with N5105 CPU (system is running under Debian 11 with test kernel 5.18:

root@debian-11:~# dmesg | grep -C 1 "ACPI BIOS"
[    0.212498] ACPI: Enabled 6 GPEs in block 00 to 7F
[    0.226451] ACPI BIOS Error (bug): Could not resolve symbol [\_SB.UBTC.RUCC], AE_NOT_FOUND (20211217/psargs-330)
[    0.226461] ACPI Error: Aborting method \_SB.PC00.XHCI.RHUB.HS03._PLD due to previous error (AE_NOT_FOUND) (20211217/psparse-529)
[    0.226520] ACPI BIOS Error (bug): Could not resolve symbol [\_SB.UBTC.RUCC], AE_NOT_FOUND (20211217/psargs-330)
[    0.226526] ACPI Error: Aborting method \_SB.PC00.XHCI.RHUB.HS04._PLD due to previous error (AE_NOT_FOUND) (20211217/psparse-529)
[    0.227178] ACPI BIOS Error (bug): Could not resolve symbol [\_SB.UBTC.RUCC], AE_NOT_FOUND (20211217/psargs-330)
[    0.227184] ACPI Error: Aborting method \_SB.PC00.XHCI.RHUB.SS01._PLD due to previous error (AE_NOT_FOUND) (20211217/psparse-529)
[    0.227309] ACPI BIOS Error (bug): Could not resolve symbol [\_SB.UBTC.RUCC], AE_NOT_FOUND (20211217/psargs-330)
[    0.227315] ACPI Error: Aborting method \_SB.PC00.XHCI.RHUB.SS02._PLD due to previous error (AE_NOT_FOUND) (20211217/psparse-529)
--
[    1.407003] hub 1-0:1.0: 8 ports detected
[    1.407515] ACPI BIOS Error (bug): Could not resolve symbol [\_SB.UBTC.RUCC], AE_NOT_FOUND (20211217/psargs-330)
[    1.407545] ACPI Error: Aborting method \_SB.PC00.XHCI.RHUB.HS03._PLD due to previous error (AE_NOT_FOUND) (20211217/psparse-529)
[    1.407610] ACPI BIOS Error (bug): Could not resolve symbol [\_SB.UBTC.RUCC], AE_NOT_FOUND (20211217/psargs-330)
[    1.407631] ACPI Error: Aborting method \_SB.PC00.XHCI.RHUB.HS04._PLD due to previous error (AE_NOT_FOUND) (20211217/psparse-529)
--
[    1.409096] hub 2-0:1.0: 6 ports detected
[    1.409162] ACPI BIOS Error (bug): Could not resolve symbol [\_SB.UBTC.RUCC], AE_NOT_FOUND (20211217/psargs-330)
[    1.409185] ACPI Error: Aborting method \_SB.PC00.XHCI.RHUB.SS01._PLD due to previous error (AE_NOT_FOUND) (20211217/psparse-529)
[    1.409251] ACPI BIOS Error (bug): Could not resolve symbol [\_SB.UBTC.RUCC], AE_NOT_FOUND (20211217/psargs-330)
[    1.409552] ACPI Error: Aborting method \_SB.PC00.XHCI.RHUB.SS02._PLD due to previous error (AE_NOT_FOUND) (20211217/psparse-529)

DSDT and SSDT

DSDT and SSDT are part of the ACPI specification.[1]

DSDT (Differentiated System Description Table) is a part of the ACPI-specification, a concrete part of the system fixed description. The DSDT consists of a "system description table header", followed by data in "Definition Block format". DSDT provides information on supported power supply events in a certain system. ACPI-tables are provided by the manufacturers of the hardware.

The SSDT (Secondary System Description Table) is a continuation of the DSDT: There may be more SSDTs available. After OSPM has loaded the DSDT to create the ACPI-namespace, every SSDT that is stated in a clear OEM-table-ID is loaded in the stated RSDT/XSDT order. Additional tables can only add data, but cannot overwrite data from former tables. Additional tables can only add data; they cannot overwrite data from previous tables. This allows the OEM to provide basic support in one table and add minor system options in other tables.

Adjust DSDT

Perform the following steps for adjusting the DSDT. [2]

Extract the binary ACPI-tables:

# cat /sys/firmware/acpi/tables/DSDT > dsdt.dat

Divide the ACPI-table in a .dsl-file:

$ iasl -d dsdt.dat

Try to create a Hex-AML-table (in C) out of the .dsl-file:

$ iasl -tc dsdt.dsl

Perform then the required adjustments. (Hint: Adjustments for the above shown example are not yet shown here. This paragraph is still in progress.)

Increase the OEM-version. Otherwise, the kernel will not use the changed ACPI-table. For example, before the OEM-version gets increased: DefinitionBlock ("DSDT.aml", "DSDT", 2, "INTEL ", "TEMPLATE", 0x00000000)

or:
DefinitionBlock ("", "DSDT", 2, "ALASKA", "A M I ", 0x01072009)

After increasement of OEM-version:

DefinitionBlock ("DSDT.aml", "DSDT", 2, "INTEL ", "TEMPLATE", 0x00000001)
or in the second example:
DefinitionBlock ("", "DSDT", 2, "ALASKA", "A M I ", 0x01072010)

Recreate the Hex-AML-table, after you have corrected all mistakes and increased the OEM-version:

$ iasl -tc dsdt.dsl

Usage of the changed code with CPIO archive

Hints:

  • After every BIOS-update, you have to repair/adjust the DSDT again and reperform those steps!
  • For this method, the kernel configuration ACPI_TABLE_UPGRADE=y must be activated (see /boot/config...).

Create the following folder structure:

$ cp dsdt.aml ssdt1.aml kernel/firmware/acpi

In the same folder where the newly created kernel/ folder is located, run the following command:

$ find kernel | cpio -H newc --create > acpi_override

This creates the CPIO archive containing the fixed ACPI tables. Copy the archive to the boot directory.

# cp acpi_override /boot

Add the following entry under # cp acpi_override /boot in the /etc/default/grub file:

GRUB_EARLY_INITRD_LINUX_CUSTOM=acpi_override

Update the Grub configuration:

# update-grub

Verify, if the new DSDT is used

Perform a restart and verify if the adjusted DSDT version is displayed, for example:

root@debian-11:~# dmesg | grep DSDT
[    0.018759] ACPI: DSDT ACPI table found in initrd [kernel/firmware/acpi/dsdt.aml][0x46898]
[    0.018868] ACPI: Table Upgrade: override [DSDT-ALASKA-  A M I ]
[    0.018870] ACPI: DSDT 0x00000000746D8000 Physical table override, new table: 0x0000000071A3C000
[    0.018873] ACPI: DSDT 0x0000000071A3C000 046898 (v02 ALASKA A M I    01072010 INTL 20200925)
[    0.018949] ACPI: Reserving DSDT table memory at [mem 0x71a3c000-0x71a82897]

The increased version number 01072010 confirms that the adjusted DSDT is used.

More information

References

Einzelnachweise

  1. ACPI and UEFI Specifications (uefi.org)
  2. DSDT (wiki.archlinux.org)


Author: Werner Fischer

Werner Fischer, working in the Knowledge Transfer team at Thomas-Krenn, completed his studies of Computer and Media Security at FH Hagenberg in Austria. He is a regular speaker at many conferences like LinuxTag, OSMC, OSDC, LinuxCon, and author for various IT magazines. In his spare time he enjoys playing the piano and training for a good result at the annual Linz marathon relay.


Translator: Alina Ranzinger

Alina has been working at Thomas-Krenn.AG since 2024. After her training as multilingual business assistant, she got her job as assistant of the Product Management and is responsible for the translation of texts and for the organisation of the department.


Related articles

Correction of Apache Internal Server Error due to htaccess bad flag delimiters
Installation and configuration of PhpMyAdmin
Search for Linux kernel source code