Re: [PATCH] xprtrdma: Fix DMA-API-DEBUG warning by checking dma_map result

2014-06-19 Thread Anna Schumaker
On 06/17/2014 08:39 AM, Yan Burman wrote:
> Fix the following warning when DMA-API debug is enabled by checking 
> ib_dma_map_single result:
> [ 1455.345548] [ cut here ]
> [ 1455.346863] WARNING: CPU: 3 PID: 3929 at 
> /home/yanb/kernel/net-next/lib/dma-debug.c:1140 check_unmap+0x4e5/0x990()
> [ 1455.349350] mlx4_core :00:07.0: DMA-API: device driver failed to check 
> map error[device address=0x7c9f2090] [size=2656 bytes] [mapped as 
> single]
> [ 1455.349350] Modules linked in: xprtrdma netconsole configfs nfsv3 nfs_acl 
> ib_ipoib rdma_ucm ib_ucm ib_uverbs ib_umad rdma_cm ib_cm iw_cm autofs4 
> auth_rpcgss oid_registry nfsv4 nfs fscache lockd sunrpc dm_mirror 
> dm_region_hash dm_log microcode pcspkr mlx4_ib ib_sa ib_mad ib_core ib_addr 
> mlx4_en ipv6 ptp pps_core vxlan mlx4_core virtio_balloon cirrus ttm 
> drm_kms_helper drm sysimgblt sysfillrect syscopyarea i2c_piix4 i2c_core 
> button ext3 jbd virtio_blk virtio_net virtio_pci virtio_ring virtio uhci_hcd 
> ata_generic ata_piix libata
> [ 1455.349350] CPU: 3 PID: 3929 Comm: mount.nfs Not tainted 3.15.0-rc1-dbg+ 
> #13
> [ 1455.349350] Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2007
> [ 1455.349350]  0474 880069dcf628 8151c341 
> 817b69d8
> [ 1455.349350]  880069dcf678 880069dcf668 8105b5fc 
> 69dcf658
> [ 1455.349350]  880069dcf778 88007b0c9f00 8255ec40 
> 0a60
> [ 1455.349350] Call Trace:
> [ 1455.349350]  [] dump_stack+0x52/0x81
> [ 1455.349350]  [] warn_slowpath_common+0x8c/0xc0
> [ 1455.349350]  [] warn_slowpath_fmt+0x46/0x50
> [ 1455.349350]  [] check_unmap+0x4e5/0x990
> [ 1455.349350]  [] ? _raw_spin_unlock_irq+0x30/0x60
> [ 1455.349350]  [] debug_dma_unmap_page+0x5a/0x60
> [ 1455.349350]  [] rpcrdma_deregister_internal+0xb3/0xd0 
> [xprtrdma]
> [ 1455.349350]  [] rpcrdma_buffer_destroy+0x69/0x170 
> [xprtrdma]
> [ 1455.349350]  [] xprt_rdma_destroy+0x3f/0xb0 [xprtrdma]
> [ 1455.349350]  [] xprt_destroy+0x6f/0x80 [sunrpc]
> [ 1455.349350]  [] xprt_put+0x15/0x20 [sunrpc]
> [ 1455.349350]  [] rpc_free_client+0x8a/0xe0 [sunrpc]
> [ 1455.349350]  [] rpc_release_client+0x68/0xa0 [sunrpc]
> [ 1455.349350]  [] rpc_shutdown_client+0xb0/0xc0 [sunrpc]
> [ 1455.349350]  [] ? rpc_ping+0x5d/0x70 [sunrpc]
> [ 1455.349350]  [] rpc_create_xprt+0xbb/0xd0 [sunrpc]
> [ 1455.349350]  [] rpc_create+0xb3/0x160 [sunrpc]
> [ 1455.349350]  [] ? __probe_kernel_read+0x69/0xb0
> [ 1455.349350]  [] nfs_create_rpc_client+0xdc/0x100 [nfs]
> [ 1455.349350]  [] nfs_init_client+0x3a/0x90 [nfs]
> [ 1455.349350]  [] nfs_get_client+0x478/0x5b0 [nfs]
> [ 1455.349350]  [] ? nfs_get_client+0x100/0x5b0 [nfs]
> [ 1455.349350]  [] ? kmem_cache_alloc_trace+0x24d/0x260
> [ 1455.349350]  [] nfs_create_server+0xf3/0x4c0 [nfs]
> [ 1455.349350]  [] ? nfs_request_mount+0xf0/0x1a0 [nfs]
> [ 1455.349350]  [] nfs3_create_server+0x13/0x30 [nfsv3]
> [ 1455.349350]  [] nfs_try_mount+0x1f3/0x230 [nfs]
> [ 1455.349350]  [] ? get_parent_ip+0x11/0x50
> [ 1455.349350]  [] ? __this_cpu_preempt_check+0x13/0x20
> [ 1455.349350]  [] ? try_module_get+0x6b/0x190
> [ 1455.349350]  [] nfs_fs_mount+0x187/0x9d0 [nfs]
> [ 1455.349350]  [] ? nfs_clone_super+0x140/0x140 [nfs]
> [ 1455.349350]  [] ? nfs_auth_info_match+0x40/0x40 [nfs]
> [ 1455.349350]  [] mount_fs+0x20/0xe0
> [ 1455.349350]  [] vfs_kern_mount+0x76/0x160
> [ 1455.349350]  [] do_mount+0x428/0xae0
> [ 1455.349350]  [] SyS_mount+0x90/0xe0
> [ 1455.349350]  [] system_call_fastpath+0x16/0x1b
> [ 1455.349350] ---[ end trace f1f31572972e211d ]---
>
> Signed-off-by: Yan Burman 
> ---
>  net/sunrpc/xprtrdma/verbs.c |4 
>  1 file changed, 4 insertions(+)
>
> diff --git a/net/sunrpc/xprtrdma/verbs.c b/net/sunrpc/xprtrdma/verbs.c
> index 13dbd1c..076c244 100644
> --- a/net/sunrpc/xprtrdma/verbs.c
> +++ b/net/sunrpc/xprtrdma/verbs.c
> @@ -1388,6 +1388,10 @@ rpcrdma_register_internal(struct rpcrdma_ia *ia, void 
> *va, int len,
>*/
>   iov->addr = ib_dma_map_single(ia->ri_id->device,
>   va, len, DMA_BIDIRECTIONAL);
> + if (ib_dma_mapping_error(ia->ri_id->device, iov->addr)) {
> + return -ENOMEM;
> + }

nit:  you don't need the curly braces since this is a one-line "if".

Anna
> +
>   iov->length = len;
>  
>   if (ia->ri_have_dma_lkey) {

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] xprtrdma: Fix DMA-API-DEBUG warning by checking dma_map result

2014-06-18 Thread Chuck Lever

On Jun 17, 2014, at 8:39 AM, Yan Burman  wrote:

> Fix the following warning when DMA-API debug is enabled by checking 
> ib_dma_map_single result:
> [ 1455.345548] [ cut here ]
> [ 1455.346863] WARNING: CPU: 3 PID: 3929 at 
> /home/yanb/kernel/net-next/lib/dma-debug.c:1140 check_unmap+0x4e5/0x990()
> [ 1455.349350] mlx4_core :00:07.0: DMA-API: device driver failed to check 
> map error[device address=0x7c9f2090] [size=2656 bytes] [mapped as 
> single]
> [ 1455.349350] Modules linked in: xprtrdma netconsole configfs nfsv3 nfs_acl 
> ib_ipoib rdma_ucm ib_ucm ib_uverbs ib_umad rdma_cm ib_cm iw_cm autofs4 
> auth_rpcgss oid_registry nfsv4 nfs fscache lockd sunrpc dm_mirror 
> dm_region_hash dm_log microcode pcspkr mlx4_ib ib_sa ib_mad ib_core ib_addr 
> mlx4_en ipv6 ptp pps_core vxlan mlx4_core virtio_balloon cirrus ttm 
> drm_kms_helper drm sysimgblt sysfillrect syscopyarea i2c_piix4 i2c_core 
> button ext3 jbd virtio_blk virtio_net virtio_pci virtio_ring virtio uhci_hcd 
> ata_generic ata_piix libata
> [ 1455.349350] CPU: 3 PID: 3929 Comm: mount.nfs Not tainted 3.15.0-rc1-dbg+ 
> #13
> [ 1455.349350] Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2007
> [ 1455.349350]  0474 880069dcf628 8151c341 
> 817b69d8
> [ 1455.349350]  880069dcf678 880069dcf668 8105b5fc 
> 69dcf658
> [ 1455.349350]  880069dcf778 88007b0c9f00 8255ec40 
> 0a60
> [ 1455.349350] Call Trace:
> [ 1455.349350]  [] dump_stack+0x52/0x81
> [ 1455.349350]  [] warn_slowpath_common+0x8c/0xc0
> [ 1455.349350]  [] warn_slowpath_fmt+0x46/0x50
> [ 1455.349350]  [] check_unmap+0x4e5/0x990
> [ 1455.349350]  [] ? _raw_spin_unlock_irq+0x30/0x60
> [ 1455.349350]  [] debug_dma_unmap_page+0x5a/0x60
> [ 1455.349350]  [] rpcrdma_deregister_internal+0xb3/0xd0 
> [xprtrdma]
> [ 1455.349350]  [] rpcrdma_buffer_destroy+0x69/0x170 
> [xprtrdma]
> [ 1455.349350]  [] xprt_rdma_destroy+0x3f/0xb0 [xprtrdma]
> [ 1455.349350]  [] xprt_destroy+0x6f/0x80 [sunrpc]
> [ 1455.349350]  [] xprt_put+0x15/0x20 [sunrpc]
> [ 1455.349350]  [] rpc_free_client+0x8a/0xe0 [sunrpc]
> [ 1455.349350]  [] rpc_release_client+0x68/0xa0 [sunrpc]
> [ 1455.349350]  [] rpc_shutdown_client+0xb0/0xc0 [sunrpc]
> [ 1455.349350]  [] ? rpc_ping+0x5d/0x70 [sunrpc]
> [ 1455.349350]  [] rpc_create_xprt+0xbb/0xd0 [sunrpc]
> [ 1455.349350]  [] rpc_create+0xb3/0x160 [sunrpc]
> [ 1455.349350]  [] ? __probe_kernel_read+0x69/0xb0
> [ 1455.349350]  [] nfs_create_rpc_client+0xdc/0x100 [nfs]
> [ 1455.349350]  [] nfs_init_client+0x3a/0x90 [nfs]
> [ 1455.349350]  [] nfs_get_client+0x478/0x5b0 [nfs]
> [ 1455.349350]  [] ? nfs_get_client+0x100/0x5b0 [nfs]
> [ 1455.349350]  [] ? kmem_cache_alloc_trace+0x24d/0x260
> [ 1455.349350]  [] nfs_create_server+0xf3/0x4c0 [nfs]
> [ 1455.349350]  [] ? nfs_request_mount+0xf0/0x1a0 [nfs]
> [ 1455.349350]  [] nfs3_create_server+0x13/0x30 [nfsv3]
> [ 1455.349350]  [] nfs_try_mount+0x1f3/0x230 [nfs]
> [ 1455.349350]  [] ? get_parent_ip+0x11/0x50
> [ 1455.349350]  [] ? __this_cpu_preempt_check+0x13/0x20
> [ 1455.349350]  [] ? try_module_get+0x6b/0x190
> [ 1455.349350]  [] nfs_fs_mount+0x187/0x9d0 [nfs]
> [ 1455.349350]  [] ? nfs_clone_super+0x140/0x140 [nfs]
> [ 1455.349350]  [] ? nfs_auth_info_match+0x40/0x40 [nfs]
> [ 1455.349350]  [] mount_fs+0x20/0xe0
> [ 1455.349350]  [] vfs_kern_mount+0x76/0x160
> [ 1455.349350]  [] do_mount+0x428/0xae0
> [ 1455.349350]  [] SyS_mount+0x90/0xe0
> [ 1455.349350]  [] system_call_fastpath+0x16/0x1b
> [ 1455.349350] ---[ end trace f1f31572972e211d ]---
> 
> Signed-off-by: Yan Burman 

Reviewed-by: Chuck Lever 


> ---
> net/sunrpc/xprtrdma/verbs.c |4 
> 1 file changed, 4 insertions(+)
> 
> diff --git a/net/sunrpc/xprtrdma/verbs.c b/net/sunrpc/xprtrdma/verbs.c
> index 13dbd1c..076c244 100644
> --- a/net/sunrpc/xprtrdma/verbs.c
> +++ b/net/sunrpc/xprtrdma/verbs.c
> @@ -1388,6 +1388,10 @@ rpcrdma_register_internal(struct rpcrdma_ia *ia, void 
> *va, int len,
>*/
>   iov->addr = ib_dma_map_single(ia->ri_id->device,
>   va, len, DMA_BIDIRECTIONAL);
> + if (ib_dma_mapping_error(ia->ri_id->device, iov->addr)) {
> + return -ENOMEM;
> + }
> +
>   iov->length = len;
> 
>   if (ia->ri_have_dma_lkey) {
> -- 
> 1.7.10.1
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com



--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] xprtrdma: Fix DMA-API-DEBUG warning by checking dma_map result

2014-06-17 Thread Yan Burman
Fix the following warning when DMA-API debug is enabled by checking 
ib_dma_map_single result:
[ 1455.345548] [ cut here ]
[ 1455.346863] WARNING: CPU: 3 PID: 3929 at 
/home/yanb/kernel/net-next/lib/dma-debug.c:1140 check_unmap+0x4e5/0x990()
[ 1455.349350] mlx4_core :00:07.0: DMA-API: device driver failed to check 
map error[device address=0x7c9f2090] [size=2656 bytes] [mapped as 
single]
[ 1455.349350] Modules linked in: xprtrdma netconsole configfs nfsv3 nfs_acl 
ib_ipoib rdma_ucm ib_ucm ib_uverbs ib_umad rdma_cm ib_cm iw_cm autofs4 
auth_rpcgss oid_registry nfsv4 nfs fscache lockd sunrpc dm_mirror 
dm_region_hash dm_log microcode pcspkr mlx4_ib ib_sa ib_mad ib_core ib_addr 
mlx4_en ipv6 ptp pps_core vxlan mlx4_core virtio_balloon cirrus ttm 
drm_kms_helper drm sysimgblt sysfillrect syscopyarea i2c_piix4 i2c_core button 
ext3 jbd virtio_blk virtio_net virtio_pci virtio_ring virtio uhci_hcd 
ata_generic ata_piix libata
[ 1455.349350] CPU: 3 PID: 3929 Comm: mount.nfs Not tainted 3.15.0-rc1-dbg+ #13
[ 1455.349350] Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2007
[ 1455.349350]  0474 880069dcf628 8151c341 
817b69d8
[ 1455.349350]  880069dcf678 880069dcf668 8105b5fc 
69dcf658
[ 1455.349350]  880069dcf778 88007b0c9f00 8255ec40 
0a60
[ 1455.349350] Call Trace:
[ 1455.349350]  [] dump_stack+0x52/0x81
[ 1455.349350]  [] warn_slowpath_common+0x8c/0xc0
[ 1455.349350]  [] warn_slowpath_fmt+0x46/0x50
[ 1455.349350]  [] check_unmap+0x4e5/0x990
[ 1455.349350]  [] ? _raw_spin_unlock_irq+0x30/0x60
[ 1455.349350]  [] debug_dma_unmap_page+0x5a/0x60
[ 1455.349350]  [] rpcrdma_deregister_internal+0xb3/0xd0 
[xprtrdma]
[ 1455.349350]  [] rpcrdma_buffer_destroy+0x69/0x170 
[xprtrdma]
[ 1455.349350]  [] xprt_rdma_destroy+0x3f/0xb0 [xprtrdma]
[ 1455.349350]  [] xprt_destroy+0x6f/0x80 [sunrpc]
[ 1455.349350]  [] xprt_put+0x15/0x20 [sunrpc]
[ 1455.349350]  [] rpc_free_client+0x8a/0xe0 [sunrpc]
[ 1455.349350]  [] rpc_release_client+0x68/0xa0 [sunrpc]
[ 1455.349350]  [] rpc_shutdown_client+0xb0/0xc0 [sunrpc]
[ 1455.349350]  [] ? rpc_ping+0x5d/0x70 [sunrpc]
[ 1455.349350]  [] rpc_create_xprt+0xbb/0xd0 [sunrpc]
[ 1455.349350]  [] rpc_create+0xb3/0x160 [sunrpc]
[ 1455.349350]  [] ? __probe_kernel_read+0x69/0xb0
[ 1455.349350]  [] nfs_create_rpc_client+0xdc/0x100 [nfs]
[ 1455.349350]  [] nfs_init_client+0x3a/0x90 [nfs]
[ 1455.349350]  [] nfs_get_client+0x478/0x5b0 [nfs]
[ 1455.349350]  [] ? nfs_get_client+0x100/0x5b0 [nfs]
[ 1455.349350]  [] ? kmem_cache_alloc_trace+0x24d/0x260
[ 1455.349350]  [] nfs_create_server+0xf3/0x4c0 [nfs]
[ 1455.349350]  [] ? nfs_request_mount+0xf0/0x1a0 [nfs]
[ 1455.349350]  [] nfs3_create_server+0x13/0x30 [nfsv3]
[ 1455.349350]  [] nfs_try_mount+0x1f3/0x230 [nfs]
[ 1455.349350]  [] ? get_parent_ip+0x11/0x50
[ 1455.349350]  [] ? __this_cpu_preempt_check+0x13/0x20
[ 1455.349350]  [] ? try_module_get+0x6b/0x190
[ 1455.349350]  [] nfs_fs_mount+0x187/0x9d0 [nfs]
[ 1455.349350]  [] ? nfs_clone_super+0x140/0x140 [nfs]
[ 1455.349350]  [] ? nfs_auth_info_match+0x40/0x40 [nfs]
[ 1455.349350]  [] mount_fs+0x20/0xe0
[ 1455.349350]  [] vfs_kern_mount+0x76/0x160
[ 1455.349350]  [] do_mount+0x428/0xae0
[ 1455.349350]  [] SyS_mount+0x90/0xe0
[ 1455.349350]  [] system_call_fastpath+0x16/0x1b
[ 1455.349350] ---[ end trace f1f31572972e211d ]---

Signed-off-by: Yan Burman 
---
 net/sunrpc/xprtrdma/verbs.c |4 
 1 file changed, 4 insertions(+)

diff --git a/net/sunrpc/xprtrdma/verbs.c b/net/sunrpc/xprtrdma/verbs.c
index 13dbd1c..076c244 100644
--- a/net/sunrpc/xprtrdma/verbs.c
+++ b/net/sunrpc/xprtrdma/verbs.c
@@ -1388,6 +1388,10 @@ rpcrdma_register_internal(struct rpcrdma_ia *ia, void 
*va, int len,
 */
iov->addr = ib_dma_map_single(ia->ri_id->device,
va, len, DMA_BIDIRECTIONAL);
+   if (ib_dma_mapping_error(ia->ri_id->device, iov->addr)) {
+   return -ENOMEM;
+   }
+
iov->length = len;
 
if (ia->ri_have_dma_lkey) {
-- 
1.7.10.1

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html