Hi,
I encountered the same issue on a new T480s as reported here:
https://marc.info/?l=openbsd-bugs&m=152022260714390&w=2
I am posting this to misc because the bug appears to be with Lenovo's ACPI
tables, not OpenBSD. I just wanted to provide some updated information for
anyone else who has this machine and might be experiencing the same issues.
Lenovo just released another UEFI update:
"<1.12>
UEFI: 1.12 / ECP: 1.07
- (Fix) Fix an issue where the "Configuration changed - restart the system"
message might be displayed 2 or 3 times on Non-Smart Card model when power on
the computer.
<1.11>
UEFI: 1.11 / ECP: 1.07
- (Fix) Fix an issue where system may become hot by system interrupts when
Thundrebolt is disabled in ThinkPad Setup - Security - I/O Port Access."
These sound promising because the changelog addresses both issues.
I never encountered the message "configuration changed - restart the system" in
the first place, so I can't really confirm or deny whether that fix works.
Ironically, I did see that message for the first time ever - immediately after
applying the UEFI update that claims to fix it. Thankfully I haven't seen it
again since.
Unfortunately, the thunderbolt interrupt issue has only been fixed for the
"disabled" state. With thunderbolt enabled, the ACPI interrupt storm still
happens as usual. It occurs on every cold-boot, and is always resolved by a
reboot.
I compared the old and new DSDT tables to see how they modified the thunderbolt
code. I don't know much about the ASL language, so I can't really comment on
the specifics of what they've done, but to my untrained eye, and given that it
doesn't work, it may have been unnecessary.
I have a hunch that the bug is actually in these sections:
...
If ((TBTS == 0x01))
{
Acquire (OSUM, 0xFFFF)
\_GPE.TINI (TBSE)
If ((TBMP == 0x01))
{
\_GPE.TINI (TBS1)
}
Release (OSUM)
}
...
If ((TBTS == 0x01))
{
Acquire (OSUM, 0xFFFF)
\_GPE.TINI (TBSE)
Release (OSUM)
If ((TBMP == 0x01))
{
Acquire (OSUM, 0xFFFF)
\_GPE.TINI (TBS1)
Release (OSUM)
}
...
The first block appears in a "wake" section, and the second block appears in an
"initialize" section. This fits the problem description; When I cold-boot the
system, the interrupt problem always exists. When I reboot the system, the
interrupt problem never exists. Therefore, one of these sections must not be
acquiring and releasing mutexes properly. I believe the second section is
correct, and the first section should be rewritten to match (contrary to my
expectations, this implies a cold-boot is considered to be a "wake" event
rather than an "initialization" event).
As an aside, I noticed the list of operating systems in the "initialize"
section is missing OpenBSD. How inconsiderate!
...
If (\_OSI ("Linux"))
{
\LNUX = 0x01
OSYS = 0x03E8
}
If (\_OSI ("FreeBSD"))
{
\LNUX = 0x01
OSYS = 0x03E8
}
...
Solutions, from worst to best:
1) After powering on the machine, type "reboot" at the OpenBSD bootloader.
2) Update to the latest UEFI firmware and then disable thunderbolt.
3) Report the bug to Lenovo so they can investigate and fix it at the source.
Anybody have a contact within Lenovo for option 3?