Skip to content

Commit c5bc073

Browse files
ahajdarodrigovivi
authored andcommitted
drm/i915: fix TLB invalidation for Gen12.50 video and compute engines
In case of Gen12.50 video and compute engines, TLB_INV registers are masked - to modify one bit, corresponding bit in upper half of the register must be enabled, otherwise nothing happens. Fixes: 77fa9ef ("drm/i915/xehp: Create separate reg definitions for new MCR registers") Signed-off-by: Andrzej Hajda <[email protected]> Reviewed-by: Tvrtko Ursulin <[email protected]> Reviewed-by: Andi Shyti <[email protected]> Signed-off-by: Andi Shyti <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] (cherry picked from commit 4d5cf7b) Signed-off-by: Rodrigo Vivi <[email protected]>
1 parent 1b929c0 commit c5bc073

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

drivers/gpu/drm/i915/gt/intel_gt.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1109,9 +1109,15 @@ static void mmio_invalidate_full(struct intel_gt *gt)
11091109
continue;
11101110

11111111
if (GRAPHICS_VER_FULL(i915) >= IP_VER(12, 50)) {
1112+
u32 val = BIT(engine->instance);
1113+
1114+
if (engine->class == VIDEO_DECODE_CLASS ||
1115+
engine->class == VIDEO_ENHANCEMENT_CLASS ||
1116+
engine->class == COMPUTE_CLASS)
1117+
val = _MASKED_BIT_ENABLE(val);
11121118
intel_gt_mcr_multicast_write_fw(gt,
11131119
xehp_regs[engine->class],
1114-
BIT(engine->instance));
1120+
val);
11151121
} else {
11161122
rb = get_reg_and_bit(engine, regs == gen8_regs, regs, num);
11171123
if (!i915_mmio_reg_offset(rb.reg))

0 commit comments

Comments
 (0)