All of lore.kernel.org
 help / color / mirror / Atom feed
From: Joerg Roedel <joro@8bytes.org>
To: Michael Chan <mchan@broadcom.com>
Cc: Joerg Roedel <joerg.roedel@amd.com>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"iommu@lists.linux-foundation.org"
	<iommu@lists.linux-foundation.org>,
	"mingo@redhat.com" <mingo@redhat.com>
Subject: Re: [PATCH 0/16] DMA-API debugging facility v2
Date: Fri, 9 Jan 2009 23:33:27 +0100	[thread overview]
Message-ID: <20090109223327.GD9466@8bytes.org> (raw)
In-Reply-To: <1231536264.10384.11.camel@HP1>

On Fri, Jan 09, 2009 at 01:24:24PM -0800, Michael Chan wrote:
> 
> On Fri, 2009-01-09 at 08:19 -0800, Joerg Roedel wrote:
> > 
> > With the code these patches introduce driver developers can find several
> > bugs of misusing the DMA-API in their drivers. But be aware, it can not
> > find all possible bugs. If it finds a problem it prints out messages
> > like
> > 
> > ------------[ cut here ]------------
> > WARNING: at /data2/repos/linux.trees.git/lib/dma-debug.c:231 check_unmap+0xab/0x3d9()
> > Hardware name: Toonie
> > bnx2 0000:01:00.0: DMA-API: device driver tries to free DMA memory it has not allocated [device address=0x00000000011]
> > Modules linked in:
> > Pid: 0, comm: swapper Not tainted 2.6.28 #174
> > Call Trace:
> >  <IRQ>  [<ffffffff8105af3a>] warn_slowpath+0xd3/0xf2
> >  [<ffffffff8107c36f>] ? find_usage_backwards+0xe2/0x116
> >  [<ffffffff8107c36f>] ? find_usage_backwards+0xe2/0x116
> >  [<ffffffff812efd16>] ? usb_hcd_link_urb_to_ep+0x94/0xa0
> >  [<ffffffff8107c52b>] ? mark_lock+0x1c/0x364
> >  [<ffffffff8107d8f7>] ? __lock_acquire+0xaec/0xb55
> >  [<ffffffff8107c52b>] ? mark_lock+0x1c/0x364
> >  [<ffffffff811e2b4b>] ? get_hash_bucket+0x28/0x33
> >  [<ffffffff814b25a5>] ? _spin_lock_irqsave+0x69/0x75
> >  [<ffffffff811e2b4b>] ? get_hash_bucket+0x28/0x33
> >  [<ffffffff811e2ff2>] check_unmap+0xab/0x3d9
> >  [<ffffffff8107c9ed>] ? trace_hardirqs_on_caller+0x108/0x14a
> >  [<ffffffff8107ca3c>] ? trace_hardirqs_on+0xd/0xf
> >  [<ffffffff811e3433>] debug_unmap_single+0x3e/0x40
> >  [<ffffffff8128d2d8>] dma_unmap_single+0x3d/0x60
> >  [<ffffffff8128d335>] pci_unmap_page+0x1c/0x1e
> >  [<ffffffff81290759>] bnx2_poll_work+0x626/0x8cb
> >  [<ffffffff8107d8f7>] ? __lock_acquire+0xaec/0xb55
> >  [<ffffffff81070100>] ? run_posix_cpu_timers+0x49c/0x603
> >  [<ffffffff81070000>] ? run_posix_cpu_timers+0x39c/0x603
> >  [<ffffffff8107c52b>] ? mark_lock+0x1c/0x364
> >  [<ffffffff8107d8f7>] ? __lock_acquire+0xaec/0xb55
> >  [<ffffffff81292804>] bnx2_poll_msix+0x33/0x81
> >  [<ffffffff813b6478>] net_rx_action+0x8a/0x139
> >  [<ffffffff8105ff39>] __do_softirq+0x8b/0x147
> >  [<ffffffff8102933c>] call_softirq+0x1c/0x34
> >  [<ffffffff8102a611>] do_softirq+0x39/0x90
> >  [<ffffffff8105fde8>] irq_exit+0x4e/0x98
> >  [<ffffffff8102a5c2>] do_IRQ+0x11f/0x135
> >  [<ffffffff81028b93>] ret_from_intr+0x0/0xf
> >  <EOI> <4>---[ end trace 4339d58302097423 ]---
> > 
> This was triggered during pci_unmap_page() -> dma_unmap_single() where
> check_unmap() did not find the entry.
> 
> The original mapping was done in bnx2 using pci_map_page().  I did not
> see how the debug entry was added to the hash during the call to
> pci_map_page() -> dma_map_page().  Did I miss something?

dma_map_page() results in dma_map_single() -> debug_map_single() call on
x86. This way the entry would be added. Maybe the error from a double
free?

Joerg

  reply	other threads:[~2009-01-09 22:34 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-01-09 16:19 [PATCH 0/16] DMA-API debugging facility v2 Joerg Roedel
2009-01-09 16:19 ` [PATCH 01/16] dma-debug: add Kconfig entry Joerg Roedel
2009-01-09 20:12   ` Randy Dunlap
2009-01-09 16:19 ` [PATCH 02/16] dma-debug: add header file and core data structures Joerg Roedel
2009-01-11  6:25   ` FUJITA Tomonori
2009-01-09 16:19 ` [PATCH 03/16] dma-debug: add hash functions for dma_debug_entries Joerg Roedel
2009-01-09 17:55   ` Evgeniy Polyakov
2009-01-09 18:14     ` Joerg Roedel
2009-01-09 18:23       ` Evgeniy Polyakov
2009-01-09 18:40         ` Joerg Roedel
2009-01-13  8:51   ` Andrew Morton
2009-01-13  8:59     ` David Woodhouse
2009-01-14 11:43     ` Ingo Molnar
2009-01-14 17:39       ` Andrew Morton
2009-01-14 17:43         ` Ingo Molnar
2009-01-14 17:48         ` Ingo Molnar
2009-01-15  3:44           ` FUJITA Tomonori
2009-01-14 17:48         ` David Woodhouse
2009-01-14 17:51         ` Joerg Roedel
2009-01-09 16:19 ` [PATCH 04/16] dma-debug: add allocator code Joerg Roedel
2009-01-10 23:43   ` Ingo Molnar
2009-01-09 16:19 ` [PATCH 05/16] dma-debug: add initialization code Joerg Roedel
2009-01-09 17:58   ` Evgeniy Polyakov
2009-01-09 18:17     ` Joerg Roedel
2009-01-09 16:19 ` [PATCH 06/16] dma-debug: add kernel command line parameters Joerg Roedel
2009-01-09 16:19 ` [PATCH 07/16] dma-debug: add debugfs interface Joerg Roedel
2009-01-10 23:08   ` Ingo Molnar
2009-01-11  7:52     ` Joerg Roedel
2009-01-14 15:22     ` Joerg Roedel
2009-01-10 23:15   ` Ingo Molnar
2009-01-09 16:19 ` [PATCH 08/16] dma-debug: add core checking functions Joerg Roedel
2009-01-10 23:11   ` Ingo Molnar
2009-01-11  7:57     ` Joerg Roedel
2009-01-11  8:34       ` Joerg Roedel
2009-01-14 11:44     ` Joerg Roedel
2009-01-14 11:48       ` Ingo Molnar
2009-01-10 23:12   ` Ingo Molnar
2009-01-11  7:54     ` Joerg Roedel
2009-01-10 23:13   ` Ingo Molnar
2009-01-09 16:19 ` [PATCH 09/16] dma-debug: add checking for map/unmap_single Joerg Roedel
2009-01-09 16:19 ` [PATCH 10/16] dma-debug: add add checking for map/unmap_sg Joerg Roedel
2009-01-09 18:08   ` Evgeniy Polyakov
2009-01-09 18:11     ` Joerg Roedel
2009-01-09 16:19 ` [PATCH 11/16] dma-debug: add checking for [alloc|free]_coherent Joerg Roedel
2009-01-11  6:25   ` FUJITA Tomonori
2009-01-11  6:30     ` FUJITA Tomonori
2009-01-11  7:59       ` Joerg Roedel
2009-01-09 16:19 ` [PATCH 12/16] dma-debug: add checks for sync_single_* Joerg Roedel
2009-01-09 16:19 ` [PATCH 13/16] dma-debug: add checks for sync_single_range_* Joerg Roedel
2009-01-09 16:19 ` [PATCH 14/16] dma-debug: add checks for sync_single_sg_* Joerg Roedel
2009-01-10 23:46   ` Ingo Molnar
2009-01-11  8:00     ` Joerg Roedel
2009-01-09 16:19 ` [PATCH 15/16] dma-debug: x86 architecture bindings Joerg Roedel
2009-01-10 23:04   ` Ingo Molnar
2009-01-10 23:48   ` Ingo Molnar
2009-01-11  6:25   ` FUJITA Tomonori
2009-01-11  8:08     ` Joerg Roedel
2009-01-09 16:19 ` [PATCH 16/16] dma-debug: Documentation update Joerg Roedel
2009-01-09 21:24 ` [PATCH 0/16] DMA-API debugging facility v2 Michael Chan
2009-01-09 22:33   ` Joerg Roedel [this message]
2009-01-09 22:37     ` Joerg Roedel
2009-01-11  6:25       ` FUJITA Tomonori
2009-01-10 23:54 ` Ingo Molnar
2009-01-11  8:11   ` Joerg Roedel
2009-02-05 22:52 ` David Woodhouse
2009-02-06  2:05   ` Chris Wright
2009-02-06  7:56     ` David Woodhouse
2009-02-06 16:08       ` Chris Wright
2009-02-06 18:20       ` Chris Wright
2009-02-12 14:48     ` Joerg Roedel
2009-02-06  2:27   ` Chris Wright
2009-02-12 15:20   ` Joerg Roedel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090109223327.GD9466@8bytes.org \
    --to=joro@8bytes.org \
    --cc=iommu@lists.linux-foundation.org \
    --cc=joerg.roedel@amd.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mchan@broadcom.com \
    --cc=mingo@redhat.com \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.