[PATCH] drm/amd/include : Update MES v12 API for fence update

Alex Deucher alexdeucher at gmail.com
Mon Feb 10 21:01:30 UTC 2025


On Wed, Feb 5, 2025 at 1:52 PM Shaoyun Liu <shaoyun.liu at amd.com> wrote:
>
> MES fence_value will be updated in fence_addr if API success,
> otherwise upper 32 bit will be used to indicate error code.
> In any case, MES will trigger an EOP interrupt with 0xb1 as
> context id in the interrupt cookie
>
> Signed-off-by: Shaoyun Liu <shaoyun.liu at amd.com>

Acked-by: Alex Deucher <alexander.deucher at amd.com>

> ---
>  drivers/gpu/drm/amd/include/mes_v12_api_def.h | 40 ++++++++++++++++++-
>  1 file changed, 39 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/include/mes_v12_api_def.h b/drivers/gpu/drm/amd/include/mes_v12_api_def.h
> index 1938150a1943..fb918668ddae 100644
> --- a/drivers/gpu/drm/amd/include/mes_v12_api_def.h
> +++ b/drivers/gpu/drm/amd/include/mes_v12_api_def.h
> @@ -105,6 +105,43 @@ struct MES_API_STATUS {
>         uint64_t api_completion_fence_value;
>  };
>
> +/*
> + * MES will set api_completion_fence_value in api_completion_fence_addr
> + * when it can successflly process the API. MES will also trigger
> + * following interrupt when it finish process the API no matter success
> + * or failed.
> + *     Interrupt source id 181 (EOP) with context ID (DW 6 in the int
> + *     cookie) set to 0xb1 and context type set to 8. Driver side need
> + *     to enable TIME_STAMP_INT_ENABLE in CPC_INT_CNTL for MES pipe to
> + *     catch this interrupt.
> + *     Driver side also need to set enable_mes_fence_int = 1 in
> + *     set_HW_resource package to enable this fence interrupt.
> + * when the API process failed.
> + *     lowre 32 bits set to 0.
> + *     higher 32 bits set as follows (bit shift within high 32)
> + *         bit 0  -  7    API specific error code.
> + *         bit 8  - 15    API OPCODE.
> + *         bit 16 - 23    MISC OPCODE if any
> + *         bit 24 - 30    ERROR category (API_ERROR_XXX)
> + *         bit 31         Set to 1 to indicate error status
> + *
> + */
> +enum { MES_SCH_ERROR_CODE_HEADER_SHIFT_12 = 8 };
> +enum { MES_SCH_ERROR_CODE_MISC_OP_SHIFT_12 = 16 };
> +enum { MES_ERROR_CATEGORY_SHIFT_12 = 24 };
> +enum { MES_API_STATUS_ERROR_SHIFT_12 = 31 };
> +
> +enum MES_ERROR_CATEGORY_CODE_12 {
> +       MES_ERROR_API                = 1,
> +       MES_ERROR_SCHEDULING         = 2,
> +       MES_ERROR_UNKNOWN            = 3,
> +};
> +
> +#define MES_ERR_CODE(api_err, opcode, misc_op, category) \
> +                       ((uint64) (api_err | opcode << MES_SCH_ERROR_CODE_HEADER_SHIFT_12 | \
> +                       misc_op << MES_SCH_ERROR_CODE_MISC_OP_SHIFT_12 | \
> +                       category << MES_ERROR_CATEGORY_SHIFT_12 | \
> +                       1 << MES_API_STATUS_ERROR_SHIFT_12) << 32)
>
>  enum { MAX_COMPUTE_PIPES = 8 };
>  enum { MAX_GFX_PIPES    = 2 };
> @@ -248,7 +285,8 @@ union MESAPI_SET_HW_RESOURCES {
>                                 uint32_t enable_mes_sch_stb_log : 1;
>                                 uint32_t limit_single_process : 1;
>                                 uint32_t unmapped_doorbell_handling: 2;
> -                               uint32_t reserved : 11;
> +                               uint32_t enable_mes_fence_int: 1;
> +                               uint32_t reserved : 10;
>                         };
>                         uint32_t uint32_all;
>                 };
> --
> 2.34.1
>


More information about the amd-gfx mailing list