• Stephen M. Cameron's avatar
    [SCSI] hpsa: Fix hard reset code. · 1df8552a
    Stephen M. Cameron authored
    Smart Array controllers newer than the P600 do not honor the
    PCI power state method of resetting the controllers.  Instead,
    in these cases we can get them to reset via the "doorbell" register.
    
    This escaped notice until we began using "performant" mode because
    the fact that the controllers did not reset did not normally
    impede subsequent operation, and so things generally appeared to
    "work".  Once the performant mode code was added, if the controller
    does not reset, it remains in performant mode.  The code immediately
    after the reset presumes the controller is in "simple" mode
    (which previously, it had remained in simple mode the whole time).
    If the controller remains in performant mode any code which presumes
    it is in simple mode will not work.  So the reset needs to be fixed.
    
    Unfortunately there are some controllers which cannot be reset by
    either method. (eg. p800).  We detect these cases by noticing that
    the controller seems to remain in performant mode even after a
    reset has been attempted.  In those case, we proceed anyway,
    as if the reset has happened (and skip the step of waiting for
    the controller to become ready -- which is expecting it to be in
    "simple" mode.)  To sum up, we try to do a better job of resetting
    the controller if "reset_devices" is set, and if it doesn't work,
    we print a message and try to continue anyway.
    Signed-off-by: default avatarStephen M. Cameron <scameron@beardog.cce.hp.com>
    Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
    1df8552a
hpsa.c 112 KB