[PATCH 4/7] drm/xe/lrc: Add table with LRC layout

Tvrtko Ursulin tvrtko.ursulin at igalia.com
Fri Jul 4 10:41:17 UTC 2025


On 03/07/2025 23:41, Lucas De Marchi wrote:
> Add a table to document the LRC's BO layout to make it easier to
> visualize how each region stacks on top of each other.
> 
> Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>
> ---
>   drivers/gpu/drm/xe/xe_lrc.c | 21 +++++++++++++++++++++
>   1 file changed, 21 insertions(+)
> 
> diff --git a/drivers/gpu/drm/xe/xe_lrc.c b/drivers/gpu/drm/xe/xe_lrc.c
> index 7cde827ddbec9..75f4678cb090a 100644
> --- a/drivers/gpu/drm/xe/xe_lrc.c
> +++ b/drivers/gpu/drm/xe/xe_lrc.c
> @@ -42,6 +42,27 @@
>   #define LRC_INDIRECT_RING_STATE_SIZE		SZ_4K
>   #define LRC_WA_BB_SIZE				SZ_4K
>   
> +/*
> + * Layout of the LRC and associated data allocated as
> + * lrc->bo:
> + *
> + *   Region                       Size
> + *  +============================+=================+ <- __xe_lrc_ring_offset()
> + *  | Ring                       | ring_size, see  |
> + *  |                            | xe_lrc_init()   |
> + *  +============================+=================+ <- __xe_lrc_pphwsp_offset()
> + *  | PPHWSP (includes SW state) | 4K              |
> + *  +----------------------------+-----------------+ <- __xe_lrc_ring_offset()
> + *  | Engine Context Image       | n * 4K, see     |
> + *  |                            | xe_gt_lrc_size()|
> + *  +----------------------------+-----------------+ <- __xe_lrc_indirect_ring_offset()
> + *  | Indirect Ring State Page   | 0 or 4k, see    |
> + *  |                            | xe_gt_lrc_size()|
> + *  +============================+=================+ <- __xe_lrc_wa_bb_offset()
> + *  | WA BB Per Ctx              | 4k              |
> + *  +============================+=================+ <- xe_bo_size(lrc->bo)
> + */

I assume '---' separates parts which are considered engine lrc state, 
while '===' is for other data which happens to be in the same BO. So for 
indirect ctx I will use '==='. Just unsure if indirect ring state should 
in that case also be '==='? Looks like LRC image points to it's ggtt 
address which would suggest it is equally separate.

> +
>   static struct xe_device *
>   lrc_to_xe(struct xe_lrc *lrc)
>   {
> 

Modulo the above:

Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin at igalia.com>

Regards,

Tvrtko



More information about the Intel-xe mailing list