Pantherlake integrated graphics can have the XE_GGTT_PTEDM bit set in the BIOS-initialised framebuffer PTE. The validation rejects this and fails to create the initial framebuffer, resulting in static.
Remove the too-strict validation. Since this was the only caller of need_pte_local() outside the DGFX path, the helper is now unconditionally true there; fold the check and drop the dead need_pte_local() and has_lmembar() helpers. Signed-off-by: Andrew Zhou <[email protected]> Tested-by: Andrew Zhou <[email protected]> Tested-on: Intel Core Ultra X7 358H, integrated graphics, B0 stepping --- v1 -> v2: - Drop need_pte_local() and has_lmembar(), now dead after removing the iGPU validation (sashiko) --- drivers/gpu/drm/xe/display/xe_initial_plane.c | 20 +------------------ 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/drivers/gpu/drm/xe/display/xe_initial_plane.c b/drivers/gpu/drm/xe/display/xe_initial_plane.c index 0f86b7303..3484b3033 100644 --- a/drivers/gpu/drm/xe/display/xe_initial_plane.c +++ b/drivers/gpu/drm/xe/display/xe_initial_plane.c @@ -27,16 +27,6 @@ static bool is_pte_local(u64 pte) return pte & XE_GGTT_PTE_DM; } -static bool has_lmembar(struct xe_device *xe) -{ - return GRAPHICS_VERx100(xe) >= 1270; -} - -static bool need_pte_local(struct xe_device *xe) -{ - return IS_DGFX(xe) || has_lmembar(xe); -} - static struct xe_bo * initial_plane_bo(struct xe_device *xe, struct intel_initial_plane_config *plane_config) @@ -60,7 +50,7 @@ initial_plane_bo(struct xe_device *xe, if (IS_DGFX(xe)) { u64 pte = xe_ggtt_read_pte(tile0->mem.ggtt, base); - if (is_pte_local(pte) != need_pte_local(xe)) { + if (!is_pte_local(pte)) { drm_err(&xe->drm, "Initial plane PTE has bad local memory bit\n"); return NULL; } @@ -85,7 +75,6 @@ initial_plane_bo(struct xe_device *xe, &phys_base); } else { struct ttm_resource_manager *stolen; - u64 pte; stolen = ttm_manager_type(&xe->ttm, XE_PL_STOLEN); if (!stolen) { @@ -93,13 +82,6 @@ initial_plane_bo(struct xe_device *xe, return NULL; } - pte = xe_ggtt_read_pte(tile0->mem.ggtt, base); - - if (is_pte_local(pte) != need_pte_local(xe)) { - drm_err(&xe->drm, "Initial plane PTE has bad local memory bit\n"); - return NULL; - } - phys_base = base; flags |= XE_BO_FLAG_STOLEN; -- 2.54.0
