Skip to content

t2bce_audio regression on MacBookAir8,1 since linux-t2 7.1.5: page fault in t2audio_pcm_open #20

Description

@roy-devx

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions