From patchwork Fri Apr 3 10:01:30 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Buesch X-Patchwork-Id: 25568 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by ozlabs.org (Postfix) with ESMTP id 315BBDDDA5 for ; Fri, 3 Apr 2009 21:03:32 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756200AbZDCKD0 (ORCPT ); Fri, 3 Apr 2009 06:03:26 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1755479AbZDCKDZ (ORCPT ); Fri, 3 Apr 2009 06:03:25 -0400 Received: from bu3sch.de ([62.75.166.246]:45877 "EHLO vs166246.vserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755324AbZDCKDY (ORCPT ); Fri, 3 Apr 2009 06:03:24 -0400 Received: by vs166246.vserver.de with esmtpa (Exim 4.63) id 1LpgEz-0007Hk-Td; Fri, 03 Apr 2009 10:03:14 +0000 From: Michael Buesch To: "Gary Zambrano" Subject: Re: [Bugme-new] [Bug 12969] New: WARNING: at lib/dma-debug.c:539 check_sync+0xe9/0x341() (Not tainted) User-Agent: KMail/1.9.9 Cc: "Andrew Morton" , netdev@vger.kernel.org, bugzilla-daemon@bugzilla.kernel.org References: <20090401165015.8481f9e0.akpm@linux-foundation.org> <66E4AD309580E34AA457975F33D2A7473FBC6A35EE@IRVEXCHCCR01.corp.ad.broadcom.com> In-Reply-To: <66E4AD309580E34AA457975F33D2A7473FBC6A35EE@IRVEXCHCCR01.corp.ad.broadcom.com> MIME-Version: 1.0 Content-Disposition: inline Date: Fri, 3 Apr 2009 12:01:30 +0200 Message-Id: <200904031201.30601.mb@bu3sch.de> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org > > ------------[ cut here ]------------ > > WARNING: at lib/dma-debug.c:539 check_sync+0xe9/0x341() (Not tainted) > > Hardware name: HP Compaq nx6110 (PY501EA#AB9) > > b44 0000:02:0e.0: DMA-API: device driver tries to sync DMA memory it has not > > allocated [device address=0x0000000075941040] [size=1566 bytes] > > Modules linked in: llc bnep l2cap bluetooth autofs4 lm90 hwmon i2c_i801 sunrpc > > ipv6 cpufreq_ondemand acpi_cpufreq uinput snd_intel8x0m snd_intel8x0 > > snd_ac97_codec snd_seq_dummy ac97_bus snd_seq_oss snd_seq_midi_event snd_seq > > snd_seq_device snd_pcm_oss snd_mixer_oss snd_pcm b44 ssb firewire_ohci > > snd_timer ipw2200 iTCO_wdt mii firewire_core snd iTCO_vendor_support libipw > > yenta_socket crc_itu_t lib80211 rsrc_nonstatic soundcore snd_page_alloc joydev > > pcspkr wmi serio_raw ata_generic pata_acpi i915 drm i2c_algo_bit i2c_core video > > output [last unloaded: scsi_wait_scan] > > Pid: 2418, comm: S58ntpd Not tainted 2.6.29-16.fc10.i686.PAE #1 > > Call Trace: > > [] warn_slowpath+0x7c/0xbd > > [] ? register_lock_class+0x17/0x290 > > [] ? mark_lock+0x1e/0x349 > > [] ? _raw_spin_unlock+0x74/0x78 > > [] ? mark_lock+0x1e/0x349 > > [] ? check_sync+0x37/0x341 > > [] check_sync+0xe9/0x341 > > [] ? _spin_unlock_irqrestore+0x45/0x55 > > [] ? trace_hardirqs_on+0xb/0xd > > [] debug_dma_sync_single_for_device+0x2f/0x39 > > [] dma_sync_single_for_device+0x4a/0x59 [b44] > > [] ssb_dma_sync_single_for_device+0x3e/0x48 [b44] > > [] b44_recycle_rx+0x18c/0x196 [b44] > > [] b44_poll+0x277/0x3c0 [b44] > > [] net_rx_action+0xa1/0x1ca > > [] __do_softirq+0x9d/0x154 > > [] do_softirq+0x52/0x7e > > [] irq_exit+0x49/0x77 > > [] do_IRQ+0x97/0xad > > [] common_interrupt+0x2c/0x34 I don't know if this is related, but the following patch seems to fix some DMA mapping bug. Can somebody comment who does understand the code better than me? (completely untested) Index: wireless-testing/drivers/net/b44.c =================================================================== --- wireless-testing.orig/drivers/net/b44.c 2009-04-02 23:13:10.000000000 +0200 +++ wireless-testing/drivers/net/b44.c 2009-04-02 23:17:44.000000000 +0200 @@ -703,7 +703,7 @@ static int b44_alloc_rx_skb(struct b44 * if (bp->flags & B44_FLAG_RX_RING_HACK) b44_sync_dma_desc_for_device(bp->sdev, bp->rx_ring_dma, - dest_idx * sizeof(dp), + dest_idx * sizeof(*dp), DMA_BIDIRECTIONAL); return RX_PKT_BUF_SZ; @@ -731,7 +731,7 @@ static void b44_recycle_rx(struct b44 *b if (bp->flags & B44_FLAG_RX_RING_HACK) b44_sync_dma_desc_for_cpu(bp->sdev, bp->rx_ring_dma, - src_idx * sizeof(src_desc), + src_idx * sizeof(*src_desc), DMA_BIDIRECTIONAL); ctrl = src_desc->ctrl; @@ -747,7 +747,7 @@ static void b44_recycle_rx(struct b44 *b if (bp->flags & B44_FLAG_RX_RING_HACK) b44_sync_dma_desc_for_device(bp->sdev, bp->rx_ring_dma, - dest_idx * sizeof(dest_desc), + dest_idx * sizeof(*dest_desc), DMA_BIDIRECTIONAL); ssb_dma_sync_single_for_device(bp->sdev, le32_to_cpu(src_desc->addr),