HomeFreeBSD

intrng: Extract arm/arm64 IPI->PIC glue code

Description

intrng: Extract arm/arm64 IPI->PIC glue code

The arm and arm64 implementations of dispatching IPIs via PIC_IPI_SEND
are almost identical, and entirely MI with the lone exception of a
single store barrier on arm64 (that is likely either redundant or needed
on arm too). Thus, de-duplicate this code by moving it to INTRNG as a
generic IPI glue framework. The ipi_* functions remain declared in MD
smp.h headers and implemented in MD code, but are trivial wrappers
around intr_ipi_send that could be made MI, at least for INTRNG ports,
at a later date.

Note that, whilst both arm and arm64 had an ii_send member in intr_ipi
to abstract over how to send interrupts,, they were always ultimately
using PIC_IPI_SEND, and so this complexity has been removed. A follow-up
commit will re-introduce the same flexibility by instead allowing a
device other than the root PIC to be registered as the IPI sender.

As part of this, strengthen a MAXCPU assertion that was missed in commit
2f0b059eeafc ("intrng: switch from MAXCPU to mp_ncpus") (which itself is
mis-titled).

Reviewed by: mmel, mhorne
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D35898

(cherry picked from commit fae8755f16ff5b9bdc32df046e0f16c0cbb48a29)

Details

Provenance
jrtc27Authored on Jan 24 2024, 11:49 PM
Reviewer
mmel
Differential Revision
D35898: intrng: Extract arm/arm64 IPI->PIC glue code
Parents
rGa73592e0d013: intrng: Remove irq_root_ipicount and corresponding intr_pic_claim_root arg
Branches
Unknown
Tags
Unknown