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

Stefan Bader stefan.bader at canonical.com
Mon Apr 12 12:53:55 UTC 2010


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;
 
-- 
1.6.3.3





More information about the kernel-team mailing list