From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jack Steiner Date: Fri, 30 Apr 2004 14:44:54 +0000 Subject: BUG_ON(irqs_disabled()) in smp_call_function - cant boot Message-Id: <20040430144454.GA8719@sgi.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: linux-ia64@vger.kernel.org There was a BUG_ON(irqs_disabled()) recently added to smp_call_function(). This check is hit during boot. Looks like there is a vfree in sg_add that is done with interrupts disabled. This trips the BUG_ON. The check is valid, but I wonder how many other places will trip the bug check. Call Trace: [] show_stack+0x80/0xa0 [] die+0x1d0/0x2a0 [] ia64_bad_break+0x2f0/0x420 [] ia64_leave_kernel+0x0/0x270 [] smp_call_function+0x3b0/0x3c0 [] smp_flush_tlb_all+0x40/0x80 [] unmap_vm_area+0xf0/0x120 [] remove_vm_area+0x150/0x1e0 [] __vunmap+0x50/0x1e0 [] sg_add+0x2d0/0xbe0 [sg] [] class_interface_register+0x1e0/0x2a0 [] scsi_register_interface+0x30/0x60 [] init_sg+0x140/0x190 [sg] [] sys_init_module+0x3c0/0x660 [] ia64_ret_from_syscall+0x0/0x20 sg_add(struct class_device *cl_dev) { write_lock_irqsave(&sg_dev_arr_lock, iflags); if (sg_nr_dev >= sg_dev_max) { /* try to resize */ write_unlock_irqrestore(&sg_dev_arr_lock, iflags); ... write_lock_irqsave(&sg_dev_arr_lock, iflags); ... vfree((char *) sg_dev_arr); } ... } -- Thanks Jack Steiner (steiner@sgi.com) 651-683-5302 Principal Engineer SGI - Silicon Graphics, Inc.