t2bce_audio regression on MacBookAir8,1 since linux-t2 7.1.5: page fault in t2audio_pcm_open
Hardware
- Model: MacBook Air 2018 (MacBookAir8,1)
- DMI: Apple Inc. MacBookAir8,1 / Mac-827FAC58A8FDFA22
- Distribution: Arch Linux
- Audio: Apple T2 Audio
Problem
Internal T2 audio works correctly with linux-t2 7.1.4-2, but is broken with both:
linux-t2 7.1.5-1
linux-t2 7.1.6-1
With 7.1.5/7.1.6, WirePlumber hangs while opening the T2 audio PCM device. wpctl status hangs indefinitely and pactl times out.
Downgrading back to linux-t2 7.1.4-2 immediately restores normal audio functionality.
I tested upgrading and downgrading more than once and the behavior follows the kernel version.
Kernel command line
BOOT_IMAGE=/vmlinuz-linux-t2 root=UUID=<redacted> rw intel_iommu=on iommu=pt pm_async=off loglevel=3
Working kernel: 7.1.4-2
$ uname -r
7.1.4-arch1-Watanare-T2-2-t2
wpctl status works normally:
Audio
├─ Devices:
│ 50. Apple Audio Device [alsa]
│ 51. Internal Audio [alsa]
│
├─ Sinks:
│ * 58. Apple Audio Device Speakers
│ 59. Apple Audio Device Headphones
│
├─ Sources:
│ * 60. Apple Audio Device BuiltinMic
│ 61. Apple Audio Device HeadsetMic
WirePlumber is also in a normal sleeping state:
$ ps -o pid,state,wchan:32,comm -C wireplumber
PID S WCHAN COMMAND
1875 S poll_schedule_timeout.constprop. wireplumber
ALSA exposes the Speaker PCM correctly:
card: 0
device: 0
subdevice: 0
stream: PLAYBACK
id: Speaker
name: Speaker
subname: subdevice #0
subdevices_count: 1
subdevices_avail: 1
Broken kernel: 7.1.6-1
$ uname -r
7.1.6-arch1-Watanare-T2-1-t2
During initialization t2bce_audio reports:
t2bce_audio: Subdevice not found for BufferStruct device Speaker
t2bce_audio: Subdevice not found for BufferStruct device Codec Output
t2bce_audio: Subdevice not found for BufferStruct device Digital Mic
t2bce_audio: Subdevice not found for BufferStruct device Codec Input
t2bce_audio: Subdevice not found for BufferStruct device Speaker@mcpl\x04
A few seconds later the kernel reports a page fault when WirePlumber attempts to open the PCM device:
#PF: error_code(0x0000) - not-present page
CPU: 0 PID: 745 Comm: wireplumber
Hardware name: Apple Inc. MacBookAir8,1/Mac-827FAC58A8FDFA22
RIP: 0010:t2audio_pcm_open+0x48/0x110 [t2bce_audio]
Relevant stack:
t2audio_pcm_open+0x48/0x110 [t2bce_audio]
snd_pcm_open_substream
snd_pcm_open
snd_pcm_playback_open
do_sys_openat2
After this happens, WirePlumber becomes stuck in uninterruptible sleep:
PID S WCHAN COMMAND
1826 D snd_pcm_substream_proc_status_re wireplumber
It cannot be terminated normally, and system shutdown/reboot takes a very long time.
ALSA behavior on 7.1.6
The Apple T2 card itself is detected:
0 [Audio]: - Apple T2 Audio
Apple T2 Audio
1 [PCH]: HDA-Intel - HDA Intel PCH
However, aplay -l only gets as far as:
card 0: Audio [Apple T2 Audio], device 4: Bridge Loopback [Bridge Loopback]
and then hangs. Even Ctrl+C does not return to the shell.
The device nodes do exist, including:
pcmC0D100c
pcmC0D101p
pcmC0D102p
pcmC0D103c
pcmC0D4c
pcmC0D4p
but /proc/asound/card0/pcm0p/info, which exists and works on 7.1.4, is not present on 7.1.6.
PipeWire symptoms
After the failure:
$ pactl info
Connection failure: Timeout
$ pactl list short sinks
Connection failure: Timeout
wpctl status hangs indefinitely.
pavucontrol remains at:
Establishing connection to PulseAudio. Please wait...
On some boots audio output may initially work, but the PipeWire/WirePlumber control interface still becomes unresponsive.
Regression
The behavior appears to be:
linux-t2 7.1.4-2
-> works normally
linux-t2 7.1.5-1
-> broken
downgrade to 7.1.4-2
-> works normally again
upgrade to 7.1.5-1
-> broken again
linux-t2 7.1.6-1
-> still broken
downgrade to 7.1.4-2
-> works normally again
This looks like a regression in t2bce_audio, possibly related to the mapping/initialization of the audio BufferStruct subdevices.
The page fault in t2audio_pcm_open() appears to occur after the driver has already reported that the Speaker/Codec/Mic BufferStruct subdevices could not be found.
The complete dmesg output from the affected 7.1.6 boot is attached below.
貼り付けられたテキスト(1 点)(20260809-213602).txt
t2bce_audio regression on MacBookAir8,1 since linux-t2 7.1.5: page fault in t2audio_pcm_open
Hardware
Problem
Internal T2 audio works correctly with
linux-t2 7.1.4-2, but is broken with both:linux-t2 7.1.5-1linux-t2 7.1.6-1With 7.1.5/7.1.6, WirePlumber hangs while opening the T2 audio PCM device.
wpctl statushangs indefinitely andpactltimes out.Downgrading back to
linux-t2 7.1.4-2immediately restores normal audio functionality.I tested upgrading and downgrading more than once and the behavior follows the kernel version.
Kernel command line
Working kernel: 7.1.4-2
wpctl statusworks normally:WirePlumber is also in a normal sleeping state:
ALSA exposes the Speaker PCM correctly:
Broken kernel: 7.1.6-1
During initialization
t2bce_audioreports:A few seconds later the kernel reports a page fault when WirePlumber attempts to open the PCM device:
Relevant stack:
After this happens, WirePlumber becomes stuck in uninterruptible sleep:
It cannot be terminated normally, and system shutdown/reboot takes a very long time.
ALSA behavior on 7.1.6
The Apple T2 card itself is detected:
However,
aplay -lonly gets as far as:and then hangs. Even Ctrl+C does not return to the shell.
The device nodes do exist, including:
but
/proc/asound/card0/pcm0p/info, which exists and works on 7.1.4, is not present on 7.1.6.PipeWire symptoms
After the failure:
wpctl statushangs indefinitely.pavucontrolremains at:On some boots audio output may initially work, but the PipeWire/WirePlumber control interface still becomes unresponsive.
Regression
The behavior appears to be:
This looks like a regression in
t2bce_audio, possibly related to the mapping/initialization of the audio BufferStruct subdevices.The page fault in
t2audio_pcm_open()appears to occur after the driver has already reported that the Speaker/Codec/Mic BufferStruct subdevices could not be found.The complete
dmesgoutput from the affected 7.1.6 boot is attached below.貼り付けられたテキスト(1 点)(20260809-213602).txt