All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
To: Luca Tettamanti <kronos.it@gmail.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [BUG] smp alternatives: sleeping function called from invalid context
Date: Thu, 1 May 2008 09:04:53 -0400	[thread overview]
Message-ID: <20080501130453.GA28965@Krystal> (raw)
In-Reply-To: <20080430195110.GA28743@dreamland.darkstar.lan>

* Luca Tettamanti (kronos.it@gmail.com) wrote:
> Hello,
> with git current I'm seeing these warnings when bringing CPUs down:
> 


Hi Luca,

Does your tree include the patch posted here ?

http://lkml.org/lkml/2008/4/19/139

Mathieu

> [13794.108805] CPU0 attaching NULL sched-domain.
> [13794.108815] CPU1 attaching NULL sched-domain.
> [13794.124695] Broke affinity for irq 22
> [13794.192376] CPU 1 is now offline
> [13794.192381] lockdep: fixing up alternatives.
> [13794.192389] SMP alternatives: switching to UP code
> [13794.192395] BUG: sleeping function called from invalid context at /home/kronos/src/linux-2.6.git/mm/slab.c:3049
> [13794.192398] in_atomic():1, irqs_disabled():0
> [13794.192401] 4 locks held by bash/11413:
> [13794.192404]  #0:  (&buffer->mutex){--..}, at: [<ffffffff802c638c>] sysfs_write_file+0x36/0x10c
> [13794.192417]  #1:  (cpu_add_remove_lock){--..}, at: [<ffffffff80253479>] cpu_down+0x12/0x32
> [13794.192427]  #2:  (&cpu_hotplug.lock){--..}, at: [<ffffffff80253024>] cpu_hotplug_begin+0x36/0xa6
> [13794.192435]  #3:  (smp_alt){--..}, at: [<ffffffff8021182f>] alternatives_smp_switch+0x63/0x1a5
> [13794.192446] Pid: 11413, comm: bash Not tainted 2.6.25-64-05976-ge31a94e-dirty #68
> [13794.192449]
> [13794.192450] Call Trace:
> [13794.192681]  [<ffffffff80280f61>] __kmalloc+0x29/0x7d
> [13794.192695]  [<ffffffff80276415>] __get_vm_area_node+0x9a/0x1b1
> [13794.192703]  [<ffffffff80209391>] clear_ti_thread_flag+0xc/0x12
> [13794.192709]  [<ffffffff80276585>] get_vm_area_caller+0x2b/0x2e
> [13794.192715]  [<ffffffff8021159d>] text_poke+0xdd/0x156
> [13794.192719]  [<ffffffff80276cc5>] vmap+0x2d/0x5a
> [13794.192727]  [<ffffffff8021159d>] text_poke+0xdd/0x156
> [13794.192736]  [<ffffffff80446f1b>] _etext+0x0/0x5
> [13794.192742]  [<ffffffff80211666>] alternatives_smp_unlock+0x50/0x65
> [13794.192752]  [<ffffffff80211934>] alternatives_smp_switch+0x168/0x1a5
> [13794.192758]  [<ffffffff80219439>] __cpus_weight+0x3f/0x41
> [13794.192767]  [<ffffffff802532b4>] _cpu_down+0x18f/0x264
> [13794.192796]  [<ffffffff8025348b>] cpu_down+0x24/0x32
> [13794.192805]  [<ffffffff8043259d>] store_online+0x29/0x67
> [13794.192812]  [<ffffffff802c642b>] sysfs_write_file+0xd5/0x10c
> [13794.192824]  [<ffffffff80283cba>] vfs_write+0xa5/0xde
> [13794.192832]  [<ffffffff80283da5>] sys_write+0x45/0x6b
> [13794.192842]  [<ffffffff80221ed2>] ia32_sysret+0x0/0xa
> [13794.192857]
> [13794.208799] CPU0 attaching NULL sched-domain.
> 
> ...and up:
> 
> [13803.369635] lockdep: fixing up alternatives.
> [13803.369640] SMP alternatives: switching to SMP code
> [13803.369645] BUG: sleeping function called from invalid context at /home/kronos/src/linux-2.6.git/mm/slab.c:3049
> [13803.369648] in_atomic():1, irqs_disabled():0
> [13803.369651] 4 locks held by bash/11413:
> [13803.369654]  #0:  (&buffer->mutex){--..}, at: [<ffffffff802c638c>] sysfs_write_file+0x36/0x10c
> [13803.369666]  #1:  (cpu_add_remove_lock){--..}, at: [<ffffffff8044115e>] cpu_up+0x40/0x64
> [13803.369676]  #2:  (&cpu_hotplug.lock){--..}, at: [<ffffffff80253024>] cpu_hotplug_begin+0x36/0xa6
> [13803.369686]  #3:  (smp_alt){--..}, at: [<ffffffff8021182f>] alternatives_smp_switch+0x63/0x1a5
> [13803.369697] Pid: 11413, comm: bash Not tainted 2.6.25-64-05976-ge31a94e-dirty #68
> [13803.369700]
> [13803.369701] Call Trace:
> [13803.369712]  [<ffffffff80280f61>] __kmalloc+0x29/0x7d
> [13803.369721]  [<ffffffff80276415>] __get_vm_area_node+0x9a/0x1b1
> [13803.369731]  [<ffffffff80209391>] clear_ti_thread_flag+0xc/0x12
> [13803.369738]  [<ffffffff80446f1b>] _etext+0x0/0x5
> [13803.369743]  [<ffffffff80276585>] get_vm_area_caller+0x2b/0x2e
> [13803.369749]  [<ffffffff8021159d>] text_poke+0xdd/0x156
> [13803.369753]  [<ffffffff80276cc5>] vmap+0x2d/0x5a
> [13803.369763]  [<ffffffff8021159d>] text_poke+0xdd/0x156
> [13803.369773]  [<ffffffff802118c5>] alternatives_smp_switch+0xf9/0x1a5
> [13803.369795]  [<ffffffff8043f29e>] native_cpu_up+0x224/0x7fc
> [13803.369804]  [<ffffffff8043ee95>] do_fork_idle+0x0/0x20
> [13803.369833]  [<ffffffff80441098>] _cpu_up+0x91/0x117
> [13803.369842]  [<ffffffff80441175>] cpu_up+0x57/0x64
> [13803.369849]  [<ffffffff804325b7>] store_online+0x43/0x67
> [13803.369856]  [<ffffffff802c642b>] sysfs_write_file+0xd5/0x10c
> [13803.369867]  [<ffffffff80283cba>] vfs_write+0xa5/0xde
> [13803.369875]  [<ffffffff80283da5>] sys_write+0x45/0x6b
> [13803.369886]  [<ffffffff80221ed2>] ia32_sysret+0x0/0xa
> [13803.369898]
> [13803.380408] Booting processor 1/1 ip 6000
> [13803.389154] Initializing CPU#1
> [13803.389154] masked ExtINT on CPU#1
> 
> The bug has been introduced (assuming that I'm using git blame correctly) by this commit:
> 
> commit e587cadd8f47e202a30712e2906a65a0606d5865
> Author: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
> Date:   Thu Mar 6 08:48:49 2008 -0500
> 
>     x86: enhance DEBUG_RODATA support - alternatives
> 
> 
> In both code paths - cpu_up() and cpud_down() - alternatives_smp_switch ends up
> calling text_poke() (via alternatives_smp_{,un}lock) with smp_alt held;
> then text_poke does a vmap which might sleep!
> 
> Luca
> -- 
> Windows NT crashed.
> I'm the Blue Screen of Death.
> No one hears your screams.

-- 
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F  BA06 3F25 A8FE 3BAE 9A68

  reply	other threads:[~2008-05-01 13:05 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-30 19:51 [BUG] smp alternatives: sleeping function called from invalid context Luca Tettamanti
2008-05-01 13:04 ` Mathieu Desnoyers [this message]
2008-05-01 15:02   ` Luca Tettamanti
2008-05-01 16:44     ` Luca Tettamanti
2008-05-01 18:46       ` [PATCH] Fix SMP alternatives : use mutex instead of spinlock, text_poke is sleepable Mathieu Desnoyers
2008-05-01 18:52         ` Linus Torvalds
2008-05-01 20:08           ` Mathieu Desnoyers

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=20080501130453.GA28965@Krystal \
    --to=mathieu.desnoyers@polymtl.ca \
    --cc=kronos.it@gmail.com \
    --cc=linux-kernel@vger.kernel.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 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.