BUG at smp.c:481, 2.4.8-pre2
Ok, During boot on 2.4.8-pre2 I'm getting this oops just as it starts to probe my aic7890 card. Andrea is cc'd because I'm guessing it is due to one of his patches ;-)
2 PIII cpus, 128MB ram on the box.
The oops is at line 481 on smp.c, call trace:
smp_call_function (BUG() is here, spin_unlock_bh()) ahc_reset_channelflush_tlb_allahc_reset_channelremap_area_pages__ioremapahc_pci_map_registersahc_find_pci_devicepci_bios_set_master
-chris
In article <296370000.996508500@tiny> you write:
Quoted 4 lines
Ok, During boot on 2.4.8-pre2 I'm getting this oops just as it starts to probe my aic7890 card. Andrea is cc'd because I'm guessing it is due to one of his patches ;-)
It's a sanity check, which I removed (because it's worse to panic in a 2.4.x kernel than it is to have the sanity problem). But the sanity check does show that there is some problem in ahc_pci_map_registers():
it calls "ioremap()" with interrupts disabled, which is rather broken.
I don't know that driver well enough to understand why the heck it would keep interrupts disabled over apparently a _long_ stretch of time during probing. The irq disable code seems to be somewhere else..
Justin?
Linus
Quoted 11 lines
In article <296370000.996508500@tiny> you write:
Quoted 4 lines
Ok, During boot on 2.4.8-pre2 I'm getting this oops just as it starts to probe my aic7890 card. Andrea is cc'd because I'm guessing it is due to one of his patches ;-)
It's a sanity check, which I removed (because it's worse to panic in a 2.4.x kernel than it is to have the sanity problem). But the sanity check does show that there is some problem in
ahc_pci_map_registers():
it calls "ioremap()" with interrupts disabled, which is rather broken.
Quoted 5 lines
I don't know that driver well enough to understand why the heck it would keep interrupts disabled over apparently a _long_ stretch of time during probing. The irq disable code seems to be somewhere else..
Justin?
At least in 6.2.0, interrupts are not disabled at all during the probe. In fact the driver doesn't explicitly disable interrupts ever other than by way of taking a spinlock. No spinlocks are held during this portion of the probe. Instead, we disable the interrupt line on the card, and don't enable it until the probe is complete. I haven't yet checked in 6.1.13, but this hasn't changed in a long time. I'd be surprised if the behavior is any different. Perhaps interrupts are disabled higher in the food chain?
--
Justin
Quoted 10 lines · Linus Torvalds
In article <296370000.996508500@tiny> you write:
Quoted 4 lines
Ok, During boot on 2.4.8-pre2 I'm getting this oops just as it starts to probe my aic7890 card. Andrea is cc'd because I'm guessing it is due to one of his patches ;-)
It's a sanity check, which I removed (because it's worse to panic in a 2.4.x kernel than it is to have the sanity problem). But the sanity check does show that there is some problem in
ahc_pci_map_registers():
it calls "ioremap()" with interrupts disabled, which is rather broken.
FYI, same problem with aic7xxx on 2.4.8-pre2. Sorry, Linus, it is using a kernel debugger ;)
SCSI subsystem driver Revision: 1.00
scsi0 : AdvanSys SCSI 3.3G: PCI Ultra: IO 0x2000-0x200F, IRQ 0x13
Vendor: ARCHIVE Model: Python 25601-XXX Rev: 2.75
Type: Sequential-Access ANSI SCSI revision: 02
kernel BUG at smp.c:501!
Entering kdb (current=0xc1232000, pid 1) on processor 1 Oops: invalid operand due to oops @ 0xc010eaba
eax = 0x00000019 ebx = 0x00000020 ecx = 0x00000001 edx = 0x00000001 esi = 0xc037fc28 edi = 0xc1233d5c esp = 0xc1233d44 eip = 0xc010eaba ebp = 0xc1233d70 xss = 0x00000018 xcs = 0x00000010 eflags = 0x00010082 xds = 0x00000018 xes = 0x00000018 origeax = 0xffffffff ®s = 0xc1233d10 [1]kdb> bt
EBP EIP Function(args)0xc1233d70 0xc010eaba smp_call_function+0xc6 (0xc010e8e8, 0x0, 0x1, 0x1)
kernel .text 0xc0100000 0xc010e9f4 0xc010eaec
0xc1233d8c 0xc010e94c flush_tlb_all+0x14
kernel .text 0xc0100000 0xc010e938 0xc010e998
0xc1233dcc 0xc0110b73 remap_area_pages+0x1e3 (0xc8c00000, 0xf4100000, 0x1000, 0x10)
kernel .text 0xc0100000 0xc0110990 0xc0110b80
0xc1233df8 0xc0110c4d __ioremap+0xcd (0xf4100000, 0x100, 0x10)
kernel .text 0xc0100000 0xc0110b80 0xc0110c74
0xc1233e28 0xc01cd9f4 ahc_pci_map_registers+0xbc (0xc7f71a00)
kernel .text 0xc0100000 0xc01cd938 0xc01cdb64
0xc1233e70 0xc01d9752 ahc_pci_config+0x42 (0xc7f71a00, 0xc032a2fc, 0xc7f9b000)
kernel .text 0xc0100000 0xc01d9710 0xc01d9bec
0xc1233ef4 0xc01cd8c8 ahc_linux_pci_dev_probe+0xe8 (0xc7f9b000, 0xc032879c)
kernel .text 0xc0100000 0xc01cd7e0 0xc01cd908
0xc1233f14 0xc01e85ae pci_announce_device+0x3e (0xc03287e0, 0xc7f9b000, 0x202)
kernel .text 0xc0100000 0xc01e8570 0xc01e85d4
0xc1233f30 0xc01e8617 pci_register_driver+0x43 (0xc03287e0)
kernel .text 0xc0100000 0xc01e85d4 0xc01e8634
0xc1233f40 0xc01cd916 ahc_linux_pci_probe+0xe (0xc0328700)
kernel .text 0xc0100000 0xc01cd908 0xc01cd938
0xc1233f58 0xc01ca64c ahc_linux_detect+0x1c (0xc0328700)
kernel .text 0xc0100000 0xc01ca630 0xc01ca694
0xc1233fa0 0xc01b833f scsi_register_host+0x5b (0xc0328700)
kernel .text 0xc0100000 0xc01b82e4 0xc01b85d8
0xc1233fb0 0xc01b8d4d scsi_register_module+0x29
kernel .text 0xc0100000 0xc01b8d24 0xc01b8d7c
0xc1233fc0 0xc0347079 AdvWaitEEPCmd+0x69
kernel .text.init 0xc0332000 0xc0347010 0xc03470a0
0xc1233fcc 0xc03329e9 do_initcalls+0xd
kernel .text.init 0xc0332000 0xc03329dc 0xc0332a00
0xc1233fd4 0xc0332a2e do_basic_setup+0x2e (0x10f00)
kernel .text.init 0xc0332000 0xc0332a00 0xc0332a40
0xc1233fec 0xc01050ae init+0x32
kernel .text 0xc0100000 0xc010507c 0xc0105230
0xc01055c7 kernel_thread+0x23
kernel .text 0xc0100000 0xc01055a4 0xc01055dc[1]kdb>