On Fri, Feb 04, 2011 at 02:36:04PM +0100, Manuel Bouyer wrote: > > > > What then happens is very stupid. The driver calls > > mpt_set_initial_config() in mpt.c which resets every 16 target device > > pages to 0:
If we are not exposing these underlying target device pages as sd, then you are right, we should not reset any values for them. > > Now every physical disk, being part of a RAID array or not, runs in a > > prehistoric mode. When the scsipi layer then scans the bus and detects > > the virtual target (sd0), the target device page for disk 0 again gets > > initialized with useful values (this is the fast, lower disk) but the > > page for disk 1 obviously not (this is the slow, upper disk). A simple So the controller does not present us any such page for the logical target device it provides? The first time I ran into a controller that worked this way (presenting a virtual "SCSI disk" assembled from physical target disks) this was exactly the kind of confusion I was afraid of. Working on that driver (mly) I eventually decided the firmware authors had thought of this too and had gone to some lengths to make it always be clear whether one were operating on the logical "disks" provided by the controller or the physical disks on the bus (the controller could do pass-through, so one did in fact sometimes want to mix and match!). I guess this firmware vendor got it wrong. So we need a toggle for "RAID mode" which basically means "never touch the settings". If the firmware vendor did *not* get it wrong, then there is a separate page which holds these settings for the "logical" disk, and when we are operating in RAID mode we need to use that one instead of ever accessing the 16 pages for the physical disks. Do you have enough documentation to say if it actually works this way? Thor