linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4] x86/speculation/l1tf: Add KConfig for setting the L1D cache flush mode
@ 2020-07-08 19:25 Abhishek Bhardwaj
  2020-07-08 19:34 ` Randy Dunlap
  0 siblings, 1 reply; 3+ messages in thread
From: Abhishek Bhardwaj @ 2020-07-08 19:25 UTC (permalink / raw)
  To: LKML
  Cc: Abhishek Bhardwaj, Anthony Steinhauser, Borislav Petkov,
	H. Peter Anvin, Ingo Molnar, Jim Mattson, Joerg Roedel,
	Josh Poimboeuf, Mark Gross, Mike Rapoport, Paolo Bonzini,
	Pawan Gupta, Peter Zijlstra, Sean Christopherson,
	Thomas Gleixner, Tony Luck, Vitaly Kuznetsov, Waiman Long,
	Wanpeng Li, kvm, x86

This change adds a new kernel configuration that sets the l1d cache
flush setting at compile time rather than at run time.

The reasons for this change are as follows -

 - Kernel command line arguments are getting unwieldy. These parameters
 are not a scalable way to set the kernel config. They're intended as a
 super limited way for the bootloader to pass info to the kernel and
 also as a way for end users who are not compiling the kernel themselves
 to tweak the kernel behavior.

 - Also, if a user wants this setting from the start. It's a definite
 smell that it deserves to be a compile time thing rather than adding
 extra code plus whatever miniscule time at runtime to pass an
 extra argument.

 - Finally, it doesn't preclude the runtime / kernel command line way.
 Users are free to use those as well.

Signed-off-by: Abhishek Bhardwaj <abhishekbh@google.com>

---

Changes in v4:
- Add motivation for the change in the commit message.

Changes in v3:
- Change depends on to only x86_64.
- Remove copy paste errors at the end of the KConfig.

Changes in v2:
- Fix typo in the help of the new KConfig.

 arch/x86/kernel/cpu/bugs.c |  8 ++++++++
 arch/x86/kvm/Kconfig       | 13 +++++++++++++
 2 files changed, 21 insertions(+)

diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c
index 0b71970d2d3d2..1dcc875cf5547 100644
--- a/arch/x86/kernel/cpu/bugs.c
+++ b/arch/x86/kernel/cpu/bugs.c
@@ -1406,7 +1406,15 @@ enum l1tf_mitigations l1tf_mitigation __ro_after_init = L1TF_MITIGATION_FLUSH;
 #if IS_ENABLED(CONFIG_KVM_INTEL)
 EXPORT_SYMBOL_GPL(l1tf_mitigation);
 #endif
+#if (CONFIG_KVM_VMENTRY_L1D_FLUSH == 1)
+enum vmx_l1d_flush_state l1tf_vmx_mitigation = VMENTER_L1D_FLUSH_NEVER;
+#elif (CONFIG_KVM_VMENTRY_L1D_FLUSH == 2)
+enum vmx_l1d_flush_state l1tf_vmx_mitigation = VMENTER_L1D_FLUSH_COND;
+#elif (CONFIG_KVM_VMENTRY_L1D_FLUSH == 3)
+enum vmx_l1d_flush_state l1tf_vmx_mitigation = VMENTER_L1D_FLUSH_ALWAYS;
+#else
 enum vmx_l1d_flush_state l1tf_vmx_mitigation = VMENTER_L1D_FLUSH_AUTO;
+#endif
 EXPORT_SYMBOL_GPL(l1tf_vmx_mitigation);
 
 /*
diff --git a/arch/x86/kvm/Kconfig b/arch/x86/kvm/Kconfig
index b277a2db62676..1f85374a0b812 100644
--- a/arch/x86/kvm/Kconfig
+++ b/arch/x86/kvm/Kconfig
@@ -107,4 +107,17 @@ config KVM_MMU_AUDIT
 	 This option adds a R/W kVM module parameter 'mmu_audit', which allows
 	 auditing of KVM MMU events at runtime.
 
+config KVM_VMENTRY_L1D_FLUSH
+	int "L1D cache flush settings (1-3)"
+	range 1 3
+	default "2"
+	depends on KVM && X86_64
+	help
+	 This setting determines the L1D cache flush behavior before a VMENTER.
+	 This is similar to setting the option / parameter to
+	 kvm-intel.vmentry_l1d_flush.
+	 1 - Never flush.
+	 2 - Conditionally flush.
+	 3 - Always flush.
+
 endif # VIRTUALIZATION
-- 
2.27.0.383.g050319c2ae-goog


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v4] x86/speculation/l1tf: Add KConfig for setting the L1D cache flush mode
  2020-07-08 19:25 [PATCH v4] x86/speculation/l1tf: Add KConfig for setting the L1D cache flush mode Abhishek Bhardwaj
@ 2020-07-08 19:34 ` Randy Dunlap
  2020-07-08 19:49   ` Abhishek Bhardwaj
  0 siblings, 1 reply; 3+ messages in thread
From: Randy Dunlap @ 2020-07-08 19:34 UTC (permalink / raw)
  To: Abhishek Bhardwaj, LKML
  Cc: Anthony Steinhauser, Borislav Petkov, H. Peter Anvin,
	Ingo Molnar, Jim Mattson, Joerg Roedel, Josh Poimboeuf,
	Mark Gross, Mike Rapoport, Paolo Bonzini, Pawan Gupta,
	Peter Zijlstra, Sean Christopherson, Thomas Gleixner, Tony Luck,
	Vitaly Kuznetsov, Waiman Long, Wanpeng Li, kvm, x86

Hi again,

On 7/8/20 12:25 PM, Abhishek Bhardwaj wrote:
> diff --git a/arch/x86/kvm/Kconfig b/arch/x86/kvm/Kconfig
> index b277a2db62676..1f85374a0b812 100644
> --- a/arch/x86/kvm/Kconfig
> +++ b/arch/x86/kvm/Kconfig
> @@ -107,4 +107,17 @@ config KVM_MMU_AUDIT
>  	 This option adds a R/W kVM module parameter 'mmu_audit', which allows
>  	 auditing of KVM MMU events at runtime.
>  
> +config KVM_VMENTRY_L1D_FLUSH
> +	int "L1D cache flush settings (1-3)"
> +	range 1 3
> +	default "2"
> +	depends on KVM && X86_64
> +	help
> +	 This setting determines the L1D cache flush behavior before a VMENTER.
> +	 This is similar to setting the option / parameter to
> +	 kvm-intel.vmentry_l1d_flush.
> +	 1 - Never flush.
> +	 2 - Conditionally flush.
> +	 3 - Always flush.
> +
>  endif # VIRTUALIZATION

If you do a v5, the help text lines (under "help") should be indented
with one tab + 2 spaces according to Documentation/process/coding-style.rst.

-- 
~Randy


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v4] x86/speculation/l1tf: Add KConfig for setting the L1D cache flush mode
  2020-07-08 19:34 ` Randy Dunlap
@ 2020-07-08 19:49   ` Abhishek Bhardwaj
  0 siblings, 0 replies; 3+ messages in thread
From: Abhishek Bhardwaj @ 2020-07-08 19:49 UTC (permalink / raw)
  To: Randy Dunlap
  Cc: LKML, Anthony Steinhauser, Borislav Petkov, H. Peter Anvin,
	Ingo Molnar, Jim Mattson, Joerg Roedel, Josh Poimboeuf,
	Mark Gross, Mike Rapoport, Paolo Bonzini, Pawan Gupta,
	Peter Zijlstra, Sean Christopherson, Thomas Gleixner, Tony Luck,
	Vitaly Kuznetsov, Waiman Long, Wanpeng Li, kvm, x86

On Wed, Jul 8, 2020 at 12:34 PM Randy Dunlap <rdunlap@infradead.org> wrote:
>
> Hi again,
>
> On 7/8/20 12:25 PM, Abhishek Bhardwaj wrote:
> > diff --git a/arch/x86/kvm/Kconfig b/arch/x86/kvm/Kconfig
> > index b277a2db62676..1f85374a0b812 100644
> > --- a/arch/x86/kvm/Kconfig
> > +++ b/arch/x86/kvm/Kconfig
> > @@ -107,4 +107,17 @@ config KVM_MMU_AUDIT
> >        This option adds a R/W kVM module parameter 'mmu_audit', which allows
> >        auditing of KVM MMU events at runtime.
> >
> > +config KVM_VMENTRY_L1D_FLUSH
> > +     int "L1D cache flush settings (1-3)"
> > +     range 1 3
> > +     default "2"
> > +     depends on KVM && X86_64
> > +     help
> > +      This setting determines the L1D cache flush behavior before a VMENTER.
> > +      This is similar to setting the option / parameter to
> > +      kvm-intel.vmentry_l1d_flush.
> > +      1 - Never flush.
> > +      2 - Conditionally flush.
> > +      3 - Always flush.
> > +
> >  endif # VIRTUALIZATION
>
> If you do a v5, the help text lines (under "help") should be indented
> with one tab + 2 spaces according to Documentation/process/coding-style.rst.

Apologies for missing this. Fixed in v5 -
https://lkml.org/lkml/2020/7/8/1369

>
> --
> ~Randy
>


-- 
Abhishek

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-07-08 19:49 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-08 19:25 [PATCH v4] x86/speculation/l1tf: Add KConfig for setting the L1D cache flush mode Abhishek Bhardwaj
2020-07-08 19:34 ` Randy Dunlap
2020-07-08 19:49   ` Abhishek Bhardwaj

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).