[MODERATED] Re: [PATCH 3/4] V7 more sampling fun 3

Josh Poimboeuf <[email protected]> Tue, 14 Apr 2020 15:02:37 -0500
Newsgroups org.kernel.lore.historical-speck
Message-ID <20200414200237.useaxfticfc4skqm@treble>
On Thu, Jan 16, 2020 at 02:16:07PM -0800, speck for mark gross wrote:
> +enum srbds_mitigations {
> +	SRBDS_MITIGATION_OFF,
> +	SRBDS_MITIGATION_UCODE_NEEDED,
> +	SRBDS_MITIGATION_FULL,
> +	SRBDS_MITIGATION_NOT_AFFECTED_TSX_OFF,
> +	SRBDS_MITIGATION_HYPERVISOR,
> +};
> +
> +static enum srbds_mitigations srbds_mitigation __ro_after_init = SRBDS_MITIGATION_FULL;
> +static const char * const srbds_strings[] = {
> +	[SRBDS_MITIGATION_OFF]			= "Vulnerable",
> +	[SRBDS_MITIGATION_UCODE_NEEDED]		= "Vulnerable: No microcode",
> +	[SRBDS_MITIGATION_FULL]			= "Mitigated: Microcode",

s/Mitigated/Mitigation/ for consistency with other issues

> +	[SRBDS_MITIGATION_NOT_AFFECTED_TSX_OFF]	= "Not affected (TSX disabled)",

The CPU *is* affected, it just happens to be mitigated, right?

Shouldn't it be SRBDS_MITIGATION_TSX_OFF and "Mitigation: TSX disabled"?


> @@ -1142,6 +1166,34 @@ static void __init cpu_set_bug_bits(struct cpuinfo_x86 *c)
>  	     (ia32_cap & ARCH_CAP_TSX_CTRL_MSR)))
>  		setup_force_cpu_bug(X86_BUG_TAA);
>  
> +	if (cpu_matches(SRBDS|SRBDS_IF_TSX, cpu_vuln_blacklist)) {
> +		/*
> +		 * Some parts on the list don't have RDRAND or RDSEED. Make sure
> +		 * they show as "Not affected".
> +		 */
> +		if (!cpu_has(c, X86_FEATURE_RDRAND) &&
> +		    !cpu_has(c, X86_FEATURE_RDSEED))
> +			goto srbds_not_affected;
> +		/*
> +		 * Parts in the blacklist that enumerate MDS_NO are only
> +		 * vulneralbe if TSX can be used.  To handle cases where TSX

"vulnerable"

> +		 * gets fused off check to see if TSX is fused off and thus not
> +		 * affected.
> +		 *
> +		 * When running with up to day microcode TSX_CTRL is only

"up-to-date"

> +		 * enumerated on parts where TSX fused on.

where TSX *is* fused on.

> +		 * When running with microcode not supporting TSX_CTRL we check
> +		 * for RTM

Missing period

> +		 */
> +		if ((ia32_cap & ARCH_CAP_MDS_NO) &&
> +		    !((ia32_cap & ARCH_CAP_TSX_CTRL_MSR) ||
> +		      cpu_has(c, X86_FEATURE_RTM)))
> +			goto srbds_not_affected;
> +
> +		setup_force_cpu_bug(X86_BUG_SRBDS);
> +	}
> +srbds_not_affected:
> +
>  	if (cpu_matches(NO_MELTDOWN, cpu_vuln_whitelist))
>  		return;

I'm thinking it would be more readable to have the newline between the
bracket and the 'if', instead of between the label and the 'if'.

-- 
Josh