1. 23 10月, 2005 1 次提交
  2. 22 10月, 2005 2 次提交
  3. 19 10月, 2005 3 次提交
  4. 06 10月, 2005 2 次提交
  5. 05 10月, 2005 1 次提交
  6. 04 10月, 2005 2 次提交
    • A
      libata: bitmask based pci init functions for one or two ports · 47a86593
      Alan Cox 提交于
      This redoes the n_ports logic I proposed before as a bitmask.
      ata_pci_init_native_mode is now used with a mask allowing for mixed mode
      stuff later on. ata_pci_init_legacy_port is called with port number and
      does one port now not two. Instead it is called twice by the ata init
      logic which cleans both of them up.
      
      There are stil limits in the original code left over
      
      - IRQ/port mapping for legacy mode should be arch specific values
      - You can have one legacy mode IDE adapter per PCI root bridge on some systems
      - Doesn't handle mixed mode devices yet (but is now a lot closer to it)
      47a86593
    • J
      [libata] improve device scan · 644dd0cc
      Jeff Garzik 提交于
      Replace SCSI's legacy "bang at the door" method of probing with one
      directly controlled by the underlying ATA transport layer.
      
      We now only call scsi_scan_target() for devices we find, rather than
      probing every possible channel/id within a certain range.
      644dd0cc
  7. 28 9月, 2005 2 次提交
  8. 16 9月, 2005 2 次提交
  9. 07 9月, 2005 1 次提交
  10. 30 8月, 2005 2 次提交
  11. 29 8月, 2005 1 次提交
    • J
      [libata] license change, other bits · af36d7f0
      Jeff Garzik 提交于
      - changes license of all code from OSL+GPL to plain ole GPL
        - except for NVIDIA, who hasn't yet responded about sata_nv
        - copyright holders were already contacted privately
      
      - adds info in each driver about where hardware/protocol docs may be
        obtained
      
      - where I have made major contributions, updated copyright dates
      af36d7f0
  12. 27 8月, 2005 2 次提交
  13. 26 8月, 2005 1 次提交
    • J
      libata: fix EH locking · b8f6153e
      Jeff Garzik 提交于
      Wrap ata_qc_complete() calls in EH context in spinlocks, to prevent
      races (mainly in ATAPI code paths).
      b8f6153e
  14. 23 8月, 2005 4 次提交
    • J
      libata: release prep (bump versions, etc.) · 6885433c
      Jeff Garzik 提交于
      - bump versions where necessary
      - remove two duplicated+outdated doc comments
      - add MODULE_VERSION() to AHCI driver
      6885433c
    • T
      [PATCH] libata: implement ata_poll_qc_complete and use it in polling functions · 40e8c82c
      Tejun Heo 提交于
      [PATCH libata-dev-2.6:upstream] implement ata_poll_qc_complete and use it in polling functions
      
       Previously, libata polling functions turned irq back on and completed
      qc commands without holding host lock.  This creates a race condition
      between the polling task and interrupts from other ports on the same
      host set or spurious interrupt from itself.
      
       This patch implements ata_poll_qc_complete which enables irq and
      completes qc atomically and convert all polling functions.
      
       Note: atapi_packet_task() didn't use to turn irq back on or clear
      ATA_FLAG_NOINTR on error exits.  This patch makes it use
      ata_poll_qc_complete which does both.
      
       Note: With this change, ALL invocations of ata_qc_complete() are now
      done under host_set lock.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jgarzik@pobox.com>
      40e8c82c
    • T
      [PATCH] fix atapi_packet_task vs. intr race (take 2) · c1389503
      Tejun Heo 提交于
      Interrupts from devices sharing the same IRQ could cause
      ata_host_intr to finish commands being processed by atapi_packet_task
      if the commands are using ATA_PROT_ATAPI_NODATA or ATA_PROT_ATAPI_DMA
      protocol.  This is because libata interrupt handler is unaware that
      interrupts are not expected during that period.  This patch adds
      ATA_FLAG_NOINTR flag to tell the interrupt handler that we're not
      expecting interrupts.
      
       Note that once proper HSM is implemented for interrupt-driven PIO,
      this should be merged into it and this flag will be removed.
      
       ahci.c is a different kind of beast, so it's left alone.
      
      * The following drivers use ata_qc_issue_prot and ata_interrupt, so
        changes in libata core will do.
      
        ata_piix sata_sil sata_svw sata_via sata_sis sata_uli
      
      * The following drivers use ata_qc_issue_prot and custom intr handler.
        They need this change to work correctly.
      
        sata_nv sata_vsc
      
      * The following drivers use custom issue function and intr handler.
        Currently all custom issue functions don't support ATAPI, so this
        change is irrelevant, updated for consistency and to avoid later
        mistakes.
      
        sata_promise sata_qstor sata_sx4
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jgarzik@pobox.com>
      c1389503
    • A
      [PATCH] libata: Clear ATA_QCFLAG_ACTIVE flag before calling the completion callback · 3f3791d3
      Albert Lee 提交于
      Description:
        After calling the completion callback, the libata error handler might be
      running and getting atapi sense data. Clearing the ATA_QCFLAG_ACTIVE flag
      at this point might interfere with the libata error handler.
      
      Changes:
         - Clear the ATA_QCFLAG_ACTIVE flag before calling the completion callback
           (and also before the error handler)
         - Add some comment
      Signed-off-by: NAlbert Lee <albertcc@tw.ibm.com>
      Signed-off-by: NJeff Garzik <jgarzik@pobox.com>
      3f3791d3
  15. 12 8月, 2005 2 次提交
  16. 01 8月, 2005 1 次提交
  17. 28 6月, 2005 2 次提交
  18. 27 6月, 2005 1 次提交
  19. 26 6月, 2005 1 次提交
  20. 09 6月, 2005 1 次提交
    • A
      [PATCH] sg traverse fix for __atapi_pio_bytes() · 6952df03
      Albert Lee 提交于
      Problem:
      Incorrect md5sum when using ATAPI PIO mode to verify a distro CD.
      
      Root cause:  sg traverse problem.
      In __atapi_pio_bytes(), if qc->cursg++ is increased and "goto
      next_page" is executed, then sg is not updated to the new qc->cursg
      and the old sg is overwritten with the new data.
      
      Changes:
      - Replace "goto next_page" with "goto next_sg" to make sg updated.
      Signed-off-by: NAlbert Lee <albertcc@tw.ibm.com>
      6952df03
  21. 03 6月, 2005 2 次提交
  22. 31 5月, 2005 2 次提交
  23. 27 5月, 2005 1 次提交
    • J
      libata: Fix use-after-iounmap · aa8f0dc6
      Jeff Garzik 提交于
      Jens Axboe pointed out that the iounmap() call in libata was occurring
      too early, and some drivers (ahci, probably others) were using ioremap'd
      memory after it had been unmapped.
      
      The patch should address that problem by way of improving the libata
      driver API:
      
      * move ->host_stop() call after all ->port_stop() calls have occurred.
      
      * create default helper function ata_host_stop(), and move iounmap()
      call there.
      
      * add ->host_stop_prewalk() hook, use it in sata_qstor.c (hi Mark).
      sata_qstor appears to require the host-stop-before-port-stop ordering
      that existed prior to applying the attached patch.
      aa8f0dc6
  24. 26 5月, 2005 1 次提交
    • A
      [PATCH] libata: Fix zero sg_dma_len() on 64-bit platform · 32529e01
      Albert Lee 提交于
      When testing ATAPI PIO data transfer on the ppc64 platform,  __atapi_pio_bytes() got zero when
      sg_dma_len() is used. I checked the <asm-ppc64/scatterlish.h>, the struct scatterlist is defined as:
      
      struct scatterlist {
      	struct page *page;
      	unsigned int offset;
      	unsigned int length;
      
      	/* For TCE support */
      	u32 dma_address;
      	u32 dma_length;
      };
      
      #define sg_dma_address(sg)	((sg)->dma_address)
      #define sg_dma_len(sg)		((sg)->dma_length)
      
      So, if the scatterlist is not DMA mapped, sg_dma_len() will return zero on ppc64.
      The same problem should occur on the x86-64 platform.
      On the i386 platform, sg_dma_len() returns sg->length, that's why the problem does not occur on an i386.
      
      Changes:
      - Use sg->length if the scatterlist is not DMA mapped (yet).
      Signed-off-by: NAlbert Lee <albertcc@tw.ibm.com>
      32529e01