public inbox for dri-devel@lists.freedesktop.org
 help / color / mirror / Atom feed
From: Sam Ravnborg <sam@ravnborg.org>
To: Hans de Goede <hdegoede@redhat.com>
Cc: Maxime Ripard <maxime.ripard@bootlin.com>,
	dri-devel@lists.freedesktop.org, David Airlie <airlied@linux.ie>,
	Sean Paul <sean@poorly.run>
Subject: Re: [PATCH 1/2] drm: gm12u320: Do not take a mutex from a wait_event condition
Date: Sun, 11 Aug 2019 18:45:42 +0200	[thread overview]
Message-ID: <20190811164542.GC14660@ravnborg.org> (raw)
In-Reply-To: <20190811143725.5951-1-hdegoede@redhat.com>

Hi Hans.

On Sun, Aug 11, 2019 at 04:37:24PM +0200, Hans de Goede wrote:
> I made the condition of the wait_event_timeout call in
> gm12u320_fb_update_work a helper which takes a mutex to make sure
> that any writes to fb_update.run or fb_update.fb from other CPU cores
> are seen before the check is done.
> 
> This is not necessary as the wait_event helpers contain the necessary
> barriers for this themselves.
> 
> More over it is harmfull since by the time the check is done the task
> is no longer in the TASK_RUNNING state and calling mutex_lock while not
> in task-running is not allowed, leading to this warning when the kernel
> is build with some extra locking checks enabled:
> 
> [11947.450011] do not call blocking ops when !TASK_RUNNING; state=2 set at
>                [<00000000e4306de6>] prepare_to_wait_event+0x61/0x190
> 
> This commit fixes this by dropping the helper and simply directly
> checking the condition (without unnecessary locking) in the
> wait_event_timeout call.
> 
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Both patches are:
Acked-by: Sam Ravnborg <sam@ravnborg.org>

Code looks sane and matches your explanations.
But with limited clue on locking or USB this is not a proper review.

	Sam

> ---
>  drivers/gpu/drm/tiny/gm12u320.c | 14 ++------------
>  1 file changed, 2 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
> index 4c47aa4de09b..4d66765b1125 100644
> --- a/drivers/gpu/drm/tiny/gm12u320.c
> +++ b/drivers/gpu/drm/tiny/gm12u320.c
> @@ -342,17 +342,6 @@ static void gm12u320_copy_fb_to_blocks(struct gm12u320_device *gm12u320)
>  	mutex_unlock(&gm12u320->fb_update.lock);
>  }
>  
> -static int gm12u320_fb_update_ready(struct gm12u320_device *gm12u320)
> -{
> -	int ret;
> -
> -	mutex_lock(&gm12u320->fb_update.lock);
> -	ret = !gm12u320->fb_update.run || gm12u320->fb_update.fb != NULL;
> -	mutex_unlock(&gm12u320->fb_update.lock);
> -
> -	return ret;
> -}
> -
>  static void gm12u320_fb_update_work(struct work_struct *work)
>  {
>  	struct gm12u320_device *gm12u320 =
> @@ -426,7 +415,8 @@ static void gm12u320_fb_update_work(struct work_struct *work)
>  		 * switches back to showing its logo.
>  		 */
>  		wait_event_timeout(gm12u320->fb_update.waitq,
> -				   gm12u320_fb_update_ready(gm12u320),
> +				   !gm12u320->fb_update.run ||
> +					gm12u320->fb_update.fb != NULL,
>  				   IDLE_TIMEOUT);
>  	}
>  	return;
> -- 
> 2.22.0
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

      parent reply	other threads:[~2019-08-11 16:45 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-11 14:37 [PATCH 1/2] drm: gm12u320: Do not take a mutex from a wait_event condition Hans de Goede
2019-08-11 14:37 ` [PATCH 2/2] drm: gm12u320: Add -ENODEV to list of errors to ignore Hans de Goede
2019-08-11 16:45 ` Sam Ravnborg [this message]

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=20190811164542.GC14660@ravnborg.org \
    --to=sam@ravnborg.org \
    --cc=airlied@linux.ie \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=hdegoede@redhat.com \
    --cc=maxime.ripard@bootlin.com \
    --cc=sean@poorly.run \
    /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