From: Lyude Paul <lyude@redhat.com>
To: dri-devel@lists.freedesktop.org, nouveau@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, amd-gfx@lists.freedesktop.org
Cc: Daniel Vetter <daniel@ffwll.ch>, Dave Airlie <airlied@gmail.com>,
Harry Wentland <harry.wentland@amd.com>,
Jerry Zuo <Jerry.Zuo@amd.com>, "David Airlie" <airlied@linux.ie>,
"Maxime Ripard" <maxime.ripard@bootlin.com>,
"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
linux-kernel@vger.kernel.org, "Sean Paul" <sean@poorly.run>,
linux-doc@vger.kernel.org, "Jonathan Corbet" <corbet@lwn.net>,
"Lyude Paul" <lyude@redhat.com>,
"Rodrigo Vivi" <rodrigo.vivi@intel.com>,
"Jani Nikula" <jani.nikula@linux.intel.com>,
"Joonas Lahtinen" <joonas.lahtinen@linux.intel.com>,
"Sean Paul" <seanpaul@chromium.org>,
"Karol Herbst" <karolherbst@gmail.com>,
"Ben Skeggs" <bskeggs@redhat.com>,
"Ilia Mirkin" <imirkin@alum.mit.edu>
Subject: [WIP PATCH 00/15] MST refcounting/atomic helpers cleanup
Date: Thu, 13 Dec 2018 20:25:29 -0500 [thread overview]
Message-ID: <20181214012604.13746-1-lyude@redhat.com> (raw)
This is a WIP version of the series I've been working on for a while now
to get all of the atomic DRM drivers in the tree to use the atomic MST
helpers, and to make the atomic MST helpers actually idempotent. Turns
out it's a lot more difficult to do that without also fixing how port
and branch device refcounting works so that it actually makes sense,
since the current upstream implementation requires a ton of magic in the
atomic helpers to work around properly and in many situations just plain
doesn't work as intended.
This patch series is starting to get bigger, and since there's still a
few bits here and there regarding the new refcount implementation that I
haven't quite decided on yet I figured I should get an opinion from
everyone else.
Currently I've got a couple of thoughts on how I could improve this
further:
* Get rid of drm_dp_mst_get_*_validated() entirely - I'm 90% sure that
with the new refcounting scheme we might not actually need port
validation at all anymore, assuming we make the use of malloc references
in all of the DRM drivers. Either way, I don't think validation was ever
actually a concept that worked: without malloc references, the port or
branch device that's being passed to drm_dp_mst_get_*_validated()
could be freed which also in turn means that that the stale pointer
could in theory have gotten reused for a new port and thus-cause us to
consider a freed port validated.
* Get rid of drm_dp_mst_get_vcpi_slots() - with malloc references, I
don't think there's any use for this either
* Get rid of drm_dp_mst_reset_vcpi_slots() - I think the only time this
function ever made sense was with port validation? Honestly, I wonder
if we ever needed this at all...
Note: I haven't applied some of the comments from the reviews for the
series this is based off of:
drm/dp_mst: Improve VCPI helpers, use in nouveau
https://patchwork.freedesktop.org/series/51414/
This is just getting put on the ML so I can get some feedback on this.
Lyude Paul (15):
drm/dp_mst: Remove bogus conditional in drm_dp_update_payload_part1()
drm/dp_mst: Refactor drm_dp_update_payload_part1()
drm/dp_mst: Introduce new refcounting scheme for mstbs and ports
drm/dp_mst: Stop releasing VCPI when removing ports from topology
drm/dp_mst: Fix payload deallocation on hotplugs using malloc refs
drm/i915: Keep malloc references to MST ports
drm/nouveau: Remove bogus cleanup in nv50_mstm_add_connector()
drm/nouveau: Remove unnecessary VCPI checks in nv50_msto_cleanup()
drm/nouveau: Fix potential use-after-frees for MSTCs
drm/nouveau: Stop unsetting mstc->port, use malloc refs
drm/nouveau: Grab payload lock in nv50_msto_payload()
drm/dp_mst: Add some atomic state iterator macros
drm/dp_mst: Start tracking per-port VCPI allocations
drm/dp_mst: Check payload count in drm_dp_mst_atomic_check()
drm/nouveau: Use atomic VCPI helpers for MST
.../gpu/dp-mst/topology-figure-1.dot | 31 +
.../gpu/dp-mst/topology-figure-2.dot | 37 +
.../gpu/dp-mst/topology-figure-3.dot | 40 +
Documentation/gpu/drm-kms-helpers.rst | 125 ++-
drivers/gpu/drm/drm_dp_mst_topology.c | 910 ++++++++++++++----
drivers/gpu/drm/i915/intel_connector.c | 4 +
drivers/gpu/drm/i915/intel_display.c | 4 +
drivers/gpu/drm/i915/intel_dp_mst.c | 66 +-
drivers/gpu/drm/nouveau/dispnv50/disp.c | 94 +-
include/drm/drm_dp_mst_helper.h | 139 ++-
10 files changed, 1178 insertions(+), 272 deletions(-)
create mode 100644 Documentation/gpu/dp-mst/topology-figure-1.dot
create mode 100644 Documentation/gpu/dp-mst/topology-figure-2.dot
create mode 100644 Documentation/gpu/dp-mst/topology-figure-3.dot
--
2.19.2
next reply other threads:[~2018-12-14 1:26 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-14 1:25 Lyude Paul [this message]
2018-12-14 1:25 ` [WIP PATCH 01/15] drm/dp_mst: Remove bogus conditional in drm_dp_update_payload_part1() Lyude Paul
2018-12-14 8:42 ` Daniel Vetter
2018-12-17 20:09 ` Wentland, Harry
2018-12-14 1:25 ` [WIP PATCH 02/15] drm/dp_mst: Refactor drm_dp_update_payload_part1() Lyude Paul
2018-12-14 8:47 ` Daniel Vetter
2018-12-17 20:27 ` Wentland, Harry
2018-12-14 1:25 ` [WIP PATCH 03/15] drm/dp_mst: Introduce new refcounting scheme for mstbs and ports Lyude Paul
2018-12-14 9:29 ` Daniel Vetter
2018-12-18 21:27 ` Lyude Paul
2018-12-19 12:48 ` Daniel Vetter
2018-12-19 18:36 ` Lyude Paul
2018-12-14 1:25 ` [WIP PATCH 04/15] drm/dp_mst: Stop releasing VCPI when removing ports from topology Lyude Paul
2018-12-14 9:40 ` Daniel Vetter
2018-12-14 1:25 ` [WIP PATCH 05/15] drm/dp_mst: Fix payload deallocation on hotplugs using malloc refs Lyude Paul
2018-12-14 9:38 ` Daniel Vetter
2018-12-18 22:02 ` Lyude Paul
2018-12-14 1:25 ` [WIP PATCH 06/15] drm/i915: Keep malloc references to MST ports Lyude Paul
2018-12-14 9:32 ` Daniel Vetter
2018-12-18 21:52 ` Lyude Paul
2018-12-19 13:20 ` Daniel Vetter
2018-12-14 1:25 ` [WIP PATCH 07/15] drm/nouveau: Remove bogus cleanup in nv50_mstm_add_connector() Lyude Paul
2018-12-14 1:25 ` [WIP PATCH 08/15] drm/nouveau: Remove unnecessary VCPI checks in nv50_msto_cleanup() Lyude Paul
2018-12-14 1:25 ` [WIP PATCH 09/15] drm/nouveau: Fix potential use-after-frees for MSTCs Lyude Paul
2018-12-14 1:25 ` [WIP PATCH 10/15] drm/nouveau: Stop unsetting mstc->port, use malloc refs Lyude Paul
2018-12-14 1:25 ` [WIP PATCH 11/15] drm/nouveau: Grab payload lock in nv50_msto_payload() Lyude Paul
2018-12-14 1:25 ` [WIP PATCH 12/15] drm/dp_mst: Add some atomic state iterator macros Lyude Paul
2018-12-14 1:25 ` [WIP PATCH 13/15] drm/dp_mst: Start tracking per-port VCPI allocations Lyude Paul
2018-12-14 16:37 ` Daniel Vetter
2018-12-14 1:25 ` [WIP PATCH 14/15] drm/dp_mst: Check payload count in drm_dp_mst_atomic_check() Lyude Paul
2018-12-14 1:25 ` [WIP PATCH 15/15] drm/nouveau: Use atomic VCPI helpers for MST Lyude Paul
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=20181214012604.13746-1-lyude@redhat.com \
--to=lyude@redhat.com \
--cc=Jerry.Zuo@amd.com \
--cc=airlied@gmail.com \
--cc=airlied@linux.ie \
--cc=amd-gfx@lists.freedesktop.org \
--cc=bskeggs@redhat.com \
--cc=corbet@lwn.net \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=harry.wentland@amd.com \
--cc=imirkin@alum.mit.edu \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
--cc=joonas.lahtinen@linux.intel.com \
--cc=karolherbst@gmail.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=maxime.ripard@bootlin.com \
--cc=nouveau@lists.freedesktop.org \
--cc=rodrigo.vivi@intel.com \
--cc=sean@poorly.run \
--cc=seanpaul@chromium.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