1. 15 4月, 2013 9 次提交
  2. 14 2月, 2013 1 次提交
  3. 13 2月, 2013 1 次提交
    • D
      ioatdma: fix race between updating ioat->head and IOAT_COMPLETION_PENDING · 4dec23d7
      Dave Jiang 提交于
      There is a race that can hit during __cleanup() when the ioat->head pointer is
      incremented during descriptor submission. The __cleanup() can clear the
      PENDING flag when it does not see any active descriptors. This causes new
      submitted descriptors to be ignored because the COMPLETION_PENDING flag is
      cleared. This was introduced when code was adapted from ioatdma v1 to ioatdma
      v2. For v2 and v3, IOAT_COMPLETION_PENDING flag will be abandoned and a new
      flag IOAT_CHAN_ACTIVE will be utilized. This flag will also be protected under
      the prep_lock when being modified in order to avoid the race.
      Signed-off-by: NDave Jiang <dave.jiang@intel.com>
      Reviewed-by: NDan Williams <djbw@fb.com>
      Signed-off-by: NVinod Koul <vinod.koul@intel.com>
      4dec23d7
  4. 08 1月, 2013 4 次提交
  5. 07 1月, 2013 1 次提交
    • S
      ioat: Fix DMA memory sync direction correct flag · ac498987
      Shuah Khan 提交于
      ioat does DMA memory sync with DMA_TO_DEVICE direction on a buffer allocated
      for DMA_FROM_DEVICE dma, resulting in the following warning from dma debug.
      Fixed the dma_sync_single_for_device() call to use the correct direction.
      
      [  226.288947] WARNING: at lib/dma-debug.c:990 check_sync+0x132/0x550()
      [  226.288948] Hardware name: ProLiant DL380p Gen8
      [  226.288951] ioatdma 0000:00:04.0: DMA-API: device driver syncs DMA memory with different direction [device address=0x00000000ffff7000] [size=4096 bytes] [mapped with DMA_FROM_DEVICE] [synced with DMA_TO_DEVICE]
      [  226.288953] Modules linked in: iTCO_wdt(+) sb_edac(+) ioatdma(+) microcode serio_raw pcspkr edac_core hpwdt(+) iTCO_vendor_support hpilo(+) dca acpi_power_meter ata_generic pata_acpi sd_mod crc_t10dif ata_piix libata hpsa tg3 netxen_nic(+) sunrpc dm_mirror dm_region_hash dm_log dm_mod
      [  226.288967] Pid: 1055, comm: work_for_cpu Tainted: G        W    3.3.0-0.20.el7.x86_64 #1
      [  226.288968] Call Trace:
      [  226.288974]  [<ffffffff810644cf>] warn_slowpath_common+0x7f/0xc0
      [  226.288977]  [<ffffffff810645c6>] warn_slowpath_fmt+0x46/0x50
      [  226.288980]  [<ffffffff81345502>] check_sync+0x132/0x550
      [  226.288983]  [<ffffffff81345c9f>] debug_dma_sync_single_for_device+0x3f/0x50
      [  226.288988]  [<ffffffff81661002>] ? wait_for_common+0x72/0x180
      [  226.288995]  [<ffffffffa019590f>] ioat_xor_val_self_test+0x3e5/0x832 [ioatdma]
      [  226.288999]  [<ffffffff811a5739>] ? kfree+0x259/0x270
      [  226.289004]  [<ffffffffa0195d77>] ioat3_dma_self_test+0x1b/0x20 [ioatdma]
      [  226.289008]  [<ffffffffa01952c3>] ioat_probe+0x2f8/0x348 [ioatdma]
      [  226.289011]  [<ffffffffa0195f51>] ioat3_dma_probe+0x1d5/0x2aa [ioatdma]
      [  226.289016]  [<ffffffffa0194d12>] ioat_pci_probe+0x139/0x17c [ioatdma]
      [  226.289020]  [<ffffffff81354b8c>] local_pci_probe+0x5c/0xd0
      [  226.289023]  [<ffffffff81083e50>] ? destroy_work_on_stack+0x20/0x20
      [  226.289025]  [<ffffffff81083e68>] do_work_for_cpu+0x18/0x30
      [  226.289029]  [<ffffffff8108d997>] kthread+0xb7/0xc0
      [  226.289033]  [<ffffffff8166cef4>] kernel_thread_helper+0x4/0x10
      [  226.289036]  [<ffffffff81662d20>] ? _raw_spin_unlock_irq+0x30/0x50
      [  226.289038]  [<ffffffff81663234>] ? retint_restore_args+0x13/0x13
      [  226.289041]  [<ffffffff8108d8e0>] ? kthread_worker_fn+0x1a0/0x1a0
      [  226.289044]  [<ffffffff8166cef0>] ? gs_change+0x13/0x13
      [  226.289045] ---[ end trace e1618afc7a606089 ]---
      [  226.289047] Mapped at:
      [  226.289048]  [<ffffffff81345307>] debug_dma_map_page+0x87/0x150
      [  226.289050]  [<ffffffffa019653c>] dma_map_page.constprop.18+0x70/0xb34 [ioatdma]
      [  226.289054]  [<ffffffffa0195702>] ioat_xor_val_self_test+0x1d8/0x832 [ioatdma]
      [  226.289058]  [<ffffffffa0195d77>] ioat3_dma_self_test+0x1b/0x20 [ioatdma]
      [  226.289061]  [<ffffffffa01952c3>] ioat_probe+0x2f8/0x348 [ioatdma]
      Signed-off-by: NShuah Khan <shuah.khan@hp.com>
      CC: <stable@vger.kernel.org>
      Signed-off-by: NVinod Koul <vinod.koul@linux.intel.com>
      ac498987
  6. 04 1月, 2013 1 次提交
    • G
      Drivers: dma: remove __dev* attributes. · 4bf27b8b
      Greg Kroah-Hartman 提交于
      CONFIG_HOTPLUG is going away as an option.  As a result, the __dev*
      markings need to be removed.
      
      This change removes the use of __devinit, __devexit_p, __devinitconst,
      and __devexit from these drivers.
      
      Based on patches originally written by Bill Pemberton, but redone by me
      in order to handle some of the coding style issues better, by hand.
      
      Cc: Bill Pemberton <wfp5p@virginia.edu>
      Cc: Viresh Kumar <viresh.linux@gmail.com>
      Cc: Dan Williams <djbw@fb.com>
      Cc: Vinod Koul <vinod.koul@intel.com>
      Cc: Barry Song <baohua.song@csr.com>
      Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
      Cc: Alexander Duyck <alexander.h.duyck@intel.com>
      Cc: Russell King <rmk+kernel@arm.linux.org.uk>
      Cc: Linus Walleij <linus.walleij@linaro.org>
      Cc: Jassi Brar <jassisinghbrar@gmail.com>
      Cc: Dave Jiang <dave.jiang@intel.com>
      Cc: Bill Pemberton <wfp5p@virginia.edu>
      Cc: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      4bf27b8b
  7. 29 11月, 2012 1 次提交
  8. 15 11月, 2012 1 次提交
    • A
      ioat: Do not enable DCA if tag map is invalid · 07bd34db
      Alexander Duyck 提交于
      I have encountered several systems that have an invalid tag map.  This
      invalid tag map results in only two tags being generated 0x1F which is
      usually applied to the first core in a Hyper-threaded pair and 0x00 which
      is applied to the second core in a Hyper-threaded pair.  The net result of
      all this is that DCA causes significant cache thrash because the 0x1F tag
      will send traffic to the second socket, which the 0x00 tag will not DCA tag
      the frame resulting in no benefit.
      
      For now the best solution from the driver's perspective is to just disable
      DCA if the tag map is invalid.  The correct solution for this would be to
      have the BIOS on affected systems updated so that the correct tags are
      generated for a given APIC ID.
      Signed-off-by: NAlexander Duyck <alexander.h.duyck@intel.com>
      Tested-by: NStephen Ko <stephen.s.ko@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      07bd34db
  9. 18 9月, 2012 1 次提交
  10. 01 9月, 2012 1 次提交
  11. 31 8月, 2012 1 次提交
  12. 06 4月, 2012 2 次提交
  13. 24 3月, 2012 1 次提交
  14. 13 3月, 2012 7 次提交
  15. 04 8月, 2011 1 次提交
  16. 23 7月, 2011 2 次提交
  17. 27 5月, 2011 1 次提交
  18. 23 5月, 2011 1 次提交
    • P
      Add appropriate <linux/prefetch.h> include for prefetch users · 70c71606
      Paul Gortmaker 提交于
      After discovering that wide use of prefetch on modern CPUs
      could be a net loss instead of a win, net drivers which were
      relying on the implicit inclusion of prefetch.h via the list
      headers showed up in the resulting cleanup fallout.  Give
      them an explicit include via the following $0.02 script.
      
       =========================================
       #!/bin/bash
       MANUAL=""
       for i in `git grep -l 'prefetch(.*)' .` ; do
       	grep -q '<linux/prefetch.h>' $i
       	if [ $? = 0 ] ; then
       		continue
       	fi
      
       	(	echo '?^#include <linux/?a'
       		echo '#include <linux/prefetch.h>'
       		echo .
       		echo w
       		echo q
       	) | ed -s $i > /dev/null 2>&1
       	if [ $? != 0 ]; then
       		echo $i needs manual fixup
       		MANUAL="$i $MANUAL"
       	fi
       done
       echo ------------------- 8\<----------------------
       echo vi $MANUAL
       =========================================
      Signed-off-by: NPaul <paul.gortmaker@windriver.com>
      [ Fixed up some incorrect #include placements, and added some
        non-network drivers and the fib_trie.c case    - Linus ]
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      70c71606
  19. 05 12月, 2010 1 次提交
  20. 14 10月, 2010 1 次提交
    • D
      ioat2: fix performance regression · c50a898f
      Dan Williams 提交于
      Commit 07934481 "DMAENGINE: generic channel status v2" changed the interface for
      how dma channel progress is retrieved.  It inadvertently exported an internal
      helper function ioat_tx_status() instead of ioat_dma_tx_status().  The latter
      polls the hardware to get the latest completion state, while the helper just
      evaluates the current state without touching hardware.  The effect is that we
      end up waiting for completion timeouts or descriptor allocation errors before
      the completion state is updated.
      
      iperf (before fix):
      [SUM]  0.0-41.3 sec   364 MBytes  73.9 Mbits/sec
      
      iperf (after fix):
      [SUM]  0.0- 4.5 sec   499 MBytes   940 Mbits/sec
      
      This is a regression starting with 2.6.35.
      
      Cc: <stable@kernel.org>
      Cc: Dave Jiang <dave.jiang@intel.com>
      Cc: Jesse Brandeburg <jesse.brandeburg@intel.com>
      Cc: Linus Walleij <linus.walleij@stericsson.com>
      Cc: Maciej Sosnowski <maciej.sosnowski@intel.com>
      Reported-by: NRichard Scobie <richard@sauce.co.nz>
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      c50a898f
  21. 05 8月, 2010 1 次提交