1. 27 1月, 2008 1 次提交
    • B
      ide: (hopefully) fix VDMA for CS5520 · aea5d375
      Bartlomiej Zolnierkiewicz 提交于
      * Set the correct hwif->dma_base for the second channel in
        ide_get_or_set_dma_base().
      
      * Remove DMA enable code from cs5520_set_pio_mode(), this can
        be handled by the generic ->dma_host_on method now.
      
      * Add VDMA check to ide_config_drive_speed().
      
      * drive->using_dma was never enabled since cs5520 host driver's
        ->ide_dma_on method overrided the generic ->ide_dma_on (so
        __ide_dma_on() was never called, drive->using_dma was never set
        and VDMA was never used since it depends on drive->using_dma).
      
        Fix it by using ->dma_host_on method instead of ->ide_dma_on
        (also add matching ->dma_host_off method).
      Acked-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      aea5d375
  2. 26 1月, 2008 8 次提交
  3. 11 1月, 2008 1 次提交
  4. 13 12月, 2007 1 次提交
    • B
      ide: DMA reporting and validity checking fixes (take 3) · 3ab7efe8
      Bartlomiej Zolnierkiewicz 提交于
      * ide_xfer_verbose() fixups:
        - beautify returned mode names
        - fix PIO5 reporting
        - make it return 'const char *'
      
      * Change printk() level from KERN_DEBUG to KERN_INFO in ide_find_dma_mode().
      
      * Add ide_id_dma_bug() helper based on ide_dma_verbose() to check for invalid
        DMA info in identify block.
      
      * Use ide_id_dma_bug() in ide_tune_dma() and ide_driveid_update().
      
        As a result DMA won't be tuned or will be disabled after tuning if device
        reports inconsistent info about enabled DMA mode (ide_dma_verbose() does the
        same checks while the IDE device is probed by ide-{cd,disk} device driver).
      
      * Remove no longer needed ide_dma_verbose().
      
      This patch should fix the following problem with out-of-sync IDE messages
      reported by Nick Warne:
      
             hdd: ATAPI 48X DVD-ROM DVD-R-RAM CD-R/RW drive, 2048kB Cache<7>hdd:
             skipping word 93 validity check
              , UDMA(66)
      
      and later debugged by Mark Lord to be caused by:
      
              ide_dma_verbose()
                      printk( ... "2048kB Cache");
              eighty_ninty_three()
                      printk(KERN_DEBUG "%s: skipping word 93 validity check\n");
              ide_dma_verbose()
                      printk(", UDMA(66)"
      
      Please note that as a result ide-{cd,disk} device drivers won't report the
      DMA speed used but this is intended since now DMA mode being used is always
      reported by IDE core code.
      
      v2:
      * fixes suggested by Randy:
        - use KERN_CONT for printk()-s in ide-{cd,disk}.c
        - don't remove argument name from ide_xfer_verbose() declaration
      
      v3:
      * Remove incorrect check for (id->field_valid & 1) from ide_id_dma_bug()
        (spotted by Sergei).
      
      * "XFER SLOW" -> "PIO SLOW" in ide_xfer_verbose() (suggested by Sergei).
      
      * Fix ide_find_dma_mode() to report the correct mode ('mode' after being
        limited by 'req_mode').
      
      Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com>
      Cc: Nick Warne <nick@ukfsn.org>
      Cc: Mark Lord <lkml@rtr.ca>
      Cc: Randy Dunlap <randy.dunlap@oracle.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      3ab7efe8
  5. 28 11月, 2007 3 次提交
  6. 06 11月, 2007 2 次提交
  7. 27 10月, 2007 1 次提交
  8. 20 10月, 2007 1 次提交
  9. 17 10月, 2007 1 次提交
    • B
      ide: remove ->ide_dma_check (take 2) · 0ae2e178
      Bartlomiej Zolnierkiewicz 提交于
      * Add IDE_HFLAG_TRUST_BIOS_FOR_DMA host flag for host drivers that depend
        on BIOS for programming device/controller for DMA.  Set it in cy82c693,
        generic, ns87415, opti621 and trm290 host drivers.
      
      * Add IDE_HFLAG_VDMA host flag for host drivers using VDMA.  Set it in cs5520
        host driver.
      
      * Teach ide_tune_dma() about IDE_HFLAG_TRUST_BIOS_FOR_DMA flag.
      
      * Add generic ide_dma_check() helper and remove all open coded ->ide_dma_check
        implementations.  Fix all places checking for presence of ->ide_dma_check
        hook to check for ->ide_dma_on instead.
      
      * Remove no longer needed code from config_drive_for_dma().
      
      * Make ide_tune_dma() static.
      
      v2:
      * Fix config_drive_for_dma() return values.
      
      * Fix ide-dma.c build for CONFIG_BLK_DEV_IDEDMA_PCI=n by adding
        dummy config_drive_for_dma() inline.
      
      * Fix IDE_HFLAG_TRUST_BIOS_FOR_DMA handling in ide_dma_check().
      
      * Fix init_hwif_it8213() comment.
      
      There should be no functionality changes caused by this patch.
      
      Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      0ae2e178
  10. 13 10月, 2007 6 次提交
    • B
      ide: remove CONFIG_IDEDMA_IVB config option · 76bb7782
      Bartlomiej Zolnierkiewicz 提交于
      Devices which don't set word 93 validation bit should be now handled by
      ide-iops.c::ivb_list[] and for debugging purposes cable detection can be
      completely overriden with "idex=ata66" parameter.
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      76bb7782
    • B
      ide: change master/slave IDENTIFY order · b140b99c
      Bartlomiej Zolnierkiewicz 提交于
      Need to probe slave device first to make it release PDIAG-
      (this is required for correct device side cable detection).
      
      Based on libata commit f31f0cc2.
      
      Thanks to Craig for testing this patch.
      
      Cc: Craig Block <chblock3@yahoo.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      b140b99c
    • B
      ide: move ide_config_drive_speed() calls to upper layers (take 2) · 88b2b32b
      Bartlomiej Zolnierkiewicz 提交于
      * Convert {ide_hwif_t,ide_pci_device_t}->host_flag to be u16.
      
      * Add IDE_HFLAG_POST_SET_MODE host flag to indicate the need to program 
        the host for the transfer mode after programming the device.  Set it
        in au1xxx-ide, amd74xx, cs5530, cs5535, pdc202xx_new, sc1200, pmac
        and via82cxxx host drivers.
      
      * Add IDE_HFLAG_NO_SET_MODE host flag to indicate the need to completely
        skip programming of host/device for the transfer mode ("smart" hosts).
        Set it in it821x host driver and check it in ide_tune_dma().
      
      * Add ide_set_pio_mode()/ide_set_dma_mode() helpers and convert all
        direct ->set_pio_mode/->speedproc users to use these helpers.
      
      * Move ide_config_drive_speed() calls from ->set_pio_mode/->speedproc
        methods to callers.
      
      * Rename ->speedproc method to ->set_dma_mode, make it void and update
        all implementations accordingly.
      
      * Update ide_set_xfer_rate() comments.
      
      * Unexport ide_config_drive_speed().
      
      v2:
      * Fix issues noticed by Sergei:
        - export ide_set_dma_mode() instead of moving ->set_pio_mode abuse wrt
          to setting DMA modes from sc1200_set_pio_mode() to do_special()
        - check IDE_HFLAG_NO_SET_MODE in ide_tune_dma()
        - check for (hwif->set_pio_mode) == NULL in ide_set_pio_mode()
        - check for (hwif->set_dma_mode) == NULL in ide_set_dma_mode()
        - return -1 from ide_set_{pio,dma}_mode() if ->set_{pio,dma}_mode == NULL
        - don't set ->set_{pio,dma}_mode on it821x in "smart" mode
        - fix build problem in pmac.c
        - minor fixes in au1xxx-ide.c/cs5530.c/siimage.c
        - improve patch description
      
      Changes in behavior caused by this patch:
      - HDIO_SET_PIO_MODE ioctl would now return -ENOSYS for attempts to change
        PIO mode if it821x controller is in "smart" mode
      - removal of two debugging printk-s (from cs5530.c and sc1200.c)
      - transfer modes 0x00-0x07 passed from user space may be programmed twice on
        the device (not really an issue since 0x00 is not supported correctly by
        any host driver ATM, 0x01 is not supported at all and 0x02-0x07 are invalid)
      Acked-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      88b2b32b
    • B
      ide-pmac: remove pmac_ide_do_setfeature() (take 2) · aedea591
      Bartlomiej Zolnierkiewicz 提交于
      Use ide_config_drive_speed() instead of pmac_ide_do_setfeature() and remove
      the latter, also  ide-iops.c::__ide_wait_stat() could be static again.
      
      Since for IDE PMAC host driver IDE_CONTROL_REG is always true, device's
      ->quirk_list is always zero and ->ide_dma_host_{on,off} are nops than
      the only changes in behavior are:
      
      * if PIO mode is set then ->dma_off_queitly is called to disable DMA
      
      * if setting transfer mode fails ide_dump_status() is called to dump status
      
      v2:
      * IDE PMAC controllers allow separate PIO and DMA timings and PPC userland
        depends on this fact, and calls "hdparm -p" without calling "hdparm -d".
      
        Therefore to compensate for DMA being disabled by ide_config_drive_speed()
        for PIO modes:
      
        - add IDE_HFLAG_SET_PIO_MODE_KEEP_DMA flag and set it in PMAC host driver
      
        - add handling of the new flag to ide-io.c::do_special()
      
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      aedea591
    • B
      ide-pmac: use __ide_wait_stat() · ddf15102
      Bartlomiej Zolnierkiewicz 提交于
      * Use __ide_wait_stat() instead of wait_for_ready() in pmac_ide_do_setfeature().
      
      While at it do following changes to match __ide_wait_stat() call in
      ide_config_drive_speed():
      
      * Wait WAIT_CMD time (20 sec) instead of 2 sec for device to clear BUSY_STAT.
      
      * Check DRQ_STAT bit (shouldn't be set for good device status).
      
      Also remove no longer needed wait_for_ready() from ide-iops.c.
      Acked-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      ddf15102
    • B
      ide: add __ide_wait_stat() helper · 74af21cf
      Bartlomiej Zolnierkiewicz 提交于
      * Split off checking of the status register from ide_wait_stat() to
        __ide_wait_stat() helper.
      
      * Use the new helper in ide_config_drive_speed().  The only change in the
        functionality is that the function now fails if after 20 sec (WAIT_CMD)
        device is still busy (BUSY_STAT bit is set) while previously instead of
        failing the function continued with checking for the correct device status
        (which would give the device additional 10 usec to clear BUSY_STAT bit).
      
      * Remove stale comment for ide_config_drive_speed().
      
      * Remove duplicate comment for ide_wait_stat() from <linux/ide.h>.
      
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Acked-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      74af21cf
  11. 12 10月, 2007 1 次提交
    • B
      ide: add ide_set{_max}_pio() (take 4) · 26bcb879
      Bartlomiej Zolnierkiewicz 提交于
      * Add IDE_HFLAG_ABUSE_{PREFETCH,FAST_DEVSEL,DMA_MODES} flags
        and set them in ht6560, cmd640, cmd64x and sc1200 host drivers.
      
      * Add set_pio_mode_abuse() for checking if host driver has a non-standard
        ->tuneproc() implementation and use it in do_special().
      
      * Add ide_set_pio() for setting PIO mode (it uses hwif->pio_mask to find
        the maximum PIO mode supported by the host), also add ide_set_max_pio()
        wrapper for ide_set_pio() to use for auto-tuning.  Convert users of
        ->tuneproc to use ide_set{_max}_pio() where possible.  This leaves only
        do_special(), set_using_pio(), ide_hwif_restore() and ide_set_pio() as
        a direct users of ->tuneproc.
      
      * Remove no longer needed ide_get_best_pio_mode() calls and printk-s
        reporting PIO mode selected from ->tuneproc implementations.
      
      * Rename ->tuneproc hook to ->set_pio_mode and make 'pio' argument const.
      
      * Remove stale comment from ide_config_drive_speed().
      
      v2:
      * Fix "ata_" prefix (Noticed by Jeff).
      
      v3:
      * Minor cleanups/fixups per Sergei's suggestions.
      
      v4:
      * Fix compile problem in drivers/ide/pci/cmd640.c
        (Noticed by Andrew Morton).
      
      * Improve some ->set_pio_mode comments.
      Reviewed-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Cc: Jeff Garzik <jeff@garzik.org>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      26bcb879
  12. 12 9月, 2007 1 次提交
  13. 21 8月, 2007 3 次提交
    • B
      ide-disk: workaround for buggy HPA support on ST340823A (take 3) · b0244a00
      Bartlomiej Zolnierkiewicz 提交于
      This disk reports total number of sectors instead of maximum sector address
      in response to READ_NATIVE_MAX_ADDRESS command and also happily accepts
      SET_MAX_ADDRESS command with the bogus value.  This results in +1 sector
      capacity being used and errors on attempts to use the last sector.
      
      ...
      hdd: Host Protected Area detected.
              current capacity is 78165360 sectors (40020 MB)
              native  capacity is 78165361 sectors (40020 MB)
      hdd: Host Protected Area disabled.
      ...
      hdd: reading: block=78165360, sectors=1, buffer=0xc1e63000
      hdd: dma_intr: status=0x51 { DriveReady SeekComplete Error }
      hdd: dma_intr: error=0x10 { SectorIdNotFound }, LBAsect=78165360, sector=78165360
      ...
      
      Add hpa_list[] table and workaround the issue in idedisk_check_hpa().
      
      v2:
      * Add missing export and improve patch description a bit.
      
      v3:
      * Add list termination.  (From Mikko)
      
      Fixes kernel bugzilla bug #8816.
      
      Thanks to Mikko for investigating the issue and helping with this patch.
      
      Cc: Mikko Rapeli <mikko.rapeli@iki.fi>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      b0244a00
    • B
      ide: ide_config_drive_speed() bugfixes · adcd33d4
      Bartlomiej Zolnierkiewicz 提交于
      * Use ->OUTBSYNC instead of ->OUTB when writing command register
        (needed for scc_pata and pmac host drivers).
      
      * Don't check DRDY bit of the status register on ATAPI devices
        (ATAPI devices are free to ignore DRDY bit).
      
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Kou Ishizaki <kou.ishizaki@toshiba.co.jp>
      Cc: Akira Iguchi <akira2.iguchi@toshiba.co.jp>
      Acked-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      adcd33d4
    • B
      ide: add cable detection for early UDMA66 devices (take 3) · a5b7e70d
      Bartlomiej Zolnierkiewicz 提交于
      * Move ide_in_drive_list() from ide-dma.c to ide-iops.c.
      
      * Add ivb_list[] table for listening early UDMA66 devices which don't conform
        to ATA4 standard wrt cable detection (bit14 is zero, only bit13 is valid)
        and use only device side cable detection for them since host side cable
        detection may be unreliable.
      
      * Add model "QUANTUM FIREBALLlct10 05" with firwmare "A03.0900" to the list
        (from Craig's bugreport).
      
      v2:
      * Improve kernel message basing on suggestion from Sergei.
      
      v3:
      * Don't print kernel message when no device side cable detection is done,
        plus some minor fixes.  (Noticed by Sergei)
      
      Thanks to Craig for testing this patch.
      
      Cc: Craig Block <chblock3@yahoo.com>
      Acked-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      a5b7e70d
  14. 10 7月, 2007 1 次提交
    • B
      ide: add short cables support · 49521f97
      Bartlomiej Zolnierkiewicz 提交于
      This patch allows users to override both host and device side cable detection
      with "ideX=ata66" kernel parameter.  Thanks to this it should be now possible
      to use UDMA > 2 modes on systems (laptops mainly) which use short 40-pin cable
      instead of 80-pin one.
      
      Next patches add automatic detection of some systems using short cables.
      
      Changes:
      
      * Rename hwif->udma_four to hwif->cbl and make it u8.
      
      * Convert all existing users accordingly (use ATA_CBL_* defines while at it).  
      
      * Add ATA_CBL_PATA40_SHORT support to ide-iops.c:eighty_ninty_three().
      
      * Use ATA_CBL_PATA40_SHORT for "ideX=ata66" kernel parameter.
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      Reviewed-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      49521f97
  15. 10 5月, 2007 2 次提交
    • B
      ide: cable detection fixes (take 2) · 7f8f48af
      Bartlomiej Zolnierkiewicz 提交于
      Tejun's recent eighty_ninty_three() fix has inspired me to do more thorough
      review of the cable detection code...
      
      * print user-friendly warning about limiting the maximum transfer speed
        to UDMA33 (and the reason behind it) when 80-wire cable is not detected,
        also while at it cleanup eighty_ninty_three() a bit
      
      * use eighty_ninty_three() in ide_ata66_check(), this actually fixes 3 bugs:
        - bit 14 (word 93 validity check) == 1 && bit 13 (80-wire cable test) == 1
          were used as 80-wire cable present test for CONFIG_IDEDMA_IVB=n case
          (please see FIXME comment in eighty_ninty_three() for more details)
        - CONFIG_IDEDMA_IVB=y/n cases were interchanged
        - check for SATA devices was missing
      
      * remove private cable warnings from pdc_202xx{old,new} drivers now that core
        code provides this functionality (plus, in pdc202xx_new case the test could
        give false warnings for ATAPI devices because pdc202xx_new driver doesn't
        even support ATAPI DMA)
      
      Cc: Tejun Heo <htejun@gmail.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      7f8f48af
    • B
      ide: rework the code for selecting the best DMA transfer mode (v3) · 2d5eaa6d
      Bartlomiej Zolnierkiewicz 提交于
      Depends on the "ide: fix UDMA/MWDMA/SWDMA masks" patch.
      
      * add ide_hwif_t.udma_filter hook for filtering UDMA mask
        (use it in alim15x3, hpt366, siimage and serverworks drivers)
      * add ide_max_dma_mode() for finding best DMA mode for the device
        (loosely based on some older libata-core.c code)
      * convert ide_dma_speed() users to use ide_max_dma_mode()
      * make ide_rate_filter() take "ide_drive_t *drive" as an argument instead
        of "u8 mode" and teach it to how to use UDMA mask to do filtering
      * use ide_rate_filter() in hpt366 driver
      * remove no longer needed ide_dma_speed() and *_ratemask()
      * unexport eighty_ninty_three()
      
      v2:
      * rename ->filter_udma_mask to ->udma_filter
        [ Suggested by Sergei Shtylyov <sshtylyov@ru.mvista.com>. ]
      
      v3:
      * updated for scc_pata driver (fixes XFER_UDMA_6 filtering for user-space
        originated transfer mode change requests when 100MHz clock is used)
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      2d5eaa6d
  16. 11 4月, 2007 1 次提交
    • S
      ide: correctly prevent IDE timer expiry function to run if request was already handled · 23450319
      Suleiman Souhlal 提交于
      It is possible for the timer expiry function to run even though the
      request has already been handled: ide_timer_expiry() only checks that
      the handler is not NULL, but it is possible that we have handled a
      request (thus clearing the handler) and then started a new request
      (thus starting the timer again, and setting a handler). 
      
      A simple way to exhibit this is to set the DMA timeout to 1 jiffy and
      run dd: The kernel will panic after a few minutes because
      ide_timer_expiry() tries to add a timer when it's already active.
      
      To fix this, we simply add a request generation count that gets
      incremented at every interrupt, and check in ide_timer_expiry() that
      we have not already handled a new interrupt before running the expiry
      function.
      Signed-off-by: NSuleiman Souhlal <suleiman@google.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      23450319
  17. 27 3月, 2007 2 次提交
    • S
      ide: use correct IDE error recovery · 513daadd
      Suleiman Souhlal 提交于
      IDE error recovery is using IDLE IMMEDIATE if the drive is busy or has DRQ set.
      This violates the ATA spec (can only send IDLE IMMEDIATE when drive is not
      busy) and really hoses up some drives (modern drives will not be able to
      recover using this error handling).  The correct thing to do is issue a SRST
      followed by a SET FEATURES command.  This is what Western Digital recommends
      for error recovery and what Western Digital says Windows does.  It also does
      not violate the ATA spec as far as I can tell.
      
      Bart:
      * port the patch over the current tree
      * undo the recalibration code removal
      * send SET FEATURES command after checking for good drive status
      * don't check whether the current request is of REQ_TYPE_ATA_{CMD,TASK}
        type because we need to send SET FEATURES before handling any requests
      * some pre-ATA4 drives require INITIALIZE DEVICE PARAMETERS command before
        other commands (except IDENTIFY) so send SET FEATURES only if there are
        no pending drive->special requests
      * update comments and patch description
      * any bugs introduced by this patch are mine and not Suleiman's :-)
      Signed-off-by: NSuleiman Souhlal <suleiman@google.com>
      Acked-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      513daadd
    • B
      ide: revert "ide: fix drive side 80c cable check, take 2" for now · f68d9320
      Bartlomiej Zolnierkiewicz 提交于
      "ide: fix drive side 80c cable check, take 2" patch from Tejun Heo (commit
      fab59375) fixed 80c bit test (bit13 of word93)
      but we also need to fix master/slave IDENTIFY order (slave device should be
      probed first in order to make it release PDIAG- signal) and we should also
      check for pre-ATA3 slave devices (which may not release PDIAG- signal).
      
      [ Unfortunately the fact that IDE driver doesn't reset devices itself helps
        only a bit as it seems that some BIOS-es reset ATA devices after programming
        the chipset, some BIOS-es can be set to not probe/configure selected devices,
        there may be no BIOS in case of add-on cards etc. ]
      
      Since we are quite late in the release cycle and the required changes will
      affect a lot of systems just revert the fix for now.
      
      [ Please also see libata commit f31f0cc2. ]
      
      Thanks goes out to Fernando Mitio Yamada for reporting the problem
      and patiently testing patches.
      Acked-by: NTejun Heo <htejun@gmail.com>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      f68d9320
  18. 04 3月, 2007 1 次提交
  19. 17 2月, 2007 3 次提交