1. 29 9月, 2005 2 次提交
    • A
      [PATCH] libata: interrupt driven pio for LLD · e50362ec
      Albert Lee 提交于
      libata.h:
      libata-core:
        Add ATA_FLAG_PIO_POLLING flag for LLDs that expect interrupt for
      command completion only.
      
      sata_nv.c:
      sata_vsc.c:
        irq handler is wrapper around ata_host_intr(), can handle PIO interrupts.
      
      sata_promise.c:
      sata_sx4.c:
      sata_qstor.c:
      sata_mv.c:
        Private irq handler.
        Polling mode ATA_FLAG_PIO_POLLING used for compatibility.
      Signed-off-by: NAlbert Lee <albertcc@tw.ibm.com>
      Signed-off-by: NJeff Garzik <jgarzik@pobox.com>
      e50362ec
    • A
      [PATCH] libata: interrupt driven pio for libata-core · 312f7da2
      Albert Lee 提交于
      - add PIO_ST_FIRST for the state before sending ATAPI CDB or sending
      "ATA PIO data out" first data block.
      - add ATA_TFLAG_POLLING and ATA_DFLAG_CDB_INTR flags
      - remove the ATA_FLAG_NOINTR flag since the interrupt handler is now
      aware of the states
      - modify ata_pio_sector() and atapi_pio_bytes() to work in the interrupt
      context
      - modify the ata_host_intr() to handle PIO interrupts
      - modify ata_qc_issue_prot() to initialize states
      - atapi_packet_task() changed to handle "ATA PIO data out" first data block
      - support the pre-ATA4 ATAPI device which raise interrupt when ready to
      receive CDB
      Signed-off-by: NAlbert Lee <albertcc@tw.ibm.com>
      Signed-off-by: NJeff Garzik <jgarzik@pobox.com>
      312f7da2
  2. 28 9月, 2005 2 次提交
  3. 16 9月, 2005 2 次提交
  4. 07 9月, 2005 1 次提交
  5. 30 8月, 2005 2 次提交
  6. 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
  7. 27 8月, 2005 2 次提交
  8. 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
  9. 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
  10. 12 8月, 2005 2 次提交
  11. 01 8月, 2005 1 次提交
  12. 28 6月, 2005 2 次提交
  13. 27 6月, 2005 1 次提交
  14. 26 6月, 2005 1 次提交
  15. 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
  16. 03 6月, 2005 2 次提交
  17. 31 5月, 2005 2 次提交
  18. 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
  19. 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
  20. 16 5月, 2005 2 次提交
    • B
      [PATCH] libata: flush COMRESET set and clear · cdcca89e
      Brett Russ 提交于
      Updated patch to fix erroneous flush of COMRESET set and missing flush
      of COMRESET clear.  Created a new routine scr_write_flush() to try to
      prevent this in the future.  Also, this patch is based on libata-2.6
      instead of the previous libata-dev-2.6 based patch.
      Signed-off-by: NBrett Russ <russb@emc.com>
      
      Index: libata-2.6/drivers/scsi/libata-core.c
      ===================================================================
      cdcca89e
    • A
      [PATCH] libata: Prevent the interrupt handler from completing a command twice · 21b1ed74
      Albert Lee 提交于
      Problem:
         During the libata CD-ROM stress test, sometimes the "BUG: timeout
      without command" error is seen.
      
      Root cause:
        Unexpected interrupt occurs after the ata_qc_complete() is called,
      but before the SCSI error handler.  The interrupt handler is invoked
      before the SCSI error handler, and it clears the command by calling
      ata_qc_complete() again.  Later when the SCSI error handler is run,
      the ata_queued_cmd is already gone, causing the "BUG: timeout without
      command" error.
      
      Changes:
        - Use the ATA_QCFLAG_ACTIVE flag to prevent the interrupt handler
      from completing the command twice, before the scsi_error_handler.
      Signed-off-by: NAlbert Lee <albertcc@tw.ibm.com>
      21b1ed74
  21. 13 5月, 2005 1 次提交
  22. 17 4月, 2005 1 次提交
    • L
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds 提交于
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4