1. 26 Jan, 2009 8 commits
    • Thomas Reitmayr's avatar
      sata_mv: Properly initialize main irq mask · 5d0fb2e7
      Thomas Reitmayr authored
      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: default avatarThomas Reitmayr <treitmayr@devbase.at>
      Signed-off-by: default avatarMark Lord <mlord@pobox.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      5d0fb2e7
    • Mark Lord's avatar
      sata_mv: remove bogus nsect restriction · cd12e1f7
      Mark Lord authored
      Remove unneeded nsect restriction from GenII NCQ path,
      and improve comments to explain why this is not a problem.
      Signed-off-by: default avatarMark Lord <mlord@pobox.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      cd12e1f7
    • Mark Lord's avatar
      sata_mv: don't read hc_irq_cause · cae6edc3
      Mark Lord authored
      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: default avatarMark Lord <mlord@pobox.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      cae6edc3
    • Mark Lord's avatar
      sata_mv: fix 8-port timeouts on 508x/6081 chips · b0bccb18
      Mark Lord authored
      Fix a longstanding bug for the 8-port Marvell Sata controllers (508x/6081),
      where accesses to the upper 4 ports would cause lost-interrupts / timeouts
      for the lower 4-ports.  With this patch, the 6081 boards should finally be
      reliable enough for mainstream use with Linux.
      Signed-off-by: default avatarMark Lord <mlord@pobox.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      b0bccb18
    • Tejun Heo's avatar
      sata_nv: fix MCP5x reset · 2d775708
      Tejun Heo authored
      MCP5x family of controllers seem to share much more with nf2's as far
      as reset protocol is concerned.  It requires heardreset to get the PHY
      going and classfication code report after hardreset is unreliable.
      Create a new board type MCP5x and use noclassify hardreset.  SWNCQ is
      modified to inherit from this new type.
      
      This fixes hotplug regression reported in kernel bz#12351.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      2d775708
    • Tejun Heo's avatar
      sata_nv: rename nv_nf2_hardreset() · e8caa3c7
      Tejun Heo authored
      nv_nf2_hardreset() will be used by other flavors too.  Rename it to
      nv_noclassify_hardreset().
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      e8caa3c7
    • Tejun Heo's avatar
      libata: set NODEV_HINT for 0x7f status · b919930c
      Tejun Heo authored
      Asus Pundit-R with atiixp controller has the second port missing and,
      very unusually, its status is stuck at 0x7f and all others at 0.  This
      meanst that it fails TF access test but gets detected as a disk due to
      classification code check and then evades polling IDENTIFY presence
      detection thanks to the missing BSY in the status value causing
      excessive delays during boot.
      
      This patch makes libata-sff HSM set NODEV_HINT if the status is 0x7f
      to make polling IDENTIFY presence detection work for these machines.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      b919930c
    • Tejun Heo's avatar
      libata-sff: fix incorrect EH message · 80ee6f54
      Tejun Heo authored
      The EH message for NODEV_HINT path was describing the opposite
      condition.  Fix it.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      80ee6f54
  2. 17 Jan, 2009 5 commits
  3. 16 Jan, 2009 27 commits