From: Lyude <lyude@redhat.com>
To: stable@vger.kernel.org
Cc: Lyude <lyude@redhat.com>, David Airlie <airlied@linux.ie>,
intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org,
Hans de Goede <hdegoede@redhat.com>,
dri-devel@lists.freedesktop.org,
Daniel Vetter <daniel.vetter@intel.com>
Subject: [PATCH 0/5] drm/i915/skl: Backport watermark fixes for 4.8.y
Date: Wed, 26 Oct 2016 15:36:32 -0400 [thread overview]
Message-ID: <1477510599-14843-1-git-send-email-lyude@redhat.com> (raw)
Now that these have finally made it into 4.9, it's time to finally backport
these fixes. Skylake has been a mess in multi-monitor setups for a while now
because up until recently we've been updating the watermarks on Skylake just
like we would for previous generations of Intel GPUs. This means updating
attributes for each plane, and then only after they've been updated writing
their new watermark values.
The problem with this approach is Skylake has double buffered watermark
registers that are flipped at the same time as the rest of the plane registers.
This means that the original approach will leave planes active with new
attributes but without the required watermark programming that would ensure the
display pipe reads enough data from each plane. As a result, pipes start to
underrun and the user's displays starts to flicker heavily. Usually in response
to plugging in new monitors, or moving cursors from one screen to another
(which triggers a plane and watermark update).
Additionally, issues were found with the original code for configuring ddb,
display data buffer, allocations between display planes on Skylake. On Skylake
all planes have space allocated to them in the ddb, and the hardware requires
that these allocations never overlap at any point in time. Because ddb
allocations were not updated alongside plane attributes despite also being
double buffered registers armed by plane updates, planes were likely to get
stuck momentarily with ddb allocations that overlapped one another. This would
also lead to pipe underruns and display flickering.
The new approach fixes this problem by making sure that on Skylake, attributes
for display planes are always updated at the same time as the watermarks, and
pipes are updated in an order that ensures their ddb allocations don't
overlap at any point between plane updates. This ensures the display pipes are
always programmed correctly, and dramatically reduces the chance of display
flickering.
(note: my e-mail has changed since these patches were upstreamed, and I updated
the e-mails in these patches to reflect this. if this is wrong I will be happy
to update and resend the patches).
Lyude (4):
drm/i915/skl: Update plane watermarks atomically during plane updates
drm/i915: Move CRTC updating in atomic_commit into it's own hook
drm/i915/skl: Update DDB values atomically with wms/plane attrs
drm/i915/skl: Don't try to update plane watermarks if they haven't
changed
Paulo Zanoni (1):
drm/i915/gen9: only add the planes actually affected by ddb changes
drivers/gpu/drm/i915/i915_drv.h | 2 +
drivers/gpu/drm/i915/intel_display.c | 189 +++++++++++++++++++-----
drivers/gpu/drm/i915/intel_drv.h | 12 ++
drivers/gpu/drm/i915/intel_pm.c | 271 ++++++++++++++---------------------
drivers/gpu/drm/i915/intel_sprite.c | 14 ++
5 files changed, 289 insertions(+), 199 deletions(-)
--
2.7.4
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next reply other threads:[~2016-10-26 19:36 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-26 19:36 Lyude [this message]
2016-10-26 19:36 ` [PATCH 1/5] drm/i915/skl: Update plane watermarks atomically during plane updates Lyude
2016-10-26 19:36 ` [PATCH 2/5] drm/i915: Move CRTC updating in atomic_commit into it's own hook Lyude
2016-10-26 19:36 ` [PATCH 3/5] drm/i915/skl: Update DDB values atomically with wms/plane attrs Lyude
2016-10-26 19:36 ` [PATCH 4/5] drm/i915/skl: Don't try to update plane watermarks if they haven't changed Lyude
2016-10-26 19:36 ` [PATCH 5/5] drm/i915/gen9: only add the planes actually affected by ddb changes Lyude
2016-10-27 6:24 ` [Intel-gfx] [PATCH 0/5] drm/i915/skl: Backport watermark fixes for 4.8.y Daniel Vetter
2016-10-28 13:47 ` Greg KH
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=1477510599-14843-1-git-send-email-lyude@redhat.com \
--to=lyude@redhat.com \
--cc=airlied@linux.ie \
--cc=daniel.vetter@intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=hdegoede@redhat.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).