dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
From: Russell King <rmk+kernel@armlinux.org.uk>
To: Brian Starkey <brian.starkey@arm.com>,
	Liviu Dudau <Liviu.Dudau@arm.com>, Jyri Sarha <jsarha@ti.com>
Cc: linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org
Subject: [PATCH RFC 01/12] drm/i2c: tda998x: avoid race in tda998x_encoder_mode_set()
Date: Tue, 08 Nov 2016 12:25:00 +0000	[thread overview]
Message-ID: <E1c45SW-0005jL-52@rmk-PC.armlinux.org.uk> (raw)
In-Reply-To: <20161108122420.GP1041@n2100.armlinux.org.uk>

As priv->audio_params can now be changed at run time, we need to be more
careful about how we deal with a mode set.  We must take the audio lock
while checking if there's a valid audio configuration.

However, it's slightly worse than that - during mode set, we mute the
audio, and it must not be unmuted until we have finished the mode set.
It is possible that the audio side may start while a mode set is in
progress, so take the audio_mutex lock around the whole mode setting
procedure.

Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
---
 drivers/gpu/drm/i2c/tda998x_drv.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c b/drivers/gpu/drm/i2c/tda998x_drv.c
index 088900d78ceb..1cc0433ce9d5 100644
--- a/drivers/gpu/drm/i2c/tda998x_drv.c
+++ b/drivers/gpu/drm/i2c/tda998x_drv.c
@@ -1074,13 +1074,12 @@ tda998x_encoder_mode_set(struct drm_encoder *encoder,
 
 		tda998x_write_avi(priv, adjusted_mode);
 
-		if (priv->audio_params.format != AFMT_UNUSED) {
-			mutex_lock(&priv->audio_mutex);
+		mutex_lock(&priv->audio_mutex);
+		if (priv->audio_params.format != AFMT_UNUSED)
 			tda998x_configure_audio(priv,
 						&priv->audio_params,
 						adjusted_mode->clock);
-			mutex_unlock(&priv->audio_mutex);
-		}
+		mutex_unlock(&priv->audio_mutex);
 	}
 }
 
-- 
2.7.4

  reply	other threads:[~2016-11-08 12:25 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-08 12:24 [PATCH RFC 00/12] tda998x updates Russell King - ARM Linux
2016-11-08 12:25 ` Russell King [this message]
2016-11-18  0:01   ` [PATCH RFC 01/12] drm/i2c: tda998x: avoid race in tda998x_encoder_mode_set() Russell King - ARM Linux
2016-11-08 12:25 ` [PATCH RFC 02/12] drm/i2c: tda998x: avoid racy access to mode clock Russell King
2016-11-08 12:25 ` [PATCH RFC 03/12] drm/i2c: tda998x: avoid race when programming audio Russell King
2016-11-08 12:25 ` [PATCH RFC 04/12] drm/i2c: tda998x: only configure infoframes and audio if supported Russell King
2016-11-08 12:25 ` [PATCH RFC 05/12] drm/i2c: tda998x: only enable audio if supported by sink Russell King
2016-11-08 12:25 ` [PATCH RFC 06/12] drm/i2c: tda998x: correct function name in comments Russell King
2016-11-08 12:25 ` [PATCH RFC 07/12] drm/i2c: tda998x: move and rename tda998x_encoder_set_config() Russell King
2016-11-08 12:25 ` [PATCH RFC 08/12] drm/i2c: tda998x: group connector functions and funcs together Russell King
2016-11-08 12:25 ` [PATCH RFC 09/12] drm/i2c: tda998x: separate connector initialisation Russell King
2016-11-08 12:25 ` [PATCH RFC 10/12] drm/i2c: tda998x: group audio functions together Russell King
2016-11-08 12:25 ` [PATCH RFC 11/12] drm/i2c: tda998x: remove complexity from tda998x_audio_get_eld() Russell King
2016-11-08 12:25 ` [PATCH RFC 12/12] drm/i2c: tda998x: switch to boolean is_on Russell King
2016-11-08 13:19 ` [PATCH RFC 00/12] tda998x updates Robin Murphy
2016-11-08 13:32   ` Russell King - ARM Linux
2016-11-08 13:34     ` Russell King - ARM Linux
2016-11-08 15:25       ` Robin Murphy
2016-11-08 15:42         ` Russell King - ARM Linux
2016-11-08 17:20       ` Jon Medhurst (Tixy)
2016-11-08 18:24         ` Russell King - ARM Linux
2016-11-09 11:45           ` Jon Medhurst (Tixy)
2016-11-09 22:14             ` Russell King - ARM Linux
2016-11-11 15:10 ` Jyri Sarha
2016-11-11 15:27   ` Russell King - ARM Linux
2016-11-11 16:24     ` Jyri Sarha

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=E1c45SW-0005jL-52@rmk-PC.armlinux.org.uk \
    --to=rmk+kernel@armlinux.org.uk \
    --cc=Liviu.Dudau@arm.com \
    --cc=brian.starkey@arm.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jsarha@ti.com \
    --cc=linux-arm-kernel@lists.infradead.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).