Re: [patch V2 04/28] x86/speculation: Reorganize cpu_show_common()
On Sun, Nov 25, 2018 at 07:33:32PM +0100, Thomas Gleixner wrote: > The Spectre V2 printout in cpu_show_common() handles conditionals for the > various mitigation methods directly in the sprintf() argument list. That's > hard to read and will become unreadable if more complex decisions need to > be made for a particular method. > > Move the conditionals for STIBP and IBPB string selection into helper > functions, so they can be extended later on. > Yeeey! Reviewed-by: Konrad Rzeszutek Wilk Thank you! > Signed-off-by: Tim Chen > Signed-off-by: Thomas Gleixner > > --- > arch/x86/kernel/cpu/bugs.c | 20 ++-- > 1 file changed, 18 insertions(+), 2 deletions(-) > > --- a/arch/x86/kernel/cpu/bugs.c > +++ b/arch/x86/kernel/cpu/bugs.c > @@ -844,6 +844,22 @@ static ssize_t l1tf_show_state(char *buf > } > #endif > > +static char *stibp_state(void) > +{ > + if (x86_spec_ctrl_base & SPEC_CTRL_STIBP) > + return ", STIBP"; > + else > + return ""; > +} > + > +static char *ibpb_state(void) > +{ > + if (boot_cpu_has(X86_FEATURE_USE_IBPB)) > + return ", IBPB"; > + else > + return ""; > +} > + > static ssize_t cpu_show_common(struct device *dev, struct device_attribute > *attr, > char *buf, unsigned int bug) > { > @@ -865,9 +881,9 @@ static ssize_t cpu_show_common(struct de > > case X86_BUG_SPECTRE_V2: > return sprintf(buf, "%s%s%s%s%s%s\n", > spectre_v2_strings[spectre_v2_enabled], > -boot_cpu_has(X86_FEATURE_USE_IBPB) ? ", IBPB" : > "", > +ibpb_state(), > boot_cpu_has(X86_FEATURE_USE_IBRS_FW) ? ", > IBRS_FW" : "", > -(x86_spec_ctrl_base & SPEC_CTRL_STIBP) ? ", > STIBP" : "", > +stibp_state(), > boot_cpu_has(X86_FEATURE_RSB_CTXSW) ? ", RSB > filling" : "", > spectre_v2_module_string()); > > >
Re: [patch V2 04/28] x86/speculation: Reorganize cpu_show_common()
On Sun, Nov 25, 2018 at 07:33:32PM +0100, Thomas Gleixner wrote: > The Spectre V2 printout in cpu_show_common() handles conditionals for the > various mitigation methods directly in the sprintf() argument list. That's > hard to read and will become unreadable if more complex decisions need to > be made for a particular method. > > Move the conditionals for STIBP and IBPB string selection into helper > functions, so they can be extended later on. > > Signed-off-by: Tim Chen > Signed-off-by: Thomas Gleixner > > --- > arch/x86/kernel/cpu/bugs.c | 20 ++-- > 1 file changed, 18 insertions(+), 2 deletions(-) Just a nitpick: That subject should probably be more like: "x86/speculation: Move cpu_show_common() string generation in separate functions" or so, as it is not really reorganizing - just carving out functionality. -- Regards/Gruss, Boris. Good mailing practices for 400: avoid top-posting and trim the reply.
[patch V2 04/28] x86/speculation: Reorganize cpu_show_common()
The Spectre V2 printout in cpu_show_common() handles conditionals for the various mitigation methods directly in the sprintf() argument list. That's hard to read and will become unreadable if more complex decisions need to be made for a particular method. Move the conditionals for STIBP and IBPB string selection into helper functions, so they can be extended later on. Signed-off-by: Tim Chen Signed-off-by: Thomas Gleixner --- arch/x86/kernel/cpu/bugs.c | 20 ++-- 1 file changed, 18 insertions(+), 2 deletions(-) --- a/arch/x86/kernel/cpu/bugs.c +++ b/arch/x86/kernel/cpu/bugs.c @@ -844,6 +844,22 @@ static ssize_t l1tf_show_state(char *buf } #endif +static char *stibp_state(void) +{ + if (x86_spec_ctrl_base & SPEC_CTRL_STIBP) + return ", STIBP"; + else + return ""; +} + +static char *ibpb_state(void) +{ + if (boot_cpu_has(X86_FEATURE_USE_IBPB)) + return ", IBPB"; + else + return ""; +} + static ssize_t cpu_show_common(struct device *dev, struct device_attribute *attr, char *buf, unsigned int bug) { @@ -865,9 +881,9 @@ static ssize_t cpu_show_common(struct de case X86_BUG_SPECTRE_V2: return sprintf(buf, "%s%s%s%s%s%s\n", spectre_v2_strings[spectre_v2_enabled], - boot_cpu_has(X86_FEATURE_USE_IBPB) ? ", IBPB" : "", + ibpb_state(), boot_cpu_has(X86_FEATURE_USE_IBRS_FW) ? ", IBRS_FW" : "", - (x86_spec_ctrl_base & SPEC_CTRL_STIBP) ? ", STIBP" : "", + stibp_state(), boot_cpu_has(X86_FEATURE_RSB_CTXSW) ? ", RSB filling" : "", spectre_v2_module_string());