DAC960 Oopses
PATCH 1/1 DAC960 Oopses
Hi,
The first part fixes a Kernel paging request failure on alpha with some older DAC960P cards (i tried D040340-0-DEC/Firmware 2.70). The Problem was, that ioremap_nocache(NULL) is not NULL (only on alpha). This card is still unsupported, due to lacking PCI resources.
The second part fixes a kernel Oops, if the initialization of the Controller fails (like too old firmware).
In that case, DAC960_UnregisterBlockDevice fails, because DAC960_RegisterBlockDevice was never called. This is a side effect of the multi-queue patch by Dave Olien.
Please CC to me directly.
drivers/block/DAC960.c +15 -1
@@ -2723,6 +2723,20 @@break ; } +/* +Controller with Mylex P/N D040340-0-DEC has no PCI resource[1]!! +Checking the MemoryMappedAddress == NULL will fail on +virtual Alpha addresses. +*/ +if (!Controller->PCI_Address) + { +DAC960_Error ("Unable to get PCI Address. " +"This Controller is currently not supported.\n" , + Controller); + Controller->IO_Address =0 ; + goto Failure; + } +pci_set_drvdata (PCI_Device, (void *)((long )Controller->ControllerNumber));for (i =0 ; i < DAC960_MaxLogicalDrives; i++) { Controller->disks[i] =alloc_disk (1 <<DAC960_MaxPartitionsBits);
@@ -3061,8 +3075,8 @@ DAC960_V2_RAID_Controller);DAC960_Notice ("done\n" , Controller); } +DAC960_UnregisterBlockDevice (Controller); } -DAC960_UnregisterBlockDevice (Controller);DAC960_DestroyAuxiliaryStructures (Controller);DAC960_DestroyProcEntries (Controller);DAC960_DetectCleanup (Controller);