1. 11 11月, 2011 1 次提交
  2. 30 10月, 2011 8 次提交
  3. 22 9月, 2011 1 次提交
    • N
      [SCSI] mpt2sas: Added NUNA IO support in driver which uses multi-reply queue support of the HBA · 911ae943
      nagalakshmi.nandigama@lsi.com 提交于
      Support added for controllers capable of multi reply queues.
      
      The following are the modifications to the driver to support NUMA.
      
      1) Create the new structure adapter_reply_queue to contain the reply queue
         info for every msix vector.  This object will contain a
         reply_post_host_index, reply_post_free for each instance, msix_index, among
         other parameters.  We will track all the reply queues on a link list called
         ioc->reply_queue_list. Each reply queue is aligned with each IRQ, and is
         passed to the interrupt via the bus_id parameter.
      
      (2) The driver will figure out the msix_vector_count from the PCIe MSIX
          capabilities register instead of the IOC Facts->MaxMSIxVectors. This is
          because the firmware is not filling in this field until the driver has
          already registered MSIX support.
      
      (3) If the ioc_facts reports that the controller is MSIX compatible in the
          capabilities, then the driver will request for multiple irqs.  This count
          is calculated based on the minimum between the online cpus available and
          the ioc->msix_vector_count.  This count is reported to firmware in the
          ioc_init request.
      
      (4) New routines were added _base_free_irq and _base_request_irq, so
          registering and freeing msix vectors were done thru simple function API.
      
      (5) The new routine _base_assign_reply_queues was added to align the msix
          indexes across cpus. This will initialize the array called
          ioc->cpu_msix_table.  This array is looked up on every MPI request so the
          MSIxIndex is set appropriately.
      
      (6) A new shost sysfs attribute was added to report the reply_queue_count.
      
      (7) User needs to set the affinity cpu mask, so the interrupts occur on the
          same cpu that sent the original request.
      Signed-off-by: NNagalakshmi Nandigama <nagalakshmi.nandigama@lsi.com>
      Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
      911ae943
  4. 15 9月, 2011 1 次提交
  5. 27 8月, 2011 1 次提交
  6. 26 7月, 2011 1 次提交
  7. 30 6月, 2011 4 次提交
  8. 25 5月, 2011 2 次提交
  9. 01 5月, 2011 2 次提交
    • K
      [SCSI] mpt2sas : WarpDrive New product SSS6200 support added · 0bdccdb0
      Kashyap, Desai 提交于
      This patch has Support for the new solid state device product SSS6200
      from LSI and relavent features w.r.t SSS6200.
      
      The major feature added in this driver is supporting Direct-I/O to the
      SSS6200 storage.There are some additional changes done to avoid exposing
      the RAID member disks to the OS and hiding/exposing drives based on the
      OEM Specific Flag in Manufacturing Page10 (this is required to handle
      specific changes in the SSS6200 firmware).
      
      Each and every changes are listed below.
      1. Hiding IR related messages.
      For SSS6200, the driver is modified not to print IR related events.
      Even if the debugging is enabled the IR related messages will not be displayed.
      In some places if there is a need to display a message related to IR the
      string "IR" is replaced with string "DD" and the string "volume" is replaced
      with "direct drive". But the function names are not changed hence there are
      some places where the reference to volume can be seen if debug level is set.
      
      2. Removed RAID transport support
      In Linux the user can retrieve RAID volume information from the sysfs directory.
      This support is removed for SSS6200.
      
      3. Direct I/O support.
      The driver tries to enable direct I/O when a volume is reported to the driver
      by the firmware through IRCC events and the driver does this just before
      reporting to the OS, hence all the OS issued I/O can go through direct path
      if they can, The first validation is to see whether the manufacturing page10
      flag is set to expose all drives always. If that is set, the driver will not
      enable direct I/O and displays the message "DDIO" is disabled globally as
      drives are exposed. The driver checks whether there is more than one volume
      in the controller, if so the direct I/O will be disabled globally for all
      volumes in the controller and the message displayed will be "DDIO is disabled
      globally as number of drives > 1.
      If retrieving number of PD is failed the driver will not enable direct I/O
      and displays the message Failure in computing number of drives DDIO disabled.
      If memory allocation for RAIDVolumePage0 is failed, the driver will not enable
      direct I/O and displays the message Memory allocation failure for
      RVPG0 DDIO disabled.  If retrieving RAIDVolumePage0 is failed the driver will
      not enable direct I/O and displays the message Failure in retrieving
      RVPG0 DDIO disabled
      
      If the number of PD in a volume is greater than 8, then the direct I/O will
      be disabled.
      If any of individual drives handle retrieval is failed then the DD-IO will
      be disabled.
      If the volume is not RAID0 or if the block size is not 512 then the DD-IO will
      be disabled.
      If the volume size is greater than 2TB then the DD-IO will be disabled.
      If the driver is not able to find a valid stripe exponent using the configured
      stripe size then the DD-IO will be disabled
      
      When the DD-IO is enabled the driver will check every I/O request issued to
      the storage and checks whether the request is either
      READ6/WRITE6/READ10/WRITE10, if it is and if the complete I/O transfer
      is within a stripe size then the I/O is redirected to
      the drive directly instead of the volume.
      
      On completion of every I/O, if the completion is failure means if the reply
      is address reply with a reply frame associated with it, then the type of I/O
      will be checked, if the I/O is direct then the I/O will be retried to
      the volume once.
      Signed-off-by: NKashyap Desai <kashyap.desai@lsi.com>
      Reviewed-by: NEric Moore <eric.moore@lsi.com>
      Reviewed-by: NSathya Prakash <sathya.prakash@lsi.com>
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      0bdccdb0
    • C
      [SCSI] mpt2sas: do not check serial_number in the abort handler · a7c44d4a
      Christoph Hellwig 提交于
      The SCSI midlayer stops all command processing when in error handling, which
      means there is no chance for command reuse when the abort handler is called.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Acked-by: N"Moore, Eric" <Eric.Moore@lsi.com>
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      a7c44d4a
  10. 31 3月, 2011 1 次提交
  11. 13 2月, 2011 1 次提交
    • T
      [SCSI] remove flush_scheduled_work() usages · a684b8da
      Tejun Heo 提交于
      Simple conversions to drop flush_scheduled_work() usages in
      drivers/scsi.  More involved ones will be done in separate patches.
      
      * NCR5380, megaraid_sas: cancel_delayed_work() +
        flush_scheduled_work() -> cancel_delayed_work_sync().
      
      * mpt2sas_scsih: drop unnecessary flush_scheduled_work().
      
      * arcmsr_hba, ipr, pmcraid: flush the used work explicitly instead of
        using flush_scheduled_work().
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      a684b8da
  12. 24 1月, 2011 4 次提交
    • K
      [SCSI] mpt2sas: fix Integrated Raid unsynced on shutdown problem · 3a9c913a
      Kashyap, Desai 提交于
      Issue:
      IR shutdown(sending) and IR shutdown(complete) messages not
      listed in /var/log/messages when driver is removed.
      
      The driver needs to issue a MPI2_RAID_ACTION_SYSTEM_SHUTDOWN_INITIATED
      request when the driver is unloaded so the IR metadata journal is updated.
      If this request is not sent, then the volume would need a "check
      consistency" issued on the next bootup if the volume was roamed from one
      initiator to another. The current driver supports this feature only when the
      system is rebooted, however this also need to be supported if the driver is
      unloaded
      
      Fix:
      To fix this issue, the driver is going
      to need to call the _scsih_ir_shutdown prior to reporting
      the volumes missing from the OS, hence the device handles
      are still present.
      Signed-off-by: NKashyap Desai <kashyap.desai@lsi.com>
      Cc: stable@kernel.org
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      3a9c913a
    • K
      [SCSI] mpt2sas: Fix the race between broadcast asyn event and scsi command completion · ec07a053
      Kashyap, Desai 提交于
      False timeout after hard resets, there were two issues which leads
      to timeout.
      (1) Panic because of invalid memory access in the broadcast asyn
      event processing routine due to a race between accessing the scsi command
      pointer from broadcast asyn event processing thread and completing
      the same scsi command from the interrupt context.
      (2)  Broadcast asyn event notifcations are not handled due to events
      ignored while the broadcast asyn event is activity being processed
      from the event process kernel thread.
      
      In addition, changed the ABRT_TASK_SET to ABORT_TASK in the
      broadcast async event processing routine.   This is less disruptive to other
      request that generate Broadcast Asyn Primitives besides target
      reset. e.g clear reservations, microcode download,and mode select.
      Signed-off-by: NKashyap Desai <kashyap.desai@lsi.com>
      Cc: stable@kernel.org
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      ec07a053
    • K
      [SCSI] mpt2sas: fix internal device reset for older firmware prior to MPI Rev K · efe82a16
      Kashyap, Desai 提交于
      The "internal device reset complete" event is not supported
      for older firmware prior to MPI Rev K We added
      a check in the driver so the "internal device reset" event is
      ignored for older firmware.  When ignored, the tm_busy flag doesn't
      get set nor cleared.  Without this fix, IO queues would be froozen
      indefinetly after the "internal device reset" event, as the "complete" event
      never sent to clear the flag.
      Signed-off-by: NKashyap Desai <kashyap.desai@lsi.com>
      Cc: stable@kernel.org
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      efe82a16
    • K
      [SCSI] mpt2sas: Fix device removal handshake for zoned devices · 4dc2757a
      Kashyap, Desai 提交于
      When zoning end devices, the driver is not sending device
      removal handshake alogrithm to firmware. This results in controller
      firmware not sending sas topology add events the next time the device is
      added. The fix is the driver should be doing the device removal handshake
      even though the PHYSTATUS_VACANT bit is set in the PhyStatus of the
      event data. The current design is avoiding the handshake when the
      VACANT bit is set in the phy status.
      Signed-off-by: NKashyap Desai <kashyap.desai@lsi.com>
      Cc: stable@kernel.org
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      4dc2757a
  13. 22 12月, 2010 7 次提交
  14. 17 11月, 2010 1 次提交
    • J
      SCSI host lock push-down · f281233d
      Jeff Garzik 提交于
      Move the mid-layer's ->queuecommand() invocation from being locked
      with the host lock to being unlocked to facilitate speeding up the
      critical path for drivers who don't need this lock taken anyway.
      
      The patch below presents a simple SCSI host lock push-down as an
      equivalent transformation.  No locking or other behavior should change
      with this patch.  All existing bugs and locking orders are preserved.
      
      Additionally, add one parameter to queuecommand,
      	struct Scsi_Host *
      and remove one parameter from queuecommand,
      	void (*done)(struct scsi_cmnd *)
      
      Scsi_Host* is a convenient pointer that most host drivers need anyway,
      and 'done' is redundant to struct scsi_cmnd->scsi_done.
      
      Minimal code disturbance was attempted with this change.  Most drivers
      needed only two one-line modifications for their host lock push-down.
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      Acked-by: NJames Bottomley <James.Bottomley@suse.de>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      f281233d
  15. 28 7月, 2010 5 次提交
    • E
      [SCSI] mpt2sas: driver fails to recover from injected PCIe bus errors · 3cb5469a
      Eric Moore 提交于
      fixes surrounding PCIe enhanced error handling:
      
      (1) We need to reject all request generated internaly inside the driver as well
      as request arriving from the scsi mid layer when PCIe EEH is active. The fix is
      to add a per adapter flag called pci_error_recovery which is checked thru out
      the driver when request are generated.
      
      (2) We don't need to call the pci_driver->remove directly from the PCIe
      callbacks becuase its already called from the PCIe EEH code. In its place we are
      shutting down the watchdog timer, and flushing back all pending IO.
      
      (3) We need to save and restore the pci state across PCIe EEH handling.
      Signed-off-by: NEric Moore <eric.moore@lsi.com>
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      3cb5469a
    • K
      [SCSI] mpt2sas: Adding additional message to error escalation callback · 8e864a81
      Kashyap, Desai 提交于
      Adding additional messages to the error escallation callbacks which
      displays the wwid, sas address, handle, phy number, enclosure logical id,
      and slot. In the same eh callbacks, routines, the printks were converted
      to sdev_printks, which displays the bus target mapping.  These additional
      modifications help better identify the device which is in recovery.
      Signed-off-by: NKashyap Desai <kashyap.desai@lsi.com>
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      8e864a81
    • K
      [SCSI] mpt2sas: Add additional check for responding volumes after Host Reset · d417d1c3
      Kashyap, Desai 提交于
      ISSUE DESCRIPTION:
      This test case involves creating two RAID1 volumes,  then
      simultaneiously issue host reset and pull all the drives associated to
      the 1st raid volume.  The observed behavour is the physical drives are
      removed, however the volume remains.   The expected behavour is the
      volume as well as physical drives should be removed from OS.
      
      FIX:
      Add support in the post host reset device scan logic for raid volumes
      where the driver will have an additional check for responding raid
      volume where the status should be either online, optimal, or degraded.
      So for voluemes that have a status of missing or failed, the driver
      will mark them for deletion.
      Signed-off-by: NKashyap Desai <kashyap.desai@lsi.com>
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      d417d1c3
    • K
      [SCSI] mpt2sas: Redesign Raid devices event handling using pd_handles per HBA · f3eedd69
      Kashyap, Desai 提交于
      Actual problem :
      Driver  may receiving the top level expander
      removal event prior to all the individual PD removal events, hence the
      driver is breaking down all the PDs in advanced to the actaul PD UNHIDE
      event. Driver sends multiple
      Target Resets to the same volume handle for each individual PD removal.
      
      FIX DESCRIPTION:
      To fix this issue, the entire PD device handshake protocal has to be
      moved to interrupt context so the breakdown occurs immediately after the
      actual UNHIDE event arrives.  The driver will only issue one Target Reset to
      the volume handle, occurring after the FAILED or MISSING volume status
      event arrives from interrupt context. For the PD UNHIDE event, the driver
      will issue target resets to the PD handles, followed by OP_REMOVE.  The
      driver will set the "deteleted" flag during interrupt context.  A "pd_handle"
      bitmask was introduced so the driver has a list of known pds during entire
      life of the PD; this replaces the "hidden_raid_component" flag handle in
      the sas_device object.  Each bit in the bitmask represents a device handle.
      The bit in the bitmask would be toggled ON/OFF when the HIDE/UNHIDE
      events arrive; also this pd_handle bitmask would bould be refreshed
      across host resets.
      
      Here we kept older behavior of sending target reset to volume when there is
      a single drive pull, wait for the reply, then send target resets
      to the PDs.  We kept this behavior so the driver will
      behave the same for older versions of firmware.
      Signed-off-by: NKashyap Desai <kashyap.desai@lsi.com>
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      f3eedd69
    • K
      [SCSI] mpt2sas: Tie a log info message to a specific PHY. · 7fbae67a
      Kashyap, Desai 提交于
      Add support to display additional debug info for SCSI_IO and
      RAID_SCSI_IO_PASSTHROUGH sent from the normal entry queued entry
      point, as well as internal generated commands, and IOCTLS.  The
      additional debug info included the phy number, as well as the
      sas address, enclosure logical id, and slot number.  This debug info
      has to be enabled thru the logging_level command line option, by
      default this will not be displayed.
      Signed-off-by: NKashyap Desai <kashyap.desai@lsi.com>
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      7fbae67a