[Lucid] SRU: dma-mapping: Remove WARN_ON in dma_free_coherent

Andy Whitcroft apw at canonical.com
Tue Apr 13 13:46:01 UTC 2010


On Mon, Apr 12, 2010 at 02:53:55PM +0200, Stefan Bader wrote:
> This is really just hiding the warning about incompatible driver
> code (for other archs). But its part of what is done for hot-
> plugging in KVM (supposedly cloud) and its in the x86 only code
> only, so it might be a way to prevent scared reports about nothing.
> 
> Stefan
> 
> From 72e6b51aa333435b9492011a4842ab0c462503de Mon Sep 17 00:00:00 2001
> From: Stefan Bader <stefan.bader at canonical.com>
> Date: Mon, 29 Mar 2010 19:12:36 +0200
> Subject: [PATCH] dma-mapping: Remove WARN_ON in dma_free_coherent
> 
> BugLink: http://bugs.launchpad.net/ubuntu/bugs/458201
> 
> Triggered by the following backtrace:
> 
> WARNING: at
> /build/buildd/linux-2.6.32/arch/x86/include/asm/dma-mapping.h:154
> ___free_dma_mem_cluster+0x102/0x110()
> 
>  [<ffffffff81064f9b>] warn_slowpath_common+0x7b/0xc0
>  [<ffffffff81064ff4>] warn_slowpath_null+0x14/0x20
>  [<ffffffff8139a2a2>] ___free_dma_mem_cluster+0x102/0x110
>  [<ffffffff8139a072>] __sym_mfree+0xd2/0x100
>  [<ffffffff8139a109>] __sym_mfree_dma+0x69/0x100
>  [<ffffffff8139245f>] sym_hcb_free+0x8f/0x1f0
> 
> This patch never will be accepted upstream because the WARN_ON
> is supposed to perevent driver development which is only
> compatible with x86 on x86 (ARM can sleep in that function).
> The right way to fix it would be to make the offending function
> use locks in the right way but that requires careful implementation.
> 
> Signed-off-by: Stefan Bader <stefan.bader at canonical.com>
> ---
>  arch/x86/include/asm/dma-mapping.h |    2 --
>  1 files changed, 0 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/x86/include/asm/dma-mapping.h b/arch/x86/include/asm/dma-mapping.h
> index 6a25d5d..2d6097f 100644
> --- a/arch/x86/include/asm/dma-mapping.h
> +++ b/arch/x86/include/asm/dma-mapping.h
> @@ -151,8 +151,6 @@ static inline void dma_free_coherent(struct device *dev, size_t size,
>  {
>  	struct dma_map_ops *ops = get_dma_ops(dev);
>  
> -	WARN_ON(irqs_disabled());       /* for portability */
> -
>  	if (dma_release_from_coherent(dev, get_order(size), vaddr))
>  		return;

This only removes a WARN_ON, ie no functionality should be changed.  As
the warning is bogus in a number of places which will trigger bug
reports it is probabally best to remove it for now.

Acked-by: Andy Whitcroft <apw at canonical.com>

-apw




More information about the kernel-team mailing list