1. 11 9月, 2009 1 次提交
  2. 29 7月, 2009 1 次提交
  3. 12 5月, 2009 1 次提交
  4. 18 4月, 2009 2 次提交
  5. 07 4月, 2009 10 次提交
  6. 25 3月, 2009 18 次提交
  7. 14 3月, 2009 1 次提交
  8. 26 2月, 2009 1 次提交
    • M
      sata_mv: fix SoC interrupt breakage · 6be96ac1
      Mark Lord 提交于
      For some reason, sata_mv doesn't clear interrupt status during init
      when it's running on an SoC host adapter.  If the bootloader has
      touched the SATA controller before starting Linux, Linux can end up
      enabling the SATA interrupt with events pending, which will cause the
      interrupt to be marked as spurious and then be disabled, which then
      breaks all further accesses to the controller.
      
      This patch makes the SoC path clear interrupt status on init like in
      the non-SoC case.
      Signed-off-by: NLennert Buytenhek <buytenh@marvell.com>
      Signed-off-by: NMark Lord <mlord@pobox.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      6be96ac1
  9. 03 2月, 2009 1 次提交
  10. 26 1月, 2009 4 次提交
    • M
      sata_mv: msi masking fix (v2) · 6d3c30ef
      Mark Lord 提交于
      Enable reliable use of Message-Signaled Interrupts (MSI) in sata_mv
      by masking further chip interrupts within the main interrupt handler.
      
      Based upon a suggestion by Grant Grundler.
      MSI is working reliably in all of my test systems here now.
      Signed-off-by: NMark Lord <mlord@pobox.com>
      Reviewed-by: NGrant Grundler <grundler@google.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      6d3c30ef
    • T
      sata_mv: Properly initialize main irq mask · 5d0fb2e7
      Thomas Reitmayr 提交于
      I noticed that during initialization sata_mv.c assumes that the main
      interrupt mask has its default value of 0. The function
      mv_platform_probe(..) initializes a shadow irq mask with 0 assuming
      that's the value of the controller's register. Now
      mv_set_main_irq_mask(..) only writes the controller's register if the
      new value differs from the "shadowed" value. This is fatal when trying
      to disable all interrupts in mv_init_host(..), i.e. the following
      function call does not write anything to the main irq mask register:
      
        mv_set_main_irq_mask(host, ~0, 0);
      
      The effect I see on my machine (QNAP TS-109 II) with booting via kexec
      (with Linux as a 2nd-stage boot loader) is that if the sata_mv module
      was still loaded when performing kexec, then the new kernel's sata_mv
      module starts up with interrupts enabled. This results in an unhandled
      IRQ and breaks the boot process.
      
      The unhandled interrupt itself might also be fixed by Lennert's patch
      proposed at http://markmail.org/message/kwvzxstnlsa3s26w which I did not
      try yet.
      
      However I still propose to additionally initialize the shadow variable
      with the current contents of the main irq mask register to get both in
      sync and allow proper disabling the main irq mask. This fixes the
      unhandled irq on my machine.
      Signed-off-by: NThomas Reitmayr <treitmayr@devbase.at>
      Signed-off-by: NMark Lord <mlord@pobox.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      5d0fb2e7
    • M
      sata_mv: remove bogus nsect restriction · cd12e1f7
      Mark Lord 提交于
      Remove unneeded nsect restriction from GenII NCQ path,
      and improve comments to explain why this is not a problem.
      Signed-off-by: NMark Lord <mlord@pobox.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      cd12e1f7
    • M
      sata_mv: don't read hc_irq_cause · cae6edc3
      Mark Lord 提交于
      Remove silly read-modify-write sequences when clearing interrupts
      in hc_irq_cause.  This gets rid of unneeded MMIO reads, resulting in
      a slight performance boost when switching between EDMA and non-EDMA
      modes (eg. for cache flushes).
      Signed-off-by: NMark Lord <mlord@pobox.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      cae6edc3