Commit d54a9658 authored by Valentin Schneider's avatar Valentin Schneider Committed by Ingo Molnar
Browse files

sched/topology: Split out SD_* flags declaration to its own file



To associate the SD flags with some metadata, we need some more structure
in the way they are declared.

Rather than shove that in a free-standing macro list, move the declaration
in a separate file that can be re-imported with different SD_FLAG
definitions. This is inspired by what is done with the syscall
table (see uapi/asm/unistd.h and sys_call_table).

The value assigned to a given SD flag now depends on the order it appears
in sd_flags.h. No change in functionality.

Signed-off-by: default avatarValentin Schneider <valentin.schneider@arm.com>
Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
Reviewed-by: default avatarDietmar Eggemann <dietmar.eggemann@arm.com>
Acked-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
Link: https://lore.kernel.org/r/20200817113003.20802-4-valentin.schneider@arm.com
parent d23b3bf8
Loading
Loading
Loading
Loading
+35 −0
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * sched-domains (multiprocessor balancing) flag declarations.
 */

#ifndef SD_FLAG
# error "Incorrect import of SD flags definitions"
#endif

/* Balance when about to become idle */
SD_FLAG(SD_BALANCE_NEWIDLE)
/* Balance on exec */
SD_FLAG(SD_BALANCE_EXEC)
/* Balance on fork, clone */
SD_FLAG(SD_BALANCE_FORK)
/* Balance on wakeup */
SD_FLAG(SD_BALANCE_WAKE)
/* Wake task to waking CPU */
SD_FLAG(SD_WAKE_AFFINE)
/* Domain members have different CPU capacities */
SD_FLAG(SD_ASYM_CPUCAPACITY)
/* Domain members share CPU capacity */
SD_FLAG(SD_SHARE_CPUCAPACITY)
/* Domain members share CPU pkg resources */
SD_FLAG(SD_SHARE_PKG_RESOURCES)
/* Only a single load balancing instance */
SD_FLAG(SD_SERIALIZE)
/* Place busy groups earlier in the domain */
SD_FLAG(SD_ASYM_PACKING)
/* Prefer to place tasks in a sibling domain */
SD_FLAG(SD_PREFER_SIBLING)
/* sched_domains of this level overlap */
SD_FLAG(SD_OVERLAP)
/* cross-node balancing */
SD_FLAG(SD_NUMA)
+13 −13
Original line number Diff line number Diff line
@@ -11,19 +11,19 @@
 */
#ifdef CONFIG_SMP

#define SD_BALANCE_NEWIDLE	0x0001	/* Balance when about to become idle */
#define SD_BALANCE_EXEC		0x0002	/* Balance on exec */
#define SD_BALANCE_FORK		0x0004	/* Balance on fork, clone */
#define SD_BALANCE_WAKE		0x0008  /* Balance on wakeup */
#define SD_WAKE_AFFINE		0x0010	/* Wake task to waking CPU */
#define SD_ASYM_CPUCAPACITY	0x0020  /* Domain members have different CPU capacities */
#define SD_SHARE_CPUCAPACITY	0x0040	/* Domain members share CPU capacity */
#define SD_SHARE_PKG_RESOURCES	0x0080	/* Domain members share CPU pkg resources */
#define SD_SERIALIZE		0x0100	/* Only a single load balancing instance */
#define SD_ASYM_PACKING		0x0200  /* Place busy groups earlier in the domain */
#define SD_PREFER_SIBLING	0x0400	/* Prefer to place tasks in a sibling domain */
#define SD_OVERLAP		0x0800	/* sched_domains of this level overlap */
#define SD_NUMA			0x1000	/* cross-node balancing */
/* Generate SD flag indexes */
#define SD_FLAG(name) __##name,
enum {
	#include <linux/sched/sd_flags.h>
	__SD_FLAG_CNT,
};
#undef SD_FLAG
/* Generate SD flag bits */
#define SD_FLAG(name) name = 1 << __##name,
enum {
	#include <linux/sched/sd_flags.h>
};
#undef SD_FLAG

#ifdef CONFIG_SCHED_SMT
static inline int cpu_smt_flags(void)