1. 05 3月, 2015 1 次提交
  2. 05 2月, 2015 1 次提交
  3. 04 2月, 2015 1 次提交
  4. 22 12月, 2014 1 次提交
  5. 09 12月, 2014 1 次提交
    • P
      dmaengine: ioatdma: fix dma mapping errors · 4ff2fd83
      Prarit Bhargava 提交于
      Several systems are showing the following stack trace:
      
      WARNING: CPU: 0 PID: 2352 at lib/dma-debug.c:1140 check_unmap+0x4ee/0x9e0()
      ioatdma 0000:00:04.0: DMA-API: device driver failed to check map error[device address=0x0000000465bad000] [size=4096 bytes] [mapped as page]
      Modules linked in: ioatdma(E+) nfsv3 rpcsec_gss_krb5 nfsv4 dns_resolver nfs fscache cfg80211 rfkill x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm crct10dif_pclmul crc32_pclmul crc32c_intel cdc_ether ses ghash_clmulni_intel usbnet mii enclosure aesni_intel lrw gf128mul glue_helper iTCO_wdt shpchp ablk_helper iTCO_vendor_support cryptd pcspkr ipmi_devintf sb_edac lpc_ich edac_core mfd_core ipmi_si i2c_i801 wmi ipmi_msghandler nfsd auth_rpcgss nfs_acl lockd sunrpc xfs libcrc32c sd_mod crc_t10dif crct10dif_common mgag200 syscopyarea sysfillrect sysimgblt drm_kms_helper ttm igb drm ptp pps_core dca i2c_algo_bit i2ccore megaraid_sas dm_mirror dm_region_hash dm_log dm_mod [last unloaded: ioatdma]
      CPU: 0 PID: 2352 Comm: insmod Tainted: G            E  3.17.0-rc4+ #14
      Hardware name: HP ProLiant m300 Server Cartridge/, BIOS H02 01/30/2014
       0000000000000009 ffff88007994b7d8 ffffffff816e7225 ffff88007994b820
       ffff88007994b810 ffffffff8107e51d ffff88045fc56c00 ffff88046643ee90
       ffffffff8338ccd0 0000000000000286 ffffffff81956629 ffff88007994b870
      Call Trace:
       [<ffffffff816e7225>] dump_stack+0x4d/0x66
       [<ffffffff8107e51d>] warn_slowpath_common+0x7d/0xa0
       [<ffffffff8107e58c>] warn_slowpath_fmt+0x4c/0x50
       [<ffffffff81381e6e>] check_unmap+0x4ee/0x9e0
       [<ffffffff813823bf>] debug_dma_unmap_page+0x5f/0x70
       [<ffffffffa04546d8>] ioat_xor_val_self_test+0x498/0xcf0 [ioatdma]
       [<ffffffff81204f0a>] ? kfree+0xda/0x2b0
       [<ffffffffa044d510>] ? ioat_dma_setup_interrupts+0x120/0x2d0 [ioatdma]
       [<ffffffffa0454f4e>] ioat3_dma_self_test+0x1e/0x30 [ioatdma]
       [<ffffffffa044f904>] ioat_probe+0xf4/0x110 [ioatdma]
       [<ffffffffa04550f8>] ioat3_dma_probe+0x198/0x3a0 [ioatdma]
       [<ffffffffa044d18e>] ioat_pci_probe+0x11e/0x1b0 [ioatdma]
       [<ffffffff81393a15>] local_pci_probe+0x45/0xa0
       [<ffffffff81394be5>] ? pci_match_device+0xe5/0x110
       [<ffffffff81394d29>] pci_device_probe+0xd9/0x130
       [<ffffffff81462860>] driver_probe_device+0x90/0x3c0
       [<ffffffff81462c63>] __driver_attach+0x93/0xa0
       [<ffffffff81462bd0>] ? __device_attach+0x40/0x40
       [<ffffffff8146080b>] bus_for_each_dev+0x6b/0xb0
       [<ffffffff814622ce>] driver_attach+0x1e/0x20
       [<ffffffff81461ed8>] bus_add_driver+0x188/0x260
       [<ffffffffa0423000>] ? 0xffffffffa0423000
       [<ffffffff81463734>] driver_register+0x64/0xf0
       [<ffffffff813933a0>] __pci_register_driver+0x60/0x70
       [<ffffffffa0423089>] ioat_init_module+0x89/0x1000 [ioatdma]
       [<ffffffff8100212c>] do_one_initcall+0xbc/0x200
       [<ffffffff811e8b22>] ? __vunmap+0xd2/0x120
       [<ffffffff8111e73c>] load_module+0x14ec/0x1b50
       [<ffffffff81119970>] ? store_uevent+0x40/0x40
       [<ffffffff8111ef36>] SyS_finit_module+0x86/0xb0
       [<ffffffff816f1469>] system_call_fastpath+0x16/0x1b
      ---[ end trace 1052ccbbc3db4d08 ]---
      Mapped at:
       [<ffffffff81380be1>] debug_dma_map_page+0x91/0x140
       [<ffffffffa045440e>] ioat_xor_val_self_test+0x1ce/0xcf0 [ioatdma]
       [<ffffffffa0454f4e>] ioat3_dma_self_test+0x1e/0x30 [ioatdma]
       [<ffffffffa044f904>] ioat_probe+0xf4/0x110 [ioatdma]
       [<ffffffffa04550f8>] ioat3_dma_probe+0x198/0x3a0 [ioatdma]
      
      This happens because the current ioatdma DMA test code does not check the return
      value of dma_map_page() calls with dma_mapping_error().  In addition, it was
      noticed that mapping for the variable dest_dma is free'd before the last use.
      
      This patch fixes these errors by initializing the dma_srcs[] array and checking
      the returns with dma_mapping_error().
      Signed-off-by: NPrarit Bhargava <prarit@redhat.com>
      Signed-off-by: NVinod Koul <vinod.koul@intel.com>
      4ff2fd83
  6. 28 9月, 2014 1 次提交
  7. 11 4月, 2014 1 次提交
  8. 26 2月, 2014 1 次提交
  9. 15 11月, 2013 8 次提交
  10. 14 11月, 2013 1 次提交
  11. 25 10月, 2013 1 次提交
  12. 23 8月, 2013 2 次提交
  13. 04 7月, 2013 1 次提交
  14. 16 4月, 2013 5 次提交
  15. 15 4月, 2013 7 次提交
  16. 14 2月, 2013 1 次提交
  17. 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
  18. 08 1月, 2013 3 次提交
  19. 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
  20. 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