1. 24 Dec, 2010 5 commits
    • Tejun Heo's avatar
      libata: issue DIPM enable commands with LPM state updated · e5005b15
      Tejun Heo authored
      Low level drivers may behave differently depending on the current
      link->lpm_policy.  During ata_eh_set_lpm(), DIPM enable commands are
      issued after the successful completion of ap->ops->set_lpm(), which
      means that the controller is already in the target state.  This causes
      DIPM enable commands to be processed with mismatching controller power
      state and link->lpm_policy value.
      
      In ahci, link->lpm_policy is used to ignore certain PHY events if LPM
      is enabled; however, as DIPM commands are issued with stale
      link->lpm_policy, they sometimes end up triggering these conditions
      and get aborted leading to LPM configuration failure.
      
      Fix it by updating link->lpm_policy before issuing DIPM enable
      commands.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reported-by: default avatarKyle McMartin <kyle@mcmartin.ca>
      Cc: stable@kernel.org
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      e5005b15
    • Tejun Heo's avatar
      libata: no special completion processing for EH commands · f08dc1ac
      Tejun Heo authored
      ata_qc_complete() contains special handling for certain commands.  For
      example, it schedules EH for device revalidation after certain
      configurations are changed.  These shouldn't be applied to EH
      commands but they were.
      
      In most cases, it doesn't cause an actual problem because EH doesn't
      issue any command which would trigger special handling; however, ACPI
      can issue such commands via _GTF which can cause weird interactions.
      
      Restructure ata_qc_complete() such that EH commands are always passed
      on to __ata_qc_complete().
      
      stable: Please apply to -stable only after 2.6.38 is released.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reported-by: default avatarKyle McMartin <kyle@mcmartin.ca>
      Cc: stable@kernel.org
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      f08dc1ac
    • Wolfram Sang's avatar
      pata_mpc52xx: driver needs BMDMA · 869934ad
      Wolfram Sang authored
      Found by this build-error if BMDMA is disabled:
      
      drivers/ata/pata_mpc52xx.c: In function 'mpc52xx_ata_init_one':
      drivers/ata/pata_mpc52xx.c:662: error: 'ata_bmdma_interrupt' undeclared (first use in this function)
      ...
      
      Move the Kconfig entry to the proper location as needed since
      9a7780c9 (libata-sff: make BMDMA optional)
      Signed-off-by: default avatarWolfram Sang <w.sang@pengutronix.de>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      869934ad
    • Wu Zhangjin's avatar
      pata_cs5536: Add support for non-X86_32 platforms · 9272dcc2
      Wu Zhangjin authored
      pata_cs5536 does work on the other platforms(e.g. Loongson, a MIPS
      variant), so, remove the dependency of X86_32 and fix the building
      errors under the other platforms via only reserving the X86_32 specific
      parts for X86_32.
      
      pata_amd also supports cs5536 IDE controller, but this one saves about
      33k for the compressed kernel image(vmlinuz for MIPS).
      Signed-off-by: default avatarZhang Le <r0bertz@gentoo.org>
      Signed-off-by: default avatarChen Jie <chenj@lemote.com>
      Signed-off-by: default avatarWu Zhangjin <wuzhangjin@gmail.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      9272dcc2
    • Tejun Heo's avatar
      libata-sff: fix HSM_ST_ERR handling in __ata_sff_port_intr() · 687a9933
      Tejun Heo authored
      While separating out BMDMA irq handler from SFF, commit c3b28894
      (libata-sff: separate out BMDMA irq handler) incorrectly made
      __ata_sff_port_intr() consider an IRQ to be an idle one if the host
      state was transitioned to HSM_ST_ERR by ata_bmdma_port_intr().
      
      This makes BMDMA drivers ignore IRQs reporting host bus error which
      leads to timeouts instead of triggering EH immediately.  Fix it by
      making __ata_sff_port_intr() consider the IRQ to be an idle one iff
      the state is HSM_ST_IDLE.  This is equivalent to adding HSM_ST_ERR to
      the "break"ing case but less error-prone.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reported-by: default avatarAntonio Toma <antonio.toma@gmail.com>
      Cc: stable@kernel.org
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      687a9933
  2. 21 Dec, 2010 5 commits
  3. 20 Dec, 2010 9 commits
  4. 19 Dec, 2010 3 commits
  5. 18 Dec, 2010 3 commits
  6. 17 Dec, 2010 15 commits