bus: arm-ccn: fix module unloading Error: Removing state 147 which has instances left.
Unregistering the driver before calling cpuhp_remove_multi_state() removes
any remaining hotplug cpu instances so __cpuhp_remove_state_cpuslocked()
doesn't emit this warning:
[ 268.748362] Error: Removing state 147 which has instances left.
[ 268.748373] ------------[ cut here ]------------
[ 268.748386] WARNING: CPU: 2 PID: 5476 at kernel/cpu.c:1734 __cpuhp_remove_state_cpuslocked+0x454/0x4f0
[ 268.748389] Modules linked in: arm_ccn(-) [last unloaded: arm_ccn]
[ 268.748403] CPU: 2 PID: 5476 Comm: rmmod Tainted: G W 4.14.0-rc4+ #3
[ 268.748406] Hardware name: AMD Seattle/Seattle, BIOS 10:18:39 Dec 8 2016
[ 268.748410] task:
ffff8001a18ca000 task.stack:
ffff80019c120000
[ 268.748416] PC is at __cpuhp_remove_state_cpuslocked+0x454/0x4f0
[ 268.748421] LR is at __cpuhp_remove_state_cpuslocked+0x448/0x4f0
[ 268.748425] pc : [<
ffff2000081729ec>] lr : [<
ffff2000081729e0>] pstate:
60000145
[ 268.748427] sp :
ffff80019c127d30
[ 268.748430] x29:
ffff80019c127d30 x28:
ffff8001a18ca000
[ 268.748437] x27:
ffff20000c2cb000 x26:
1fffe4000042d490
[ 268.748443] x25:
ffff20000216a480 x24:
0000000000000000
[ 268.748449] x23:
ffff20000b08e000 x22:
0000000000000001
[ 268.748455] x21:
0000000000000093 x20:
00000000000016f8
[ 268.748460] x19:
ffff20000c2cbb80 x18:
0000ffffb5fe7c58
[ 268.748466] x17:
00000000004402d0 x16:
1fffe40001864f01
[ 268.748472] x15:
ffff20000c4bf8b0 x14:
0000000000000000
[ 268.748477] x13:
0000000000007032 x12:
ffff20000829ae48
[ 268.748483] x11:
ffff20000c4bf000 x10:
0000000000000004
[ 268.748488] x9 :
0000000000006fbc x8 :
ffff20000c318a40
[ 268.748494] x7 :
0000000000000000 x6 :
ffff040001864f02
[ 268.748500] x5 :
0000000000000000 x4 :
0000000000000000
[ 268.748505] x3 :
0000000000000007 x2 :
dfff200000000000
[ 268.748510] x1 :
000000000000ad3d x0 :
00000000000001f0
[ 268.748516] Call trace:
[ 268.748521] Exception stack(0xffff80019c127bf0 to 0xffff80019c127d30)
[ 268.748526] 7be0:
00000000000001f0 000000000000ad3d
[ 268.748531] 7c00:
dfff200000000000 0000000000000007 0000000000000000 0000000000000000
[ 268.748535] 7c20:
ffff040001864f02 0000000000000000 ffff20000c318a40 0000000000006fbc
[ 268.748539] 7c40:
0000000000000004 ffff20000c4bf000 ffff20000829ae48 0000000000007032
[ 268.748544] 7c60:
0000000000000000 ffff20000c4bf8b0 1fffe40001864f01 00000000004402d0
[ 268.748548] 7c80:
0000ffffb5fe7c58 ffff20000c2cbb80 00000000000016f8 0000000000000093
[ 268.748553] 7ca0:
0000000000000001 ffff20000b08e000 0000000000000000 ffff20000216a480
[ 268.748557] 7cc0:
1fffe4000042d490 ffff20000c2cb000 ffff8001a18ca000 ffff80019c127d30
[ 268.748562] 7ce0:
ffff2000081729e0 ffff80019c127d30 ffff2000081729ec 0000000060000145
[ 268.748566] 7d00:
00000000000001f0 0000000000000000 0001000000000000 0000000000000000
[ 268.748569] 7d20:
ffff80019c127d30 ffff2000081729ec
[ 268.748575] [<
ffff2000081729ec>] __cpuhp_remove_state_cpuslocked+0x454/0x4f0
[ 268.748580] [<
ffff200008172adc>] __cpuhp_remove_state+0x54/0x80
[ 268.748597] [<
ffff20000215dd84>] arm_ccn_exit+0x2c/0x70 [arm_ccn]
[ 268.748604] [<
ffff20000834cfbc>] SyS_delete_module+0x5a4/0x708
[ 268.748607] Exception stack(0xffff80019c127ec0 to 0xffff80019c128000)
[ 268.748612] 7ec0:
0000000019bb7258 0000000000000800 ba64d0fb3d26a800 00000000000000da
[ 268.748616] 7ee0:
0000ffffb6144e28 0000ffffcd95b409 fefefefefefefeff 7f7f7f7f7f7f7f7f
[ 268.748621] 7f00:
000000000000006a 1999999999999999 0000ffffb6179000 0000000000bbcc6d
[ 268.748625] 7f20:
0000ffffb6176b98 0000ffffcd95c2d0 0000ffffb5fe7b58 0000ffffb6163000
[ 268.748630] 7f40:
0000ffffb60ad3e0 00000000004402d0 0000ffffb5fe7c58 0000000019bb71f0
[ 268.748634] 7f60:
0000ffffcd95c740 0000000000000000 0000000019bb71f0 0000000000416700
[ 268.748639] 7f80:
0000000000000000 00000000004402e8 0000000019bb6010 0000ffffcd95c748
[ 268.748643] 7fa0:
0000000000000000 0000ffffcd95c460 00000000004113a8 0000ffffcd95c460
[ 268.748648] 7fc0:
0000ffffb60ad3e8 0000000080000000 0000000019bb7258 000000000000006a
[ 268.748652] 7fe0:
0000000000000000 0000000000000000 0000000000000000 0000000000000000
[ 268.748657] [<
ffff200008084f9c>] __sys_trace_return+0x0/0x4
[ 268.748661] ---[ end trace
a996d358dcaa7f9c ]---
Fixes: 8df038725ad5 ("bus/arm-ccn: Use cpu-hp's multi instance support instead custom list")
Signed-off-by: Kim Phillips <kim.phillips@arm.com>
Acked-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Cc: stable@vger.kernel.org # 4.8+
Signed-off-by: Pawel Moll <pawel.moll@arm.com>