DT Configuration for Linux VSE Driver#
This topic applies only to Linux platforms.
VSE driver reads DT node vse@xxxx
nodes to enable and derive the configuration
for a particular engine and these values are then used to enumerate device nodes.
This DT configuration is based on PCT and should align with the same. Configuration such as buffer sizes, SMMU ID, IVC entries, and so on, if they differ between PCT and DT are incorrect.
Properties defined in each vse@xxxx
node:
compatible
property: Defines unique compatible string to identify the hardware platform.se-engine-id
property: Defines the engine ID.#zero-copy
property: Flag to enable zero-copy support. (Supported only for Thor).If this property is present, then the following statements are applicable:
For SHA Engine nodes, only single shot SHA2/SHA3 operations are supported.
For AES Engine nodes, only AES-GMAC operations are supported.
iommus
property: specifies the SMMU handle and Stream ID used for DMA buffer allocation.status
property: Flag to enable/disable node is enabled or not. If this node is marked disabled, then support for the particular engine is not enabled.nvidia,ivccfg_cnt
property: Number of IVC queues supported for the engine. This value should match the number of entries in “nvidia,ivccfg” property. The sum of values of this property of all nodes should be less than or equal to 70.nvidia,ivccfg
property: Specifies the configuration for each IVC queue. The format and description/supported range for each field is specified below
nvidia,ivccfg = Instance cfg 1,
Instance cfg 2,
..
Instance cfg n; // n = nvidia,ivccfg_cnt
Where each ``Instance cfg`` has the format:
<IVC Queue ID, Engine ID, Instance ID, Priority, Maximum Supported Buffer Size,
Channel Group ID, Stream ID, GCM Decrypt Supported Flag, GCM Decrypt Buffer Size,
GCM Decrypt Mempool ID, GCM Decrypt Mempool Size>
For Thor#
Field |
Description |
Range |
---|---|---|
IVC Queue ID |
Unique ID of channel for communicating between Guest OS and SE Server. |
Valid range is 0-999 |
Engine ID |
Engine used for processing IVC queue requests.
Needs to be identical to the value of
se-engine-id property of the node |
0: GPSE_ENGINE_AES0
1: GPSE_ENGINE_AES1
2: GPSE_ENGINE_SHA
7: GCSE1_ENGINE_AES0
8: GCSE1_ENGINE_AES1
9: GCSE1_ENGINE_SHA
10: GCSE2_ENGINE_AES0
11: GCSE2_ENGINE_AES1
12: GCSE2_ENGINE_SHA
|
Instance ID |
Instance ID.
Needs to be unique for particular Engine ID
|
0-99 |
Priority |
Priority of the IVC queue. VSE driver does not use this. |
0: Low Priority
1: High Priority
|
Maximum Supported Buffer Size |
Maximum supported input buffer size |
For Non-zero-copy nodes: 1 to (16MB - 1)
For zero-copy nodes: 0
|
Channel Group ID |
Group ID of the device node corresponding to the IVC queue |
A non-root value |
Stream ID |
Stream ID used for mapping allocated DMA buffer.
Needs to be identical to Stream ID specified in the
iommus property. |
NA |
GCM decrypt supported flag |
Unused field |
0 |
GCM decrypt buffer size |
Unused field |
0 |
Mempool ID |
Unused field |
0 |
Mempool size |
Unused field |
0 |
For Orin#
Field |
Description |
Range |
---|---|---|
IVC Queue ID |
Unique ID of channel for communicating between Guest OS and SE Server. |
Valid range is 0-999 |
Engine ID |
Engine used for processing IVC queue requests.
Needs to be identical to the value of
se-engine-id property of the node |
0: GPSE_ENGINE_AES0
1: GPSE_ENGINE_AES1
2: GPSE_ENGINE_SHA
6: TSEC_ENGINE
|
Instance ID |
Instance ID.
Needs to be unique for particular Engine ID
|
0-99 |
Priority |
Priority of the IVC queue. This is not used by VSE driver currently. |
0: Low Priority
1: High Priority
|
Maximum Supported Buffer Size |
Maximum supported input buffer size |
For SE Engines: 1 to (16MB - 1)
For TSEC Engine: 1 to (64KB - 1)
|
Channel Group ID |
Group ID of the device node corresponding to the IVC queue |
A non-root value |
Stream ID |
Stream ID used for mapping allocated DMA buffer.
Needs to be identical to Stream ID specified in
iommus property. |
1 to 126 |
GCM decrypt supported flag |
Flag to indicate if GCM decryption is supported.
Applicable only for SE AES Engines.
|
0: GCM decryption is not supported.
1: GCM decryption is supported.
|
GCM decrypt buffer size |
Maximum supported input buffer size for GCM decryption.
GCM decryption is supported via mempool if input buffer size is less than or equal to mempool size;
otherwise, GCM decryption is supported via GPCDMA.
Applicable only for SE AES Engines.
|
0: GCM decryption is not supported.
0 < gcmdec_buf_size <= 5MB: GCM decryption is supported using mempool.
|
Mempool ID |
Unique ID of mempool to share GCM decrypt ciphertext/plaintext between
SE Server and Guest OS.
Applicable only for SE AES Engines.
|
0 to 999 |
Mempool size |
Size of the mempool to share GCM decrypt ciphertext/plaintext between
SE Server and Guest OS.
Mempool size must be less than or equal to GCM decrypt buffer size.
Applicable only for SE AES Engines.
|
0: Mempool usage is not supported.
0 < Mempool Size <= 64KB: Mempool usage is supported.
|