[PATCH linux dev-4.18] clocksource/drivers/fttmr010: Fix set_next_event handler

Tao Ren taoren at fb.com
Mon Oct 15 14:57:04 AEDT 2018


On 10/14/18, 8:47 PM, "Tao Ren" <taoren at fb.com> wrote:

> Currently, the aspeed MATCH1 register is updated to <current_count -
> cycles> in set_next_event handler, with the assumption that COUNT
> register value is preserved when the timer is disabled and it continues
> decrementing after the timer is enabled. But the assumption is wrong:
> RELOAD register is loaded into COUNT register when the aspeed timer is
> enabled, which means the next event may be delayed because timer
> interrupt won't be generated until <0xFFFFFFFF - current_count +
> cycles>.
> 
> The problem can be fixed by updating RELOAD register to <cycles>, and
> COUNT register will be re-loaded when the timer is enabled and interrupt
> is generated when COUNT register overflows.
>
> The test result on Facebook Backpack-CMM BMC hardware (AST2500) shows
> the issue is fixed: without the patch, usleep(100) suspends the process
> for several milliseconds (and sometimes even over 40 milliseconds);
> after applying the fix, usleep(100) takes averagely 240 microseconds to
> return under the same workload level.
> 
> Signed-off-by: Tao Ren <taoren at fb.com>
> Reviewed-by: Linus Walleij <linus.walleij at linaro.org>
> Tested-by: Lei YU <mine260309 at gmail.com>
> Signed-off-by: Daniel Lezcano <daniel.lezcano at linaro.org>
 
Hi Joel / Andrew,

The patch is included in v4.19-rc6 (commit 4451d3f59f2a), so you could either apply the patch to dev-4.18 now, or it can also be included when kernel is upgraded to 4.19.


Thanks,

Tao Ren



More information about the openbmc mailing list