From: rmk+kernel@armlinux.org.uk (Russell King) To: linux-arm-kernel@lists.infradead.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
WARNING: multiple messages have this Message-ID (diff)
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
next prev parent reply other threads:[~2016-11-08 12:25 UTC|newest] Thread overview: 52+ 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:24 ` Russell King - ARM Linux 2016-11-08 12:25 ` Russell King [this message] 2016-11-08 12:25 ` [PATCH RFC 01/12] drm/i2c: tda998x: avoid race in tda998x_encoder_mode_set() Russell King 2016-11-18 0:01 ` Russell King - ARM Linux 2016-11-18 0:01 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` Russell King 2016-11-08 12:25 ` [PATCH RFC 09/12] drm/i2c: tda998x: separate connector initialisation Russell King 2016-11-08 12:25 ` 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 ` 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 ` Russell King 2016-11-08 12:25 ` [PATCH RFC 12/12] drm/i2c: tda998x: switch to boolean is_on Russell King 2016-11-08 12:25 ` Russell King 2016-11-08 13:19 ` [PATCH RFC 00/12] tda998x updates Robin Murphy 2016-11-08 13:19 ` Robin Murphy 2016-11-08 13:32 ` Russell King - ARM Linux 2016-11-08 13:32 ` Russell King - ARM Linux 2016-11-08 13:34 ` Russell King - ARM Linux 2016-11-08 13:34 ` Russell King - ARM Linux 2016-11-08 15:25 ` Robin Murphy 2016-11-08 15:25 ` Robin Murphy 2016-11-08 15:42 ` Russell King - ARM Linux 2016-11-08 15:42 ` Russell King - ARM Linux 2016-11-08 17:20 ` Jon Medhurst (Tixy) 2016-11-08 17:20 ` Jon Medhurst (Tixy) 2016-11-08 18:24 ` Russell King - ARM Linux 2016-11-08 18:24 ` Russell King - ARM Linux 2016-11-09 11:45 ` Jon Medhurst (Tixy) 2016-11-09 11:45 ` Jon Medhurst (Tixy) 2016-11-09 22:14 ` Russell King - ARM Linux 2016-11-09 22:14 ` Russell King - ARM Linux 2016-11-11 15:10 ` Jyri Sarha 2016-11-11 15:10 ` Jyri Sarha 2016-11-11 15:27 ` Russell King - ARM Linux 2016-11-11 15:27 ` Russell King - ARM Linux 2016-11-11 16:24 ` Jyri Sarha 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=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: linkBe 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.