[PATCH v3 05/11] drm/xe/bmg: Program an additional discrete-specific PAT setting

Ghimiray, Himal Prasad himal.prasad.ghimiray at intel.com
Mon Apr 8 19:05:44 UTC 2024


On 08-04-2024 22:35, Balasubramani Vivekanandan wrote:
> From: Matt Roper<matthew.d.roper at intel.com>
>
> Discrete Xe2 platforms require programming of one additional row of PAT
> settings which controls the access characteristics for PPGTT and LMTT
> page tables.  Integrated GPUs do not need this programming and will
> leave the register at its hardware default value.
>
> Bspec:  71582
> Signed-off-by: Matt Roper<matthew.d.roper at intel.com>
> Signed-off-by: Balasubramani Vivekanandan<balasubramani.vivekanandan at intel.com>
> ---
>   drivers/gpu/drm/xe/xe_pat.c | 7 +++++++
>   1 file changed, 7 insertions(+)
>
> diff --git a/drivers/gpu/drm/xe/xe_pat.c b/drivers/gpu/drm/xe/xe_pat.c
> index 66d8e3dd8237..13812042177d 100644
> --- a/drivers/gpu/drm/xe/xe_pat.c
> +++ b/drivers/gpu/drm/xe/xe_pat.c
> @@ -142,6 +142,7 @@ static const struct xe_pat_table_entry xe2_pat_table[] = {
>   
>   /* Special PAT values programmed outside the main table */
>   static const struct xe_pat_table_entry xe2_pat_ats = XE2_PAT( 0, 0, 0, 0, 3, 3 );
> +static const struct xe_pat_table_entry xe2_pat_pta = XE2_PAT( 0, 0, 0, 0, 3, 0 );

LGTM.

Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray at intel.com>

>   
>   u16 xe_pat_index_get_coh_mode(struct xe_device *xe, u16 pat_index)
>   {
> @@ -302,6 +303,9 @@ static void xe2lpg_program_pat(struct xe_gt *gt, const struct xe_pat_table_entry
>   {
>   	program_pat_mcr(gt, table, n_entries);
>   	xe_gt_mcr_multicast_write(gt, XE_REG_MCR(_PAT_ATS), xe2_pat_ats.value);
> +
> +	if (IS_DGFX(gt_to_xe(gt)))
> +		xe_gt_mcr_multicast_write(gt, XE_REG_MCR(_PAT_PTA), xe2_pat_pta.value);
>   }
>   
>   static void xe2lpm_program_pat(struct xe_gt *gt, const struct xe_pat_table_entry table[],
> @@ -309,6 +313,9 @@ static void xe2lpm_program_pat(struct xe_gt *gt, const struct xe_pat_table_entry
>   {
>   	program_pat(gt, table, n_entries);
>   	xe_mmio_write32(gt, XE_REG(_PAT_ATS), xe2_pat_ats.value);
> +
> +	if (IS_DGFX(gt_to_xe(gt)))
> +		xe_mmio_write32(gt, XE_REG(_PAT_PTA), xe2_pat_pta.value);
>   }
>   
>   static void xe2_dump(struct xe_gt *gt, struct drm_printer *p)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/intel-xe/attachments/20240409/d6339916/attachment-0001.htm>


More information about the Intel-xe mailing list