Re: [PATCH] xprtrdma: Fix DMA-API-DEBUG warning by checking dma_map result
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
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
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