[PATCH v2 0/3] More frequency invariance fixes for x86

From: Giovanni Gherdovich
Date: Sun May 31 2020 - 14:26:16 EST


v1 at https://lore.kernel.org/lkml/20200428132450.24901-1-ggherdovich@xxxxxxx/

changes wrt v1:

- add Peter Zijlstra's code to check for multiplication overflow, see
https://lore.kernel.org/lkml/20200501133042.GE3762@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/
- put all frequence invariant code behind CONFIG_X86_64, as the overflow
checks need 64 bits operations, see the build error at
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx/thread/7GDIBOMNVDG5W2XZD4EICE2TUZR3THBN/
- add additional patch to check for when base_freq > turbo_freq,
suggested by Peter Zijlstra at
https://lore.kernel.org/lkml/20200501130427.GD3762@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cover Letter from v1:

Patch 1/2 prevents a division by zero in case the product
"delta_MPERF * arch_max_freq_ratio" overflows u64, as suggested by Linus at [1].
This patch supersedes the version at [2], as it also disables frequency
invariance when that overflow happens.

Patch 2/2 implements the recommendation by Ricardo Neri to check for an all
zero MSR_TURBO_RATIO_LIMIT and disable freq invariance in that case too.

[1] https://lore.kernel.org/lkml/CAHk-=wiX+NT2yxtdPszH9U_S96MCNQA56GJFXY45mZc47yG5KQ@xxxxxxxxxxxxxx/
[2] https://lore.kernel.org/lkml/20200422144055.18171-1-ggherdovich@xxxxxxx/
[3] https://lore.kernel.org/lkml/20200424013222.GA26355@xxxxxxxxxxxxxxxxxxxxxxxxx/

Giovanni Gherdovich (3):
x86, sched: check for counters overflow in frequency invariant
accounting
x86, sched: Bail out of frequency invariance if turbo frequency is
unknown
x86, sched: Bail out of frequency invariance if turbo_freq/base_freq
gives 0

arch/x86/include/asm/topology.h | 2 +-
arch/x86/kernel/smpboot.c | 50 +++++++++++++++++++++++++++++++++--------
2 files changed, 42 insertions(+), 10 deletions(-)

--
2.16.4