On Tue, Feb 08, 2011 at 03:06:41PM +0100, Stephan wrote: > Hi all! > > >At the very last this change should apply only when the controller is in > >RAID mode. > > But what´s the sense in simply scrubbing all mode pages on driver > initialisation?
Reset it to a known state. > > >In this case, the driver should also probably ignore the > >modes set from the upper layer. > > Does this have an impact to the scsipi layer, e.g. would the SCBs then > be different? No, but it's just wrong to apply the modes computed for the virtual disk, to a physical disk. > > >So the controller does not present us any such page for the logical target > >device it provides? > > Not to my knowledge... > > >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? > > Mhhh... you could also have one RAID set containing 2 disks, and 2 > other disks not being part of any RAID set. So the driver needs to > decide weather a target is part of an array or not. Unfortunately I do > not have any kind of documentation. There are other drivers (e.g. > Linux and FreeBSD) which serve as a reference. I´m currently making > the driver capable of reading RAID-settings with "mpt_mpilib.h" being > the only documentation I have ;) As a start, removing the said code > isn´t the best solution but stops the driver making things worse... for your configuration. I could immagine that not resetting the mode pages could make it non-functionnal in some other configs. > > > I tested this on 2 different servers (FSC and IBM) sucessfully. While both x86 I guess, and both with the BIOS enabled. > SCSI controllers are fine with that, SAS controllers still do not work > optimal (120MB reading, only 1 disk is being accessed; 25MB write > speed). There are 2 issues I see: > > 1)Write caching is not enabled by default in contrast to SCSI controllers. > 2)Mode changing is ignored; tagged queueing won´t be enabled: > > if (!mpt->is_scsi) { > /* > * SCSI transport settings don't make any sense for > * Fibre Channel; silently ignore the request. > */ > return; > } > > => 1) > > I have no idea how to enable write caching. Just changing the RAID > page and sending it back to the controller doesn´t work: > > mpt0: DEBUG: Write Cache: 0 > mpt0: DEBUG: Applying write caching hack... > mpt0: DEBUG: Sending setting to adapter... > mpt0: page type 0x8 not changeable > mpt0: DEBUG: ERROR sending setting to adapter... > > The Linux driver enables write caching by default. > > > => 2) > > I made some modifications to mpt_set_xfer_mode() so that > > -for FC, settings are completely ignored. > -for SAS, TQ and disconnecting are configured but no parallel port settings. > -for SCSI the behaving is still the same for FC, tagged queuing should also work AFAIK. -- Manuel Bouyer <bou...@antioche.eu.org> NetBSD: 26 ans d'experience feront toujours la difference --