1. 03 1月, 2007 1 次提交
    • A
      [PATCH] libata: fix combined mode · dc3c3377
      Alan 提交于
      This is a slight variant on the patch I posted December 16th to fix
      libata combined mode handling. The only real change is that we now
      correctly also reserve BAR1,2,4. That is basically a neatness issue.
      
      Jeff was unhappy about two things
      
      1. That it didn't work in the case of one channel native one channel
      legacy.
      
      This is a silly complaint because the SFF layer in libata doesn't handle
      this case yet anyway.
      
      2. The case where combined mode is in use and IDE=n.
      
      In this case the libata quirk code reserves the resources in question
      correctly already.
      
      Once the combined mode stuff is redone properly (2.6.21) then the entire
      mess turns into a single pci_request_regions() for all cases and all the
      ugly resource hackery goes away.
      
      I'm sending this now rather than after running full test suites so that
      it can get the maximal testing in a short time. I'll be running tests on
      this after lunch.
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Cc: Jeff Garzik <jgarzik@pobox.com>
      Acked-by: NAlessandro Suardi <alessandro.suardi@gmail.com>
      Acked-by: NTheodore Tso <tytso@mit.edu>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      dc3c3377
  2. 03 12月, 2006 3 次提交
    • T
      [PATCH] libata: make sure IRQ is cleared after ata_bmdma_freeze() · 0f0a3ad3
      Tejun Heo 提交于
      Now that BMDMA status is recorded in irq handler.  ata_bmdma_freeze()
      is free to manipulate host status.  Under certain circumstances, some
      controllers (ICH7 in enhanced mode w/ IRQ shared) raise IRQ when CTL
      register is written to and ATA_NIEN doesn't mask it.
      
      This patch makes ata_bmdma_freeze() clear all pending IRQs after
      freezing a port.  This change makes explicit clearing in
      ata_device_add() unnecessary and thus kills it.  The removed code was
      SFF-specific and was in the wrong place.
      
      Note that ->freeze() handler is always called under ap->lock held and
      irq disabled.  Even if CTL manipulation causes stuck IRQ, it's cleared
      immediately.  This should be safe (enough) even in SMP environment.
      More correct solution is to mask the IRQ from IRQ controller but that
      would be an overkill.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      0f0a3ad3
    • T
      [PATCH] libata: move BMDMA host status recording from EH to interrupt handler · ea54763f
      Tejun Heo 提交于
      For certain errors, interrupt handler alter BMDMA host status before
      entering EH (clears active and intr).  Thus altered BMDMA host status
      value is recorded by BMDMA EH and reported to user.  Move BMDMA host
      status recording from EH to interrupt handler.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      ea54763f
    • T
      [PATCH] libata: set IRQF_SHARED for legacy PCI IDE IRQs · 8070217d
      Tejun Heo 提交于
      There are machines out there which share legacy PCI IDE IRQs w/ other
      devices.  libata SFF interrupt/HSM code is ready for shared IRQ and
      has been setting IRQF_SHARED for devices in native PCI mode.  Device
      in legacy mode is still a PCI device and thus supposedly uses
      active-low level triggered IRQ.
      
      Machines with such setup should be quite rare and w/o this flag libata
      is likely to fail loading and render the system unuseable.  Also, IDE
      driver has been setting IRQF_SHARED for devices in legacy mode for a
      looooong time.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      8070217d
  3. 02 12月, 2006 2 次提交
  4. 22 10月, 2006 1 次提交
    • A
      [PATCH] libata-sff: Allow for wacky systems · 8eb166bf
      Alan Cox 提交于
      There are some Linux supported platforms that simply cannot hit the low
      I/O addresses used by ATA legacy mode PCI mappings. These platforms have
      a window for PCI space that is fixed by the board logic and doesn't
      include the neccessary locations.
      
      Provide a config option so that such platforms faced with a controller
      that they cannot support simply error it and punt
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      8eb166bf
  5. 28 9月, 2006 2 次提交
  6. 27 9月, 2006 2 次提交
  7. 19 9月, 2006 1 次提交
    • T
      [PATCH] libata: fix non-uniform ports handling · fea63e38
      Tejun Heo 提交于
      Non-uniform ports handling got broken while updating libata to handle
      those in the same host.  Only separate irq for the non-uniform
      secondary port was implemented while all other fields (host flags,
      transfer mode...) of the secondary port simply shared those of the
      first.
      
      For ata_piix combined mode, which ATM is the only user of non-uniform
      ports, this causes the secondary port assume the wrong type.  This can
      cause PATA port to use SATA ops, which results in bogus check on PCS
      and detection failure.
      
      This patch adds ata_probe_ent->pinfo2 which points to optional
      port_info for the secondary port.  For the time being, this seems to
      be the simplest solution.  This workaround will be removed together
      with ata_probe_ent itself after init model is updated to allow more
      flexibility.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Cc: Nelson A. de Oliveira <naoliv@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      fea63e38
  8. 24 8月, 2006 2 次提交
    • J
      Rename libata-bmdma.c to libata-sff.c. · e889173c
      Jeff Garzik 提交于
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      e889173c
    • J
      libata: Grand renaming. · cca3974e
      Jeff Garzik 提交于
      The biggest change is that ata_host_set is renamed to ata_host.
      
      * ata_host_set			=> ata_host
      * ata_probe_ent->host_flags	=> ata_probe_ent->port_flags
      * ata_probe_ent->host_set_flags	=> ata_probe_ent->_host_flags
      * ata_host_stats		=> ata_port_stats
      * ata_port->host		=> ata_port->scsi_host
      * ata_port->host_set		=> ata_port->host
      * ata_port_info->host_flags	=> ata_port_info->flags
      * ata_(.*)host_set(.*)\(\)	=> ata_\1host\2()
      
      The leading underscore in ata_probe_ent->_host_flags is to avoid
      reusing ->host_flags for different purpose.  Currently, the only user
      of the field is libata-bmdma.c and probe_ent itself is scheduled to be
      removed.
      
      ata_port->host is reused for different purpose but this field is used
      inside libata core proper and of different type.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      cca3974e
  9. 10 8月, 2006 3 次提交
    • J
      Move libata to drivers/ata. · c6fd2807
      Jeff Garzik 提交于
      c6fd2807
    • T
      [PATCH] libata: use dummy port for stolen legacy ports · c4b01f1d
      Tejun Heo 提交于
      Use dummy port for stolen legacy ports.  This makes ap->port_no always
      equal ap->hard_port_no.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      c4b01f1d
    • A
      [PATCH] libata: rework legacy handling to remove much of the cruft · 2ec7df04
      Alan Cox 提交于
      Kill host_set->next
      Fix simplex support
      Allow per platform setting of IDE legacy bases
      
      Some of this can be tidied further later on, in particular all the
      legacy port gunge belongs as a PCI quirk/PCI header decode to understand
      the special legacy IDE rules in the PCI spec.
      
      Longer term Jeff also wants to move the request_irq/free_irq out of core
      which will make this even cleaner.
      
      tj: folded in three followup patches - ata_piix-fix, broken-arch-fix
      and fix-new-legacy-handling, and separated per-dev xfermask into
      separate patch preceding this one.  Folded in fixes are...
      
      * ata_piix-fix: fix build failure due to host_set->next removal
      * broken-arch-fix: add missing include/asm-*/libata-portmap.h
      * fix-new-legacy-handling:
      	* In ata_pci_init_legacy_port(), probe_num was incorrectly
                incremented during initialization of the secondary port and
                probe_ent->n_ports was incorrectly fixed to 1.
      
      	* Both legacy ports ended up having the same hard_port_no.
      
      	* When printing port information, both legacy ports printed
      	  the first irq.
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      2ec7df04
  10. 09 8月, 2006 1 次提交
  11. 03 7月, 2006 1 次提交
  12. 01 7月, 2006 1 次提交
  13. 23 6月, 2006 1 次提交
  14. 12 6月, 2006 1 次提交
    • T
      [PATCH] libata: add host_set->next for legacy two host_sets case, take #3 · f0eb62b8
      Tejun Heo 提交于
      For a legacy ATA controller, libata registers two separate host sets.
      There was no connection between the two hosts making it impossible to
      traverse all ports related to the controller.  This patch adds
      host_set->next which points to the second host_set and makes
      ata_pci_remove_one() remove all associated host_sets.
      
      * On device removal, all ports hanging off the device are properly
        detached.  Prior to this patch, ports on the first host_set weren't
        detached casuing oops on driver unloading.
      
      * On device removal, both host_sets are properly freed
      
      This will also be used by new power management code to suspend and
      resume all ports of a controller.  host_set/port representation will
      be improved to handle legacy controllers better and this host_set
      linking will go away with it.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      f0eb62b8
  15. 31 5月, 2006 1 次提交
    • T
      [PATCH] libata-hp-prep: add prereset() method and implement ata_std_prereset() · f5914a46
      Tejun Heo 提交于
      With hotplug, every reset might be a probing reset and thus something
      similar to probe_init() is needed.  prereset() method is called before
      a series of resets to a port and is the counterpart of postreset().
      prereset() can tell EH to use different type of reset or skip reset by
      modifying ehc->i.action.
      
      This patch also implements ata_std_prereset().  Most controllers
      should be able to use this function directly or with some wrapping.
      After hotplug, different controllers need different actions to resume
      the PHY and detect the newly attached device.  Controllers can be
      categorized as follows.
      
      * Controllers which can wait for the first D2H FIS after hotplug.
        Note that if the waiting is implemented by polling TF status, there
        needs to be a way to set BSY on PHY status change.  It can be
        implemented by hardware or with the help of the driver.
      
      * Controllers which can wait for the first D2H FIS after sending
        COMRESET.  These controllers need to issue COMRESET to wait for the
        first FIS.  Note that the received D2H FIS could be the first D2H
        FIS after POR (power-on-reset) or D2H FIS in response to the
        COMRESET.  Some controllers use COMRESET as TF status
        synchronization point and clear TF automatically (sata_sil).
      
      * Controllers which cannot wait for the first D2H FIS reliably.
        Blindly issuing SRST to spinning-up device often results in command
        issue failure or timeout, causing extended delay.  For these
        controllers, ata_std_prereset() explicitly waits ATA_SPINUP_WAIT
        (currently 8s) to give newly attached device time to spin up, then
        issues reset.  Note that failing to getting ready in ATA_SPINUP_WAIT
        is not critical.  libata will retry.  So, the timeout needs to be
        long enough to spin up most devices.
      
      LLDDs can tell ata_std_prereset() which of above action is needed with
      ATA_FLAG_HRST_TO_RESUME and ATA_FLAG_SKIP_D2H_BSY flags.  These flags
      are PHY-specific property and will be moved to ata_link later.
      
      While at it, this patch unifies function typedef's such that they all
      have named arguments.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      f5914a46
  16. 15 5月, 2006 2 次提交
  17. 30 3月, 2006 1 次提交
    • A
      [PATCH] libata: BMDMA handling updates · 4e5ec5db
      Alan Cox 提交于
      This is the minimal patch set to enable the current code to be used with
      a controller following SFF (ie any PATA and early SATA controllers)
      safely without crashes if there is no BMDMA area or if BMDMA is not
      assigned by the BIOS for some reason.
      
      Simplex status is recorded but not acted upon in this change, this isn't
      a problem with the current drivers as none of them are for simplex
      hardware. A following diff will deal with that.
      
      The flags in the probe structure remain ->host_set_flags although Jeff
      asked me to rename them, simply because the rename would break the usual
      Linux rules that old code should break when there are changes. not
      compile and run and then blow up/eat your computer/etc. Renaming this
      later is a trivial exercise once a better name is chosen.
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      4e5ec5db
  18. 24 3月, 2006 1 次提交
  19. 23 3月, 2006 2 次提交
  20. 22 3月, 2006 2 次提交
  21. 09 2月, 2006 1 次提交