Interrupt(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– Interrupt

okay bestie, so this is the Interrupt page from the Kernel API Manual, and like… the title says Interrupt but the whole vibe is actually about gmux?? iconic of it honestly, just roll with me 🫢


gmux is also connected to a GPIO pin of the southbridge, and through that it's able to trigger an ACPI GPE. The ACPI name GMGP holds this GPIO pin's number. On the MBP5 2008/09 it's GPIO pin 22 of the Nvidia MCP79, on the following generations it's GPIO pin 6 of the Intel PCH, and on MMIO gmux's it's pin 21. literally three different pins depending on the era, she contains multitudes 😭

The GPE merely signals that an interrupt occurred β€” the actual type of event is identified by reading a gmux register. lowkey the GPE is just the notification, not the whole story πŸ’…

In addition to the GMGP name, gmux's ACPI device also has two methods, GMSP and GMLV. GMLV likely means "GMUX Level", and it reads the value of the GPIO, while GMSP likely means "GMUX Set Polarity", and it seems to write to the GPIO's value. note the likely and seems β€” we are being honest about what we know here ngl ✨

On newer MacBooks (this was introduced with or sometime before the MacBookPro14,3), the ACPI GPE method differentiates between the OS type: on Darwin, only a notification is signaled, whereas on other OSes, the GPIO's value is read and then inverted. so Darwin gets the ✨ notification-only ✨ treatment and everyone else gets the read-and-invert life, okay πŸ’€

Because Linux masquerades as Darwin, it ends up in the notification-only code path. On MMIO gmux's, this seems to lead to us being unable to clear interrupts, unless we call GMSP(0). Without this, there is a flood of status=0 interrupts that can't be cleared 😭😭 this issue seems to be unique to MMIO gmux's β€” so like, not everyone's problem, but if it's your problem it is so your problem.

fr fr bestie: no GMSP(0) call, no interrupt clearing. just a whole flood of un-clearable status=0 interrupts. the drama is real πŸ™ˆ

✨ SEE ALSO ✨

  • Kernel file ./drivers/platform/x86/apple-gmux.c
  • Overview(9)
  • Backlight control(9)
  • Graphics mux(9)
  • Power control(9)
  • Debugfs Interface(9)

that's the whole page, no skips, no crumbs left behind πŸŽ€ sending u off with the receipts: this one lives in ./drivers/platform/x86, dated October 2026 β€” go read the other (9) pages too, they eat πŸ’…πŸ‘‘

πŸ“¦ where this page comes from