diff options
Diffstat (limited to 'core/timebase.c')
-rw-r--r-- | core/timebase.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/core/timebase.c b/core/timebase.c index 0ae11d25..b1a02a4a 100644 --- a/core/timebase.c +++ b/core/timebase.c @@ -29,6 +29,16 @@ static void time_wait_poll(unsigned long duration) unsigned long period = msecs_to_tb(5); if (this_cpu()->tb_invalid) { + /* + * Run pollers to allow some backends to process response. + * + * In TOD failure case where TOD is unrecoverable, running + * pollers allows ipmi backend to deal with ipmi response + * from bmc and helps ipmi_queue_msg_sync() to get un-stuck. + * Thus it avoids linux kernel to hang during panic due to + * TOD failure. + */ + opal_run_pollers(); cpu_relax(); return; } |