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, Dec 11, 2:58 AM
Unknown Object (File)
Sat, Nov 29, 10:38 AM
Unknown Object (File)
Sun, Nov 23, 6:27 AM
Unknown Object (File)
Mon, Nov 17, 3:52 AM
Unknown Object (File)
Nov 12 2025, 10:06 PM
Unknown Object (File)
Nov 5 2025, 3:55 AM
Unknown Object (File)
Nov 4 2025, 1:12 PM
Unknown Object (File)
Nov 2 2025, 10:57 PM
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.