Thinkpad T14s AMD Gen6 boot hangs

As the title says, I've got a T14s AMD Gen6 (211-000GMX). It boots Windows and Linux fine, but FreeBSD 13.5, 14.2, 14.3 and a 15 nightly from 2025-07-08 all fail at exactly the same place. The screenshot is from the nightly in verbose mode, but as far as I can tell it's extremely similar in all the releases.

Looking at lspci on the linux side, 0x151f and 0x151a are:
Code:
c5:00.0 USB controller: Advanced Micro Devices, Inc. [AMD] Device 151f (prog-if 30 [XHCI])
    Subsystem: Lenovo Device 50f0
    Flags: bus master, fast devsel, latency 0, IRQ 43, IOMMU group 25
    Memory at b0800000 (64-bit, non-prefetchable) [size=1M]
    Capabilities: <access denied>
    Kernel driver in use: xhci_hcd

c5:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Device 151a (prog-if 30 [XHCI])
    Subsystem: Advanced Micro Devices, Inc. [AMD] Device 151a
    Flags: bus master, fast devsel, latency 0, IRQ 45, IOMMU group 26
    Memory at b0900000 (64-bit, non-prefetchable) [size=1M]
    Capabilities: <access denied>
    Kernel driver in use: xhci_hcd

My suspicion is that the USB device is incidental and it's the next event that fails, but I'm not sure where to go next. I guess I could check if my USB serial adapter will work as a console and give any further output?

20250809_233351.png
 
Followup: First impression is that I can't use my USB serial adapter as a console device at boot.
 
Is it hanging when you boot the installer? Or do you install FreeBSD successfully and only observe hangs when booting the installed system?
 
All builds of -CURRENT have the ddb(4) kernel debugger enabled by default. You can enter the debugger by pressing Ctrl+Alt+Esc. Try it when the boot visibly hangs and if you get to the ddb prompt successfully, gather as much information as possible, including what each kernel thread is doing.

Another thing to try is entering the machine's BIOS setup screen and disabling as much hardware as possible. The system may be hanging on a piece of hardware that you can easily disable/enable in BIOS.
 
  • Thanks
Reactions: Djn
Straight off the bat, with a 15 snapshot, Ctrl+Alt+Esc prints "AcpiOsExecute: task queue not started" but does not enter the debugger. As a start I'll check if it works if I trigger it before the hang.
I'll try disabling random hardware, too. It's a particularly anemic laptop BIOS, but hopefully there's something.
 
It doesn't seem like I can get it to trigger. I can do a boot -d , but the keyboard doesn't work in ddb; I suspect the two are connected.

The BIOS has a list of devices you can disable hidden under Security - I/O Port Access, but disabling everything except the external USB ports (because I need to boot from something) doesn't change anything - but I do wonder if that hides the devices or merely does something weird to block them from working.

I'll try messing around with a USB keyboard and various boot settings to see if I can get any further.
 
Huh.

If I boot with a USB keyboard plugged in, it Just Works.

The laptop keyboard works too, it's listed in dmesg as
atkbdc0 <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0
atkbd0 <AT Keyboard> irq 1 on atkbdc0
 
Try switching between UEFI boot and Legacy BIOS boot.

Once FreeBSD is installed, you can try any of these:
  1. Disable all USB ports and controllers from the BIOS setup screen. Or downgrade the USB controllers to an older USB version.
  2. Compile a custom kernel with custom code for debugging. For example, you can trigger a panic after a certain number of seconds since boot or when the message "AcpiOsExecute: task queue not started" would be generated.
  3. Do a verbose boot that hangs and then restart and do a non-verbose boot that doesn't hang. Check whether you see in dmesg the messages from the earlier verbose boot. If you can see them, compare those messages with a verbose boot that doesn't hang.
Also check if the laptop manufacturer offers newer firmware version.
 
Try switching between UEFI boot and Legacy BIOS boot.

Once FreeBSD is installed, you can try any of these:
  1. Disable all USB ports and controllers from the BIOS setup screen. Or downgrade the USB controllers to an older USB version.
  2. Compile a custom kernel with custom code for debugging. For example, you can trigger a panic after a certain number of seconds since boot or when the message "AcpiOsExecute: task queue not started" would be generated.
  3. Do a verbose boot that hangs and then restart and do a non-verbose boot that doesn't hang. Check whether you see in dmesg the messages from the earlier verbose boot. If you can see them, compare those messages with a verbose boot that doesn't hang.
Also check if the laptop manufacturer offers newer firmware version.

It's probably relevant to link to Lenovo's BIOS Emulator for my laptop; there's just not a lot in there. I believe I'm on the most recent version, but I can check. I can do the security/disable USB ports thing, but I suspect it leaves the controller live to hook up the internal USB devices. Annoyingly, it also doesn't have an UEFI/BIOS switch.

I haven't gotten around to actually installing yet, but I'll compare/contrast the dmesgs as soon as possible. (I think I'm capable of doing the kernel hacks as well, but let's not go there first.)
 
Back
Top