On Thu, Dec 14, 2006 at 05:46:25PM +0530, kiran kumar wrote: > Can some one explain why I see the below crash on Intel Xeon SMP box. The > kernel version is 2.6.11. This is what I'm trying to do in the driver. > > 1.Submit a request to a device in 'unlocked_ioctl()' and issue > 'wait_event_interruptible _timeout()' for 10 jiffies. There can be many such > outstanding requests issued by different processes and all these are placed > in a queue. > 2.The 'wake_up_interruptible()' is issued either from tasklet or a > poll-thread which polls on the status of the request. > 3. The request queue is protected using 'spin_lock_bh/spin_unlock_bh' to be > softIRQ safe. I'm stating this to point that > 'spin_lock_irqsave/spin_lock_irqrestore' is issued only with waitQ. > > If i either not use 'unlocked_ioctl()' i.e. use ioctl() (or)comment out > 'wake_up_interruptible()' call I don't see the crash. Is > wake_up_interruptible SMP safe??? Yes, it certainly is. Aren't *you* assuming it is not? > Regards, > kiran > > /---------------------------------------------------------------------------------------------------------/ > [root@localhost ~]# ------------[ cut here ]------------ > kernel BUG at include/asm/spinlock.h:112! Have you tried reading the code at appointed line and the code for wake_up_interruptible (or more precisely for __wake_up, which implements the wake_up_* variants)? It would tell you why you have a misslock. > invalid operand: 0000 [#1] > SMP > Modules linked in: pkp_drv(U) md5 ipv6 parport_pc lp parport autofs4 rfcomm > l2cap bluetooth sunrpc dm_mod video button battery ac uhci_hcd hw_random > i2c_i801 i2c_core shpchp e1000 e100 mii floppy sata_sil libata scsi_mod ext3 > jbd > CPU: 0 > EIP: 0060:[<c03087b0>] Tainted: P VLI > EFLAGS: 00210002 (2.6.11-1.1369_FC4smp) > EIP is at _spin_unlock_irqrestore+0x26/0x30 > eax: 00000001 ebx: cfefb810 ecx: cfefb810 edx: 00200292 > esi: 00000000 edi: e0af0f20 ebp: 00000000 esp: c8ae2e10 > ds: 007b es: 007b ss: 0068 > Process swamp (pid: 5920, threadinfo=c8ae2000 task=c79d4a80) > Stack: badc0ded e0c8e1af 00000000 e0af0268 e0a86ef8 e0c87f46 00000802 > 00000000 > 00200286 e0a86ef8 00200286 e0c9c580 00000000 e0c87dd1 cfec1810 > d028a810 > 00000000 bf9fc228 e0c8dab4 00000001 c8ae2000 3f37331a bf9fc228 > e0c9c580 Did you ever heared of the ksymoops tool? You dare to program in kernel and never heared of that?? > /----------------------------------------------------------------------------------------------------------------------------------/ -------------------------------------------------------------------------------- - Jan Hudec `Bulb' <bulb@xxxxxx> -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/