[ Upstream commit fbec4e7fed89b579f2483041fabf9650fb0dd6bc ]
smp_call_function always runs its callback in hard IRQ context, even on
PREEMPT_RT, where spinlocks can sleep. So we need to use a raw spinlock
for cgr_lock to ensure we aren't waiting on a sleeping task.
Although this bug has existed for a while, it was not apparent until
commit ef2a8d5478b9 ("net: dpaa: Adjust queue depth on rate change")
which invokes smp_call_function_single via qman_update_cgr_safe every
time a link goes up or down.
Fixes:
|
||
---|---|---|
.. | ||
bman_ccsr.c | ||
bman_portal.c | ||
bman_priv.h | ||
bman_test_api.c | ||
bman_test.c | ||
bman_test.h | ||
bman.c | ||
dpaa_sys.c | ||
dpaa_sys.h | ||
Kconfig | ||
Makefile | ||
qman_ccsr.c | ||
qman_portal.c | ||
qman_priv.h | ||
qman_test_api.c | ||
qman_test_stash.c | ||
qman_test.c | ||
qman_test.h | ||
qman.c |