mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v2] x86/speculation/l1tf: Add KConfig for setting the L1D cache flush mode
@ 2020-07-02 21:38 Abhishek Bhardwaj
  2020-07-02 22:01 ` Randy Dunlap
  2020-07-08  6:58 ` Xiaoyao Li
  0 siblings, 2 replies; 4+ messages in thread
From: Abhishek Bhardwaj @ 2020-07-02 21:38 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, 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.

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

---

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

 arch/x86/kernel/cpu/bugs.c |  8 ++++++++
 arch/x86/kvm/Kconfig       | 17 +++++++++++++++++
 2 files changed, 25 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..d375dcedd447d 100644
--- a/arch/x86/kvm/Kconfig
+++ b/arch/x86/kvm/Kconfig
@@ -107,4 +107,21 @@ 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 && 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.
+
+# OK, it's a little counter-intuitive to do this, but it puts it neatly under
+# the virtualization menu.
+source "drivers/vhost/Kconfig"
+
 endif # VIRTUALIZATION
-- 
2.27.0.212.ge8ba1cc988-goog


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

* Re: [PATCH v2] x86/speculation/l1tf: Add KConfig for setting the L1D cache flush mode
  2020-07-02 21:38 [PATCH v2] x86/speculation/l1tf: Add KConfig for setting the L1D cache flush mode Abhishek Bhardwaj
@ 2020-07-02 22:01 ` Randy Dunlap
  2020-07-02 22:14   ` Abhishek Bhardwaj
  2020-07-08  6:58 ` Xiaoyao Li
  1 sibling, 1 reply; 4+ messages in thread
From: Randy Dunlap @ 2020-07-02 22:01 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, Paolo Bonzini, Pawan Gupta, Peter Zijlstra,
	Sean Christopherson, Thomas Gleixner, Tony Luck,
	Vitaly Kuznetsov, Waiman Long, Wanpeng Li, kvm, x86

Hi--

On 7/2/20 2:38 PM, Abhishek Bhardwaj wrote:
> This change adds a new kernel configuration that sets the l1d cache
> flush setting at compile time rather than at run time.
> 
> Signed-off-by: Abhishek Bhardwaj <abhishekbh@google.com>
> 
> ---
> 
> Changes in v2:
> - Fix typo in the help of the new KConfig.
> 
>  arch/x86/kernel/cpu/bugs.c |  8 ++++++++
>  arch/x86/kvm/Kconfig       | 17 +++++++++++++++++
>  2 files changed, 25 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..d375dcedd447d 100644
> --- a/arch/x86/kvm/Kconfig
> +++ b/arch/x86/kvm/Kconfig
> @@ -107,4 +107,21 @@ 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 && X86_64

Why does this apply only to KVM?

and the "X86 && X86_64" is more than is needed. Just "X86_64" alone
should be enough.


> +	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.
> +
> +# OK, it's a little counter-intuitive to do this, but it puts it neatly under
> +# the virtualization menu.
> +source "drivers/vhost/Kconfig"


I don't quite understand why this 'source' line is here.
Can you explain more about that, please?

It puts "VHOST drivers" in the menu 2 times, in 2 totally unrelated
places.  Seems like it could be confusing.

> +
>  endif # VIRTUALIZATION


-- 
~Randy


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

* Re: [PATCH v2] x86/speculation/l1tf: Add KConfig for setting the L1D cache flush mode
  2020-07-02 22:01 ` Randy Dunlap
@ 2020-07-02 22:14   ` Abhishek Bhardwaj
  0 siblings, 0 replies; 4+ messages in thread
From: Abhishek Bhardwaj @ 2020-07-02 22:14 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, Paolo Bonzini, Pawan Gupta, Peter Zijlstra,
	Sean Christopherson, Thomas Gleixner, Tony Luck,
	Vitaly Kuznetsov, Waiman Long, Wanpeng Li, kvm, x86

On Thu, Jul 2, 2020 at 3:01 PM Randy Dunlap <rdunlap@infradead.org> wrote:
>
> Hi--
>
> On 7/2/20 2:38 PM, Abhishek Bhardwaj wrote:
> > This change adds a new kernel configuration that sets the l1d cache
> > flush setting at compile time rather than at run time.
> >
> > Signed-off-by: Abhishek Bhardwaj <abhishekbh@google.com>
> >
> > ---
> >
> > Changes in v2:
> > - Fix typo in the help of the new KConfig.
> >
> >  arch/x86/kernel/cpu/bugs.c |  8 ++++++++
> >  arch/x86/kvm/Kconfig       | 17 +++++++++++++++++
> >  2 files changed, 25 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..d375dcedd447d 100644
> > --- a/arch/x86/kvm/Kconfig
> > +++ b/arch/x86/kvm/Kconfig
> > @@ -107,4 +107,21 @@ 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 && X86_64
>
> Why does this apply only to KVM?
Sorry, I don't know what this means. The runtime options this aims to
emulate applied to kvm driver.
Hence, this kernel config applies to KVM ?

>
> and the "X86 && X86_64" is more than is needed. Just "X86_64" alone
> should be enough.
Fixed in v3.

>
>
> > +     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.
> > +
> > +# OK, it's a little counter-intuitive to do this, but it puts it neatly under
> > +# the virtualization menu.
> > +source "drivers/vhost/Kconfig"
This was a bad copy paste. Removed in v3.
>
>
> I don't quite understand why this 'source' line is here.
> Can you explain more about that, please?
>
> It puts "VHOST drivers" in the menu 2 times, in 2 totally unrelated
> places.  Seems like it could be confusing.
>
> > +
> >  endif # VIRTUALIZATION
>
>
> --
> ~Randy
>


-- 
Abhishek

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

* Re: [PATCH v2] x86/speculation/l1tf: Add KConfig for setting the L1D cache flush mode
  2020-07-02 21:38 [PATCH v2] x86/speculation/l1tf: Add KConfig for setting the L1D cache flush mode Abhishek Bhardwaj
  2020-07-02 22:01 ` Randy Dunlap
@ 2020-07-08  6:58 ` Xiaoyao Li
  1 sibling, 0 replies; 4+ messages in thread
From: Xiaoyao Li @ 2020-07-08  6:58 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, Paolo Bonzini, Pawan Gupta, Peter Zijlstra,
	Sean Christopherson, Thomas Gleixner, Tony Luck,
	Vitaly Kuznetsov, Waiman Long, Wanpeng Li, kvm, x86

On 7/3/2020 5:38 AM, Abhishek Bhardwaj wrote:
> This change adds a new kernel configuration that sets the l1d cache
> flush setting at compile time rather than at run time.
> 
> Signed-off-by: Abhishek Bhardwaj <abhishekbh@google.com>
> 
> ---
> 
> Changes in v2:
> - Fix typo in the help of the new KConfig.
> 
>   arch/x86/kernel/cpu/bugs.c |  8 ++++++++
>   arch/x86/kvm/Kconfig       | 17 +++++++++++++++++
>   2 files changed, 25 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

how about

enum vmx_l1d_flush_state l1tf_vmx_mitigation =
#if (CONFIG_KVM_VMENTRY_L1D_FLUSH == 1)
	VMENTER_L1D_FLUSH_NEVER;
#elif (CONFIG_KVM_VMENTRY_L1D_FLUSH == 2)
	VMENTER_L1D_FLUSH_COND;
#elif (CONFIG_KVM_VMENTRY_L1D_FLUSH == 3)
	VMENTER_L1D_FLUSH_ALWAYS;
#else
	VMENTER_L1D_FLUSH_AUTO;
#endif



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

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

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-02 21:38 [PATCH v2] x86/speculation/l1tf: Add KConfig for setting the L1D cache flush mode Abhishek Bhardwaj
2020-07-02 22:01 ` Randy Dunlap
2020-07-02 22:14   ` Abhishek Bhardwaj
2020-07-08  6:58 ` Xiaoyao Li

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®