Skip to content

Commit 85bf89f

Browse files
committed
Merge tag 'drm-xe-fixes-2025-01-09' of https://gitlab.freedesktop.org/drm/xe/kernel into drm-fixes
Driver Changes: - Avoid a NULL ptr deref when wedging (Lucas) - Fix power gate sequence on DG1 (Rodrigo) Signed-off-by: Dave Airlie <[email protected]> From: Thomas Hellstrom <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/Z4AcqP3Io_r0pEsR@fedora
2 parents 66d4709 + b84e1cd commit 85bf89f

File tree

4 files changed

+14
-11
lines changed

4 files changed

+14
-11
lines changed

drivers/gpu/drm/xe/xe_gt.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,10 @@ int xe_gt_init_early(struct xe_gt *gt)
387387
xe_force_wake_init_gt(gt, gt_to_fw(gt));
388388
spin_lock_init(&gt->global_invl_lock);
389389

390+
err = xe_gt_tlb_invalidation_init_early(gt);
391+
if (err)
392+
return err;
393+
390394
return 0;
391395
}
392396

@@ -588,10 +592,6 @@ int xe_gt_init(struct xe_gt *gt)
588592
xe_hw_fence_irq_init(&gt->fence_irq[i]);
589593
}
590594

591-
err = xe_gt_tlb_invalidation_init(gt);
592-
if (err)
593-
return err;
594-
595595
err = xe_gt_pagefault_init(gt);
596596
if (err)
597597
return err;

drivers/gpu/drm/xe/xe_gt_idle.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,10 +122,12 @@ void xe_gt_idle_enable_pg(struct xe_gt *gt)
122122
if (!xe_gt_is_media_type(gt))
123123
gtidle->powergate_enable |= RENDER_POWERGATE_ENABLE;
124124

125-
for (i = XE_HW_ENGINE_VCS0, j = 0; i <= XE_HW_ENGINE_VCS7; ++i, ++j) {
126-
if ((gt->info.engine_mask & BIT(i)))
127-
gtidle->powergate_enable |= (VDN_HCP_POWERGATE_ENABLE(j) |
128-
VDN_MFXVDENC_POWERGATE_ENABLE(j));
125+
if (xe->info.platform != XE_DG1) {
126+
for (i = XE_HW_ENGINE_VCS0, j = 0; i <= XE_HW_ENGINE_VCS7; ++i, ++j) {
127+
if ((gt->info.engine_mask & BIT(i)))
128+
gtidle->powergate_enable |= (VDN_HCP_POWERGATE_ENABLE(j) |
129+
VDN_MFXVDENC_POWERGATE_ENABLE(j));
130+
}
129131
}
130132

131133
fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);

drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,15 +106,15 @@ static void xe_gt_tlb_fence_timeout(struct work_struct *work)
106106
}
107107

108108
/**
109-
* xe_gt_tlb_invalidation_init - Initialize GT TLB invalidation state
109+
* xe_gt_tlb_invalidation_init_early - Initialize GT TLB invalidation state
110110
* @gt: graphics tile
111111
*
112112
* Initialize GT TLB invalidation state, purely software initialization, should
113113
* be called once during driver load.
114114
*
115115
* Return: 0 on success, negative error code on error.
116116
*/
117-
int xe_gt_tlb_invalidation_init(struct xe_gt *gt)
117+
int xe_gt_tlb_invalidation_init_early(struct xe_gt *gt)
118118
{
119119
gt->tlb_invalidation.seqno = 1;
120120
INIT_LIST_HEAD(&gt->tlb_invalidation.pending_fences);

drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ struct xe_gt;
1414
struct xe_guc;
1515
struct xe_vma;
1616

17-
int xe_gt_tlb_invalidation_init(struct xe_gt *gt);
17+
int xe_gt_tlb_invalidation_init_early(struct xe_gt *gt);
18+
1819
void xe_gt_tlb_invalidation_reset(struct xe_gt *gt);
1920
int xe_gt_tlb_invalidation_ggtt(struct xe_gt *gt);
2021
int xe_gt_tlb_invalidation_vma(struct xe_gt *gt,

0 commit comments

Comments
 (0)