linux-fbdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Russell King - ARM Linux <linux@arm.linux.org.uk>
To: santosh prasad nayak <santoshprasadnayak@gmail.com>
Cc: FlorianSchandinat@gmx.de, linux-fbdev@vger.kernel.org,
	linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org
Subject: Re: [PATCH] Video : Amba: Use in_interrupt() in clcdfb_sleep().
Date: Sun, 11 Mar 2012 15:48:46 +0000	[thread overview]
Message-ID: <20120311154846.GD13336@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <CAOD=uF5F4tOG0Y2tZdDeMgqs4-46HXYzA3RR-t8KuNuYRarJbg@mail.gmail.com>

On Sun, Mar 11, 2012 at 08:49:27PM +0530, santosh prasad nayak wrote:
> On Sun, Mar 11, 2012 at 8:33 PM, Russell King - ARM Linux
> <linux@arm.linux.org.uk> wrote:
> > in_interrupt() won't tell us if we're being called with spinlocks held,
> > which _is_ a possibility because this can be called from printk(), for
> > oops dumps and the like.
> >
> > in_interrupt() just means that we're inside a hard or soft interrupt,
> > or nmi.  It says nothing about whether msleep() is possible.
> 
> 
> in_atomic() is also not  error free.  I found following comment in
> include/linux/hardirq.h.  How do you handle it in non-preemptible
> kernel ?
> 
> /*
>  * Are we running in atomic context?  WARNING: this macro cannot
>  * always detect atomic context; in particular, it cannot know about
>  * held spinlocks in non-preemptible kernels.  Thus it should not be
>  * used in the general case to determine whether sleeping is possible.
>  * Do not use in_atomic() in driver code.
>  */
> #define in_atomic()     ((preempt_count() & ~PREEMPT_ACTIVE) != 0)

That may be, but the fact of the matter is that no one has *ever*
reported an incident where this has failed at this point - and when
it does people will end up with a might_sleep() warning from msleep().

Maybe those who are saying people should not use this should instead
be analysing why people use this, and suggest an alternative solution
to the problem instead of a basic and uninformative "you shouldn't use
this" statement.

As I've said, if we aren't going to use this, then the only solution is
to completely omit the msleep() there and just say "sod you to running
anything else for 20ms while this driver busy-spins."  That's
ultimately the safe thing to do, and at the moment I see no other
alternative there.

  reply	other threads:[~2012-03-11 15:48 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-11 13:26 [PATCH] Video : Amba: Use in_interrupt() in clcdfb_sleep() santosh nayak
2012-03-11 13:22 ` richard -rw- weinberger
2012-03-11 13:27 ` Russell King - ARM Linux
2012-03-11 14:29   ` santosh prasad nayak
2012-03-11 14:36     ` Russell King - ARM Linux
2012-03-11 14:49       ` santosh prasad nayak
2012-03-11 15:03         ` Russell King - ARM Linux
2012-03-11 15:31           ` santosh prasad nayak
2012-03-11 15:48             ` Russell King - ARM Linux [this message]
2012-03-11 16:49               ` santosh prasad nayak
2012-03-11 16:42                 ` Russell King - ARM Linux
2012-03-11 16:58                   ` santosh prasad nayak
2012-03-11 17:05                     ` Russell King - ARM Linux
2012-03-11 18:24               ` Alan Cox

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=20120311154846.GD13336@n2100.arm.linux.org.uk \
    --to=linux@arm.linux.org.uk \
    --cc=FlorianSchandinat@gmx.de \
    --cc=kernel-janitors@vger.kernel.org \
    --cc=linux-fbdev@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=santoshprasadnayak@gmail.com \
    /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).