1. 31 Oct, 2008 3 commits
    • Tejun Heo's avatar
      sata_via: fix support for 5287 · b9d5b89b
      Tejun Heo authored
      5287 used to be treated as vt6420 but it didn't work.  It's new family
      of controllers called vt8251 which hosts four SATA ports as M/S of the
      two ATA ports.  This configuration is rather peculiar in that although
      the M/S devices are on the same port, each have its own SCR (or
      equivalent link status/control) registers which screws up the
      port-link-device hierarchy assumed by libata.  Another controller
      which falls into this category is ata_piix w/ SIDPR access.
      
      libata now has facility to deal with this class of controllers named
      slave_link.  A low level driver for such controllers can just call
      ata_slave_link_init() on the respective ports and libata will handle
      all the difficult parts like following up with single SRST after
      hardresetting both ports.
      
      This patch creates new controller class vt8251, implements slave_link
      aware init sequence and config space based SCR access for it and moves
      5287 to the new class.
      
      This patch is based on Joseph Chan's larger patch which was created
      before slave_link was implemented in libata.
      
        http://thread.gmane.org/gmane.linux.kernel.commits.mm/40640Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Cc: Joseph Chan <JosephChan@via.com.tw>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      b9d5b89b
    • Roland Dreier's avatar
      libata: Avoid overflow in ata_tf_to_lba48() when tf->hba_lbal > 127 · ba14a9c2
      Roland Dreier authored
      In ata_tf_to_lba48(), when evaluating
      
      	(tf->hob_lbal & 0xff) << 24
      
      the expression is promoted to signed int (since int can hold all values
      of u8).  However, if hob_lbal is 128 or more, then it is treated as a
      negative signed value and sign-extended when promoted to u64 to | into
      sectors, which leads to the MSB 32 bits of section getting set
      incorrectly.
      
      For example, Phillip O'Donnell <phillip.odonnell@gmail.com> reported
      that a 1.5GB drive caused:
      
          ata3.00: HPA detected: current 2930277168, native 18446744072344861488
      
      where 2930277168 == 0xAEA87B30 and 18446744072344861488 == 0xffffffffaea87b30
      which shows the problem when hob_lbal is 0xae.
      
      Fix this by adding a cast to u64, just as is used by for hob_lbah and
      hob_lbam in the function.
      Reported-by: default avatarPhillip O'Donnell <phillip.odonnell@gmail.com>
      Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      ba14a9c2
    • Randy Dunlap's avatar
      ATA: remove excess kernel-doc notation · 5b97fbd0
      Randy Dunlap authored
      Remove excess kernel-doc function parameter notation from drivers/ata/:
      
      Warning(drivers/ata/libata-core.c:1622): Excess function parameter or struct member 'fn' description in 'ata_pio_queue_task'
      Warning(drivers/ata/libata-core.c:4655): Excess function parameter or struct member 'err_mask' description in 'ata_qc_complete'
      Warning(drivers/ata/ata_piix.c:751): Excess function parameter or struct member 'udma' description in 'do_pata_set_dmamode'
      Signed-off-by: default avatarRandy Dunlap <randy.dunlap@oracle.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      5b97fbd0
  2. 30 Oct, 2008 37 commits