From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
To: Josh Cartwright <joshc@ni.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
"Luis Claudio R. Goncalves" <lclaudio@uudg.org>,
linux-rt-users@vger.kernel.org
Subject: Re: [4.4.4-rt11] Possiblie recursive locking detected in kswapd / mb_cache_shrink_scan()
Date: Tue, 29 Mar 2016 17:04:44 +0200 [thread overview]
Message-ID: <20160329150444.GD13334@linutronix.de> (raw)
In-Reply-To: <20160321144016.GA31276@jcartwri.amer.corp.natinst.com>
* Josh Cartwright | 2016-03-21 09:40:16 [-0500]:
>diff --git a/include/linux/list_bl.h b/include/linux/list_bl.h
>index 44f0b55..d13428a 100644
>--- a/include/linux/list_bl.h
>+++ b/include/linux/list_bl.h
>@@ -42,13 +42,18 @@ struct hlist_bl_node {
> struct hlist_bl_node *next, **pprev;
> };
>
>-static inline void INIT_HLIST_BL_HEAD(struct hlist_bl_head *h)
>-{
>- h->first = NULL;
> #ifdef CONFIG_PREEMPT_RT_BASE
>- raw_spin_lock_init(&h->lock);
>+#define INIT_HLIST_BL_HEAD(h) \
>+do { \
>+ (h)->first = NULL; \
>+ raw_spin_lock_init(&(h)->lock); \
>+} while (0)
>+#else
>+#define INIT_HLIST_BL_HEAD(h) \
>+do { \
>+ (h)->first = NULL; \
>+} while (0)
> #endif
>-}
So we use a macro instead a "static inline" to ensure we end up with
another lockdep class? This surprises me because it would mean that the
function wasn't inlined / key classed was re-used.
Looking at the assembly I see:
|ffffffff8121fb41: 48 c7 c2 e0 bb d6 82 mov $0xffffffff82d6bbe0,%rdx
|ffffffff8121fb48: 48 89 df mov %rbx,%rdi
|ffffffff8121fb4b: 48 c7 c6 30 2b a2 81 mov $0xffffffff81a22b30,%rsi
|ffffffff8121fb52: e8 a9 0e e9 ff callq ffffffff810b0a00 <__raw_spin_lock_init>
…
|ffffffff8121fc12: 48 c7 c2 d0 bb d6 82 mov $0xffffffff82d6bbd0,%rdx
|ffffffff8121fc19: 48 c7 c6 7b 2e a3 81 mov $0xffffffff81a32e7b,%rsi
|ffffffff8121fc20: 48 c7 07 00 00 00 00 movq $0x0,(%rdi)
|ffffffff8121fc27: 48 83 c7 08 add $0x8,%rdi
|ffffffff8121fc2b: e8 d0 0d e9 ff callq ffffffff810b0a00 <__raw_spin_lock_init>
rdx holds the third parameter and it is different. What do I miss?
Was the rdx argument in Luis' case the same before this path was
applied?
Sebastian
--
To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2016-03-29 15:04 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-14 21:00 [4.4.4-rt11] Possiblie recursive locking detected in kswapd / mb_cache_shrink_scan() Luis Claudio R. Goncalves
2016-03-19 8:33 ` Thomas Gleixner
2016-03-21 13:34 ` Luis Claudio R. Goncalves
2016-03-21 14:40 ` Josh Cartwright
2016-03-21 20:47 ` Luis Claudio R. Goncalves
2016-03-29 15:04 ` Sebastian Andrzej Siewior [this message]
2016-03-29 18:20 ` Josh Cartwright
2016-03-29 23:14 ` Josh Cartwright
2016-03-30 8:16 ` Sebastian Andrzej Siewior
2016-03-31 5:04 ` [PATCH] list_bl: fixup bogus lockdep warning Josh Cartwright
2016-04-01 10:46 ` Sebastian Andrzej Siewior
2016-04-01 10:49 ` Sebastian Andrzej Siewior
2016-04-01 17:02 ` Josh Cartwright
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=20160329150444.GD13334@linutronix.de \
--to=bigeasy@linutronix.de \
--cc=joshc@ni.com \
--cc=lclaudio@uudg.org \
--cc=linux-rt-users@vger.kernel.org \
--cc=tglx@linutronix.de \
/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.