Bug 12969
Summary: | WARNING: at lib/dma-debug.c:539 check_sync+0xe9/0x341() (Not tainted) | ||
---|---|---|---|
Product: | Drivers | Reporter: | Sérgio M Basto (sergio) |
Component: | Network | Assignee: | drivers_network (drivers_network) |
Status: | CLOSED CODE_FIX | ||
Severity: | normal | CC: | alan |
Priority: | P1 | ||
Hardware: | i386 | ||
OS: | Linux | ||
Kernel Version: | 2.6.29 | Subsystem: | |
Regression: | Yes | Bisected commit-id: | |
Attachments: | Bugfix patch |
Description
Sérgio M Basto
2009-03-29 11:43:18 UTC
https://bugzilla.redhat.com/show_bug.cgi?id=489325 https://bugzilla.redhat.com/show_bug.cgi?id=488409 and me with kernel 2.6.29-16.fc11.i686.PAE last working kernel 2.6.28 today, this seems that crash my route (often), and some weird networks things happens ------------[ 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=0x0000000075119040] [size=1566 bytes] Modules linked in: michael_mic arc4 ecb lib80211_crypt_tkip fuse sco bridge stp llc bnep l2cap bluetooth autofs4 lm90 hwmon i2c_i801 sunrpc ipv6 cpufreq_ondemand acpi_cpufreq uinput snd_intel8x0m snd_intel8x0 snd_ac97_codec ac97_bus snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss snd_pcm ipw2200 snd_timer firewire_ohci libipw b44 firewire_core joydev crc_itu_t snd iTCO_wdt iTCO_vendor_support serio_raw ssb mii soundcore yenta_socket rsrc_nonstatic lib80211 snd_page_alloc wmi ata_generic pata_acpi i915 drm i2c_algo_bit i2c_core video output [last unloaded: pcspkr] Pid: 2921, comm: kwin Not tainted 2.6.29-16.fc10.i686.PAE #1 Call Trace: [<c04396d1>] warn_slowpath+0x7c/0xbd [<c04c38be>] ? pollwake+0x0/0x5a [<c045a498>] ? print_lock_contention_bug+0x14/0xd7 [<c04c38be>] ? pollwake+0x0/0x5a [<c045a498>] ? print_lock_contention_bug+0x14/0xd7 [<c04c38be>] ? pollwake+0x0/0x5a [<c04c38be>] ? pollwake+0x0/0x5a [<c045a498>] ? print_lock_contention_bug+0x14/0xd7 [<c055a060>] ? check_sync+0x37/0x341 [<c055a112>] check_sync+0xe9/0x341 [<c04592db>] ? trace_hardirqs_on+0xb/0xd [<c055a4d1>] debug_dma_sync_single_for_device+0x2f/0x39 [<f8273722>] dma_sync_single_for_device+0x4a/0x59 [b44] [<f827376f>] ssb_dma_sync_single_for_device+0x3e/0x48 [b44] [<f8275d1e>] b44_recycle_rx+0x18c/0x196 [b44] [<f8275f9f>] b44_poll+0x277/0x3c0 [b44] [<c0687bb9>] net_rx_action+0xa1/0x1ca [<c043e30a>] __do_softirq+0x9d/0x154 [<c043e413>] do_softirq+0x52/0x7e [<c043e56f>] irq_exit+0x49/0x77 [<c040b22e>] do_IRQ+0x97/0xad [<c0409dac>] common_interrupt+0x2c/0x34 [<c0420af6>] ? read_hpet+0x14/0x18 [<c0452c9b>] getnstimeofday+0x5b/0xe9 [<c044e794>] ktime_get_ts+0x2a/0x53 [<c044a3bf>] posix_ktime_get_ts+0xf/0x13 [<c044a589>] sys_clock_gettime+0x51/0x88 [<c0409776>] syscall_call+0x7/0xb ---[ end trace fd3fa10055f178bd ]--- b44: eth0: powering down PHY b44: eth0: Link is down. b44: eth0: Link is up at 100 Mbps, full duplex. b44: eth0: Flow control is off for TX and off for RX. eth0: no IPv6 routers present b44: eth0: Link is down. b44: eth0: Link is up at 100 Mbps, full duplex. b44: eth0: Flow control is off for TX and off for RX. On Wed, 2009-04-01 at 16:50 -0700, Andrew Morton wrote: > (switched to email. Please respond via emailed reply-to-all, not via the > bugzilla web interface). > > On Sun, 29 Mar 2009 11:43:19 GMT > bugzilla-daemon@bugzilla.kernel.org wrote: > > > http://bugzilla.kernel.org/show_bug.cgi?id=12969 > > > > Summary: WARNING: at lib/dma-debug.c:539 > > check_sync+0xe9/0x341() (Not tainted) > > Product: Drivers > > Version: 2.5 > > Platform: All > > OS/Version: Linux > > Tree: Fedora > > Status: NEW > > Severity: normal > > Priority: P1 > > Component: Network > > AssignedTo: drivers_network@kernel-bugs.osdl.org > > ReportedBy: sergio@sergiomb.no-ip.org > > Regression: Yes > > > > > > ------------[ 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: > > [<c04396d1>] warn_slowpath+0x7c/0xbd > > [<c0457fe1>] ? register_lock_class+0x17/0x290 > > [<c0458d61>] ? mark_lock+0x1e/0x349 > > [<c0556448>] ? _raw_spin_unlock+0x74/0x78 > > [<c0458d61>] ? mark_lock+0x1e/0x349 > > [<c055a060>] ? check_sync+0x37/0x341 > > [<c055a112>] check_sync+0xe9/0x341 > > [<c0711245>] ? _spin_unlock_irqrestore+0x45/0x55 > > [<c04592db>] ? trace_hardirqs_on+0xb/0xd > > [<c055a4d1>] debug_dma_sync_single_for_device+0x2f/0x39 > > [<f828f722>] dma_sync_single_for_device+0x4a/0x59 [b44] > > [<f828f76f>] ssb_dma_sync_single_for_device+0x3e/0x48 [b44] > > [<f8291d1e>] b44_recycle_rx+0x18c/0x196 [b44] > > [<f8291f9f>] b44_poll+0x277/0x3c0 [b44] > > [<c0687bb9>] net_rx_action+0xa1/0x1ca > > [<c043e30a>] __do_softirq+0x9d/0x154 > > [<c043e413>] do_softirq+0x52/0x7e > > [<c043e56f>] irq_exit+0x49/0x77 > > [<c040b22e>] do_IRQ+0x97/0xad > > [<c0409dac>] common_interrupt+0x2c/0x34 > > This would appear to be reporting a bug in b44's DMA API usage. Hi!, are you saying that could be a bug in new DMA-API ? (if we have one) I don't had problems before with this b44 and laptop is not new. With kernel 2.6.29, I am testing KMS on new drm/dri Intel video, I also have one big warning with i915 reported on Bug 12419 - possible circular locking dependency on i915 dma. What I would like to know is : Could bug 12419 make this warning on b44 ? or could DMA-API make the 2 warnings ? or the 2 warnings are completed different ? and the combinations of this questions :) Thanks, > See > the newly-added documentation in Documentation/DMA-API.txt, starting > with > > Part III - Debug drivers use of the DMA-API > > The line numbers have changed, but it is: > > err_printk(ref->dev, NULL, "DMA-API: device driver tries " > "to free DMA memory it has not allocated " > "[device address=0x%016llx] [size=%llu bytes]\n", > ref->dev_addr, ref->size); > > > > ------------[ 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:
> > [<c04396d1>] warn_slowpath+0x7c/0xbd
> > [<c0457fe1>] ? register_lock_class+0x17/0x290
> > [<c0458d61>] ? mark_lock+0x1e/0x349
> > [<c0556448>] ? _raw_spin_unlock+0x74/0x78
> > [<c0458d61>] ? mark_lock+0x1e/0x349
> > [<c055a060>] ? check_sync+0x37/0x341
> > [<c055a112>] check_sync+0xe9/0x341
> > [<c0711245>] ? _spin_unlock_irqrestore+0x45/0x55
> > [<c04592db>] ? trace_hardirqs_on+0xb/0xd
> > [<c055a4d1>] debug_dma_sync_single_for_device+0x2f/0x39
> > [<f828f722>] dma_sync_single_for_device+0x4a/0x59 [b44]
> > [<f828f76f>] ssb_dma_sync_single_for_device+0x3e/0x48 [b44]
> > [<f8291d1e>] b44_recycle_rx+0x18c/0x196 [b44]
> > [<f8291f9f>] b44_poll+0x277/0x3c0 [b44]
> > [<c0687bb9>] net_rx_action+0xa1/0x1ca
> > [<c043e30a>] __do_softirq+0x9d/0x154
> > [<c043e413>] do_softirq+0x52/0x7e
> > [<c043e56f>] irq_exit+0x49/0x77
> > [<c040b22e>] do_IRQ+0x97/0xad
> > [<c0409dac>] 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),
Created attachment 20837 [details]
Bugfix patch
+ b44-use-kernel-dma-addresses-for-the-kernel-dma-api.patch added to -mm
tree
fixes the bug for me
Thanks,
On Wed, 2009-04-01 at 16:50 -0700, Andrew Morton wrote:
> On Sun, 29 Mar 2009 11:43:19 GMT
> bugzilla-daemon@bugzilla.kernel.org wrote:
>
> > http://bugzilla.kernel.org/show_bug.cgi?id=12969
> >
> > Summary: WARNING: at lib/dma-debug.c:539
> > check_sync+0xe9/0x341() (Not tainted)
> > Product: Drivers
> > Version: 2.5
> > Platform: All
> > OS/Version: Linux
> > Tree: Fedora
> > Status: NEW
> > Severity: normal
> > Priority: P1
> > Component: Network
> > AssignedTo: drivers_network@kernel-bugs.osdl.org
> > ReportedBy: sergio@sergiomb.no-ip.org
> > Regression: Yes
> >
> >
> > ------------[ 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:
> > [<c04396d1>] warn_slowpath
> +0x7c/0xbd
> > [<c0457fe1>] ? register_lock_class
> +0x17/0x290
> > [<c0458d61>] ? mark_lock
> +0x1e/0x349
> > [<c0556448>] ? _raw_spin_unlock
> +0x74/0x78
> > [<c0458d61>] ? mark_lock
> +0x1e/0x349
> > [<c055a060>] ? check_sync
> +0x37/0x341
> > [<c055a112>] check_sync
> +0xe9/0x341
> > [<c0711245>] ? _spin_unlock_irqrestore
> +0x45/0x55
> > [<c04592db>] ? trace_hardirqs_on
> +0xb/0xd
> > [<c055a4d1>] debug_dma_sync_single_for_device
> +0x2f/0x39
> > [<f828f722>] dma_sync_single_for_device+0x4a/0x59
> [b44]
> > [<f828f76f>] ssb_dma_sync_single_for_device+0x3e/0x48
> [b44]
> > [<f8291d1e>] b44_recycle_rx+0x18c/0x196
> [b44]
> > [<f8291f9f>] b44_poll+0x277/0x3c0
> [b44]
> > [<c0687bb9>] net_rx_action
> +0xa1/0x1ca
> > [<c043e30a>] __do_softirq
> +0x9d/0x154
> > [<c043e413>] do_softirq
> +0x52/0x7e
> > [<c043e56f>] irq_exit
> +0x49/0x77
> > [<c040b22e>] do_IRQ
> +0x97/0xad
> > [<c0409dac>] common_interrupt
> +0x2c/0x34
>
> This would appear to be reporting a bug in b44's DMA API usage. See
> the newly-added documentation in Documentation/DMA-API.txt, starting
> with
>
> Part III - Debug drivers use of the DMA-API
>
> The line numbers have changed, but it is:
>
> err_printk(ref->dev, NULL, "DMA-API: device driver
> tries "
> "to free DMA memory it has not allocated "
> "[device address=0x%016llx] [size=%llu
> bytes]\n",
> ref->dev_addr, ref->size);
>
|