GT Multicast/Replicated (MCR) Register Support¶
Some GT registers are designed as “multicast” or “replicated” registers:multiple instances of the same register share a single MMIO offset. MCRregisters are generally used when the hardware needs to potentially trackindependent values of a register per hardware unit (e.g., per-subslice,per-L3bank, etc.). The specific types of replication that exist varyper-platform.
MMIO accesses to MCR registers are controlled according to the settingsprogrammed in the platform’s MCR_SELECTOR register(s). MMIO writes to MCRregisters can be done in either multicast (a single write updates allinstances of the register to the same value) or unicast (a write updates onlyone specific instance) form. Reads of MCR registers always operate in aunicast manner regardless of how the multicast/unicast bit is set inMCR_SELECTOR. Selection of a specific MCR instance for unicast operations isreferred to as “steering.”
If MCR register operations are steered toward a hardware unit that isfused off or currently powered down due to power gating, the MMIO operationis “terminated” by the hardware. Terminated read operations will return avalue of zero and terminated unicast write operations will be silentlyignored. During device initialization, the goal of the variousinit_steering_*() functions is to apply the platform-specific rules foreach MCR register type to identify a steering target that will select anon-terminated instance.
MCR registers are not available on Virtual Function (VF).
Internal API¶
TODO