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
F166331107: D51330.id158563.diff
Wed, Aug 12, 11:16 PM
F166331106: D51330.id.diff
Wed, Aug 12, 11:16 PM
F166331032: D51330.diff
Wed, Aug 12, 11:15 PM
Unknown Object (File)
Wed, Aug 12, 1:08 AM
Unknown Object (File)
Mon, Aug 10, 10:30 PM
Unknown Object (File)
Mon, Aug 10, 11:46 AM
Unknown Object (File)
Sat, Aug 8, 6:46 PM
Unknown Object (File)
Sat, Aug 8, 10:04 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.