* [PATCH] DAC960 Oopses
@ 2004-03-07 14:38 markus.amsler
0 siblings, 0 replies; only message in thread
From: markus.amsler @ 2004-03-07 14:38 UTC (permalink / raw)
To: linux-kernel
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.
--- linux-2.6.3/drivers/block/DAC960.c Wed Feb 18 04:59:05 2004
+++ linux/drivers/block/DAC960.c Sun Mar 7 11:47:55 2004
@@ -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);
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2004-03-07 12:45 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-03-07 14:38 [PATCH] DAC960 Oopses markus.amsler
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox