xen/sched: Untangle credit2 vs cpu_nr_siblings()

Credit2 has no buisness including asm/cpufeature.h or asm/processor.h.

This was caused by a bad original abstraction, and an even less wise attempt
to fix the build on my behalf.  It is also the sole reason why PPC and RISC-V
need cpufeature.h header.

Worst of all, cpu_data[cpu].x86_num_siblings doesn't even have the same
meaning between vendors on x86 CPUS.

Implement cpu_nr_siblings() locally in credit2.c, leaving behind a TODO.  Drop
the stub from each architecture.

Fixes: 8e2aa76dc1 ("xen: credit2: limit the max number of CPUs in a runqueue")
Fixes: ad33a573c0 ("xen/credit2: Fix build following c/s 8e2aa76dc (take 2)")
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Acked-by: Shawn Anastasio <sanastasio@raptorengineering.com>
This commit is contained in:
Andrew Cooper committed 2024-12-19 17:33:54 +00:00
1 parent 9a17d5c7c9
commit 188d568db8
5 files changed
+13 -45

No files matched your search

-5
View File
@@ -98,11 +98,6 @@ static inline bool cpus_have_cap(unsigned int num)
return test_bit(num, cpu_hwcaps);
}
static inline int cpu_nr_siblings(unsigned int cpu)
{
return 1;
}
/* System capability check for constant cap */
#define cpus_have_const_cap(num) ({ \
register_t __ret; \
-10
View File
@@ -1,10 +0,0 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef __ASM_PPC_CPUFEATURE_H__
#define __ASM_PPC_CPUFEATURE_H__
static inline int cpu_nr_siblings(unsigned int cpu)
{
return 1;
}
#endif /* __ASM_PPC_CPUFEATURE_H__ */
-23
View File
@@ -1,23 +0,0 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef ASM__RISCV__CPUFEATURE_H
#define ASM__RISCV__CPUFEATURE_H
#ifndef __ASSEMBLY__
static inline unsigned int cpu_nr_siblings(unsigned int cpu)
{
return 1;
}
#endif /* __ASSEMBLY__ */
#endif /* ASM__RISCV__CPUFEATURE_H */
/*
* Local variables:
* mode: C
* c-file-style: "BSD"
* c-basic-offset: 4
* indent-tabs-mode: nil
* End:
*/
-5
View File
@@ -118,11 +118,6 @@ extern void init_intel_cacheinfo(struct cpuinfo_x86 *c);
unsigned int apicid_to_socket(unsigned int apicid);
static inline int cpu_nr_siblings(unsigned int cpu)
{
return cpu_data[cpu].x86_num_siblings;
}
/* Some CPUID calls want 'count' to be placed in ecx */
static inline void cpuid_count(
unsigned int op,
+13 -2
View File
@@ -26,8 +26,6 @@
#include <xen/trace.h>
#include <xen/cpu.h>
#include <xen/keyhandler.h>
#include <asm/cpufeature.h>
#include <asm/processor.h>
#include "private.h"
@@ -35,6 +33,19 @@
/* #define d2printk printk */
#define d2printk(x...)
/*
* TODO: Abstract this properly, and figure out what Credit2 wants to do with
* the fact that x86_num_siblings doesn't even have the same meaning
* between x86 vendors.
*/
static unsigned int cpu_nr_siblings(unsigned int cpu)
{
#ifdef CONFIG_X86
return cpu_data[cpu].x86_num_siblings;
#else
return 1;
#endif
}
/*
* Credit2 tracing events ("only" 512 available!). Check
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.