1. 25 1月, 2013 1 次提交
    • A
      AHCI: Support multiple MSIs · 5ca72c4f
      Alexander Gordeev 提交于
      Take advantage of multiple MSIs implementation on x86 - on
      systems with IRQ remapping AHCI ports not only get assigned
      separate MSI vectors - but also separate IRQs. As result,
      interrupts generated by different ports could be serviced on
      different CPUs rather than on a single one.
      
      In cases when number of allocated MSIs is less than requested
      the Sharing Last MSI mode does not get used, no matter
      implemented in hardware or not. Instead, the driver assumes the
      advantage of multiple MSIs is negated and falls back to the
      single MSI mode as if MRSM bit was set (some Intel chips
      implement this strategy anyway - MRSM bit gets set even if the
      number of allocated MSIs exceeds the number of implemented ports).
      Signed-off-by: NAlexander Gordeev <agordeev@redhat.com>
      Acked-by: NJeff Garzik <jgarzik@redhat.com>
      Cc: Bjorn Helgaas <bhelgaas@google.com>
      Cc: Suresh Siddha <suresh.b.siddha@intel.com>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: Matthew Wilcox <willy@linux.intel.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Link: http://lkml.kernel.org/r/15bf7ee314dd55f21ec7d2a01c47613cd8190a7c.1353324359.git.agordeev@redhat.comSigned-off-by: NIngo Molnar <mingo@kernel.org>
      5ca72c4f
  2. 15 1月, 2013 1 次提交
  3. 13 9月, 2012 3 次提交
  4. 18 8月, 2012 1 次提交
  5. 26 7月, 2012 3 次提交
  6. 04 5月, 2012 1 次提交
  7. 14 3月, 2012 2 次提交
  8. 09 1月, 2012 1 次提交
  9. 09 11月, 2011 1 次提交
  10. 24 7月, 2011 6 次提交
  11. 24 4月, 2011 2 次提交
  12. 31 3月, 2011 1 次提交
  13. 15 3月, 2011 1 次提交
  14. 14 3月, 2011 1 次提交
  15. 02 3月, 2011 3 次提交
  16. 28 1月, 2011 2 次提交
  17. 22 10月, 2010 2 次提交
    • T
      libata: reimplement link power management · 6b7ae954
      Tejun Heo 提交于
      The current LPM implementation has the following issues.
      
      * Operation order isn't well thought-out.  e.g. HIPM should be
        configured after IPM in SControl is properly configured.  Not the
        other way around.
      
      * Suspend/resume paths call ata_lpm_enable/disable() which must only
        be called from EH context directly.  Also, ata_lpm_enable/disable()
        were called whether LPM was in use or not.
      
      * Implementation is per-port when it should be per-link.  As a result,
        it can't be used for controllers with slave links or PMP.
      
      * LPM state isn't managed consistently.  After a link reset for
        whatever reason including suspend/resume the actual LPM state would
        be reset leaving ap->lpm_policy inconsistent.
      
      * Generic/driver-specific logic boundary isn't clear.  Currently,
        libahci has to mangle stuff which libata EH proper should be
        handling.  This makes the implementation unnecessarily complex and
        fragile.
      
      * Tied to ALPM.  Doesn't consider DIPM only cases and doesn't check
        whether the device allows HIPM.
      
      * Error handling isn't implemented.
      
      Given the extent of mismatch with the rest of libata, I don't think
      trying to fix it piecewise makes much sense.  This patch reimplements
      LPM support.
      
      * The new implementation is per-link.  The target policy is still
        port-wide (ap->target_lpm_policy) but all the mechanisms and states
        are per-link and integrate well with the rest of link abstraction
        and can work with slave and PMP links.
      
      * Core EH has proper control of LPM state.  LPM state is reconfigured
        when and only when reconfiguration is necessary.  It makes sure that
        LPM state is reset when probing for new device on the link.
        Controller agnostic logic is now implemented in libata EH proper and
        driver implementation only has to deal with controller specifics.
      
      * Proper error handling.  LPM config failure is attributed to the
        device on the link and LPM is disabled for the link if it fails
        repeatedly.
      
      * ops->enable/disable_pm() are replaced with single ops->set_lpm()
        which takes @policy and @hints.  This simplifies driver specific
        implementation.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      6b7ae954
    • T
      libata: clean up lpm related symbols and sysfs show/store functions · c93b263e
      Tejun Heo 提交于
      Link power management related symbols are in confusing state w/ mixed
      usages of lpm, ipm and pm.  This patch cleans up lpm related symbols
      and sysfs show/store functions as follows.
      
      * lpm states - NOT_AVAILABLE, MIN_POWER, MAX_PERFORMANCE and
        MEDIUM_POWER are renamed to ATA_LPM_UNKNOWN and
        ATA_LPM_{MIN|MAX|MED}_POWER.
      
      * Pre/postfixes are unified to lpm.
      
      * sysfs show/store functions for link_power_management_policy were
        curiously named get/put and unnecessarily complex.  Renamed to
        show/store and simplified.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      c93b263e
  18. 29 9月, 2010 1 次提交
  19. 10 9月, 2010 1 次提交
  20. 26 8月, 2010 1 次提交
  21. 02 8月, 2010 1 次提交
  22. 02 7月, 2010 1 次提交
  23. 15 5月, 2010 3 次提交
    • H
      ahci: EM message type auto detect · 008dbd61
      Harry Zhang 提交于
      Detect enclosure management message type automatically at driver
      initialization, instead of using module parameter "ahci_em_messages".
      Signed-off-by: NHarry Zhang <harry.zhang@amd.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      008dbd61
    • T
      ahci: implement AHCI_HFLAG_NO_FPDMA_AA and update NV quirks · 83f2b963
      Tejun Heo 提交于
      It turns out different generations of MCPs have differing quirks.
      
      * MCP 65-73 : FPDMA AA broken, lies about PMP support, forgets to report NCQ
      * MCP 77-79 : FPDMA AA broken, lies about PMP support
      * MCP 89    : FPDMA AA broken
      
      Instead of turngin off FPDMA AA on all NVIDIAs, implement
      HFLAG_NO_FPDMA_AA, define additional board IDs and apply necessary
      quirks.
      
      This fixes bko#15481 and the list of quirks is verified by Peer Chen.
      
        http://bugzilla.kernel.org/show_bug.cgi?id=15481Signed-off-by: NTejun Heo <tj@kernel.org>
      Cc: Peer Chen <pchen@nvidia.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      83f2b963
    • T
      ahci: clean up board IDs · 441577ef
      Tejun Heo 提交于
      ahci over time has grown a number of board IDs and it's a bit of mess
      right now.  Clean it up such that,
      
      * board_id_* now live in a separate enum board_ids and numbers are
        assigned automatically.
      
      * Board IDs assigned to features are separated from the ones assigned
        to specific implementations and both are ordered alphabetically.
      
      * For NV MCPs, define per-generation alias board_ids and assign
        matching aliases in the pci id table.  This makes mcp_linux, 67-73
        use board_ahci_mcp65 instead of board_ahci_yesncq.  Both are
        identical in content.
      
      * Kill now unused board_ahci_nopmp and board_ahci_yesncq.
      
      This patch doesn't cause any functional change but will make future
      changes to board_ids and quirks much less painful.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Cc: Peer Chen <pchen@nvidia.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      441577ef