All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paz Zcharya <pazz@chromium.org>
To: Ville Syrjala <ville.syrjala@linux.intel.com>
Cc: intel-gfx@lists.freedesktop.org, Andrzej Hajda <andrzej.hajda@intel.com>
Subject: Re: [PATCH v3 15/16] drm/i915: Try to relocate the BIOS fb to the start of ggtt
Date: Tue, 30 Jan 2024 23:27:24 +0000	[thread overview]
Message-ID: <ZbmF3IeyAyb-QERO@google.com> (raw)
In-Reply-To: <20240116075636.6121-16-ville.syrjala@linux.intel.com>

On Tue, Jan 16, 2024 at 09:56:35AM +0200, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> On MTL the GOP (for whatever reason) likes to bind its framebuffer
> high up in the ggtt address space. This can conflict with whatever
> ggtt_reserve_guc_top() is trying to do, and the result is that
> ggtt_reserve_guc_top() fails and then we proceed to explode when
> trying to tear down the driver. Thus far I haven't analyzed what
> causes the actual fireworks, but it's not super important as even
> if it didn't explode we'd still fail the driver load and the user
> would be left with an unusable GPU.
> 
> To remedy this (without having to figure out exactly what
> ggtt_reserve_guc_top() is trying to achieve) we can attempt to
> relocate the BIOS framebuffer to a lower ggtt address. We can do
> this at this early point in driver init because nothing else is
> supposed to be clobbering the ggtt yet. So we simply change where
> in the ggtt we pin the vma, the original PTEs will be left as is,
> and the new PTEs will get written with the same dma addresses.
> The plane will keep on scanning out from the original PTEs until
> we are done with the whole process, and at that point we rewrite
> the plane's surface address register to point at the new ggtt
> address.
> 
> Since we don't need a specific ggtt address for the plane
> (apart from needing it to land in the mappable region for
> normal stolen objects) we'll just try to pin it without a fixed
> offset first. It should end up at the lowest available address
> (which really should be 0 at this point in the driver init).
> If that fails we'll fall back to just pinning it exactly to the
> origianal address.
> 
> To make sure we don't accidentlally pin it partially over the
> original ggtt range (as that would corrupt the original PTEs)
> we reserve the original range temporarily during this process.
> 
> v2: Try to pin explicitly to ggtt offset 0 as otherwise DG2 puts it
>     even higher (atm we have no PIN_LOW flag to force it low)
> 
> Cc: Paz Zcharya <pazz@chromium.org>
> Reviewed-by: Andrzej Hajda <andrzej.hajda@intel.com>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Hi Ville,

Thank you so much for this incredible series.
It solves the issue regarding MTL initial plane readout
that Andrzej Hajda and I worked on in
https://patchwork.freedesktop.org/patch/570811/?series=127130&rev=2
In addition, it solved the issue with the new GOP.

I tested it on two different devices with Meteor Lake and it worked perfectly:
no i915 errors, no flickers or observable issues.

Tested-by: Paz Zcharya <pazz@chromium.org>


  reply	other threads:[~2024-01-30 23:28 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-16  7:56 [PATCH v3 00/16] drm/i915: (stolen) memory region related fixes Ville Syrjala
2024-01-16  7:56 ` [PATCH v3 01/16] drm/i915: Use struct resource for memory region IO as well Ville Syrjala
2024-01-16 10:23   ` Nirmoy Das
2024-01-30 23:15     ` Paz Zcharya
2024-01-16  7:56 ` [PATCH v3 02/16] drm/i915: Print memory region info during probe Ville Syrjala
2024-01-16 10:20   ` Nirmoy Das
2024-01-30 23:16     ` Paz Zcharya
2024-01-16  7:56 ` [PATCH v3 03/16] drm/i915: Remove ad-hoc lmem/stolen debugs Ville Syrjala
2024-01-16 10:23   ` Nirmoy Das
2024-01-30 23:17     ` Paz Zcharya
2024-01-16  7:56 ` [PATCH v3 04/16] drm/i915: Bypass LMEMBAR/GTTMMADR for MTL stolen memory access Ville Syrjala
2024-01-16 10:31   ` Nirmoy Das
2024-01-25 10:27   ` [PATCH v4 " Ville Syrjala
2024-01-30 23:19     ` Paz Zcharya
2024-01-16  7:56 ` [PATCH v3 05/16] drm/i915: Disable the "binder" Ville Syrjala
2024-01-16 10:32   ` Nirmoy Das
2024-01-17 14:13   ` Michał Winiarski
2024-01-17 17:46     ` Nirmoy Das
2024-01-18 23:12       ` Ville Syrjälä
2024-01-19 10:47         ` Nirmoy Das
2024-01-19 10:49           ` Nirmoy Das
2024-01-25  9:08         ` Ville Syrjälä
2024-01-25 14:59           ` Michał Winiarski
2024-01-31 11:33             ` Ville Syrjälä
2024-01-25 10:27   ` [PATCH v4 " Ville Syrjala
2024-01-30 23:20     ` Paz Zcharya
2024-01-16  7:56 ` [PATCH v3 06/16] drm/i915: Rename the DSM/GSM registers Ville Syrjala
2024-01-16 10:45   ` Nirmoy Das
2024-01-25 10:28   ` [PATCH v4 " Ville Syrjala
2024-01-30 23:20     ` Paz Zcharya
2024-01-16  7:56 ` [PATCH v3 07/16] drm/i915: Fix PTE decode during initial plane readout Ville Syrjala
2024-01-16 10:46   ` Nirmoy Das
2024-01-30 23:21     ` Paz Zcharya
2024-01-16  7:56 ` [PATCH v3 08/16] drm/i915: Fix region start " Ville Syrjala
2024-01-22 15:07   ` Shankar, Uma
2024-01-30 23:21     ` Paz Zcharya
2024-01-16  7:56 ` [PATCH v3 09/16] drm/i915: Fix MTL " Ville Syrjala
2024-01-22 15:09   ` Shankar, Uma
2024-01-30 23:22     ` Paz Zcharya
2024-01-16  7:56 ` [PATCH v3 10/16] drm/i915: s/phys_base/dma_addr/ Ville Syrjala
2024-01-30 23:22   ` Paz Zcharya
2024-01-16  7:56 ` [PATCH v3 11/16] drm/i915: Split the smem and lmem plane readout apart Ville Syrjala
2024-01-30 23:23   ` Paz Zcharya
2024-01-16  7:56 ` [PATCH v3 12/16] drm/i915: Simplify intel_initial_plane_config() calling convention Ville Syrjala
2024-01-28  4:18   ` kernel test robot
2024-01-28  4:18     ` kernel test robot
2024-01-30 23:24   ` Paz Zcharya
2024-02-02 15:14   ` Jani Nikula
2024-02-02 16:12     ` Ville Syrjälä
2024-02-02 16:15       ` Jani Nikula
2024-02-02 23:58   ` kernel test robot
2024-01-16  7:56 ` [PATCH v3 13/16] drm/i915/fbdev: Fix smem_start for LMEMBAR stolen objects Ville Syrjala
2024-01-30 23:25   ` Paz Zcharya
2024-01-16  7:56 ` [PATCH v3 14/16] drm/i915: Tweak BIOS fb reuse check Ville Syrjala
2024-01-30 23:26   ` Paz Zcharya
2024-01-16  7:56 ` [PATCH v3 15/16] drm/i915: Try to relocate the BIOS fb to the start of ggtt Ville Syrjala
2024-01-30 23:27   ` Paz Zcharya [this message]
2024-01-16  7:56 ` [PATCH v3 16/16] drm/i915: Annotate more of the BIOS fb takeover failure paths Ville Syrjala
2024-01-22 15:12   ` Shankar, Uma
2024-01-30 23:27     ` Paz Zcharya
2024-01-16  9:02 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: (stolen) memory region related fixes (rev6) Patchwork
2024-01-16  9:02 ` ✗ Fi.CI.SPARSE: " Patchwork
2024-01-16  9:21 ` ✗ Fi.CI.BAT: failure " Patchwork
2024-01-17 16:23 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: (stolen) memory region related fixes (rev7) Patchwork
2024-01-17 16:23 ` ✗ Fi.CI.SPARSE: " Patchwork
2024-01-17 16:40 ` ✗ Fi.CI.BAT: failure " Patchwork
2024-01-25 12:00 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: (stolen) memory region related fixes (rev10) Patchwork
2024-01-25 12:00 ` ✗ Fi.CI.SPARSE: " Patchwork
2024-01-25 12:02 ` ✓ Fi.CI.BAT: success " Patchwork
2024-01-25 14:39 ` ✗ 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=ZbmF3IeyAyb-QERO@google.com \
    --to=pazz@chromium.org \
    --cc=andrzej.hajda@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=ville.syrjala@linux.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.