Skip to content

MacBook8,1: SPI timeout on kernel 6.17 — intremap=nosid required again #78

Description

@nanachi2002

Problem

On MacBook8,1 (2015 12" MacBook) running kernel 6.17.0-19-generic (Ubuntu 25.10), the applespi driver loads but all SPI transfers time out with -110 (ETIMEDOUT). The keyboard and trackpad are non-functional.

Root Cause

IRQ 21 (assigned to the SPI controller, Intel Wildcat Point-LP LPSS at PCI 8086:9CE6, 00:15.4) receives zero interrupts. Intel VT-d interrupt remapping (DMAR-IR) is active, and Apple's DMAR ACPI table does not properly describe the LPSS interrupt routing. The interrupt remapping hardware silently drops the SPI controller's interrupts.

This can be confirmed by checking:

# Shows zero interrupt count for IRQ 21
cat /proc/interrupts | grep 21:

# Shows timeout errors
dmesg | grep applespi

Environment

  • Machine: MacBook8,1 (early 2015 12" MacBook)
  • OS: Ubuntu 25.10
  • Kernel: 6.17.0-19-generic
  • SPI controller: Intel Wildcat Point-LP LPSS (pxa2xx_spi_pci)
  • DMA controller: dw_dmac_pci at 00:15.0 (bound correctly)
  • ACPI device: APP000D, status 0x0F (present/enabled/functioning)

Fix

Add intremap=nosid to the kernel command line:

sudo sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="/GRUB_CMDLINE_LINUX_DEFAULT="intremap=nosid /' /etc/default/grub
sudo update-grub
sudo reboot

After reboot, verify:

# Should now show non-zero interrupt counts
cat /proc/interrupts | grep 21:

# Should show no timeout errors
dmesg | grep applespi

Notes

  • The README already mentions intremap=nosid for kernels before 4.11, but this issue has resurfaced on 6.17. It may be worth updating the README to note this applies to modern kernels as well.
  • If intremap=nosid doesn't work, intremap=off (disables interrupt remapping entirely) is a fallback.
  • This is a separate issue from the compilation fixes in PR Fix compilation errors for Linux kernel 6.17 #77.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions