summaryrefslogtreecommitdiff
path: root/drivers/gpu
diff options
context:
space:
mode:
authorMatthew Brost <matthew.brost@intel.com>2026-02-12 23:42:27 +0300
committerMatthew Brost <matthew.brost@intel.com>2026-02-13 23:03:47 +0300
commit2405ba53ffe8dad77c530677bfec4c601bd2110a (patch)
treeed6c596c83b6cbe27df0b0430500aab9ed118706 /drivers/gpu
parent68be2bfe4bcd70932a3dcb2eb20398933b5f454f (diff)
downloadlinux-2405ba53ffe8dad77c530677bfec4c601bd2110a.tar.xz
drm/xe: Avoid touching consumer fields in GuC pagefault ack
The GuC pagefault acknowledgment code is designed to extract the fields needed for the acknowledgment from the producer-stored message so that the consumer fields can be overloaded to return additional information. The ASID is stored in the producer message; extract it from there to future‑proof this logic. Signed-off-by: Matthew Brost <matthew.brost@intel.com> Reviewed-by: Francois Dugast <francois.dugast@intel.com> Link: https://patch.msgid.link/20260212204227.2764054-3-matthew.brost@intel.com
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/xe/xe_guc_pagefault.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/gpu/drm/xe/xe_guc_pagefault.c b/drivers/gpu/drm/xe/xe_guc_pagefault.c
index 1166b0a5fa21..d48f6ed103bb 100644
--- a/drivers/gpu/drm/xe/xe_guc_pagefault.c
+++ b/drivers/gpu/drm/xe/xe_guc_pagefault.c
@@ -17,6 +17,7 @@ static void guc_ack_fault(struct xe_pagefault *pf, int err)
u32 pdata = FIELD_GET(PFD_PDATA_LO, pf->producer.msg[0]) |
(FIELD_GET(PFD_PDATA_HI, pf->producer.msg[1]) <<
PFD_PDATA_HI_SHIFT);
+ u32 asid = FIELD_GET(PFD_ASID, pf->producer.msg[1]);
u32 action[] = {
XE_GUC_ACTION_PAGE_FAULT_RES_DESC,
@@ -24,7 +25,7 @@ static void guc_ack_fault(struct xe_pagefault *pf, int err)
FIELD_PREP(PFR_SUCCESS, !!err) |
FIELD_PREP(PFR_REPLY, PFR_ACCESS) |
FIELD_PREP(PFR_DESC_TYPE, FAULT_RESPONSE_DESC) |
- FIELD_PREP(PFR_ASID, pf->consumer.asid),
+ FIELD_PREP(PFR_ASID, asid),
FIELD_PREP(PFR_VFID, vfid) |
FIELD_PREP(PFR_ENG_INSTANCE, engine_instance) |