Page MenuHomeFreeBSD

subr_intr: Support per-CPU IPI vectors
Needs ReviewPublic

Authored by andrew on Jul 15 2025, 4:36 PM.
Tags
None
Referenced Files
Unknown Object (File)
Thu, May 14, 3:41 PM
Unknown Object (File)
Thu, May 14, 12:34 AM
Unknown Object (File)
Mon, May 11, 4:25 AM
Unknown Object (File)
Mon, Apr 27, 7:15 AM
Unknown Object (File)
Apr 6 2026, 8:06 AM
Unknown Object (File)
Mar 20 2026, 6:37 AM
Unknown Object (File)
Mar 19 2026, 12:35 PM
Unknown Object (File)
Mar 9 2026, 7:03 AM
Subscribers

Details

Reviewers
mmel
mhorne
jrtc27
Summary

The Arm GICv5 replaces a single software generated interrupt that is
identical on each CPU with an instruction that can raise a specified
Shared Peripheral Interrupt (SPI) or Logical Peripheral Interrupt
(LPI).

As these interrupts will only target a single CPU we will need to
support sending multiple IPIs when targeting multiple CPUs. As such
we need an intr_irqsrc for each CPU/IPI pair.

Add support for this to the common code so other drivers can make use
of this support if needed.

Sponsored by: Arm Ltd

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Skipped
Unit
Tests Skipped
Build Status
Buildable 65464
Build 62347: arc lint + arc unit

Event Timeline

This may be a stupid question as I've not reminded myself of the details of INTRng and IPIs, but why can't the PIC expose a single isrc that internally happens to send multiple interrupts as far as the hardware is concerned?

but why can't the PIC expose a single isrc that internally happens to send multiple interrupts as far as the hardware is concerned?

Exactly, unless you want to have per CPU specific vectors for the same SPI/LPI. But that sounds too crazy to be true.