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
F174590023: D51330.id158563.diff
Sun, Oct 4, 11:49 AM
Unknown Object (File)
Tue, Sep 29, 7:36 AM
Unknown Object (File)
Sun, Sep 27, 7:15 AM
Unknown Object (File)
Sun, Sep 27, 3:34 AM
Unknown Object (File)
Wed, Sep 23, 9:10 PM
Unknown Object (File)
Sat, Sep 5, 11:13 PM
Unknown Object (File)
Aug 23 2026, 3:38 AM
Unknown Object (File)
Aug 21 2026, 6:47 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.