scheduler fixes
Subsystems (3)
Linus,
Please pull the latest sched/urgent git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git sched-urgent-2021-05-15
# HEAD: 3743d55b289c203d8f77b7cd47c24926b9d186ae x86, sched: Fix the AMD CPPC maximum performance value on certain AMD Ryzen generations
Fix an idle CPU selection bug, and an AMD Ryzen maximum frequency enumeration bug.
Thanks,
Ingo
------------------>
Gautham R. Shenoy (1):
sched/fair: Fix clearing of has_idle_cores flag in select_idle_cpu()
Huang Rui (1):
x86, sched: Fix the AMD CPPC maximum performance value on certain AMD Ryzen generations
arch/x86/include/asm/processor.h | 2 ++ arch/x86/kernel/cpu/amd.c | 16 ++++++++++++++++ arch/x86/kernel/smpboot.c | 2 +- drivers/cpufreq/acpi-cpufreq.c | 6 +++++- kernel/sched/fair.c | 2 +- 5 files changed, 25 insertions(+), 3 deletions(-)
arch/x86/include/asm/processor.h +2 -0
@@ -787,8 +787,10 @@ DECLARE_PER_CPU(u64, msr_misc_features_shadow);#ifdef CONFIG_CPU_SUP_AMD extern u32 amd_get_nodes_per_socket (void ); +extern u32 amd_get_highest_perf (void );#else static inline u32 amd_get_nodes_per_socket (void ) {return 0 ; } +static inline u32 amd_get_highest_perf (void ) {return 0 ; }#endif static inline uint32_t hypervisor_cpuid_base (const char *sig,uint32_t leaves)
arch/x86/kernel/cpu/amd.c +16 -0
@@ -1165,3 +1165,19 @@ void set_dr_addr_mask(unsigned long mask, int dr)break ; } } + +u32 amd_get_highest_perf (void ) +{ +struct cpuinfo_x86 *c = &boot_cpu_data; + +if (c->x86 ==0x17 && ((c->x86_model >=0x30 && c->x86_model <0x40 ) || + (c->x86_model >=0x70 && c->x86_model <0x80 ))) +return 166 ; + +if (c->x86 ==0x19 && ((c->x86_model >=0x20 && c->x86_model <0x30 ) || + (c->x86_model >=0x40 && c->x86_model <0x70 ))) +return 166 ; + +return 255 ; +} +EXPORT_SYMBOL_GPL (amd_get_highest_perf);
arch/x86/kernel/smpboot.c +1 -1
@@ -2043,7 +2043,7 @@ static bool amd_set_max_freq_ratio(void)return false; } - highest_perf = perf_caps.highest_perf; + highest_perf =amd_get_highest_perf (); nominal_perf = perf_caps.nominal_perf;if (!highest_perf || !nominal_perf) {
drivers/cpufreq/acpi-cpufreq.c +5 -1
@@ -646,7 +646,11 @@ static u64 get_max_boost_ratio(unsigned int cpu)return 0 ; } - highest_perf = perf_caps.highest_perf; +if (boot_cpu_data.x86_vendor ==X86_VENDOR_AMD ) + highest_perf =amd_get_highest_perf (); +else + highest_perf = perf_caps.highest_perf; + nominal_perf = perf_caps.nominal_perf;if (!highest_perf || !nominal_perf) {
kernel/sched/fair.c +1 -1
@@ -6217,7 +6217,7 @@ static int select_idle_cpu(struct task_struct *p, struct sched_domain *sd, bool }if (has_idle_core) -set_idle_cores (this, false); +set_idle_cores (target, false);if (sched_feat (SIS_PROP ) && !has_idle_core) { time =cpu_clock (this) - time;
The pull request you sent on Sat, 15 May 2021 09:50:41 +0200:
The pull request you sent on Sat, 15 May 2021 09:50:41 +0200:
Quoted 1 line
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.gitsched-urgent-2021-05-15
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/c12a29ed9094b4b9cde8965c12850460b9a79d7c
Thank you!
Signature · 2 lines
Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/prtracker.html