diff mbox series

[tip:x86/pti] x86/speculation/l1tf: Drop the swap storage limit restriction when l1tf=off

Message ID tip-f4abaa98c4575cc06ea5e1a593e3bc2c8de8ef48@git.kernel.org (mailing list archive)
State New, archived
Headers show
Series [tip:x86/pti] x86/speculation/l1tf: Drop the swap storage limit restriction when l1tf=off | expand

Commit Message

tip-bot for Kobe Wu Dec. 10, 2018, 9:09 p.m. UTC
Commit-ID:  f4abaa98c4575cc06ea5e1a593e3bc2c8de8ef48
Gitweb:     https://git.kernel.org/tip/f4abaa98c4575cc06ea5e1a593e3bc2c8de8ef48
Author:     Michal Hocko <mhocko@suse.com>
AuthorDate: Tue, 13 Nov 2018 19:49:10 +0100
Committer:  Thomas Gleixner <tglx@linutronix.de>
CommitDate: Mon, 10 Dec 2018 22:07:02 +0100

x86/speculation/l1tf: Drop the swap storage limit restriction when l1tf=off

Swap storage is restricted to max_swapfile_size (~16TB on x86_64) whenever
the system is deemed affected by L1TF vulnerability. Even though the limit
is quite high for most deployments it seems to be too restrictive for
deployments which are willing to live with the mitigation disabled.

We have a customer to deploy 8x 6,4TB PCIe/NVMe SSD swap devices which is
clearly out of the limit.

Drop the swap restriction when l1tf=off is specified. It also doesn't make
much sense to warn about too much memory for the l1tf mitigation when it is
forcefully disabled by the administrator.

[ tglx: Folded the documentation delta change ]

Fixes: 377eeaa8e11f ("x86/speculation/l1tf: Limit swap file size to MAX_PA/2")
Signed-off-by: Michal Hocko <mhocko@suse.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Pavel Tatashin <pasha.tatashin@soleen.com>
Acked-by: Jiri Kosina <jkosina@suse.cz>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Dave Hansen <dave.hansen@intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: <linux-mm@kvack.org>
Cc: stable@vger.kernel.org
Link: https://lkml.kernel.org/r/20181113184910.26697-1-mhocko@kernel.org
---
 Documentation/admin-guide/kernel-parameters.txt | 3 +++
 Documentation/admin-guide/l1tf.rst              | 6 +++++-
 arch/x86/kernel/cpu/bugs.c                      | 3 ++-
 arch/x86/mm/init.c                              | 2 +-
 4 files changed, 11 insertions(+), 3 deletions(-)

Comments

Ingo Molnar Dec. 11, 2018, 9 a.m. UTC | #1
* tip-bot for Michal Hocko <tipbot@zytor.com> wrote:

> Commit-ID:  f4abaa98c4575cc06ea5e1a593e3bc2c8de8ef48
> Gitweb:     https://git.kernel.org/tip/f4abaa98c4575cc06ea5e1a593e3bc2c8de8ef48
> Author:     Michal Hocko <mhocko@suse.com>
> AuthorDate: Tue, 13 Nov 2018 19:49:10 +0100
> Committer:  Thomas Gleixner <tglx@linutronix.de>
> CommitDate: Mon, 10 Dec 2018 22:07:02 +0100
> 
> x86/speculation/l1tf: Drop the swap storage limit restriction when l1tf=off

> [ tglx: Folded the documentation delta change ]

> --- a/Documentation/admin-guide/kernel-parameters.txt
> +++ b/Documentation/admin-guide/kernel-parameters.txt
> @@ -2095,6 +2095,9 @@
>  			off
>  				Disables hypervisor mitigations and doesn't
>  				emit any warnings.
> +				It also drops the swap size and available
> +				RAM limit restriction on both hypervisor and
> +				bare metal.

>  
>  			Default is 'flush'.
>  
> diff --git a/Documentation/admin-guide/l1tf.rst b/Documentation/admin-guide/l1tf.rst
> index b85dd80510b0..2e65e6cb033e 100644
> --- a/Documentation/admin-guide/l1tf.rst
> +++ b/Documentation/admin-guide/l1tf.rst
> @@ -405,6 +405,9 @@ time with the option "l1tf=". The valid arguments for this option are:
>  
>    off		Disables hypervisor mitigations and doesn't emit any
>  		warnings.
> +		It also drops the swap size and available RAM limit restrictions
> +                on both hypervisor and bare metal.
> +

Note tha there's also some whitespace damage here: all other similar 
lines in this RST file start with two tabs, this one starts with 8 
spaces.

Thanks,

	Ingo
Thomas Gleixner Dec. 11, 2018, 10:47 a.m. UTC | #2
On Tue, 11 Dec 2018, Ingo Molnar wrote:
> >    off		Disables hypervisor mitigations and doesn't emit any
> >  		warnings.
> > +		It also drops the swap size and available RAM limit restrictions
> > +                on both hypervisor and bare metal.
> > +
> 
> Note tha there's also some whitespace damage here: all other similar 
> lines in this RST file start with two tabs, this one starts with 8 
> spaces.

Fixed...
Michal Hocko Dec. 11, 2018, 11:13 a.m. UTC | #3
On Tue 11-12-18 11:47:52, Thomas Gleixner wrote:
> On Tue, 11 Dec 2018, Ingo Molnar wrote:
> > >    off		Disables hypervisor mitigations and doesn't emit any
> > >  		warnings.
> > > +		It also drops the swap size and available RAM limit restrictions
> > > +                on both hypervisor and bare metal.
> > > +
> > 
> > Note tha there's also some whitespace damage here: all other similar 
> > lines in this RST file start with two tabs, this one starts with 8 
> > spaces.
> 
> Fixed...

Thanks Thomas! I haven't noticed a different whitespaces and relied on
whatever vim decided to do.
diff mbox series

Patch

diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index 05a252e5178d..835e422572eb 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -2095,6 +2095,9 @@ 
 			off
 				Disables hypervisor mitigations and doesn't
 				emit any warnings.
+				It also drops the swap size and available
+				RAM limit restriction on both hypervisor and
+				bare metal.
 
 			Default is 'flush'.
 
diff --git a/Documentation/admin-guide/l1tf.rst b/Documentation/admin-guide/l1tf.rst
index b85dd80510b0..2e65e6cb033e 100644
--- a/Documentation/admin-guide/l1tf.rst
+++ b/Documentation/admin-guide/l1tf.rst
@@ -405,6 +405,9 @@  time with the option "l1tf=". The valid arguments for this option are:
 
   off		Disables hypervisor mitigations and doesn't emit any
 		warnings.
+		It also drops the swap size and available RAM limit restrictions
+                on both hypervisor and bare metal.
+
   ============  =============================================================
 
 The default is 'flush'. For details about L1D flushing see :ref:`l1d_flush`.
@@ -576,7 +579,8 @@  Default mitigations
   The kernel default mitigations for vulnerable processors are:
 
   - PTE inversion to protect against malicious user space. This is done
-    unconditionally and cannot be controlled.
+    unconditionally and cannot be controlled. The swap storage is limited
+    to ~16TB.
 
   - L1D conditional flushing on VMENTER when EPT is enabled for
     a guest.
diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c
index a68b32cb845a..58689ac64440 100644
--- a/arch/x86/kernel/cpu/bugs.c
+++ b/arch/x86/kernel/cpu/bugs.c
@@ -1002,7 +1002,8 @@  static void __init l1tf_select_mitigation(void)
 #endif
 
 	half_pa = (u64)l1tf_pfn_limit() << PAGE_SHIFT;
-	if (e820__mapped_any(half_pa, ULLONG_MAX - half_pa, E820_TYPE_RAM)) {
+	if (l1tf_mitigation != L1TF_MITIGATION_OFF &&
+			e820__mapped_any(half_pa, ULLONG_MAX - half_pa, E820_TYPE_RAM)) {
 		pr_warn("System has more than MAX_PA/2 memory. L1TF mitigation not effective.\n");
 		pr_info("You may make it effective by booting the kernel with mem=%llu parameter.\n",
 				half_pa);
diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
index ef99f3892e1f..427a955a2cf2 100644
--- a/arch/x86/mm/init.c
+++ b/arch/x86/mm/init.c
@@ -931,7 +931,7 @@  unsigned long max_swapfile_size(void)
 
 	pages = generic_max_swapfile_size();
 
-	if (boot_cpu_has_bug(X86_BUG_L1TF)) {
+	if (boot_cpu_has_bug(X86_BUG_L1TF) && l1tf_mitigation != L1TF_MITIGATION_OFF) {
 		/* Limit the swap file size to MAX_PA/2 for L1TF workaround */
 		unsigned long long l1tf_limit = l1tf_pfn_limit();
 		/*