drm/xe/guc: Fix capture of steering registers
authorJohn Harrison <John.C.Harrison@Intel.com>
Thu, 17 Apr 2025 19:52:12 +0000 (12:52 -0700)
committerJohn Harrison <John.C.Harrison@Intel.com>
Tue, 22 Apr 2025 17:24:43 +0000 (10:24 -0700)
The list of registers to capture on a GPU hang includes some that
require steering. Unfortunately, the flag to say this was being wiped
to due a missing OR on the assignment of the next flag field.

Fix that.

Fixes: b170d696c1e2 ("drm/xe/guc: Add XE_LP steered register lists")
Cc: Zhanjun Dong <zhanjun.dong@intel.com>
Cc: Alan Previn <alan.previn.teres.alexis@intel.com>
Cc: Matt Roper <matthew.d.roper@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: "Thomas Hellström" <thomas.hellstrom@linux.intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: intel-xe@lists.freedesktop.org
Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Reviewed-by: Zhanjun Dong <zhanjun.dong@intel.com>
Link: https://lore.kernel.org/r/20250417195215.3002210-2-John.C.Harrison@Intel.com
drivers/gpu/drm/xe/xe_guc_capture.c

index f6d523e4c5feb7f07d695af90f4c44c7a9072c2d..9095618648bcbc9a6a93fa1ec1a1dda3cfe14c10 100644 (file)
@@ -359,7 +359,7 @@ static void __fill_ext_reg(struct __guc_mmio_reg_descr *ext,
 
        ext->reg = XE_REG(extlist->reg.__reg.addr);
        ext->flags = FIELD_PREP(GUC_REGSET_STEERING_NEEDED, 1);
-       ext->flags = FIELD_PREP(GUC_REGSET_STEERING_GROUP, slice_id);
+       ext->flags |= FIELD_PREP(GUC_REGSET_STEERING_GROUP, slice_id);
        ext->flags |= FIELD_PREP(GUC_REGSET_STEERING_INSTANCE, subslice_id);
        ext->regname = extlist->name;
 }