From: Wayne Boyer <wayne.boyer@intel.com>
To: Lucas De Marchi <lucas.demarchi@intel.com>,
<intel-gfx@lists.freedesktop.org>, Caz Yokoyama <caz@caztech.com>,
"Aravind Iddamsetty" <aravind.iddamsetty@intel.com>
Cc: tejas.upadhyay@intel.com, dri-devel@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH v2 3/3] drm/i915/dgfx: Make failure to setup stolen non-fatal
Date: Tue, 20 Sep 2022 12:18:19 -0700 [thread overview]
Message-ID: <6905e79e-700e-66cc-d369-508d885e804a@intel.com> (raw)
In-Reply-To: <20220915-stolen-v2-3-20ff797de047@intel.com>
On 9/16/22 10:36 AM, Lucas De Marchi wrote:
> There is no reason to consider the setup of Data Stolen Memory fatal on
> dgfx and non-fatal on integrated. Move the debug and error propagation
> around so both have the same behavior: non-fatal. Before this change,
> loading i915 on a system with TGL + DG2 would result in just TGL
> succeeding the initialization (without stolen).
>
> Now loading i915 on the same system with an injected failure in
> i915_gem_init_stolen():
>
> $ dmesg | grep stolen
> i915 0000:00:02.0: [drm] Injected failure, disabling use of stolen memory
> i915 0000:00:02.0: [drm:init_stolen_smem [i915]] Skip stolen region: failed to setup
> i915 0000:03:00.0: [drm] Injected failure, disabling use of stolen memory
> i915 0000:03:00.0: [drm:init_stolen_lmem [i915]] Skip stolen region: failed to setup
>
> Both GPUs are still available:
>
> $ sudo build/tools/lsgpu
> card1 Intel Dg2 (Gen12) drm:/dev/dri/card1
> └─renderD129 drm:/dev/dri/renderD129
> card0 Intel Tigerlake (Gen12) drm:/dev/dri/card0
> └─renderD128 drm:/dev/dri/renderD128
>
> Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
>
Reviewed-by: Wayne Boyer <wayne.boyer@intel.com>
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_stolen.c b/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
> index 6edf4e374f54..c5a4035c99cd 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
> @@ -494,26 +494,26 @@ static int i915_gem_init_stolen(struct intel_memory_region *mem)
> drm_notice(&i915->drm,
> "%s, disabling use of stolen memory\n",
> "iGVT-g active");
> - return 0;
> + return -ENOSPC;
> }
>
> if (i915_vtd_active(i915) && GRAPHICS_VER(i915) < 8) {
> drm_notice(&i915->drm,
> "%s, disabling use of stolen memory\n",
> "DMAR active");
> - return 0;
> + return -ENOSPC;
> }
>
> if (adjust_stolen(i915, &mem->region))
> - return 0;
> + return -ENOSPC;
>
> if (request_smem_stolen(i915, &mem->region))
> - return 0;
> + return -ENOSPC;
>
> i915->dsm = mem->region;
>
> if (init_reserved_stolen(i915))
> - return 0;
> + return -ENOSPC;
>
> /* Exclude the reserved region from driver use */
> mem->region.end = i915->dsm_reserved.start - 1;
> @@ -527,7 +527,7 @@ static int i915_gem_init_stolen(struct intel_memory_region *mem)
> (u64)i915->stolen_usable_size >> 10);
>
> if (i915->stolen_usable_size == 0)
> - return 0;
> + return -ENOSPC;
>
> /* Basic memrange allocator for stolen space. */
> drm_mm_init(&i915->mm.stolen, 0, i915->stolen_usable_size);
> @@ -765,11 +765,17 @@ i915_gem_object_create_stolen(struct drm_i915_private *i915,
>
> static int init_stolen_smem(struct intel_memory_region *mem)
> {
> + int err;
> +
> /*
> * Initialise stolen early so that we may reserve preallocated
> * objects for the BIOS to KMS transition.
> */
> - return i915_gem_init_stolen(mem);
> + err = i915_gem_init_stolen(mem);
> + if (err)
> + drm_dbg(&mem->i915->drm, "Skip stolen region: failed to setup\n");
> +
> + return 0;
> }
>
> static int release_stolen_smem(struct intel_memory_region *mem)
> @@ -786,21 +792,25 @@ static const struct intel_memory_region_ops i915_region_stolen_smem_ops = {
>
> static int init_stolen_lmem(struct intel_memory_region *mem)
> {
> + struct drm_i915_private *i915 = mem->i915;
> int err;
>
> if (GEM_WARN_ON(resource_size(&mem->region) == 0))
> - return -ENODEV;
> + return 0;
>
> err = i915_gem_init_stolen(mem);
> - if (err)
> - return err;
> + if (err) {
> + drm_dbg(&mem->i915->drm, "Skip stolen region: failed to setup\n");
> + return 0;
> + }
>
> - if (mem->io_size && !io_mapping_init_wc(&mem->iomap,
> - mem->io_start,
> - mem->io_size)) {
> - err = -EIO;
> + if (mem->io_size &&
> + !io_mapping_init_wc(&mem->iomap, mem->io_start, mem->io_size))
> goto err_cleanup;
> - }
> +
> + drm_dbg(&i915->drm, "Stolen Local memory IO start: %pa\n",
> + &mem->io_start);
> + drm_dbg(&i915->drm, "Stolen Local DSM base: %pa\n", &mem->region.start);
>
> return 0;
>
> @@ -874,16 +884,6 @@ i915_gem_stolen_lmem_setup(struct drm_i915_private *i915, u16 type,
> if (IS_ERR(mem))
> return mem;
>
> - /*
> - * TODO: consider creating common helper to just print all the
> - * interesting stuff from intel_memory_region, which we can use for all
> - * our probed regions.
> - */
> -
> - drm_dbg(&i915->drm, "Stolen Local memory IO start: %pa\n",
> - &mem->io_start);
> - drm_dbg(&i915->drm, "Stolen Local DSM base: %pa\n", &dsm_base);
> -
> intel_memory_region_set_name(mem, "stolen-local");
>
> mem->private = true;
> @@ -908,6 +908,7 @@ i915_gem_stolen_smem_setup(struct drm_i915_private *i915, u16 type,
> intel_memory_region_set_name(mem, "stolen-system");
>
> mem->private = true;
> +
> return mem;
> }
>
>
--
--
Wayne Boyer
Graphics Software Engineer
VTT-OSGC Platform Enablement
next prev parent reply other threads:[~2022-09-20 19:18 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-16 17:36 [Intel-gfx] [PATCH v2 0/3] drm/i915: Improvements to stolen memory setup Lucas De Marchi
2022-09-16 17:36 ` [Intel-gfx] [PATCH v2 1/3] drm/i915: Add missing mask when reading GEN12_DSMBASE Lucas De Marchi
2022-09-20 19:16 ` Wayne Boyer
2022-09-16 17:36 ` [Intel-gfx] [PATCH v2 2/3] drm/i915: Split i915_gem_init_stolen() Lucas De Marchi
2022-09-20 19:16 ` Wayne Boyer
2022-09-16 17:36 ` [Intel-gfx] [PATCH v2 3/3] drm/i915/dgfx: Make failure to setup stolen non-fatal Lucas De Marchi
2022-09-20 19:18 ` Wayne Boyer [this message]
2022-09-16 19:12 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915: Improvements to stolen memory setup (rev3) Patchwork
2022-09-16 19:31 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2022-09-17 0:25 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
2022-09-22 13:55 ` Lucas De Marchi
2022-09-22 15:37 ` Vudum, Lakshminarayana
2022-09-22 14:45 ` [Intel-gfx] ✓ Fi.CI.IGT: success " 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=6905e79e-700e-66cc-d369-508d885e804a@intel.com \
--to=wayne.boyer@intel.com \
--cc=aravind.iddamsetty@intel.com \
--cc=caz@caztech.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=lucas.demarchi@intel.com \
--cc=tejas.upadhyay@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox