mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-15 23:25:07 +00:00
cpu/speculation: Uninline and export CPU mitigations helpers
commit 731dc9df97
upstream.
A kernel module may need to check the value of the "mitigations=" kernel
command line parameter as part of its setup when the module needs
to perform software mitigations for a CPU flaw.
Uninline and export the helper functions surrounding the cpu_mitigations
enum to allow for their usage from a module.
Lastly, privatize the enum and cpu_mitigations variable since the value of
cpu_mitigations can be checked with the exported helper functions.
Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
955607466a
commit
db5ae6596a
2 changed files with 28 additions and 24 deletions
|
@ -198,28 +198,7 @@ static inline int cpuhp_smt_enable(void) { return 0; }
|
||||||
static inline int cpuhp_smt_disable(enum cpuhp_smt_control ctrlval) { return 0; }
|
static inline int cpuhp_smt_disable(enum cpuhp_smt_control ctrlval) { return 0; }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
extern bool cpu_mitigations_off(void);
|
||||||
* These are used for a global "mitigations=" cmdline option for toggling
|
extern bool cpu_mitigations_auto_nosmt(void);
|
||||||
* optional CPU mitigations.
|
|
||||||
*/
|
|
||||||
enum cpu_mitigations {
|
|
||||||
CPU_MITIGATIONS_OFF,
|
|
||||||
CPU_MITIGATIONS_AUTO,
|
|
||||||
CPU_MITIGATIONS_AUTO_NOSMT,
|
|
||||||
};
|
|
||||||
|
|
||||||
extern enum cpu_mitigations cpu_mitigations;
|
|
||||||
|
|
||||||
/* mitigations=off */
|
|
||||||
static inline bool cpu_mitigations_off(void)
|
|
||||||
{
|
|
||||||
return cpu_mitigations == CPU_MITIGATIONS_OFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* mitigations=auto,nosmt */
|
|
||||||
static inline bool cpu_mitigations_auto_nosmt(void)
|
|
||||||
{
|
|
||||||
return cpu_mitigations == CPU_MITIGATIONS_AUTO_NOSMT;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* _LINUX_CPU_H_ */
|
#endif /* _LINUX_CPU_H_ */
|
||||||
|
|
27
kernel/cpu.c
27
kernel/cpu.c
|
@ -2282,7 +2282,18 @@ void __init boot_cpu_hotplug_init(void)
|
||||||
this_cpu_write(cpuhp_state.state, CPUHP_ONLINE);
|
this_cpu_write(cpuhp_state.state, CPUHP_ONLINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
enum cpu_mitigations cpu_mitigations __ro_after_init = CPU_MITIGATIONS_AUTO;
|
/*
|
||||||
|
* These are used for a global "mitigations=" cmdline option for toggling
|
||||||
|
* optional CPU mitigations.
|
||||||
|
*/
|
||||||
|
enum cpu_mitigations {
|
||||||
|
CPU_MITIGATIONS_OFF,
|
||||||
|
CPU_MITIGATIONS_AUTO,
|
||||||
|
CPU_MITIGATIONS_AUTO_NOSMT,
|
||||||
|
};
|
||||||
|
|
||||||
|
static enum cpu_mitigations cpu_mitigations __ro_after_init =
|
||||||
|
CPU_MITIGATIONS_AUTO;
|
||||||
|
|
||||||
static int __init mitigations_parse_cmdline(char *arg)
|
static int __init mitigations_parse_cmdline(char *arg)
|
||||||
{
|
{
|
||||||
|
@ -2299,3 +2310,17 @@ static int __init mitigations_parse_cmdline(char *arg)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
early_param("mitigations", mitigations_parse_cmdline);
|
early_param("mitigations", mitigations_parse_cmdline);
|
||||||
|
|
||||||
|
/* mitigations=off */
|
||||||
|
bool cpu_mitigations_off(void)
|
||||||
|
{
|
||||||
|
return cpu_mitigations == CPU_MITIGATIONS_OFF;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(cpu_mitigations_off);
|
||||||
|
|
||||||
|
/* mitigations=auto,nosmt */
|
||||||
|
bool cpu_mitigations_auto_nosmt(void)
|
||||||
|
{
|
||||||
|
return cpu_mitigations == CPU_MITIGATIONS_AUTO_NOSMT;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(cpu_mitigations_auto_nosmt);
|
||||||
|
|
Loading…
Reference in a new issue