From: Ingo Molnar <mingo@elte.hu>
To: Alan Cox <alan@lxorguk.ukuu.org.uk>, Joerg Roedel <joerg.roedel@amd.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>,
Steven Rostedt <rostedt@goodmis.org>,
Andrew Morton <akpm@linux-foundation.org>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: bug in tty ldisc and friends
Date: Tue, 16 Jun 2009 12:36:06 +0200 [thread overview]
Message-ID: <20090616103606.GA3497@elte.hu> (raw)
In-Reply-To: <20090616102910.GA11011@elte.hu>
* Ingo Molnar <mingo@elte.hu> wrote:
> This is something we noticed recently: dma-debug uses a lot of
> lock classes and thus creates a really large lock-graph, depleting
> the reserves quickly.
yep, i think dma-debug is the culprit. It has:
#define HASH_SIZE 1024ULL
each hash entry has a separate lock.
But this should be easily to solve: a special lock-class for these
locks. Patch below (warning: utterly untested!).
(Btw., that SPIN_LOCK_UNLOCKED init method should really be
deprecated for real.)
Ingo
diff --git a/lib/dma-debug.c b/lib/dma-debug.c
index 3b93129..012c240 100644
--- a/lib/dma-debug.c
+++ b/lib/dma-debug.c
@@ -62,6 +62,8 @@ struct dma_debug_entry {
#endif
};
+static struct lock_class_key hash_bucket_class;
+
struct hash_bucket {
struct list_head list;
spinlock_t lock;
@@ -716,7 +718,8 @@ void dma_debug_init(u32 num_entries)
for (i = 0; i < HASH_SIZE; ++i) {
INIT_LIST_HEAD(&dma_entry_hash[i].list);
- dma_entry_hash[i].lock = SPIN_LOCK_UNLOCKED;
+ spin_lock_init(&dma_entry_hash[i].lock);
+ lockdep_set_lock_class(&dma_entry_hash[i].lock, &hash_bucket_class);
}
if (dma_debug_fs_init() != 0) {
next prev parent reply other threads:[~2009-06-16 10:36 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-16 5:45 bug in tty ldisc and friends Steven Rostedt
2009-06-16 8:37 ` Alan Cox
2009-06-16 8:50 ` Ingo Molnar
2009-06-16 8:57 ` Alan Cox
2009-06-16 9:09 ` Ingo Molnar
2009-06-16 10:00 ` Ingo Molnar
2009-06-16 10:04 ` Alan Cox
2009-06-16 10:12 ` Ingo Molnar
2009-06-16 10:25 ` Ingo Molnar
2009-06-16 10:29 ` Ingo Molnar
2009-06-16 10:34 ` Joerg Roedel
2009-06-16 10:45 ` Ingo Molnar
2009-06-16 10:36 ` Ingo Molnar [this message]
2009-06-16 11:39 ` Joerg Roedel
2009-06-16 12:11 ` Ingo Molnar
2009-06-16 15:24 ` Joerg Roedel
2009-06-17 8:32 ` Peter Zijlstra
2009-06-17 14:10 ` Ingo Molnar
2009-06-17 14:28 ` 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=20090616103606.GA3497@elte.hu \
--to=mingo@elte.hu \
--cc=a.p.zijlstra@chello.nl \
--cc=akpm@linux-foundation.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=joerg.roedel@amd.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rostedt@goodmis.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.