30 Oct, 2011

1 commit

  • The currentsd[] array in hpsa_update_scsi_devices had room for
    256 devices. The code was iterating over however many physical
    and logical devices plus an additional number of possible external
    MSA2XXX controllers, which together could potentially exceed 256.

    We increased the size of the currentsd array to 1024 + 1024 + 32 + 1
    elements to reflect a reasonable maximum possible number of devices
    which might be encountered. We also don't just walk off the end
    of the array if the array controller reports more devices than we
    are prepared to handle, we just ignore the excessive devices.

    Signed-off-by: Scott Teel
    Signed-off-by: Stephen M. Cameron
    Signed-off-by: James Bottomley

    Scott Teel
     

17 May, 2011

3 commits

  • The bit-2-doorbell reset method seemed to cause (survivable) NMIs
    on some systems and (unsurvivable) IOCK NMIs on some G7 servers.
    Firmware guys implemented a new doorbell method to alleviate these
    problems triggered by bit 5 of the doorbell register. We want to
    use it if it's available.

    Signed-off-by: Stephen M. Cameron
    Signed-off-by: James Bottomley
    Signed-off-by: James Bottomley

    Stephen M. Cameron
     
  • Detect failure of controller reset by noticing if the 32 bytes of
    "driver version" we store on the hardware in the config table
    fail to get zeroed out. Previously we noticed if the controller
    did not transition to "simple mode", but this did not detect reset
    failure if the controller was already in simple mode prior to
    the reset attempt (e.g. due to module parameter hpsa_simple_mode=1).

    Signed-off-by: Stephen M. Cameron
    Signed-off-by: James Bottomley
    Signed-off-by: James Bottomley

    Stephen M. Cameron
     
  • Signed-off-by: Stephen M. Cameron
    Signed-off-by: James Bottomley
    Signed-off-by: James Bottomley

    Stephen M. Cameron
     

19 Feb, 2011

2 commits


25 Jan, 2011

1 commit

  • Some low bits might have been set by the driver, causing
    a message like this to come out:

    [ 13.288062] ------------[ cut here ]------------
    [ 13.293211] WARNING: at lib/dma-debug.c:803 check_unmap+0x1a1/0x654()
    [ 13.300387] Hardware name: ProLiant DL180 G6
    [ 13.305335] hpsa 0000:06:00.0: DMA-API: device driver tries to free
    DMA memory it has not allocated [device address=0x000000007f81e001]
    [size=640 bytes]

    Signed-off-by: Stephen M. Cameron
    Signed-off-by: James Bottomley

    Stephen M. Cameron
     

28 Jul, 2010

1 commit

  • 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: Stephen M. Cameron
    Signed-off-by: James Bottomley

    Stephen M. Cameron
     

02 May, 2010

1 commit


03 Mar, 2010

3 commits


18 Feb, 2010

3 commits


10 Dec, 2009

1 commit

  • This driver supports a subset of HP Smart Array Controllers.
    It is a SCSI alternative to the cciss driver.

    [akpm@linux-foundation.org: avoid helpful cleanup patches]
    [achiang@hp.com: make device attrs static]
    [akpm@linux-foundation.org: msleep() does set_current_state() itself]
    Signed-off-by: Stephen M. Cameron
    Signed-off-by: Mike Miller
    Signed-off-by: Alex Chiang
    Signed-off-by: Andrew Morton
    Signed-off-by: James Bottomley

    Stephen M. Cameron