You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
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.
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:
Environment
pxa2xx_spi_pci)dw_dmac_pciat00:15.0(bound correctly)Fix
Add
intremap=nosidto 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 rebootAfter reboot, verify:
Notes
intremap=nosidfor 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.intremap=nosiddoesn't work,intremap=off(disables interrupt remapping entirely) is a fallback.