Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 716707b2 authored by Vaidyanathan Srinivasan's avatar Vaidyanathan Srinivasan Committed by Ingo Molnar
Browse files

sched: convert BALANCE_FOR_xx_POWER to inline functions



Impact: cleanup

BALANCE_FOR_MC_POWER and similar macros defined in sched.h are
not constants and have various condition checks and significant
amount of code that is not suitable to be contain in a macro.
Also there could be side effects on the expressions passed to
some of them like test_sd_parent().

This patch converts all complex macros related to power savings
balance to inline functions.

Signed-off-by: default avatarVaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
Acked-by: default avatarBalbir Singh <balbir@linux.vnet.ibm.com>
Acked-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 3b11ce7f
Loading
Loading
Loading
Loading
+24 −9
Original line number Diff line number Diff line
@@ -763,15 +763,23 @@ enum cpu_idle_type {
#define SD_SERIALIZE		1024	/* Only a single load balancing instance */
#define SD_WAKE_IDLE_FAR	2048	/* Gain latency sacrificing cache hit */

#define BALANCE_FOR_MC_POWER	\
	(sched_smt_power_savings ? SD_POWERSAVINGS_BALANCE : 0)
extern int sched_mc_power_savings, sched_smt_power_savings;

static inline int sd_balance_for_mc_power(void)
{
	if (sched_smt_power_savings)
		return SD_POWERSAVINGS_BALANCE;

#define BALANCE_FOR_PKG_POWER	\
	((sched_mc_power_savings || sched_smt_power_savings) ?	\
	 SD_POWERSAVINGS_BALANCE : 0)
	return 0;
}

#define test_sd_parent(sd, flag)	((sd->parent &&		\
					 (sd->parent->flags & flag)) ? 1 : 0)
static inline int sd_balance_for_package_power(void)
{
	if (sched_mc_power_savings | sched_smt_power_savings)
		return SD_POWERSAVINGS_BALANCE;

	return 0;
}


struct sched_group {
@@ -1399,6 +1407,15 @@ struct task_struct {
#endif
};

/* Test a flag in parent sched domain */
static inline int test_sd_parent(struct sched_domain *sd, int flag)
{
	if (sd->parent && (sd->parent->flags & flag))
		return 1;

	return 0;
}

/*
 * Priority of a process goes from 0..MAX_PRIO-1, valid RT
 * priority is 0..MAX_RT_PRIO-1, and SCHED_NORMAL/SCHED_BATCH
@@ -2256,8 +2273,6 @@ __trace_special(void *__tr, void *__data,
extern long sched_setaffinity(pid_t pid, const struct cpumask *new_mask);
extern long sched_getaffinity(pid_t pid, struct cpumask *mask);

extern int sched_mc_power_savings, sched_smt_power_savings;

extern void normalize_rt_tasks(void);

#ifdef CONFIG_GROUP_SCHED
+2 −2
Original line number Diff line number Diff line
@@ -125,7 +125,7 @@ int arch_update_cpu_topology(void);
				| SD_WAKE_AFFINE	\
				| SD_WAKE_BALANCE	\
				| SD_SHARE_PKG_RESOURCES\
				| BALANCE_FOR_MC_POWER,	\
				| sd_balance_for_mc_power(),\
	.last_balance		= jiffies,		\
	.balance_interval	= 1,			\
}
@@ -150,7 +150,7 @@ int arch_update_cpu_topology(void);
				| SD_BALANCE_FORK	\
				| SD_WAKE_AFFINE	\
				| SD_WAKE_BALANCE	\
				| BALANCE_FOR_PKG_POWER,\
				| sd_balance_for_package_power(),\
	.last_balance		= jiffies,		\
	.balance_interval	= 1,			\
}