HomeFreeBSD

gicv3: Support indirect ITS tables

Description

gicv3: Support indirect ITS tables

The GICv3 ITS device supports two options for device tables. Currently
we support a single table to hold all device IDs, however when the
device ID space grows large this can be too large for the GITS_BASER
register to describe.

To handle this case, and to reduce the memory needed when this space
is sparse support the second option, the indirect table. The indirect
table is a 2 level table where the first level contains the physical
address of the second with a valid bit. The second level is an ITS
page sized table where each entry is the original entry size.

As we don't need to allocate a second level table for devices IDs that
don't exist this can reduce the allocation size.

Reviewed by: gallatin
Sponsored by: Arm Ltd
Differential Revision: https://reviews.freebsd.org/D41555

(cherry picked from commit 8b143276ae493c8f060159643d9d9cdc149e294a)

Details

Provenance
andrewAuthored on Aug 22 2023, 4:01 PM
Reviewer
gallatin
Differential Revision
D41555: gicv3: Support indirect ITS tables
Parents
rGa08bb9bdd20b: linux(4): On Linux SIGKILL can not be reset to default
Branches
Unknown
Tags
Unknown