[Intel-xe] [PATCH 2/2] drm/xe/xe2: Respond to TRTT faults as unsuccessful page fault
Matthew Brost
matthew.brost at intel.com
Wed Nov 29 12:32:31 UTC 2023
On Tue, Nov 28, 2023 at 01:36:34PM -0800, Brian Welty wrote:
> SW is not expected to handle TRTT faults and should report these as
> unsuccessful page fault in the reply, such that HW can respond by
> raising a CAT error.
>
> Signed-off-by: Brian Welty <brian.welty at intel.com>
Reviewed-by: Matthew Brost <matthew.brost at intel.com>
> ---
> drivers/gpu/drm/xe/xe_gt_pagefault.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/gpu/drm/xe/xe_gt_pagefault.c b/drivers/gpu/drm/xe/xe_gt_pagefault.c
> index 959ea50c04db..2ee7005d7e39 100644
> --- a/drivers/gpu/drm/xe/xe_gt_pagefault.c
> +++ b/drivers/gpu/drm/xe/xe_gt_pagefault.c
> @@ -33,6 +33,7 @@ struct pagefault {
> u8 engine_class;
> u8 engine_instance;
> u8 fault_unsuccessful;
> + bool trva_fault;
> };
>
> enum access_type {
> @@ -137,6 +138,10 @@ static int handle_pagefault(struct xe_gt *gt, struct pagefault *pf)
> int ret = 0;
> bool atomic;
>
> + /* SW isn't expected to handle TRTT faults */
> + if (pf->trva_fault)
> + return -EFAULT;
> +
> /* ASID to VM */
> mutex_lock(&xe->usm.lock);
> vm = xa_load(&xe->usm.asid_to_vm, pf->asid);
> @@ -281,6 +286,7 @@ static bool get_pagefault(struct pf_queue *pf_queue, struct pagefault *pf)
> (pf_queue->data + pf_queue->head);
>
> pf->fault_level = FIELD_GET(PFD_FAULT_LEVEL, desc->dw0);
> + pf->trva_fault = FIELD_GET(XE2_PFD_TRVA_FAULT, desc->dw0);
> pf->engine_class = FIELD_GET(PFD_ENG_CLASS, desc->dw0);
> pf->engine_instance = FIELD_GET(PFD_ENG_INSTANCE, desc->dw0);
> pf->pdata = FIELD_GET(PFD_PDATA_HI, desc->dw1) <<
> --
> 2.38.0
>
More information about the Intel-xe
mailing list