lkml.org 
[lkml]   [2000]   [Sep]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: 2.2.18 megaraid driver broken [was: Re: Linux 2.2.18pre11]
According to Miquel van Smoorenburg:
> The megaraid driver in 2.2.18 doesn't work with MegaRaid 434 cards.
> I've tried it on 2 different systems. Using 2.2.18pre11 with the
> megaraid.[ch] from 2.2.17 works just fine.
>
> I've only been able to test with SMP systems though - perhaps this is
> a uniprocessor / SMP problem ?

Right, I've now booted a non-smp kernel - same problem still.
Magic sysrq tells me that the kernel is stuck at 0xc01ca3b9, which
in my kernel is megaIssueCmd()

Disassembling the kernel and comparing it with the source code,
it turns out that it's stuck in

while (mbox->numstatus == 0xFF);
Now megaIssueCmd() was changed in the 2.2.18 patch, and this is
the part that seems to be responsible for it (see below).

Alan, can you forward this to the maintainer, or tell me from whom
you got the 2.2.18 patch so I can forward this to them ?

@@ -1261,10 +1519,18 @@
if (megaCfg->flag & BOARD_QUARTZ) {
mbox->mraid_poll = 0;
mbox->mraid_ack = 0;
+ mbox->numstatus = 0xFF;
+ mbox->status = 0xFF;
WRINDOOR (megaCfg, phys_mbox | 0x1);
- while ((cmdDone = RDOUTDOOR (megaCfg)) != 0x10001234);
- WROUTDOOR (megaCfg, cmdDone);
+ while (mbox->numstatus == 0xFF);
+ while (mbox->status == 0xFF);
+ while (mbox->mraid_poll != 0x77);
+ mbox->mraid_poll = 0;
+ mbox->mraid_ack = 0x77;
+
+ /* while ((cmdDone = RDOUTDOOR (megaCfg)) != 0x10001234);
+ WROUTDOOR (megaCfg, cmdDone);*/
if (pScb) {
mega_cmd_done (megaCfg, pScb, mbox->status);

Mike.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 12:57    [from the cache]
©2003-2011 Jasper Spaans