1. 18 10月, 2007 2 次提交
  2. 16 10月, 2007 13 次提交
  3. 15 10月, 2007 1 次提交
  4. 14 10月, 2007 1 次提交
  5. 13 10月, 2007 23 次提交
    • J
      [libata] struct pci_dev related cleanups · 2855568b
      Jeff Garzik 提交于
      * remove pointless pci_dev_to_dev() wrapper.  Just directly reference
        the embedded struct device like everyone else does.
      
      * pata_cs5520: delete cs5520_remove_one(), it was a duplicate of
        ata_pci_remove_one()
      
      * linux/libata.h: don't bother including linux/pci.h, we don't need it.
        Simply declare 'struct pci_dev' and assume interested parties will
        include the header, as they should be doing anyway.
      
      * linux/libata.h: consolidate all CONFIG_PCI declarations into a
        single location in the header.
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      2855568b
    • T
      libata: use ata_exec_internal() for PMP register access · b06ce3e5
      Tejun Heo 提交于
      PMP registers used to be accessed with dedicated accessors ->pmp_read
      and ->pmp_write.  During reset, those callbacks are called with the
      port frozen so they should be able to run without depending on
      interrupt delivery.  To achieve this, they were implemented polling.
      
      However, as resetting the host port makes the PMP to isolate fan-out
      ports until SError.X is cleared, resetting fan-out ports while port is
      frozen doesn't buy much additional safety.
      
      This patch updates libata PMP support such that PMP registers are
      accessed using regular ata_exec_internal() mechanism and kills
      ->pmp_read/write() callbacks.  The following changes are made.
      
      * PMP access helpers - sata_pmp_read_init_tf(), sata_pmp_read_val(),
        sata_pmp_write_init_tf() are folded into sata_pmp_read/write() which
        are now standalone PMP register access functions.
      
      * sata_pmp_read/write() returns err_mask instead of rc.  This is
        consistent with other functions which issue internal commands and
        allows more detailed error reporting.
      
      * ahci interrupt handler is modified to ignore BAD_PMP and
        spurious/illegal completion IRQs while reset is in progress.  These
        conditions are expected during reset.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      b06ce3e5
    • T
      libata: implement ATA_PFLAG_RESETTING · afaa5c37
      Tejun Heo 提交于
      Implement ATA_PFLAG_RESETTING.  This flag is set while reset is in
      progress.  It's set before prereset is called and cleared after reset
      fails or postreset is finished.
      
      This flag itself doesn't have any function.  It will be used by LLDs
      to tell whether reset is in progress if it needs to behave differently
      during reset.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      afaa5c37
    • T
      libata: add @timeout to ata_exec_internal[_sg]() · 2b789108
      Tejun Heo 提交于
      Add @timeout argument to ata_exec_internal[_sg]().  If 0, default
      timeout ata_probe_timeout is used.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      2b789108
    • T
      ahci: fix notification handling · 5f226c6b
      Tejun Heo 提交于
      Asynchronous notification on ICH9 didn't work because it didn't write
      AN FIS into the RX area - it only updates SNotification.  Also,
      snooping SDB_FIS RX area is racy against further SDB FIS receptions.
      Let sata_async_notification() determine using SNTF if it's available
      and snoop RX area iff SNTF isn't available
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Cc: Kristen Carlson Accardi <kristen.c.accardi@intel.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      5f226c6b
    • T
      ahci: clean up PORT_IRQ_BAD_PMP enabling · 1c954a4d
      Tejun Heo 提交于
      Now that we have pp->intr_mask, move PORT_IRQ_BAD_PMP enabling to
      ahci_pmp_attach/detach() where it belongs.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      1c954a4d
    • T
      ahci: kill leftover from enabling NCQ over PMP · 75da6d2b
      Tejun Heo 提交于
      ahci had problems with NCQ over PMP and NCQ used to be disabled while
      PMP was attached.  After fixing the problem, the temporary NCQ
      disabling code wasn't removed completely.  Kill the remaining piece.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      75da6d2b
    • T
      libata: wrap schedule_timeout_uninterruptible() in loop · 90738683
      Tejun Heo 提交于
      Tasks in uninterruptible sleep might be woken up by unrelated events
      and should check whether the condition it was waiting for has actually
      triggered.  Wrap schedule_timeout_uninterruptible() in loop to achieve
      it.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      90738683
    • T
      libata: skip suppress reporting if ATA_EHI_QUIET · 94ff3d54
      Tejun Heo 提交于
      ATA_EHI_NO_AUTOPSY and ATA_EHI_QUIET are used during initial probing
      to skip exception analysis and reporting.  Usually, there's nothing to
      report but on some allowed but rare corner cases (e.g. phy status
      changed interrupt when IRQ is enabled on frozen port - this happens if
      IRQ pending status isn't cleared in the IRQ router or controller)
      exception messages get printed.
      
      Skip reporting if ATA_EHI_QUIET is set.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      94ff3d54
    • T
      libata: clear ehi description after initial host report · abf6e8ed
      Tejun Heo 提交于
      ehi description field is used to carry LLD specific controller
      description.  Sometimes, it's used without clearing before and LLD
      description gets printed with exception information one more time.
      Clear after printing.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      abf6e8ed
    • T
      pata_jmicron: match vendor and class code only · a01f48b8
      Tejun Heo 提交于
      PATA part of all current JMB controllers behave the same way and
      JMicron confirms that all future ones will stay compatible.  Drop
      device matching and match only vendor and class.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Cc: Ethan Hsiao <ethanhsiao@jmicron.com>
      Cc: Justin Tsai <justin@jmicron.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      a01f48b8
    • T
      libata: add ST9160821AS / 3.ALD to NCQ blacklist · 954bb005
      Tejun Heo 提交于
      ST9160821AS / 3.ALD also does spurious NCQ completions.  Disable NCQ.
      Signed-off-by: NTejun Heo <teheo@suse.de>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      954bb005
    • A
      pata_acpi: ACPI driver support · 025621f9
      Alan Cox 提交于
      	On a cable there may be
      	eighty wires or perhaps forty
      	and we learn about its type
      	In the world of ACPI
      
      	So we call the GTM
      	And we find the the timing rate
      	And we look through it to see
      	If eighty wire it must be
      
      	Timing lives in ACPI routines
      	ACPI routines, ACPI routines
      	Timing lives in ACPI routines
      	ACPI routes ACPI routines
      
      	And the drivers last you see
      	Picking up unknown pci ids
      	and the code begins to work
      
      	Timing lives in ACPI routines
      	ACPI routines, ACPI routines
      	Timing lives in ACPI routines
      	ACPI routes ACPI routines
      
      	[Full speed ahead, Mr Hacker, full speed ahead]
      	 Full speed over here sir!
      	 Checking Cable, checking cable
      	 Aye aye, 80 wire,
      	 Heaven heaven]
      
      	If we use ACPI (ACPI)
      	Every box (every box) has all we need (has all we need)
      	Cable type (cable type) and mode timing (mode timing)
      	In our ATA (in our ATA) subroutines (subroutines, ha ha)
      
      	Timing lives in ACPI routines
      	ACPI routines, ACPI routines
      	Timing lives in ACPI routines
      	ACPI routes ACPI routines
      	Timing lives in ACPI routines
      	ACPI routines, ACPI routines
      	Timing lives in ACPI routines
      	ACPI routes ACPI routines
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      025621f9
    • A
      libata-core: Expose gtm methods for driver use · badff03d
      Alan Cox 提交于
      Talk to the dark side our driver has to, yes. Much misleading is the
      data. Store it in a structure we do so that it may be parsed.
      Signed-off-by: NAlan Cox <alan@redhat.com>
      --
      Whats small, old and shouts phrases out of order across mountains ?
      Yodla..
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      badff03d
    • T
      libata: add HDT722516DLA380 to NCQ blacklist · 70edb185
      Tejun Heo 提交于
      HDT722516DLA380 does spurious completion of NCQ commands.  Blacklist
      it.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Cc: Frans Pop <elendil@planet.nl>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      70edb185
    • P
      libata: blacklist NCQ on Seagate Barracuda ST380817AS · da6f0ec2
      Paolo Ornati 提交于
      Seagate Barracuda ST380817AS has troubles with NCQ. For example,
      unpacking a tarball on an XFS filesystem gives this:
      
      ata1.00: exception Emask 0x0 SAct 0x1 SErr 0x0 action 0x2 frozen
      ata1.00: cmd 61/40:00:29:a3:98/00:00:00:00:00/40 tag 0 cdb 0x0 data 32768 out
               res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
      
      More info here:
      http://lkml.org/lkml/2007/1/21/76
      
      Blacklist it!
      Signed-off-by: NPaolo Ornati <ornati@fastwebnet.it>
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      da6f0ec2
    • J
      [libata] Turn on ACPI by default · 6ebe9d86
      Jeff Garzik 提交于
      Let's see what explodes.
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      6ebe9d86
    • A
      libata_scsi: Fix ATAPI transfer lengths · 2db78dd3
      Alan Cox 提交于
      Some controller variants snoop the ATAPI length value for Packet
      transfers to do state machine and FIFO management. Thus we want to
      set it properly, even for cases where it is otherwise meaningless.
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      2db78dd3
    • A
      libata: correct handling of SRST reset sequences · 681c80b5
      Alan Cox 提交于
      Correct handling of SRST reset sequences.  After an SRST it is undefined
      whether the drive has gone back to PIO0.  In order to talk safely we should
      talk slowly and carefully until we know.
      
      Thus when we do the reset if the controller has a pio setup method we call it
      to flip back to PIO 0 and a known state.  After the reset completes the
      identify will then be done at the safe speed and the drive/controller will
      pick suitable faster modes and reconfigure the controller to these timings.
      
      As a side effect it means we force the controller to PIO 0 as we bring it up
      which fixes funnies on a few systems where the BIOS firmware leaves us in an
      interesting choice of modes, or embedded boxes with no firmware which come up
      in random states.
      
      For smart controllers there is nothing to do - they know about this
      internally.
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      681c80b5
    • M
      libata: Integrate ACPI-based PATA/SATA hotplug - version 5 · 237d8440
      Matthew Garrett 提交于
      Modern laptops with hotswap bays still tend to utilise a PATA interface
      on a SATA bridge, generally with the host controller in some legacy
      emulation mode rather than AHCI. This means that the existing hotplug
      code in libata is unable to work. The ACPI specification states that
      these devices can send notifications when hotswapped, which avoids the
      need to obtain notification from the controller. This patch uses the
      existing libata-acpi code and simply registers a notification in order
      to trigger a rescan whenever the firmware signals an event.
      Signed-off-by: NMatthew Garrett <mjg59@srcf.ucam.org>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      237d8440
    • A
      libata: Add a drivers/ide style DMA disable · b3a70601
      Alan Cox 提交于
      This is useful when debugging, handling problem systems, or for
      distributions just to get the system installed so it can be sorted
      out later.
      
      This is a bit smarter than the old IDE one and lets you do
      
      libata.dma=0	Disable all PATA DMA like old IDE
      libata.dma=1	Disk DMA only
      libata.dma=2	ATAPI DMA only
      libata.dma=4	CF DMA only
      
      (or combinations thereof - 0,1,3 being the useful ones I suspect)
      
      (I've split CF as it seems to be a seperate case of pain and suffering
      different to the others and caused by assorted PIO wired adapters etc)
      Signed-off-by: NAlan Cox <alan@redhat.com>
      
      [edited to work on SATA too, changing name from 'pata_dma' to 'dma']
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      b3a70601
    • P
      ahci: Add MCP79 support to AHCI driver · 7100819f
      Peer Chen 提交于
      Signed-off-by: NPeer Chen <peerchen@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      7100819f
    • R
      libata: add human-readable error value decoding · 1333e194
      Robert Hancock 提交于
      This adds human-readable decoding of the ATA status and error registers
      (similar to what drivers/ide does) as well as the SATA Serror register
      to libata error handling output.  This prevents the need to pore
      through standards documents to figure out the meaning of the bits
      in these registers when looking at error reports.  Some bits that
      drivers/ide decoded are not decoded here, since the bits are either
      command-dependent or obsolete, and properly parsing them would add
      too much complexity.
      Signed-off-by: NRobert Hancock <hancockr@shaw.ca>
      
      [edited slightly to make output a bit more symmetric]
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      1333e194