1. 01 3月, 2012 3 次提交
    • D
      [SCSI] isci: remove IDEV_EH hack to disable "discovery-time" ata resets · 5a998328
      Dan Williams 提交于
      Prior to commit 61aaff49 "isci: filter broadcast change notifications
      during SMP phy resets" we borrowed the MVS_DEV_EH approach from the
      mvsas driver for preventing ->lldd_I_T_nexus_reset() events during ata
      discovery.  This hack was protecting against the old ->phy_reset() in
      ata_bus_probe(), but since the conversion to the new error handling this
      hack is preventing resets from reaching ata devices.
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
      5a998328
    • D
      [SCSI] isci: kill isci_port->status · fca4ecbd
      Dan Williams 提交于
      It only tracks whether the port is stopping in order to gate new devices
      being discovered while the port is stopping.  However, since the check
      and subsequent handling is unlocked there is nothing to stop the port
      from going down immediately after the check.
      
      Driver is already prepared to handle devices arriving on stale ports,
      and those will be cleaned up by an eventual ->lldd_dev_gone()
      notification.
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
      fca4ecbd
    • D
      [SCSI] isci: kill iphy->isci_port lookups · c132f692
      Dan Williams 提交于
      This field is a holdover from the OS abstraction conversion.  The stable
      phy to port lookups are done via iphy->ownining_port under scic_lock.
      After this conversion to use port->lldd_port the only volatile lookup is
      the initial lookup in isci_port_formed().  After that point any lookup
      via a successfully notified domain_device is guaranteed to be valid
      until the domain_device is destroyed.
      
      Delete ->start_complete as it is only set once and is set as a
      consequence of the port going link up, by definition of getting a port
      formed event the port is "ready".
      
      While we are correcting port lookups also move the asd_sas_port table
      out from under the isci_port.  This is to preclude any temptation to use
      container_of() to convert an asd_sas_port to an isci_port, the
      association is dynamic and under libsas control.
      Tested-by: NMaciej Trela <maciej.trela@intel.com>
      [dmilburn@redhat.com: fix i686 compile error]
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
      c132f692
  2. 16 1月, 2012 1 次提交
  3. 31 10月, 2011 3 次提交
  4. 03 10月, 2011 1 次提交
    • D
      [SCSI] isci: atapi support · b50102d3
      Dan Williams 提交于
      Based on original implementation from Jiangbi Liu and Maciej Trela.
      
      ATAPI transfers happen in two-to-three stages.  The two stage atapi
      commands are those that include a dma data transfer.  The data transfer
      portion of these operations is handled by the hardware packet-dma
      acceleration.  The three-stage commands do not have a data transfer and
      are handled without hardware assistance in raw frame mode.
      
      stage1: transmit host-to-device fis to notify the device of an incoming
      atapi cdb.  Upon reception of the pio-setup-fis repost the task_context
      to perform the dma transfer of the cdb+data (go to stage3), or repost
      the task_context to transmit the cdb as a raw frame (go to stage 2).
      
      stage2: wait for hardware notification of the cdb transmission and then
      go to stage 3.
      
      stage3: wait for the arrival of the terminating device-to-host fis and
      terminate the command.
      
      To keep the implementation simple we only support ATAPI packet-dma
      protocol (for commands with data) to avoid needing to handle the data
      transfer manually (like we do for SATA-PIO).  This may affect
      compatibility for a small number of devices (see
      ATA_HORKAGE_ATAPI_MOD16_DMA).
      
      If the data-transfer underruns, or encounters an error the
      device-to-host fis is expected to arrive in the unsolicited frame queue
      to pass to libata for disposition.  However, in the DONE_UNEXP_FIS (data
      underrun) case it appears we need to craft a response.  In the
      DONE_REG_ERR case we do receive the UF and propagate it to libsas.
      Signed-off-by: NMaciej Trela <maciej.trela@intel.com>
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
      b50102d3
  5. 04 7月, 2011 1 次提交
  6. 03 7月, 2011 31 次提交