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)
Sep 7 2025, 11:15 PM
Unknown Object (File)
Sep 4 2025, 7:29 AM
Unknown Object (File)
Sep 2 2025, 9:10 AM
Unknown Object (File)
Aug 26 2025, 2:49 AM
Unknown Object (File)
Aug 26 2025, 2:45 AM
Unknown Object (File)
Aug 26 2025, 1:10 AM
Unknown Object (File)
Aug 21 2025, 5:24 AM
Unknown Object (File)
Aug 21 2025, 4:37 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.