Messages in this thread Patch in this message |  | | Date | Fri, 29 Sep 2000 16:50:31 +0200 | From | Miquel van Smoorenburg <> | Subject | Re: 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/
|  |