On Mon, Mar 21, 2016 at 09:40:16AM -0500, Josh Cartwright wrote: | On Sat, Mar 19, 2016 at 09:33:34AM +0100, Thomas Gleixner wrote: | > On Mon, 14 Mar 2016, Luis Claudio R. Goncalves wrote: | > | > > Hello, | > > | > > I just started using 4.4.4-rt11 this afternoon and saw the lockdep splat below. | > > Is this something new or did I miss a patch floating on the list? | > | > That's new. Looking into it. | | It looks like the way that INIT_HLIST_BL_HEAD() is authored, all | instances of the contained raw spinlock will share the same lockdep | class. That, coupled with the following in mb_cache_shrink(), is | triggering the lockdep violation: | | void | mb_cache_shrink(struct block_device *bdev) | { | [..] | /* | * Prevent any find or get operation on the entry. | */ | hlist_bl_lock(ce->e_block_hash_p); | hlist_bl_lock(ce->e_index_hash_p); | | Josh Josh, I built a kernel with your patch and the lockdep complaint is gone. I was used to see the message within 30 minutes of normal usage. So far, four hours with that kernel running and no complaints. Tested-by: Luis Claudio R. Goncalves <lclaudio@xxxxxxxx> Thanks! Luis | 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 | -} | | static inline void INIT_HLIST_BL_NODE(struct hlist_bl_node *h) | { ---end quoted text--- -- [ Luis Claudio R. Goncalves Bass - Gospel - RT ] [ Fingerprint: 4FDD B8C4 3C59 34BD 8BE9 2696 7203 D980 A448 C8F8 ] -- To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html