ib_umem_get and DMA_API_DEBUG question

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi all,

Lately I've been seeing DMA-API call traces on our automated testing runs which
complain about overlapping mappings of the same cacheline [1].
The problem is (most likely) caused due to multiple calls to ibv_reg_mr with the
same address, which as a result DMA maps the same physical addresses more than 7
(ACTIVE_CACHELINE_MAX_OVERLAP) times.

Is this considered a bad behavior by the test? Should this be caught by
ib_core/driver somehow?

Thanks,
Gal

[1]
------------[ cut here ]------------
DMA-API: exceeded 7 overlapping mappings of cacheline 0x000000004a0ad6c0
WARNING: CPU: 56 PID: 63572 at kernel/dma/debug.c:501 add_dma_entry+0x1fd/0x230
Modules linked in: sunrpc dm_mirror dm_region_hash dm_log dm_mod efa ib_uverbs
ib_core crc32_pclmul ghash_clmulni_intel aesni_intel aes_x86_64 crypto_simd
cryptd glue_helper button pcspkr evdev ip_tables x_tables xfs libcrc32c nvme
crc32c_intel nvme_core ena ipv6 crc_ccitt autofs4
CPU: 56 PID: 63572 Comm: fi_multi_res Not tainted 5.2.0-g27b7fb1ab-dirty #1
Hardware name: Amazon EC2 c5n.18xlarge/, BIOS 1.0 10/16/2017
RIP: 0010:add_dma_entry+0x1fd/0x230
Code: a7 03 02 80 fb 01 77 44 83 e3 01 75 bb 48 8d 54 24 20 be 07 00 00 00 48 c7
c7 c0 89 29 82 c6 05 00 a7 03 02 01 e8 53 10 f0 ff <0f> 0b eb 9a e8 9a 13 f0 ff
48 63 f0 ba 01 00 00 00 48 c7 c7 00 bf
RSP: 0018:ffff8892c33a7388 EFLAGS: 00010082
RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffffffff81306f9e
RDX: 0000000000000000 RSI: 0000000000000008 RDI: ffff88ac6a630650
RBP: 000000004a0ad6c0 R08: ffffed158d4c60cb R09: ffffed158d4c60cb
R10: 0000000000000001 R11: ffffed158d4c60ca R12: 0000000000000206
R13: 1ffff11258674e71 R14: ffff88ac60c77a80 R15: 0000000000000202
FS:  00007fec5e4f5740(0000) GS:ffff88ac6a600000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 000000000263c000 CR3: 0000001425a14006 CR4: 00000000007606e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
PKRU: 55555554
Call Trace:
 ? dma_debug_init+0x2b0/0x2b0
 ? lockdep_hardirqs_on+0x1b1/0x2d0
 debug_dma_map_sg+0x7a/0x4b0
 ib_umem_get+0x831/0xca0 [ib_uverbs]
 ? __kasan_kmalloc.constprop.6+0xa0/0xd0
 efa_reg_mr+0x26f/0x1920 [efa]
 ? check_chain_key+0x147/0x200
 ? check_flags.part.32+0x240/0x240
 ? efa_create_cq+0x910/0x910 [efa]
 ? lookup_get_idr_uobject.part.7+0x18d/0x290 [ib_uverbs]
 ? match_held_lock+0x1b/0x240
 ? alloc_commit_idr_uobject+0x50/0x50 [ib_uverbs]
 ? _raw_spin_unlock+0x24/0x30
 ? alloc_begin_idr_uobject+0x62/0x90 [ib_uverbs]
 ib_uverbs_reg_mr+0x20e/0x440 [ib_uverbs]
 ? ib_uverbs_ex_create_wq+0x620/0x620 [ib_uverbs]
 ? match_held_lock+0x1b/0x240
 ? match_held_lock+0x1b/0x240
 ? check_chain_key+0x147/0x200
 ? uverbs_fill_udata+0x12f/0x360 [ib_uverbs]
 ib_uverbs_handler_UVERBS_METHOD_INVOKE_WRITE+0x197/0x1f0 [ib_uverbs]
 ? uverbs_disassociate_api+0x220/0x220 [ib_uverbs]
 ? __bitmap_subset+0xd2/0x120
 ? uverbs_fill_udata+0x2ab/0x360 [ib_uverbs]
 ib_uverbs_cmd_verbs+0xb61/0x1410 [ib_uverbs]
 ? uverbs_disassociate_api+0x220/0x220 [ib_uverbs]
 ? mark_lock+0xcf/0x9a0
 ? uverbs_fill_udata+0x360/0x360 [ib_uverbs]
 ? match_held_lock+0x1b/0x240
 ? lock_acquire+0xdb/0x220
 ? lock_acquire+0xdb/0x220
 ? ib_uverbs_ioctl+0xf2/0x1f0 [ib_uverbs]
 ib_uverbs_ioctl+0x14a/0x1f0 [ib_uverbs]
 ? ib_uverbs_ioctl+0xf2/0x1f0 [ib_uverbs]
 ? ib_uverbs_cmd_verbs+0x1410/0x1410 [ib_uverbs]
 ? match_held_lock+0x1b/0x240
 ? check_chain_key+0x147/0x200
 do_vfs_ioctl+0x131/0x990
 ? ioctl_preallocate+0x170/0x170
 ? syscall_trace_enter+0x2fb/0x5a0
 ? mark_held_locks+0x1c/0xa0
 ? ktime_get_coarse_real_ts64+0x7b/0x120
 ? lockdep_hardirqs_on+0x1b1/0x2d0
 ? ktime_get_coarse_real_ts64+0xc0/0x120
 ? syscall_trace_enter+0x184/0x5a0
 ? trace_event_raw_event_sys_enter+0x2b0/0x2b0
 ? rcu_read_lock_sched_held+0x8f/0xa0
 ? kfree+0x24a/0x2c0
 ksys_ioctl+0x70/0x80
 ? mark_held_locks+0x1c/0xa0
 __x64_sys_ioctl+0x3d/0x50
 do_syscall_64+0x68/0x280
 entry_SYSCALL_64_after_hwframe+0x49/0xbe
RIP: 0033:0x7fec5cc4b1e7
Code: b3 66 90 48 8b 05 99 3c 2c 00 64 c7 00 26 00 00 00 48 c7 c0 ff ff ff ff c3
66 2e 0f 1f 84 00 00 00 00 00 b8 10 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3
48 8b 0d 69 3c 2c 00 f7 d8 64 89 01 48
RSP: 002b:00007ffeba220f48 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
RAX: ffffffffffffffda RBX: 00007ffeba220f90 RCX: 00007fec5cc4b1e7
RDX: 00007ffeba220fb0 RSI: 00000000c0181b01 RDI: 0000000000000003
RBP: 00007ffeba220fc8 R08: 0000000000000003 R09: 0000000001b8be90
R10: 00000000ffffffff R11: 0000000000000246 R12: 000000000000000c
R13: 0000000001b8bfd0 R14: 00007ffeba221148 R15: 0000000000000001
irq event stamp: 130178
hardirqs last  enabled at (130177): [<ffffffff81c121d2>]
_raw_spin_unlock_irqrestore+0x32/0x60
hardirqs last disabled at (130178): [<ffffffff81c12780>]
_raw_spin_lock_irqsave+0x20/0x60
softirqs last  enabled at (130124): [<ffffffff81abd353>] tcp_recvmsg+0x693/0x1360
softirqs last disabled at (130122): [<ffffffff8198abfb>] release_sock+0x1b/0xe0
---[ end trace 22c97ff4678ca8c1 ]---



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux