Messages in this thread Patch in this message | | | From | Jesse Barnes <> | Subject | Re: Intel RAID Controller SRCU42X in SGI Altix 350 | Date | Thu, 29 Jun 2006 11:32:51 -0700 |
| |
On Thursday, June 29, 2006 8:18 am, Robert Nagy wrote: > Hi, > > Distribution: Debian testing/unstable > Hardware Environment: SGI Altix 350, 2xItanium 2, EFI (read dmesg) > http://bsd.hu/~robert/altix.dmesg > http://bsd.hu/~robert/altix.kconf > > Problem Description: I've installed an Intel(r) RAID Controller > SRCU42X (PCI-X) controller to this machine. > http://www.intel.com/design/servers/raid/srcu42x/index.htm > I've never used such a controller so if someone has any idea about > this please tell me. The dmesg will show everyhing, but: > > megaraid cmm: 2.20.2.6 (Release Date: Mon Mar 7 00:01:03 EST 2005) > megaraid: 2.20.4.8 (Release Date: Mon Apr 11 12:27:22 EST 2006) > megaraid: probe new device 0x1000:0x0407:0x8086:0x0532: bus 2:slot > 0:func 0 megaraid: out of memory, megaraid_alloc_cmd_packets 965 > megaraid: maibox adapter did not initialize
IIRC some Altix boxes don't support 32 bit DMA for PCI-X devices. Based on the initialization code I looked at (just a quick scan), it looks like the command packet initialization is done before the switch to a 64 bit DMA mask, which might cause the failure you see here. You can try this patch out (totally untested). It's not fully correct, it should probably try 64 bit first then fall back to 32 bit if that fails then give up, and the other 64 bit DMA mask call should probably be removed.
Anyway, good luck. If this one doesn't work you'll have to talk with one of the SGI guys and get some more debug info about the allocation failure for the command packets.
Jesse diff --git a/drivers/scsi/megaraid/megaraid_mbox.c b/drivers/scsi/megaraid/megaraid_mbox.c index b7caf60..032a3d7 100644 --- a/drivers/scsi/megaraid/megaraid_mbox.c +++ b/drivers/scsi/megaraid/megaraid_mbox.c @@ -457,7 +457,7 @@ megaraid_probe_one(struct pci_dev *pdev, // Setup the default DMA mask. This would be changed later on // depending on hardware capabilities - if (pci_set_dma_mask(adapter->pdev, DMA_32BIT_MASK) != 0) { + if (pci_set_dma_mask(adapter->pdev, DMA_64BIT_MASK) != 0) { con_log(CL_ANN, (KERN_WARNING "megaraid: pci_set_dma_mask failed:%d\n", __LINE__)); | |