SMP and aic7xxx

Richard B. Johnson (
Mon, 5 May 1997 14:31:33 -0400 (EDT)

Okay. If I compile 2.1.37x without SMP enabled, your driver works okay.
I added save_flags() cli()/etc.. in aic7xxx_queue() and aic7xxx_isr()
(from the beginning), etc. and did not break anything. It still works
in non SMP mode.

However, in SMP mode, the kernel simply stops working as soon as the
first write occurs after the root file system is mounted. There is
---sometimes--- an Ooops with "unable to handle NULL pointer dereference
at 0000", with some code that usually does not look like good code, but
sometimes is real code. It is variable. It does not lie between any
symbols that the kernel knows about.

This is copied from the screen:

Unable to handle kernel NULL pointer dereference at virtual address 00000000
current->tss.cr3 = 00101000, %cr3 = 00101000
*pde = 00000000
Oops: 0002
CPU: 0
EIP 0010:<c01cbac5>
EFLAGS: 00010247
eax: ffffffff ebx: c0106000 ecx: 00000397 edx: 00000000
esi: c01eca34 edi: c0107ea4 ebp: c0107e48 esp: c0107d58
ds: 0018 es: 0018 ss:0018

Process swapper (pid:0, process nr:0, stackpage=c0107000
Stack: c0106000 c01eca34 c0107d24 c01060dc 00000000 00000000 00000001

(and two more lines..........)

Call Trace:
Code: 00 00 00 00 00 00 00 00 00 ....etc.

Dick Johnson
Richard B. Johnson
Project Engineer
Analogic Corporation
Voice : (508) 977-3000 ext. 3754
Fax : (508) 532-6097
Modem : (508) 977-6870
Ftp :
Email :,
Penguin : Linux version 2.1.35 on an i586 machine (66.15 BogoMips).
Warning : I read unsolicited mail for $350.00 per hour. Supply billing address.