linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: Mateusz Berezecki <mateuszb@gmail.com>
Cc: LKML <linux-kernel@vger.kernel.org>
Subject: Re: "scheduling while atomic" ?
Date: Tue, 12 Jul 2005 09:30:49 -0400	[thread overview]
Message-ID: <1121175049.6917.19.camel@localhost.localdomain> (raw)
In-Reply-To: <42D3C37C.6040401@gmail.com>

On Tue, 2005-07-12 at 15:19 +0200, Mateusz Berezecki wrote:
> Hi LKML,
> 
> What does the message saying "scheduling while atomic" mean?

It means that you called schedule with preemption turned off, which
could be by grabbing a spin_lock.

> The kernel prints a stack backtrace after this message appears so I
> suppose this is
> not a good behaviour. I am finishing an open source driver, and I need
> to do all of this
> locking stuff, etc. and this really makes me wonder what I am doing wrong.
> 
> here is some part of a backtrace...
> 
> scheduling while atomic: insmod/0x00000001/12692
>  [<c03e7352>] schedule+0x632/0x640
>  [<c0119bb1>] __wake_up_common+0x41/0x70
>  [<c03e74df>] wait_for_completion+0x8f/0xf0
>  [<c0119b50>] default_wake_function+0x0/0x20
>  [<c0119b50>] default_wake_function+0x0/0x20
>  [<c012e2dd>] queue_work+0x8d/0xa0
>  [<c012e070>] __call_usermodehelper+0x0/0x70
>  [<c012e1a5>] call_usermodehelper_keys+0xc5/0xd0
>  [<c012e070>] __call_usermodehelper+0x0/0x70
>  [<c020c028>] sprintf+0x28/0x30
>  [<c020955d>] kobject_hotplug+0x29d/0x310
>  [<c019fc6e>] sysfs_create_link+0x3e/0x60
>  [<c028b601>] class_device_add+0x161/0x1e0
>  [<c036f38e>] netdev_register_sysfs+0x3e/0x100
>  [<c03650db>] netdev_run_todo+0x1eb/0x220
>  [<c0364dce>] register_netdev+0x5e/0x90
> 
> I enable a lock at the beginning of device attach routine
> and I disable it at the end. Whats wrong with it?

When you say enable a lock, do you mean that you grabbed a lock?  Now if
you grabbed a spinlock, it is really bad to then call schedule, since a
another process that will grab that same spinlock will deadlock the CPU
(on an SMP system). Since you are using locks (I'm also assuming that
you are using spinlocks) I assume that you will be running this on a
CONFIG_PREEMPT or SMP system.

So the fix will be to release the lock before calling something that
will schedule, and regrab it afterwards.

-- Steve



  parent reply	other threads:[~2005-07-12 13:32 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-07-12 13:19 "scheduling while atomic" ? Mateusz Berezecki
2005-07-12 13:30 ` Richard B. Johnson
2005-07-12 13:30 ` Steven Rostedt [this message]
2005-07-12 14:08   ` Mateusz Berezecki
2005-07-12 14:11     ` Steven Rostedt
2005-07-12 14:22       ` Mateusz Berezecki

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=1121175049.6917.19.camel@localhost.localdomain \
    --to=rostedt@goodmis.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mateuszb@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).