From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 3E0B2FF6E8C for ; Tue, 17 Mar 2026 22:09:39 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id C45E610E42F; Tue, 17 Mar 2026 22:09:38 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=google.com header.i=@google.com header.b="gQl11/55"; dkim-atps=neutral Received: from mail-dy1-f202.google.com (mail-dy1-f202.google.com [74.125.82.202]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0847810E222 for ; Tue, 17 Mar 2026 22:09:37 +0000 (UTC) Received: by mail-dy1-f202.google.com with SMTP id 5a478bee46e88-2c0cd2e4aa6so11149269eec.0 for ; Tue, 17 Mar 2026 15:09:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1773785376; x=1774390176; darn=lists.freedesktop.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=Lq7yxYkymk6UoPo+9FJHSu8+kVpVAWguO7UjWCYWFjQ=; b=gQl11/55/bZ2QO8qCh+GXd+c9R5CnxNsbq6jeSAuN4Dd7Sp2xpHxZ/MUXG7QZ9dOum K/l3bhIHbtSHg5ZUeZOYLrJ04+GC9aDdQNMzAJeXo1371fGRXc7M0Jnnib7M61HEtHPY wJ8k/qRafMwPoRC53sSMjFWDmlfhrQB3Gf7c4oY02HWx/Bk1ermBQfUkgMGZnjMi1gLc KN4EzG+e/WB8TjYXsBczfYynS4922/gNsj7OLyGqrRckVVR6at/jy3g1HZF71tDFKPda UVgWisYwTHLuTA+chWFZr5u391cVJnLYoJ+nwY844+ewz8BS7CcOf4OwF1L4PgVMbckU 3F+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773785376; x=1774390176; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Lq7yxYkymk6UoPo+9FJHSu8+kVpVAWguO7UjWCYWFjQ=; b=cRga35H9CoZ68ujvCWL9cj9NySqRZUmC/XkJFrnf6YRe2IN8KHA7Bmq2xvPT/AvqAj KK9KYFVyHwghXw8K0VoQdnCjOzVUlssg1zRvtvnUSQD67YxQGynS8cKmTy9GDHWmFy91 MD74dNhzkE/gfO8qlwHLbrmYhLhpP8wGCJruL0J6xXinb13wE29A1PlKx7/jRhTiwgOJ Eykqp5jWdZedzTZ+Ubw9M0/GW5ALvyUB/WUq8B6lwd8JzPbEd4clDzY5cdw4l3TTDZI4 t8gDioSsir9L4/42S5SQAdntix6HzCYWbfnuMb2mfliZdju1doQ61lw9j/iqBTW0Dzqb uvRw== X-Gm-Message-State: AOJu0Yx3MX19pAurv0wt8BCNn4lN8Y2IiW2hHxdbu7jIyqOIAbLCOhUq yLOuQlQ1H+w2UuAMjbXufqXnIEmJ7ght0z/k7kxQWBmwc+QL/j7BddWiTtdtxIortxKnWN7fOXB gOCbCM7SZcpSzhlPUTR+yyCXG562mLWu/RPI0zm/5WeoVHPbFM8OpX+FQXL7+9Nwm/Cm9ektGGa 3jDVlgI7tjpcETEYGX67gsL7Vu4QyuqURMze4ASg70lCkTRhhbftVNEhWuGTQ= X-Received: from dybso14.prod.google.com ([2002:a05:7301:690e:b0:2c0:b988:33bc]) (user=jdsultan job=prod-delivery.src-stubby-dispatcher) by 2002:a05:7300:80c8:b0:2b8:6a22:6d52 with SMTP id 5a478bee46e88-2c0e5147e25mr564411eec.33.1773785375972; Tue, 17 Mar 2026 15:09:35 -0700 (PDT) Date: Tue, 17 Mar 2026 15:09:02 -0700 In-Reply-To: <20260317220908.130968-1-jdsultan@google.com> Mime-Version: 1.0 References: <20260317220908.130968-1-jdsultan@google.com> X-Mailer: git-send-email 2.53.0.851.ga537e3e6e9-goog Message-ID: <20260317220908.130968-2-jdsultan@google.com> Subject: [PATCH v4 1/2] drm/xe/display: Fix reading the framebuffer from stolen memory From: Juasheem Sultan To: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org Cc: Jani Nikula , Rodrigo Vivi , Manasi Navare , Drew Davenport , Sean Paul , Samuel Jacob , Rajat Jain , Juasheem Sultan Content-Type: text/plain; charset="UTF-8" X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Currently, we attempt to pin stolen memory using the ggtt address. This doesn't appear to actually read the framebuffer that was setup by the bios. Instead, we have to use the underlying physical address offset within stolen memory. Signed-off-by: Juasheem Sultan --- drivers/gpu/drm/xe/display/xe_initial_plane.c | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/xe/display/xe_initial_plane.c b/drivers/gpu/drm/xe/display/xe_initial_plane.c index 4cfeafcc158d..d818993d9b8a 100644 --- a/drivers/gpu/drm/xe/display/xe_initial_plane.c +++ b/drivers/gpu/drm/xe/display/xe_initial_plane.c @@ -19,6 +19,7 @@ #include "intel_fb.h" #include "intel_fb_pin.h" #include "xe_bo.h" +#include "xe_ttm_stolen_mgr.h" #include "xe_vram_types.h" #include "xe_wa.h" @@ -87,7 +88,26 @@ initial_plane_bo(struct xe_device *xe, if (!stolen) return NULL; - phys_base = base; + + /* Read PTE to find physical address backing the GGTT address */ + u64 pte = xe_ggtt_read_pte(tile0->mem.ggtt, base); + u64 phys_addr = pte & ~(page_size - 1); + + u64 stolen_base = xe_ttm_stolen_gpu_offset(xe); + + drm_dbg_kms(&xe->drm, + "Stolen Framebuffer base=%x pte=%llx phys_addr=%llx stolen_base=%llx\n", + base, pte, phys_addr, stolen_base); + + /* Make sure that the physical address is in the range of stolen memory */ + if (phys_addr >= stolen_base) { + phys_base = phys_addr - stolen_base; + } else { + drm_err(&xe->drm, "Stolen memory outside of stolen range phys_base=%pa\n", + &phys_base); + return NULL; + } + flags |= XE_BO_FLAG_STOLEN; if (XE_DEVICE_WA(xe, 22019338487_display)) -- 2.53.0.851.ga537e3e6e9-goog