The Function Map Table is used to allocate queues to each function. The index into the RAM is the function number. Each entry contains the base number of the physical QID and the number of queues allocated to the function. It provides a function based, queue access protection mechanism by translating and checking accesses to logical queues (through QDMA_TRQ_SEL_QUEUE_PF and QDMA_TRQ_SEL_QUEUE_VF address space) to their physical queues. Direct register accesses to queue space beyond what is allocated to the function in the table will be canceled and an error will be logged.
Function map can be accessed through the indirect context register space QMDA_IND_CTXT_CMD registers, with QDMA_IND_CTXT_CMD.sel = 0xC. When accessed through indirect context register space, the context structure is defined by the Function Map Context Structure table.
- Program Function Map Context structure in QDMA_IND_CTXT_DATA (0x804 - 0x820) registers as listed in the below table.
- Program QDMA_IND_CTXT_CMD registers
- [19:7] : function number
- [6:5] : 2'h1 (write a context data)
- [4:1] : 4'hC (FMAP)
For more information on QDMA_IND_CTXT_CMD (0x844), Versal ACAP Register Reference (AM012).
Because these spaces exist only in the PF address map, only a physical function can modify this table.
|Bits||Bit Width||Field Name||Description|
|[255:44]||Reserved. Set to 0.|
|[44:32]||13||Qid_max||Maximum number of queues this function has.|
|[31:12]||Reserved. Set to 0.|
|[11:0]||12||Qid_base||The base queue ID for the function.|