1. 16 1月, 2012 4 次提交
  2. 31 10月, 2011 11 次提交
    • A
      [SCSI] isci: overriding max_concurr_spinup oem parameter by max(oem, user) · 7000f7c7
      Andrzej Jakowski 提交于
      Fixes bug where max_concurr_spinup oem parameter should be
      overriden by max_concurr_spinup user parameter. Override should
      happen only when max_concurr_spinup user parameter is specified
      in command line (greater than 0). Also this fix shortens variables
      representing max_conxurr_spinup for oem and user parameters.
      Signed-off-by: NAndrzej Jakowski <andrzej.jakowski@intel.com>
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
      7000f7c7
    • D
      [SCSI] isci: revert bcn filtering · 52d74634
      Dan Williams 提交于
      The initial bcn filtering implementation was validated on a kernel
      baseline that predated the switch to new libata error handling.  Also,
      prior to that conversion we borrowed the mvsas MVS_DEV_EH approach to
      prevent the unwanted extra ap->ops->phy_reset(ap) that occurred in the
      ata_bus_probe() path.
      
      After the conversion to new libata eh resets at discovery are more
      frequent and get filtered prematurely by IDEV_EH.  The result is that
      our bcn filtering has been blocked from running and at discovery and it
      appears to stall discovery completion to the point of triggering hung
      task timeouts.  So, revert the implementation for now.  When it returns
      it will go into libsas proper.
      
      The domain rediscovery that takes place due to ->lldd_I_T_nexus_reset()
      events should now be properly waited for by the ata_port_wait_eh() call
      in ata_port_probe().  So the hard coded delay in the isci
      ->lldd_I_T_nexus_reset() and other libsas drivers should help debounce
      the libsas thread from seeing temporary device removals.
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
      52d74634
    • J
      [SCSI] isci: Fix hard reset timeout conditions. · 8e35a139
      Jeff Skirvin 提交于
      A hard reset can timeout before or after the last phy in the
      port goes away.  If after, then notify the OS that the last
      phy has failed.
      
      The recovery for the failed hard reset has been removed.
      This recovery code was unecessary in that the link would
      recover from the failure normally by a new link reset sequence
      or hotplug of the remote device.
      Signed-off-by: NJeff Skirvin <jeffrey.d.skirvin@intel.com>
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
      8e35a139
    • J
      [SCSI] isci: No need to manage the pending reset bit on pending requests. · 5412e25c
      Jeff Skirvin 提交于
      The lldd does not need to look at or manage the pending device
      reset bit in pending sas_tasks.
      Signed-off-by: NJeff Skirvin <jeffrey.d.skirvin@intel.com>
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
      5412e25c
    • J
      [SCSI] isci: Remove redundant isci_request.ttype field. · 3b34c169
      Jeff Skirvin 提交于
      Use the existing IREQ_TMF flag as a request type indicator.
      Signed-off-by: NJeff Skirvin <jeffrey.d.skirvin@intel.com>
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
      3b34c169
    • J
      [SCSI] isci: Fix task management for SMP, SATA and on dev remove. · 98145cb7
      Jeff Skirvin 提交于
      libsas uses the LLDD abort task interface to handle I/O timeouts
      in the SATA/STP and SMP discovery paths, so this change will terminate
      STP/SMP requests. Also, if the device is gone, the lldd will prevent
      libsas from further escalations in the error handler.
      Signed-off-by: NJeff Skirvin <jeffrey.d.skirvin@intel.com>
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
      98145cb7
    • J
      [SCSI] isci: No task_done callbacks in error handler paths. · db49c2d0
      Jeff Skirvin 提交于
      libsas will cleanup pending sas_tasks after error handler
      path functions are called; do not call task_done callbacks.
      Signed-off-by: NJeff Skirvin <jeffrey.d.skirvin@intel.com>
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
      db49c2d0
    • J
      [SCSI] isci: Handle task request timeouts correctly. · b343dff1
      Jeff Skirvin 提交于
      In the case where "task" requests timeout (note that this class of
      requests can also include SATA/STP soft reset FIS transmissions),
      handle the case where the task was being managed by some call to
      terminate the task request by completing both the tmf and the aborting
      process.
      Signed-off-by: NJeff Skirvin <jeffrey.d.skirvin@intel.com>
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
      b343dff1
    • J
      [SCSI] isci: Fix tag leak in tasks and terminated requests. · d6891682
      Jeff Skirvin 提交于
      Make sure terminated requests and completed task tags are freed.
      Signed-off-by: NJeff Skirvin <jeffrey.d.skirvin@intel.com>
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
      d6891682
    • J
      [SCSI] isci: Immediately fail I/O to removed devices. · c2cb8a5f
      Jeff Skirvin 提交于
      In the case where an I/O fails to start in isci_request_execute,
      only allow retries if the device is not already gone.
      Signed-off-by: NJeff Skirvin <jeffrey.d.skirvin@intel.com>
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
      c2cb8a5f
    • J
      [SCSI] isci: Lookup device references through requests in completions. · 0e2e2799
      Jeff Skirvin 提交于
      The LLDD needs to obtain a reference to the device through the request
      itself and not through the domain_device, because the
      domain_device.lldd_dev is set to NULL early in the lldd_dev_gone call.
      This relies on the fact that the isci_remote_device object is keeping a
      seperate reference count of outstanding requests.  TODO: unify the
      request count tracking with the isci_remote_device kref.
      
      The failure signature of this condition looks like the following
      log, where the important bits are the call to lldd_dev_gone followed
      by a crash in isci_terminate_request_core:
      
      [  229.151541] isci 0000:0b:00.0: isci_remote_device_gone: domain_device = ffff8801492d4800, isci_device = ffff880143c657d0, isci_port = ffff880143c63658
      [  229.166007] isci 0000:0b:00.0: isci_remote_device_stop: isci_device = ffff880143c657d0
      [  229.175317] isci 0000:0b:00.0: isci_terminate_pending_requests: idev=ffff880143c657d0 request=ffff88014741f000; task=ffff8801470f46c0 old_state=2
      [  229.189702] isci 0000:0b:00.0: isci_terminate_request_core: device = ffff880143c657d0; request = ffff88014741f000
      [  229.201339] isci 0000:0b:00.0: isci_terminate_request_core: before completion wait (ffff88014741f000/ffff880149715ad0)
      [  229.213414] isci 0000:0b:00.0: sci_controller_process_completions: completion queue entry:0x8000a0e9
      [  229.214401] BUG: unable to handle kernel NULL pointer dereference at 0000000000000228
      [  229.214401] IP:jdskirvi-testlbo [<ffffffffa00a58be>] sci_request_completed_state_enter+0x50/0xafb [isci]
      [  229.214401] PGD 13d19e067 PUD 13d104067 PMD 0
      [  229.214401] Oops: 0000 [#1] SMP
      [  229.214401] CPU 0 x kernel: [  226
      [  229.214401] Modules linked in: ipv6 dm_multipath uinput nouveau snd_hda_codec_realtek snd_hda_intel ttm drm_kms_helper drm snd_hda_codec snd_hwdep snd_pcm snd_timer i2c_algo_bit isci snd libsas ioatdma mxm_wmi iTCO_wdt soundcore snd_page_alloc scsi_transport_sas iTCO_vendor_support wmi dca video i2c_i801 i2c_core [last unloaded: speedstep_lib]
      [  229.214401]
      [  229.214401] Pid: 5, comm: kworker/u:0 Not tainted 3.0.0-isci-11.7.29+ #30.353196] Buffer  Intel Corporation Stoakley/Pearlcity Workstation
      [  229.214401] RIP: 0010:[<ffffffffa00a58be>] I/O error on dev [<ffffffffa00a58be>] sci_request_completed_state_enter+0x50/0xafb [isci]
      [  229.214401] RSP: 0018:ffff88014fc03d20  EFLAGS: 00010046
      [  229.214401] RAX: 0000000000000000 RBX: ffff88014741f000 RCX: 0000000000000000
      [  229.214401] RDX: ffffffffa00b2c90 RSI: 0000000000000017 RDI: ffff88014741f0a0
      [  229.214401] RBP: ffff88014fc03d90 R08: 0000000000000018 R09: 0000000000000000
      [  229.214401] R10: 0000000000000000 R11: ffffffff81a17d98 R12: 000000000000001d
      [  229.214401] R13: ffff8801470f46c0 R14: 0000000000000000 R15: 0000000000008000
      [  229.214401] FS:  0000000000000000(0000) GS:ffff88014fc00000(0000) knlGS:0000000000000000
      [  229.214401] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
      [  229.214401] CR2: 0000000000000228 CR3: 000000013ceaa000 CR4: 00000000000406f0
      [  229.214401] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [  229.214401] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      [  229.214401] Process kworker/u:0 (pid: 5, threadinfo ffff880149714000, task ffff880149718000)
      [  229.214401] Call Trace:
      [  229.214401]  <IRQ>
      [  229.214401]  [<ffffffffa00aa6ce>] sci_change_state+0x4a/0x4f [isci]
      [  229.214401]  [<ffffffffa00a4ca6>] sci_io_request_tc_completion+0x79c/0x7a0 [isci]
      [  229.214401]  [<ffffffffa00acf35>] sci_controller_process_completions+0x14f/0x396 [isci]
      [  229.214401]  [<ffffffffa00abbda>] ? spin_lock_irq+0xe/0x10 [isci]
      [  229.214401]  [<ffffffffa00ad2cf>] isci_host_completion_routine+0x71/0x2be [isci]
      [  229.214401]  [<ffffffff8107c6b3>] ? mark_held_locks+0x52/0x70
      [  229.214401]  [<ffffffff810538e8>] tasklet_action+0x90/0xf1
      [  229.214401]  [<ffffffff81054050>] __do_softirq+0xe5/0x1bf
      [  229.214401]  [<ffffffff8106d9d1>] ? hrtimer_interrupt+0x129/0x1bb
      [  229.214401]  [<ffffffff814ff69c>] call_softirq+0x1c/0x30
      [  229.214401]  [<ffffffff8100bb67>] do_softirq+0x4b/0xa3
      [  229.214401]  [<ffffffff81053d84>] irq_exit+0x53/0xb4
      [  229.214401]  [<ffffffff814fffe7>] smp_apic_timer_interrupt+0x83/0x91
      [  229.214401]  [<ffffffff814fee53>] apic_timer_interrupt+0x13/0x20
      [  229.214401]  <EOI>
      [  229.214401]  [<ffffffff814f7ad4>] ? retint_restore_args+0x13/0x13
      [  229.214401]  [<ffffffff8107af29>] ? trace_hardirqs_off+0xd/0xf
      [  229.214401]  [<ffffffff8104ea71>] ? vprintk+0x40b/0x452
      [  229.214401]  [<ffffffff814f4b5a>] printk+0x41/0x47
      [  229.214401]  [<ffffffff81314484>] __dev_printk+0x78/0x7a
      [  229.214401]  [<ffffffff8131471e>] dev_printk+0x45/0x47
      [  229.214401]  [<ffffffffa00ae2a3>] isci_terminate_request_core+0x15d/0x317 [isci]
      [  229.214401]  [<ffffffffa00af1ad>] isci_terminate_pending_requests+0x1a4/0x204 [isci]
      [  229.214401]  [<ffffffffa00229f6>] ? sas_phye_oob_error+0xc3/0xc3 [libsas]
      [  229.214401]  [<ffffffffa00a7d9e>] isci_remote_device_nuke_requests+0xa6/0xff [isci]
      [  229.214401]  [<ffffffffa00a811a>] isci_remote_device_stop+0x7c/0x166 [isci]
      [  229.214401]  [<ffffffffa00229f6>] ? sas_phye_oob_error+0xc3/0xc3 [libsas]
      [  229.214401]  [<ffffffffa00a827a>] isci_remote_device_gone+0x76/0x7e [isci]
      [  229.214401]  [<ffffffffa002363e>] sas_notify_lldd_dev_gone+0x34/0x36 [libsas]
      [  229.214401]  [<ffffffffa0023945>] sas_unregister_dev+0x57/0x9c [libsas]
      [  229.214401]  [<ffffffffa00239c0>] sas_unregister_domain_devices+0x36/0x65 [libsas]
      [  229.214401]  [<ffffffffa0022cb8>] sas_deform_port+0x72/0x1ac [libsas]
      [  229.214401]  [<ffffffffa00229f6>] ? sas_phye_oob_error+0xc3/0xc3 [libsas]
      [  229.214401]  [<ffffffffa0022a34>] sas_phye_loss_of_signal+0x3e/0x42 [libsas]
      Signed-off-by: NJeff Skirvin <jeffrey.d.skirvin@intel.com>
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
      0e2e2799
  3. 03 10月, 2011 7 次提交
  4. 22 9月, 2011 2 次提交
  5. 15 9月, 2011 1 次提交
  6. 27 8月, 2011 1 次提交
  7. 24 8月, 2011 8 次提交
  8. 04 7月, 2011 1 次提交
  9. 03 7月, 2011 5 次提交