Hi Rafael, Len Hope you get time to look into this patch. Regards --Bhaskar On Wed, Dec 18, 2019 at 12:34 PM Bhaskar Upadhaya <bupadhaya@xxxxxxxxxxx> wrote: > > Currently Linux register ghes_poll_func with TIMER_DEFERRABLE flag, > because of which it is serviced when the CPU eventually wakes up with a > subsequent non-deferrable timer and not at the configured polling interval. > > For polling mode, the polling interval configured by firmware should not > be exceeded as per ACPI_6_3 spec[refer Table 18-394], So Timer need to > be configured in non-deferrable mode by removing TIMER_DEFERRABLE flag. > With NO_HZ enabled and timer callback being configured in non-deferrable > mode, timer callback will get called exactly after polling interval. > > Impact of removing TIMER_DEFFERABLE flag > - With NO_HZ enabled, additional timer ticks and unnecessary wakeups of > the cpu happens exactly after polling interval. > > - If polling interval is too small than polling function will be called > too frequently which may stall the cpu. > > Signed-off-by: Bhaskar Upadhaya <bupadhaya@xxxxxxxxxxx> > --- > drivers/acpi/apei/ghes.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c > index 777f6f7122b4..c8f9230f69fb 100644 > --- a/drivers/acpi/apei/ghes.c > +++ b/drivers/acpi/apei/ghes.c > @@ -1181,7 +1181,7 @@ static int ghes_probe(struct platform_device *ghes_dev) > > switch (generic->notify.type) { > case ACPI_HEST_NOTIFY_POLLED: > - timer_setup(&ghes->timer, ghes_poll_func, TIMER_DEFERRABLE); > + timer_setup(&ghes->timer, ghes_poll_func, 0); > ghes_add_timer(ghes); > break; > case ACPI_HEST_NOTIFY_EXTERNAL: > -- > 2.17.1 >