.. _opal-psr: ====================== OPAL Power Shift Ratio ====================== Sometimes power management firmware needs to throttle power availability to system components in order to keep within power cap or thermal limits. It's possible to set a preference as to what trade-offs power management firmware will make. For example, certain workloads may heavily prefer throttling CPU over GPUs or vice-versa. .. _OPAL_GET_POWER_SHIFT_RATIO: OPAL_GET_POWER_SHIFT_RATIO ========================== OPAL call to read the power-shifting-ratio using a handle to identify the type (e.g CPU vs. GPU, CPU vs. MEM) which is exported via device-tree. The call can be asynchronus, where the token parameter is used to wait for the completion. Parameters ---------- === ======= === ======= u32 handle int token u32 \*ratio === ======= Returns ------- :ref:`OPAL_SUCCESS` Success :ref:`OPAL_PARAMETER` Invalid ratio pointer :ref:`OPAL_UNSUPPORTED` No support for reading psr :ref:`OPAL_HARDWARE` Unable to procced due to the current hardware state :ref:`OPAL_ASYNC_COMPLETION` Request was sent and an async completion message will be sent with token and status of the request. .. _OPAL_SET_POWER_SHIFT_RATIO: OPAL_SET_POWER_SHIFT_RATIO ========================== OPAL call to set power-shifting-ratio using a handle to identify the type of PSR which is exported in device-tree. This call can be asynchronus where the token parameter is used to wait for the completion. Parameters ---------- === ====== === ====== u32 handle int token u32 ratio === ====== Returns ------- :ref:`OPAL_SUCCESS` Success :ref:`OPAL_PARAMETER` Invalid ratio requested :ref:`OPAL_UNSUPPORTED` No support for changing the ratio :ref:`OPAL_PERMISSION` Hardware cannot take the request :ref:`OPAL_ASYNC_COMPLETION` Request was sent and an async completion message will be sent with token and status of the request. :ref:`OPAL_HARDWARE` Unable to procced due to the current hardware state :ref:`OPAL_BUSY` Previous request in progress :ref:`OPAL_INTERNAL_ERROR` Error in request response :ref:`OPAL_TIMEOUT` Timeout in request completion