[PATCH v2] powerpc/powermac: Add missing lockdep_register_key()

Erhard F. erhard_f at mailbox.org
Wed Dec 1 02:30:16 AEDT 2021


On Tue, 30 Nov 2021 15:30:42 +0100
Christophe Leroy <christophe.leroy at csgroup.eu> wrote:

> KeyWest i2c @0xf8001003 irq 42 /uni-n at f8000000/i2c at f8001000
> BUG: key c2d00cbc has not been registered!
> ------------[ cut here ]------------
> DEBUG_LOCKS_WARN_ON(1)
> WARNING: CPU: 0 PID: 1 at kernel/locking/lockdep.c:4801 lockdep_init_map_type+0x4c0/0xb4c
> Modules linked in:
> CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.15.5-gentoo-PowerMacG4 #9
> NIP:  c01a9428 LR: c01a9428 CTR: 00000000
> REGS: e1033cf0 TRAP: 0700   Not tainted  (5.15.5-gentoo-PowerMacG4)
> MSR:  00029032 <EE,ME,IR,DR,RI>  CR: 24002002  XER: 00000000
> 
> GPR00: c01a9428 e1033db0 c2d1cf20 00000016 00000004 00000001 c01c0630 e1033a73
> GPR08: 00000000 00000000 00000000 e1033db0 24002004 00000000 f8729377 00000003
> GPR16: c1829a9c 00000000 18305357 c1416fc0 c1416f80 c006ac60 c2d00ca8 c1416f00
> GPR24: 00000000 c21586f0 c2160000 00000000 c2d00cbc c2170000 c216e1a0 c2160000
> NIP [c01a9428] lockdep_init_map_type+0x4c0/0xb4c
> LR [c01a9428] lockdep_init_map_type+0x4c0/0xb4c
> Call Trace:
> [e1033db0] [c01a9428] lockdep_init_map_type+0x4c0/0xb4c (unreliable)
> [e1033df0] [c1c177b8] kw_i2c_add+0x334/0x424
> [e1033e20] [c1c18294] pmac_i2c_init+0x9ec/0xa9c
> [e1033e80] [c1c1a790] smp_core99_probe+0xbc/0x35c
> [e1033eb0] [c1c03cb0] kernel_init_freeable+0x190/0x5a4
> [e1033f10] [c000946c] kernel_init+0x28/0x154
> [e1033f30] [c0035148] ret_from_kernel_thread+0x14/0x1c
> 
> Add missing lockdep_register_key()
> 
> Reported-by: Erhard Furtner <erhard_f at mailbox.org>
> Link: https://bugzilla.kernel.org/show_bug.cgi?id=200055
> Fixes: 9e607f72748d ("i2c_powermac: shut up lockdep warning")
> Signed-off-by: Christophe Leroy <christophe.leroy at csgroup.eu>
> ---
> v2: Added lockdep_register_key() at two other places.
> ---
>  arch/powerpc/platforms/powermac/low_i2c.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/arch/powerpc/platforms/powermac/low_i2c.c b/arch/powerpc/platforms/powermac/low_i2c.c
> index f77a59b5c2e1..df89d916236d 100644
> --- a/arch/powerpc/platforms/powermac/low_i2c.c
> +++ b/arch/powerpc/platforms/powermac/low_i2c.c
> @@ -582,6 +582,7 @@ static void __init kw_i2c_add(struct pmac_i2c_host_kw *host,
>  	bus->close = kw_i2c_close;
>  	bus->xfer = kw_i2c_xfer;
>  	mutex_init(&bus->mutex);
> +	lockdep_register_key(&bus->lock_key);
>  	lockdep_set_class(&bus->mutex, &bus->lock_key);
>  	if (controller == busnode)
>  		bus->flags = pmac_i2c_multibus;
> @@ -810,6 +811,7 @@ static void __init pmu_i2c_probe(void)
>  		bus->hostdata = bus + 1;
>  		bus->xfer = pmu_i2c_xfer;
>  		mutex_init(&bus->mutex);
> +		lockdep_register_key(&bus->lock_key);
>  		lockdep_set_class(&bus->mutex, &bus->lock_key);
>  		bus->flags = pmac_i2c_multibus;
>  		list_add(&bus->link, &pmac_i2c_busses);
> @@ -933,6 +935,7 @@ static void __init smu_i2c_probe(void)
>  		bus->hostdata = bus + 1;
>  		bus->xfer = smu_i2c_xfer;
>  		mutex_init(&bus->mutex);
> +		lockdep_register_key(&bus->lock_key);
>  		lockdep_set_class(&bus->mutex, &bus->lock_key);
>  		bus->flags = 0;
>  		list_add(&bus->link, &pmac_i2c_busses);
> -- 
> 2.33.1
> 

Yes, that did the trick! The lockdep spalt is gone now. Many thanks Christophe!

I'll close the original bugzilla report once this gets into stable.

Regards,
Erhard


More information about the Linuxppc-dev mailing list