| ======================================= | |
| Peak Tops Limiter (PTL) sysfs Interface | |
| ======================================= | |
| Overview | |
| -------- | |
| The Peak Tops Limiter (PTL) sysfs interface enables users to control and | |
| configure the PTL feature for each GPU individually. All PTL-related | |
| sysfs files are located under `/sys/class/drm/cardX/device/ptl/`, where | |
| `X` is the GPU index. Through these files, users can enable or disable | |
| PTL, set preferred data formats, and query supported formats for each GPU. | |
| PTL sysfs files | |
| ---------------- | |
| The following files are available under `/sys/class/drm/cardX/device/ptl/`: | |
| - `ptl_enable` | |
| - `ptl_format` | |
| - `ptl_supported_formats` | |
| PTL Enable/Disable | |
| ------------------ | |
| File: `ptl_enable` | |
| Type: Read/Write (rw) | |
| Read: Returns the current PTL status as a string: `enabled` if PTL | |
| is active, or `disabled` if inactive. | |
| Write: | |
| - Write `1` or `enabled` to enable PTL | |
| - Write `0` or `disabled` to disable PTL | |
| Examples:: | |
| # Query PTL status | |
| cat /sys/class/drm/card1/device/ptl/ptl_enable | |
| # Output: enabled | |
| # Enable PTL | |
| sudo bash -c "echo 1 > /sys/class/drm/card1/device/ptl/ptl_enable" | |
| # Disable PTL | |
| sudo bash -c "echo 0 > /sys/class/drm/card1/device/ptl/ptl_enable" | |
| PTL Format (Preferred Data Formats) | |
| ----------------------------------- | |
| File: `ptl_format` | |
| Type: Read/Write (rw) | |
| Read: Returns the two preferred formats, e.g. `I8,F32`. | |
| Write: Accepts two formats separated by a comma, e.g. `I8,F32`. | |
| - Both formats must be supported and different. | |
| - If an invalid format is provided (not supported, or both formats are the | |
| same), the driver will return "write error: Invalid argument". | |
| Examples:: | |
| # Query PTL formats | |
| cat /sys/class/drm/card1/device/ptl/ptl_format | |
| # Output: I8,F32 | |
| # Set PTL formats | |
| sudo bash -c "echo I8,F32 > /sys/class/drm/card1/device/ptl/ptl_format" | |
| Supported Formats | |
| ----------------- | |
| File: `ptl_supported_formats` | |
| Type: Read-only (r) | |
| Read: Returns a comma-separated list of supported formats, e.g. | |
| `I8,F16,BF16,F32,F64`. | |
| Example:: | |
| # Check supported formats | |
| cat /sys/class/drm/card1/device/ptl/ptl_supported_formats | |
| # Output: I8,F16,BF16,F32,F64 | |
| Behavioral Notes | |
| ---------------- | |
| - PTL formats can only be set when PTL is enabled. | |
| - If PTL is disabled, `ptl_format` returns `N/A`. | |
| - Only two formats can be set at a time, and they must be from the supported set and different.. | |
| - All commands support per-GPU targeting. | |
| - Root permission is required to enable/disable PTL or change formats. | |
| - If the hardware does not support PTL, the PTL sysfs directory will not | |
| be created. | |
| Implementation | |
| -------------- | |
| The PTL sysfs nodes are implemented in `drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c`. |