[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