From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: "Belgaumkar, Vinay" <vinay.belgaumkar@intel.com>
Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH] drm/i915: Read a shadowed mmio register for ggtt flush
Date: Thu, 9 Nov 2023 22:35:12 +0200 [thread overview]
Message-ID: <ZU1CgB5XaO9VsBHJ@intel.com> (raw)
In-Reply-To: <72f09667-24d5-403a-ba9a-3465c681fec3@intel.com>
On Thu, Nov 09, 2023 at 12:01:26PM -0800, Belgaumkar, Vinay wrote:
>
> On 11/9/2023 11:30 AM, Ville Syrjälä wrote:
> > On Thu, Nov 09, 2023 at 11:21:48AM -0800, Vinay Belgaumkar wrote:
> >> We read RENDER_HEAD as a part of the flush. If GT is in
> >> deeper sleep states, this could lead to read errors since we are
> >> not using a forcewake. Safer to read a shadowed register instead.
> > IIRC shadowing is only thing for writes, not reads.
>
> Sure, but reading from a shadowed register does return the cached value
Does it? I suppose that would make some sense, but I don't recall that
ever being stated anywhere. At least before the shadow registers
existed reads would just give you zeroes when not awake.
> (even though we don't care about the vakue here). When GT is in deeper
> sleep states, it is better to read a shadowed (cached) value instead of
> trying to attempt an mmio register read without a force wake anyways.
So you're saying reads from non-shadowed registers fails somehow
when not awake? How exactly do they fail? And when reading from
a shadowed register that failure never happens?
>
> Thanks,
>
> Vinay.
>
> >
> >> Cc: John Harrison <john.c.harrison@intel.com>
> >> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> >> Signed-off-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
> >> ---
> >> drivers/gpu/drm/i915/gt/intel_gt.c | 2 +-
> >> 1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/gpu/drm/i915/gt/intel_gt.c b/drivers/gpu/drm/i915/gt/intel_gt.c
> >> index ed32bf5b1546..ea814ea5f700 100644
> >> --- a/drivers/gpu/drm/i915/gt/intel_gt.c
> >> +++ b/drivers/gpu/drm/i915/gt/intel_gt.c
> >> @@ -451,7 +451,7 @@ void intel_gt_flush_ggtt_writes(struct intel_gt *gt)
> >>
> >> spin_lock_irqsave(&uncore->lock, flags);
> >> intel_uncore_posting_read_fw(uncore,
> >> - RING_HEAD(RENDER_RING_BASE));
> >> + RING_TAIL(RENDER_RING_BASE));
> >> spin_unlock_irqrestore(&uncore->lock, flags);
> >> }
> >> }
> >> --
> >> 2.38.1
--
Ville Syrjälä
Intel
next prev parent reply other threads:[~2023-11-09 20:36 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-09 19:21 [Intel-gfx] [PATCH] drm/i915: Read a shadowed mmio register for ggtt flush Vinay Belgaumkar
2023-11-09 19:21 ` Vinay Belgaumkar
2023-11-09 19:30 ` [Intel-gfx] " Ville Syrjälä
2023-11-09 20:01 ` Belgaumkar, Vinay
2023-11-09 20:35 ` Ville Syrjälä [this message]
2023-11-10 1:02 ` Belgaumkar, Vinay
2023-11-15 19:46 ` Sripada, Radhakrishna
2023-11-15 19:46 ` Sripada, Radhakrishna
2023-11-09 22:49 ` [Intel-gfx] ✓ Fi.CI.BAT: success for " Patchwork
2023-11-10 2:52 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
2023-11-13 19:33 ` Belgaumkar, Vinay
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=ZU1CgB5XaO9VsBHJ@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=vinay.belgaumkar@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.