Hard Processor System Technical Reference Manual: Agilex™ 5 SoCs

ID 814346
Date 4/01/2024
Public
Document Table of Contents

4.3.7.5. Configuring the Stream Table

The SMMU uses a set of data structure in memory to locate translation data. Registers hold the base addresses of the initial root structure, the Stream Table. A Context Descriptor (CD) represents stage 1 translation, and a Stream table entry (STE) represents the stage 2 translation.

The Linear Stream Table is shown, below:

Figure 41. Linear Stream Table

And the two-level stream table is shown, below:

Figure 42. Example of Two-level Stream Table with SPLIT == 8
If two level Stream Table is used, then the first level STE structure is called Stream Level Descriptor as shown in the following figures.
Figure 43. Level 1 Stream Table Descriptor
Figure 44. Stream Entry Descriptor

The STE structure is given in the following figure.

Figure 45. STE Structure

The overall Stream Table allocation mechanism is given below:

  • Allocate the memory for the Stream Table
  • Configure the SMMU_STRTAB_BASE_CFG (0x88) register for below fields:
    • FMT: Linear or 2-level stream table
    • SPLIT: StreamID split point for multi-level table
    • LOG2SIZE: Table size as log2(entries)
  • Configure the base address for Stream Table by writing to SMMU_STRTAB_BASE (0x80).
    • ADDR: Physical address of Stream table base
  • Keep all STE.V as 0 to mark them invalid until everything is configured by the software.
  • Perform the Data Synchronization Barrier (DSB) operation to ensure written data is observable to SMMU.
    • The DSB memory barriers affect reads and writes to the memory system generated by load/store instructions and data or unified cache maintenance being executed by the processor.