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

Reply via email to