From: Borislav Petkov <bp@alien8.de>
To: Daniel Verkamp <dverkamp@chromium.org>, Tony Luck <tony.luck@intel.com>
Cc: x86@kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] x86: also disable FSRM if ERMS is disabled
Date: Tue, 11 Oct 2022 13:28:11 +0200 [thread overview]
Message-ID: <Y0VTS9qTF/GaMihP@zn.tnic> (raw)
In-Reply-To: <CABVzXAkO4pU+gpUcWOEWDw+W4id=1WEOgeP5+3tBG_LR6=oa=g@mail.gmail.com>
On Fri, Oct 07, 2022 at 11:08:45AM -0700, Daniel Verkamp wrote:
> We found that the IA32_MISC_ENABLE MSR setup was missing in the crosvm
> firmware boot path
Sounds like crazy virtualization stuff.
> However, I still think it would be appropriate to apply this patch or
> something like it, since there could be a CPU, microcode update, BIOS,
> etc. that clears this bit while still having the CPUID flags for FSRM
> and ERMS.
You mean that "something" would be so silly so as to clear the MSR but
leave the CPUID bits set?
That sounds like a bug in that "something".
> The Intel SDM says: "Software can disable fast-string operation by
> clearing the fast-string-enable bit (bit 0) of IA32_MISC_ENABLE MSR",
> so it's not an invalid configuration for this bit to be unset.
Dunno, did Intel folks think about clearing the respective CPUID bits
when exposing IA32_MISC_ENABLE[0] to software? Tony?
> Additionally, something like this avoids the problem by making the
> FSRM case jump directly to the REP MOVSB rather than falling through
> to the ERMS jump in the next instruction, which seems like basically
> free insurance (but if the FSRM flag gets used somewhere else in the
> future,
I can't follow here.
> having it set consistently with ERMS is probably still a good
> idea, per the original patch):
>
> diff --git a/arch/x86/lib/memmove_64.S b/arch/x86/lib/memmove_64.S
> index 724bbf83eb5b..8ac557409c7d 100644
> --- a/arch/x86/lib/memmove_64.S
> +++ b/arch/x86/lib/memmove_64.S
> @@ -38,7 +38,7 @@ SYM_FUNC_START(__memmove)
>
> /* FSRM implies ERMS => no length checks, do the copy directly */
> .Lmemmove_begin_forward:
> - ALTERNATIVE "cmp $0x20, %rdx; jb 1f", "", X86_FEATURE_FSRM
> + ALTERNATIVE "cmp $0x20, %rdx; jb 1f", "jmp .Lmemmove_erms",
> X86_FEATURE_FSRM
> ALTERNATIVE "", "jmp .Lmemmove_erms", X86_FEATURE_ERMS
>
> And hey, this means one less instruction to execute in the FSRM path. :)
What one less instruction? After patching and since we assume FSRM =>
ERMS, we have only the JMP there if both flags are set. If ERMS only is
set, then we do the length check.
And you need the second alternative call for !ERMS, i.e., old rust.
So yes, your proposal is to do this because we assume if FSRM, then ERMS
but your diff above doesn't make it more readable but less.
Or I'm missing something ofc.
--
Regards/Gruss,
Boris.
https://people.kernel.org/tglx/notes-about-netiquette
next prev parent reply other threads:[~2022-10-11 11:28 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-23 0:58 [PATCH] x86: also disable FSRM if ERMS is disabled Daniel Verkamp
2022-09-23 11:13 ` Borislav Petkov
2022-09-23 17:25 ` Daniel Verkamp
2022-09-23 17:51 ` Borislav Petkov
2022-10-07 18:08 ` Daniel Verkamp
2022-10-11 11:28 ` Borislav Petkov [this message]
2022-10-11 17:09 ` Luck, Tony
2022-10-11 17:52 ` Borislav Petkov
2022-10-11 19:08 ` Luck, Tony
2022-10-11 20:56 ` Borislav Petkov
2022-10-11 22:19 ` Luck, Tony
2022-10-11 22:59 ` Andrew Cooper
2023-01-04 7:43 ` Jiri Slaby
2023-01-04 11:39 ` Borislav Petkov
2023-01-14 9:19 ` Ingo Molnar
2023-01-14 9:58 ` Borislav Petkov
2023-01-16 5:26 ` Jiri Slaby
2023-01-16 21:17 ` Borislav Petkov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Y0VTS9qTF/GaMihP@zn.tnic \
--to=bp@alien8.de \
--cc=dverkamp@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tony.luck@intel.com \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox