From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: "José Roberto de Souza" <jose.souza@intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH] drm/i915: Fix errors when there is no free DSM
Date: Fri, 21 Jan 2022 21:53:36 +0200 [thread overview]
Message-ID: <YesPQBga1LbmS3jB@intel.com> (raw)
In-Reply-To: <20220121192450.208535-1-jose.souza@intel.com>
On Fri, Jan 21, 2022 at 11:24:50AM -0800, José Roberto de Souza wrote:
> Part of DSM(data stolen memory) is reserved for HW functions and GUC
> and in some platform this reserved block takes the whole DSM leaving
> no memory to allocated by i915_gem_object_create_stolen() and friends.
>
> In such cases i915_gem_init_stolen() was not calling drm_mm_init()
> and returning 0, causing errors later when testing memory
> (intel_memory_region_memtest()) and in intel_memory_regions_hw_probe()
> saying setup of memory region failed:
I think you might that a bit backwards. There are a lot of other cases
where don't initialize stolen and still return 0 here. But in those cases
we *don't* call drm_mm_init() and everyone just uses drm_mm_initialized()
to check whether stolen was actually initialized or not.
>
> checking generic (91000000 300000) vs hw (23fe7e000000 2000000)
> checking generic (91000000 300000) vs hw (237800000000 800000000)
> i915 0000:8c:00.0: [drm:i915_gem_init_stolen [i915]] GEN6_STOLEN_RESERVED = 0x00000003ff800185
> i915 0000:8c:00.0: [drm:i915_gem_init_stolen [i915]] Memory reserved for graphics device: 8192K, usable: 0K
> i915 0000:8c:00.0: Failed to read back from memory region:[mem 0x3ff800000-0x3ff7fffff] at [0x0000237bff800000 + 0x0000000000000000] for i915_gem_stolen_lmem_setup [i915]; wrote 0, read (ff, ff, ff)
> i915 0000:8c:00.0: [drm] *ERROR* Failed to setup region 6 (type=3:0), error -22
> [drm:intel_gt_setup_lmem [i915]] LMEM: debug trace data region: [0x0-0x2000000]
> i915 0000:8c:00.0: [drm:intel_gt_setup_lmem [i915]] Local memory: [mem 0x00000000-0x3faffffff]
>
> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
> ---
> drivers/gpu/drm/i915/gem/i915_gem_stolen.c | 9 ++++++---
> drivers/gpu/drm/i915/intel_memory_region.c | 3 +++
> 2 files changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_stolen.c b/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
> index 26975d8577760..6e90357b2d1fd 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
> @@ -495,13 +495,16 @@ static int i915_gem_init_stolen(struct intel_memory_region *mem)
> * memory, so just consider the start. */
> reserved_total = stolen_top - reserved_base;
>
> + i915->stolen_usable_size =
> + resource_size(&i915->dsm) - reserved_total;
> +
> drm_dbg(&i915->drm,
> "Memory reserved for graphics device: %lluK, usable: %lluK\n",
> (u64)resource_size(&i915->dsm) >> 10,
> - ((u64)resource_size(&i915->dsm) - reserved_total) >> 10);
> + (u64)i915->stolen_usable_size >> 10);
>
> - i915->stolen_usable_size =
> - resource_size(&i915->dsm) - reserved_total;
> + if (i915->stolen_usable_size == 0)
> + return -ENOMEM;
>
> /* Basic memrange allocator for stolen space. */
> drm_mm_init(&i915->mm.stolen, 0, i915->stolen_usable_size);
> diff --git a/drivers/gpu/drm/i915/intel_memory_region.c b/drivers/gpu/drm/i915/intel_memory_region.c
> index c70d7e286a512..317d67fa3a36e 100644
> --- a/drivers/gpu/drm/i915/intel_memory_region.c
> +++ b/drivers/gpu/drm/i915/intel_memory_region.c
> @@ -324,6 +324,9 @@ int intel_memory_regions_hw_probe(struct drm_i915_private *i915)
>
> if (IS_ERR(mem)) {
> err = PTR_ERR(mem);
> + if (err == -ENOMEM)
> + continue;
> +
> drm_err(&i915->drm,
> "Failed to setup region(%d) type=%d\n",
> err, type);
> --
> 2.34.1
--
Ville Syrjälä
Intel
next prev parent reply other threads:[~2022-01-21 19:54 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-21 19:24 [Intel-gfx] [PATCH] drm/i915: Fix errors when there is no free DSM José Roberto de Souza
2022-01-21 19:53 ` Ville Syrjälä [this message]
2022-01-21 20:08 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for " Patchwork
2022-01-21 20:39 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2022-01-21 23:00 ` [Intel-gfx] ✗ Fi.CI.IGT: 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=YesPQBga1LbmS3jB@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jose.souza@intel.com \
/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.