From: Lyude Paul <lyude-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
Cc: Jerry Zuo <Jerry.Zuo-5C7GfCeVMHo@public.gmane.org>,
Ben Skeggs <bskeggs-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
Daniel Vetter <daniel-/w4YWyX8dFk@public.gmane.org>,
David Airlie <airlied-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
Harry Wentland <harry.wentland-5C7GfCeVMHo@public.gmane.org>,
Juston Li <juston.li-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Subject: [PATCH v7 16/20] drm/nouveau: Grab payload lock in nv50_msto_payload()
Date: Thu, 10 Jan 2019 19:53:39 -0500 [thread overview]
Message-ID: <20190111005343.17443-17-lyude@redhat.com> (raw)
In-Reply-To: <20190111005343.17443-1-lyude-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Going through the currently programmed payloads isn't safe without
holding mgr->payload_lock, so actually do that and warn if anyone tries
calling nv50_msto_payload() in the future without grabbing the right
locks.
Signed-off-by: Lyude Paul <lyude@redhat.com>
Reviewed-By: Ben Skeggs <bskeggs@redhat.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: David Airlie <airlied@redhat.com>
Cc: Jerry Zuo <Jerry.Zuo@amd.com>
Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Juston Li <juston.li@intel.com>
---
drivers/gpu/drm/nouveau/dispnv50/disp.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c
index 6f8a54e81727..8044ebba56a4 100644
--- a/drivers/gpu/drm/nouveau/dispnv50/disp.c
+++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c
@@ -679,6 +679,8 @@ nv50_msto_payload(struct nv50_msto *msto)
struct nv50_mstm *mstm = mstc->mstm;
int vcpi = mstc->port->vcpi.vcpi, i;
+ WARN_ON(!mutex_is_locked(&mstm->mgr.payload_lock));
+
NV_ATOMIC(drm, "%s: vcpi %d\n", msto->encoder.name, vcpi);
for (i = 0; i < mstm->mgr.max_payloads; i++) {
struct drm_dp_payload *payload = &mstm->mgr.payloads[i];
@@ -732,6 +734,8 @@ nv50_msto_prepare(struct nv50_msto *msto)
(0x0100 << msto->head->base.index),
};
+ mutex_lock(&mstm->mgr.payload_lock);
+
NV_ATOMIC(drm, "%s: msto prepare\n", msto->encoder.name);
if (mstc->port->vcpi.vcpi > 0) {
struct drm_dp_payload *payload = nv50_msto_payload(msto);
@@ -747,7 +751,9 @@ nv50_msto_prepare(struct nv50_msto *msto)
msto->encoder.name, msto->head->base.base.name,
args.vcpi.start_slot, args.vcpi.num_slots,
args.vcpi.pbn, args.vcpi.aligned_pbn);
+
nvif_mthd(&drm->display->disp.object, 0, &args, sizeof(args));
+ mutex_unlock(&mstm->mgr.payload_lock);
}
static int
--
2.20.1
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau
next prev parent reply other threads:[~2019-01-11 0:53 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-11 0:53 [PATCH v7 00/20] MST refcounting/atomic helpers cleanup Lyude Paul
2019-01-11 0:53 ` [PATCH v7 03/20] drm/dp_mst: Fix some formatting in drm_dp_mst_allocate_vcpi() Lyude Paul
2019-01-11 0:53 ` [PATCH v7 09/20] drm/dp_mst: Fix payload deallocation on hotplugs using malloc refs Lyude Paul
[not found] ` <20190111005343.17443-1-lyude-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2019-01-11 0:53 ` [PATCH v7 01/20] drm/dp_mst: Fix some formatting in drm_dp_add_port() Lyude Paul
2019-01-11 0:53 ` [PATCH v7 02/20] drm/dp_mst: Fix some formatting in drm_dp_payload_send_msg() Lyude Paul
2019-01-11 0:53 ` [PATCH v7 04/20] drm/dp_mst: Fix some formatting in drm_dp_mst_deallocate_vcpi() Lyude Paul
2019-01-11 0:53 ` [PATCH v7 05/20] drm/dp_mst: Rename drm_dp_mst_get_validated_(port|mstb)_ref and friends Lyude Paul
2019-01-11 0:53 ` [PATCH v7 06/20] drm/dp_mst: Introduce new refcounting scheme for mstbs and ports Lyude Paul
2019-01-11 0:53 ` [PATCH v7 07/20] drm/dp_mst: Restart last_connected_port_and_mstb() if topology ref fails Lyude Paul
2019-01-11 0:53 ` [PATCH v7 08/20] drm/dp_mst: Stop releasing VCPI when removing ports from topology Lyude Paul
2019-01-11 0:53 ` [PATCH v7 10/20] drm/i915: Keep malloc references to MST ports Lyude Paul
2019-01-11 0:53 ` [PATCH v7 11/20] drm/amdgpu/display: Keep malloc ref to MST port Lyude Paul
2019-01-11 0:53 ` [PATCH v7 13/20] drm/nouveau: Remove unnecessary VCPI checks in nv50_msto_cleanup() Lyude Paul
2019-01-11 0:53 ` [PATCH v7 14/20] drm/nouveau: Keep malloc references to MST ports Lyude Paul
2019-01-11 0:53 ` [PATCH v7 15/20] drm/nouveau: Stop unsetting mstc->port, use malloc refs Lyude Paul
2019-01-11 0:53 ` Lyude Paul [this message]
2019-01-11 0:53 ` [PATCH v7 17/20] drm/dp_mst: Add some atomic state iterator macros Lyude Paul
2019-01-11 0:53 ` [PATCH v7 18/20] drm/dp_mst: Start tracking per-port VCPI allocations Lyude Paul
2019-01-11 0:53 ` [PATCH v7 12/20] drm/nouveau: Remove bogus cleanup in nv50_mstm_add_connector() Lyude Paul
2019-01-11 0:53 ` [PATCH v7 19/20] drm/dp_mst: Check payload count in drm_dp_mst_atomic_check() Lyude Paul
2019-01-11 0:53 ` [PATCH v7 20/20] 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=20190111005343.17443-17-lyude@redhat.com \
--to=lyude-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
--cc=Jerry.Zuo-5C7GfCeVMHo@public.gmane.org \
--cc=airlied-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
--cc=bskeggs-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=daniel-/w4YWyX8dFk@public.gmane.org \
--cc=dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
--cc=harry.wentland-5C7GfCeVMHo@public.gmane.org \
--cc=intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
--cc=juston.li-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.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