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.