Revision c0cf4512a31eb3cec70b066bc36ed55f7d05b8c0 authored by Bart Van Assche on 23 June 2016, 07:35:48 UTC, committed by Doug Ledford on 23 June 2016, 16:04:09 UTC
The memory needed for the send and receive queues associated with
a QP is proportional to the max_sge parameter. The current value
of that parameter is such that with an mlx4 HCA the QP buffer size
is 8 MB. Since DMA is used for communication between HCA and CPU
that buffer either has to be allocated coherently or map_single()
must succeed for that buffer. Since large contiguous allocations
are fragile and since the maximum segment size for e.g. swiotlb
is 256 KB, reduce the max_sge parameter. This patch avoids that
the following text appears on the console after SRP logout and
relogin on a system equipped with multiple IB HCAs:

mlx4_core 0000:05:00.0: swiotlb buffer is full (sz: 8388608 bytes)
swiotlb: coherent allocation failed for device 0000:05:00.0 size=8388608
CPU: 11 PID: 148 Comm: kworker/11:1 Not tainted 4.7.0-rc4-dbg+ #1
Call Trace:
 [<ffffffff812c6d35>] dump_stack+0x67/0x92
 [<ffffffff812efe71>] swiotlb_alloc_coherent+0x141/0x150
 [<ffffffff810458be>] x86_swiotlb_alloc_coherent+0x3e/0x50
 [<ffffffffa03861fa>] mlx4_buf_direct_alloc.isra.5+0x9a/0x120 [mlx4_core]
 [<ffffffffa0386545>] mlx4_buf_alloc+0x165/0x1a0 [mlx4_core]
 [<ffffffffa035053d>] create_qp_common.isra.29+0x57d/0xff0 [mlx4_ib]
 [<ffffffffa03510da>] mlx4_ib_create_qp+0x12a/0x3f0 [mlx4_ib]
 [<ffffffffa031154a>] ib_create_qp+0x3a/0x250 [ib_core]
 [<ffffffffa055dd4b>] srpt_cm_handler+0x4bb/0xcad [ib_srpt]
 [<ffffffffa02c1ab0>] cm_process_work+0x20/0xf0 [ib_cm]
 [<ffffffffa02c3640>] cm_work_handler+0x1ac0/0x2059 [ib_cm]
 [<ffffffff810737ed>] process_one_work+0x19d/0x490
 [<ffffffff81073b29>] worker_thread+0x49/0x490
 [<ffffffff8107a0ea>] kthread+0xea/0x100
 [<ffffffff815b25af>] ret_from_fork+0x1f/0x40

Fixes: b99f8e4d7bcd ("IB/srpt: convert to the generic RDMA READ/WRITE API")
Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
Cc: Laurence Oberman <loberman@redhat.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Doug Ledford <dledford@redhat.com>
1 parent 37e07cd
History
File Mode Size
netfilter
Kconfig -rw-r--r-- 23.6 KB
Makefile -rw-r--r-- 2.4 KB
af_inet.c -rw-r--r-- 46.6 KB
ah4.c -rw-r--r-- 13.5 KB
arp.c -rw-r--r-- 34.9 KB
cipso_ipv4.c -rw-r--r-- 62.8 KB
datagram.c -rw-r--r-- 3.2 KB
devinet.c -rw-r--r-- 59.9 KB
esp4.c -rw-r--r-- 17.3 KB
fib_frontend.c -rw-r--r-- 31.0 KB
fib_lookup.h -rw-r--r-- 1.3 KB
fib_rules.c -rw-r--r-- 8.2 KB
fib_semantics.c -rw-r--r-- 37.9 KB
fib_trie.c -rw-r--r-- 64.0 KB
fou.c -rw-r--r-- 22.3 KB
gre_demux.c -rw-r--r-- 4.3 KB
gre_offload.c -rw-r--r-- 7.2 KB
icmp.c -rw-r--r-- 29.0 KB
igmp.c -rw-r--r-- 71.3 KB
inet_connection_sock.c -rw-r--r-- 26.7 KB
inet_diag.c -rw-r--r-- 28.0 KB
inet_fragment.c -rw-r--r-- 10.3 KB
inet_hashtables.c -rw-r--r-- 18.4 KB
inet_timewait_sock.c -rw-r--r-- 8.9 KB
inetpeer.c -rw-r--r-- 15.9 KB
ip_forward.c -rw-r--r-- 3.9 KB
ip_fragment.c -rw-r--r-- 21.1 KB
ip_gre.c -rw-r--r-- 31.8 KB
ip_input.c -rw-r--r-- 14.5 KB
ip_options.c -rw-r--r-- 15.1 KB
ip_output.c -rw-r--r-- 39.5 KB
ip_sockglue.c -rw-r--r-- 35.7 KB
ip_tunnel.c -rw-r--r-- 25.8 KB
ip_tunnel_core.c -rw-r--r-- 11.9 KB
ip_vti.c -rw-r--r-- 14.4 KB
ipcomp.c -rw-r--r-- 4.6 KB
ipconfig.c -rw-r--r-- 39.7 KB
ipip.c -rw-r--r-- 15.1 KB
ipmr.c -rw-r--r-- 66.3 KB
netfilter.c -rw-r--r-- 5.2 KB
ping.c -rw-r--r-- 29.1 KB
proc.c -rw-r--r-- 20.3 KB
protocol.c -rw-r--r-- 2.3 KB
raw.c -rw-r--r-- 25.7 KB
route.c -rw-r--r-- 71.0 KB
syncookies.c -rw-r--r-- 11.4 KB
sysctl_net_ipv4.c -rw-r--r-- 24.9 KB
tcp.c -rw-r--r-- 84.2 KB
tcp_bic.c -rw-r--r-- 6.2 KB
tcp_cdg.c -rw-r--r-- 11.2 KB
tcp_cong.c -rw-r--r-- 10.9 KB
tcp_cubic.c -rw-r--r-- 14.7 KB
tcp_dctcp.c -rw-r--r-- 9.4 KB
tcp_diag.c -rw-r--r-- 2.4 KB
tcp_fastopen.c -rw-r--r-- 9.1 KB
tcp_highspeed.c -rw-r--r-- 4.8 KB
tcp_htcp.c -rw-r--r-- 7.4 KB
tcp_hybla.c -rw-r--r-- 4.9 KB
tcp_illinois.c -rw-r--r-- 8.2 KB
tcp_input.c -rw-r--r-- 179.9 KB
tcp_ipv4.c -rw-r--r-- 62.0 KB
tcp_lp.c -rw-r--r-- 8.7 KB
tcp_metrics.c -rw-r--r-- 30.5 KB
tcp_minisocks.c -rw-r--r-- 26.0 KB
tcp_offload.c -rw-r--r-- 7.8 KB
tcp_output.c -rw-r--r-- 102.3 KB
tcp_probe.c -rw-r--r-- 7.4 KB
tcp_recovery.c -rw-r--r-- 3.5 KB
tcp_scalable.c -rw-r--r-- 1.4 KB
tcp_timer.c -rw-r--r-- 18.7 KB
tcp_vegas.c -rw-r--r-- 9.6 KB
tcp_vegas.h -rw-r--r-- 901 bytes
tcp_veno.c -rw-r--r-- 5.7 KB
tcp_westwood.c -rw-r--r-- 8.2 KB
tcp_yeah.c -rw-r--r-- 6.9 KB
tunnel4.c -rw-r--r-- 4.1 KB
udp.c -rw-r--r-- 64.3 KB
udp_diag.c -rw-r--r-- 5.5 KB
udp_impl.h -rw-r--r-- 1.2 KB
udp_offload.c -rw-r--r-- 10.1 KB
udp_tunnel.c -rw-r--r-- 3.2 KB
udplite.c -rw-r--r-- 3.4 KB
xfrm4_input.c -rw-r--r-- 3.9 KB
xfrm4_mode_beet.c -rw-r--r-- 3.7 KB
xfrm4_mode_transport.c -rw-r--r-- 2.1 KB
xfrm4_mode_tunnel.c -rw-r--r-- 3.0 KB
xfrm4_output.c -rw-r--r-- 2.6 KB
xfrm4_policy.c -rw-r--r-- 8.6 KB
xfrm4_protocol.c -rw-r--r-- 6.7 KB
xfrm4_state.c -rw-r--r-- 2.4 KB
xfrm4_tunnel.c -rw-r--r-- 2.7 KB

back to top