All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matthew Auld <matthew.auld@intel.com>
To: intel-gfx@lists.freedesktop.org
Subject: [Intel-gfx] [PATCH v2 5/8] drm/i915/dg1: Reserve first 1MB of local memory
Date: Tue, 26 Jan 2021 15:12:56 +0000	[thread overview]
Message-ID: <20210126151259.253885-5-matthew.auld@intel.com> (raw)
In-Reply-To: <20210126151259.253885-1-matthew.auld@intel.com>

From: Imre Deak <imre.deak@intel.com>

On DG1 A0/B0 steppings the first 1MB of local memory must be reserved.
One reason for this is that the 0xA0000-0xB0000 range is not accessible
by the display, probably since this region is redirected to another
memory location for legacy VGA compatibility.

BSpec: 50586
Testcase: igt/kms_big_fb/linear-64bpp-rotate-0

v2:
- Reserve the memory on B0 as well.

v3: replace DRM_DEBUG/DRM_ERROR with drm_dbg/drm_err

Signed-off-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
---
 drivers/gpu/drm/i915/gt/intel_region_lmem.c | 52 +++++++++++++++++++++
 1 file changed, 52 insertions(+)

diff --git a/drivers/gpu/drm/i915/gt/intel_region_lmem.c b/drivers/gpu/drm/i915/gt/intel_region_lmem.c
index 4da808e35ecb..3b66221abe01 100644
--- a/drivers/gpu/drm/i915/gt/intel_region_lmem.c
+++ b/drivers/gpu/drm/i915/gt/intel_region_lmem.c
@@ -138,6 +138,48 @@ intel_gt_setup_fake_lmem(struct intel_gt *gt)
 	return mem;
 }
 
+static void get_legacy_lowmem_region(struct intel_uncore *uncore,
+				     u64 *start, u32 *size)
+{
+	*start = 0;
+	*size = 0;
+
+	if (!IS_DG1_REVID(uncore->i915, DG1_REVID_A0, DG1_REVID_B0))
+		return;
+
+	*size = SZ_1M;
+
+	drm_dbg(&uncore->i915->drm, "LMEM: reserved legacy low-memory [0x%llx-0x%llx]\n",
+		*start, *start + *size);
+}
+
+static int reserve_lowmem_region(struct intel_uncore *uncore,
+				 struct intel_memory_region *mem)
+{
+	u64 reserve_start;
+	u64 reserve_end;
+	u64 region_start;
+	u32 region_size;
+	int ret;
+
+	get_legacy_lowmem_region(uncore, &region_start, &region_size);
+	reserve_start = region_start;
+	reserve_end = region_start + region_size;
+
+	if (!reserve_end)
+		return 0;
+
+	drm_dbg(&uncore->i915->drm, "LMEM: reserving low-memory region [0x%llx-0x%llx]\n",
+		reserve_start, reserve_end);
+	ret = i915_buddy_alloc_range(&mem->mm, &mem->reserved,
+				     reserve_start,
+				     reserve_end - reserve_start);
+	if (ret)
+		drm_err(&uncore->i915->drm, "LMEM: reserving low memory region failed\n");
+
+	return ret;
+}
+
 static struct intel_memory_region *setup_lmem(struct intel_gt *gt)
 {
 	struct drm_i915_private *i915 = gt->i915;
@@ -158,6 +200,16 @@ static struct intel_memory_region *setup_lmem(struct intel_gt *gt)
 					 I915_GTT_PAGE_SIZE_4K,
 					 io_start,
 					 &intel_region_lmem_ops);
+	if (!IS_ERR(mem)) {
+		int err;
+
+		err = reserve_lowmem_region(uncore, mem);
+		if (err) {
+			intel_memory_region_put(mem);
+			return ERR_PTR(err);
+		}
+	}
+
 	if (!IS_ERR(mem)) {
 		drm_dbg(&i915->drm, "Local memory: %pR\n", &mem->region);
 		drm_dbg(&i915->drm, "Local memory IO start: %pa\n",
-- 
2.26.2

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  parent reply	other threads:[~2021-01-26 15:13 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-26 15:12 [Intel-gfx] [PATCH v2 1/8] drm/i915: make local-memory probing a GT operation Matthew Auld
2021-01-26 15:12 ` [Intel-gfx] [PATCH v2 2/8] drm/i915: setup the LMEM region Matthew Auld
2021-01-26 15:26   ` Chris Wilson
2021-01-26 15:12 ` [Intel-gfx] [PATCH v2 3/8] drm/i915: reserve stolen for " Matthew Auld
2021-01-26 15:31   ` Chris Wilson
2021-01-26 15:12 ` [Intel-gfx] [PATCH v2 4/8] drm/i915: introduce mem->reserved Matthew Auld
2021-01-26 15:35   ` Chris Wilson
2021-01-26 15:12 ` Matthew Auld [this message]
2021-01-26 15:39   ` [Intel-gfx] [PATCH v2 5/8] drm/i915/dg1: Reserve first 1MB of local memory Chris Wilson
2021-01-26 15:12 ` [Intel-gfx] [PATCH v2 6/8] drm/i915: allocate context from LMEM Matthew Auld
2021-01-26 15:40   ` Chris Wilson
2021-01-26 15:12 ` [Intel-gfx] [PATCH v2 7/8] drm/i915: move engine scratch to LMEM Matthew Auld
2021-01-26 15:12 ` [Intel-gfx] [PATCH v2 8/8] drm/i915: allocate cmd ring in lmem Matthew Auld
2021-01-26 15:41   ` Chris Wilson
2021-01-26 15:16 ` [Intel-gfx] [PATCH v2 1/8] drm/i915: make local-memory probing a GT operation Chris Wilson
2021-01-26 15:22 ` Chris Wilson
2021-01-26 15:28   ` Chris Wilson
2021-01-26 19:59 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [v2,1/8] " Patchwork
2021-01-26 20:01 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2021-01-26 20:16 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210126151259.253885-5-matthew.auld@intel.com \
    --to=matthew.auld@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.