From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl0-f72.google.com (mail-pl0-f72.google.com [209.85.160.72]) by kanga.kvack.org (Postfix) with ESMTP id 0DF426B0005 for ; Fri, 2 Mar 2018 16:32:25 -0500 (EST) Received: by mail-pl0-f72.google.com with SMTP id az5-v6so3026356plb.14 for ; Fri, 02 Mar 2018 13:32:25 -0800 (PST) Received: from mga03.intel.com (mga03.intel.com. [134.134.136.65]) by mx.google.com with ESMTPS id m24si4518132pgd.763.2018.03.02.13.32.23 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 02 Mar 2018 13:32:24 -0800 (PST) From: Tim Chen Subject: [PATCH 0/2] Backport IBPB on context switch to non-dumpable process Date: Fri, 2 Mar 2018 13:32:08 -0800 Message-Id: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: owner-linux-mm@kvack.org List-ID: To: stable@vger.kernel.org, Greg Kroah-Hartman Cc: Tim Chen , Andy Lutomirski , Nadav Amit , Thomas Gleixner , Andrew Morton , Arjan van de Ven , Borislav Petkov , Dave Hansen , Linus Torvalds , Mel Gorman , Peter Zijlstra , Rik van Riel , Ingo Molnar , David Woodhouse , ak@linux.intel.com, karahmed@amazon.de, pbonzini@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Greg, I will like to propose backporting "x86/speculation: Use Indirect Branch Prediction Barrier on context switch" from commit 18bf3c3e in upstream to 4.9 and 4.4 stable. The patch has already been ported to 4.14 and 4.15 stable. The patch needs mm context id that Andy added in commit f39681ed. I have lifted the mm context id change from Andy's upstream patch and included it here. Thanks. Tim Tim Chen (2): x86/mm: Give each mm a unique ID x86/speculation: Use Indirect Branch Prediction Barrier in context switch arch/x86/include/asm/mmu.h | 15 +++++++++++++-- arch/x86/include/asm/mmu_context.h | 5 +++++ arch/x86/include/asm/tlbflush.h | 2 ++ arch/x86/mm/tlb.c | 33 +++++++++++++++++++++++++++++++++ 4 files changed, 53 insertions(+), 2 deletions(-) -- 2.9.4 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl0-f72.google.com (mail-pl0-f72.google.com [209.85.160.72]) by kanga.kvack.org (Postfix) with ESMTP id 583E06B0008 for ; Fri, 2 Mar 2018 16:32:26 -0500 (EST) Received: by mail-pl0-f72.google.com with SMTP id f3-v6so5612448plf.18 for ; Fri, 02 Mar 2018 13:32:26 -0800 (PST) Received: from mga03.intel.com (mga03.intel.com. [134.134.136.65]) by mx.google.com with ESMTPS id m24si4518132pgd.763.2018.03.02.13.32.25 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 02 Mar 2018 13:32:25 -0800 (PST) From: Tim Chen Subject: [PATCH 1/2] x86/mm: Give each mm a unique ID Date: Fri, 2 Mar 2018 13:32:09 -0800 Message-Id: <3351ba53a3b570ba08f2a0f5a59d01b7d80a8955.1520026221.git.tim.c.chen@linux.intel.com> In-Reply-To: References: In-Reply-To: References: Sender: owner-linux-mm@kvack.org List-ID: To: stable@vger.kernel.org, Greg Kroah-Hartman Cc: Tim Chen , Andy Lutomirski , Nadav Amit , Thomas Gleixner , Andrew Morton , Arjan van de Ven , Borislav Petkov , Dave Hansen , Linus Torvalds , Mel Gorman , Peter Zijlstra , Rik van Riel , Ingo Molnar , David Woodhouse , ak@linux.intel.com, karahmed@amazon.de, pbonzini@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org From: Andy Lutomirski commit: f39681ed0f48498b80455095376f11535feea332 This adds a new variable to mmu_context_t: ctx_id. ctx_id uniquely identifies the mm_struct and will never be reused. Signed-off-by: Andy Lutomirski Reviewed-by: Nadav Amit Reviewed-by: Thomas Gleixner Cc: Andrew Morton Cc: Arjan van de Ven Cc: Borislav Petkov Cc: Dave Hansen Cc: Linus Torvalds Cc: Mel Gorman Cc: Peter Zijlstra Cc: Rik van Riel Cc: linux-mm@kvack.org Link: http://lkml.kernel.org/r/413a91c24dab3ed0caa5f4e4d017d87b0857f920.1498751203.git.luto@kernel.org Signed-off-by: Ingo Molnar Signed-off-by: Tim Chen --- arch/x86/include/asm/mmu.h | 15 +++++++++++++-- arch/x86/include/asm/mmu_context.h | 5 +++++ arch/x86/mm/tlb.c | 2 ++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/arch/x86/include/asm/mmu.h b/arch/x86/include/asm/mmu.h index 8b272a0..e2e0934 100644 --- a/arch/x86/include/asm/mmu.h +++ b/arch/x86/include/asm/mmu.h @@ -3,12 +3,18 @@ #include #include +#include /* - * The x86 doesn't have a mmu context, but - * we put the segment information here. + * x86 has arch-specific MMU state beyond what lives in mm_struct. */ typedef struct { + /* + * ctx_id uniquely identifies this mm_struct. A ctx_id will never + * be reused, and zero is not a valid ctx_id. + */ + u64 ctx_id; + #ifdef CONFIG_MODIFY_LDT_SYSCALL struct ldt_struct *ldt; #endif @@ -33,6 +39,11 @@ typedef struct { #endif } mm_context_t; +#define INIT_MM_CONTEXT(mm) \ + .context = { \ + .ctx_id = 1, \ + } + void leave_mm(int cpu); #endif /* _ASM_X86_MMU_H */ diff --git a/arch/x86/include/asm/mmu_context.h b/arch/x86/include/asm/mmu_context.h index d23e355..5a295bb 100644 --- a/arch/x86/include/asm/mmu_context.h +++ b/arch/x86/include/asm/mmu_context.h @@ -12,6 +12,9 @@ #include #include #include + +extern atomic64_t last_mm_ctx_id; + #ifndef CONFIG_PARAVIRT static inline void paravirt_activate_mm(struct mm_struct *prev, struct mm_struct *next) @@ -106,6 +109,8 @@ static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk) static inline int init_new_context(struct task_struct *tsk, struct mm_struct *mm) { + mm->context.ctx_id = atomic64_inc_return(&last_mm_ctx_id); + #ifdef CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS if (cpu_feature_enabled(X86_FEATURE_OSPKE)) { /* pkey 0 is the default and always allocated */ diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c index 578973a..fa74bf5 100644 --- a/arch/x86/mm/tlb.c +++ b/arch/x86/mm/tlb.c @@ -29,6 +29,8 @@ * Implement flush IPI by CALL_FUNCTION_VECTOR, Alex Shi */ +atomic64_t last_mm_ctx_id = ATOMIC64_INIT(1); + struct flush_tlb_info { struct mm_struct *flush_mm; unsigned long flush_start; -- 2.9.4 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl0-f71.google.com (mail-pl0-f71.google.com [209.85.160.71]) by kanga.kvack.org (Postfix) with ESMTP id 261376B0009 for ; Fri, 2 Mar 2018 16:32:30 -0500 (EST) Received: by mail-pl0-f71.google.com with SMTP id o61-v6so5651812pld.5 for ; Fri, 02 Mar 2018 13:32:30 -0800 (PST) Received: from mga03.intel.com (mga03.intel.com. [134.134.136.65]) by mx.google.com with ESMTPS id m24si4518132pgd.763.2018.03.02.13.32.26 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 02 Mar 2018 13:32:26 -0800 (PST) From: Tim Chen Subject: [PATCH 2/2] x86/speculation: Use Indirect Branch Prediction Barrier in context switch Date: Fri, 2 Mar 2018 13:32:10 -0800 Message-Id: In-Reply-To: References: In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: owner-linux-mm@kvack.org List-ID: To: stable@vger.kernel.org, Greg Kroah-Hartman Cc: Tim Chen , Andy Lutomirski , Nadav Amit , Thomas Gleixner , Andrew Morton , Arjan van de Ven , Borislav Petkov , Dave Hansen , Linus Torvalds , Mel Gorman , Peter Zijlstra , Rik van Riel , Ingo Molnar , David Woodhouse , ak@linux.intel.com, karahmed@amazon.de, pbonzini@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux@dominikbrodowski.net, gregkh@linux-foundation.org commit: 18bf3c3ea8ece8f03b6fc58508f2dfd23c7711c7 Flush indirect branches when switching into a process that marked itself non dumpable. This protects high value processes like gpg better, without having too high performance overhead. If done naA?vely, we could switch to a kernel idle thread and then back to the original process, such as: process A -> idle -> process A In such scenario, we do not have to do IBPB here even though the process is non-dumpable, as we are switching back to the same process after a hiatus. To avoid the redundant IBPB, which is expensive, we track the last mm user context ID. The cost is to have an extra u64 mm context id to track the last mm we were using before switching to the init_mm used by idle. Avoiding the extra IBPB is probably worth the extra memory for this common scenario. For those cases where tlb_defer_switch_to_init_mm() returns true (non PCID), lazy tlb will defer switch to init_mm, so we will not be changing the mm for the process A -> idle -> process A switch. So IBPB will be skipped for this case. Thanks to the reviewers and Andy Lutomirski for the suggestion of using ctx_id which got rid of the problem of mm pointer recycling. Signed-off-by: Tim Chen Signed-off-by: David Woodhouse Signed-off-by: Thomas Gleixner Cc: ak@linux.intel.com Cc: karahmed@amazon.de Cc: arjan@linux.intel.com Cc: torvalds@linux-foundation.org Cc: linux@dominikbrodowski.net Cc: peterz@infradead.org Cc: bp@alien8.de Cc: luto@kernel.org Cc: pbonzini@redhat.com Cc: gregkh@linux-foundation.org Link: https://lkml.kernel.org/r/1517263487-3708-1-git-send-email-dwmw@amazon.co.uk --- arch/x86/include/asm/tlbflush.h | 2 ++ arch/x86/mm/tlb.c | 31 +++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/arch/x86/include/asm/tlbflush.h b/arch/x86/include/asm/tlbflush.h index 94146f6..99185a0 100644 --- a/arch/x86/include/asm/tlbflush.h +++ b/arch/x86/include/asm/tlbflush.h @@ -68,6 +68,8 @@ static inline void invpcid_flush_all_nonglobals(void) struct tlb_state { struct mm_struct *active_mm; int state; + /* last user mm's ctx id */ + u64 last_ctx_id; /* * Access to this CR4 shadow and to H/W CR4 is protected by diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c index fa74bf5..eac92e2 100644 --- a/arch/x86/mm/tlb.c +++ b/arch/x86/mm/tlb.c @@ -10,6 +10,7 @@ #include #include +#include #include #include #include @@ -106,6 +107,28 @@ void switch_mm_irqs_off(struct mm_struct *prev, struct mm_struct *next, unsigned cpu = smp_processor_id(); if (likely(prev != next)) { + u64 last_ctx_id = this_cpu_read(cpu_tlbstate.last_ctx_id); + + /* + * Avoid user/user BTB poisoning by flushing the branch + * predictor when switching between processes. This stops + * one process from doing Spectre-v2 attacks on another. + * + * As an optimization, flush indirect branches only when + * switching into processes that disable dumping. This + * protects high value processes like gpg, without having + * too high performance overhead. IBPB is *expensive*! + * + * This will not flush branches when switching into kernel + * threads. It will also not flush if we switch to idle + * thread and back to the same process. It will flush if we + * switch to a different non-dumpable process. + */ + if (tsk && tsk->mm && + tsk->mm->context.ctx_id != last_ctx_id && + get_dumpable(tsk->mm) != SUID_DUMP_USER) + indirect_branch_prediction_barrier(); + if (IS_ENABLED(CONFIG_VMAP_STACK)) { /* * If our current stack is in vmalloc space and isn't @@ -120,6 +143,14 @@ void switch_mm_irqs_off(struct mm_struct *prev, struct mm_struct *next, set_pgd(pgd, init_mm.pgd[stack_pgd_index]); } + /* + * Record last user mm's context id, so we can avoid + * flushing branch buffer with IBPB if we switch back + * to the same user. + */ + if (next != &init_mm) + this_cpu_write(cpu_tlbstate.last_ctx_id, next->context.ctx_id); + this_cpu_write(cpu_tlbstate.state, TLBSTATE_OK); this_cpu_write(cpu_tlbstate.active_mm, next); -- 2.9.4 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr0-f197.google.com (mail-wr0-f197.google.com [209.85.128.197]) by kanga.kvack.org (Postfix) with ESMTP id 7C8A46B0003 for ; Sat, 3 Mar 2018 03:55:01 -0500 (EST) Received: by mail-wr0-f197.google.com with SMTP id d18so7938256wre.6 for ; Sat, 03 Mar 2018 00:55:01 -0800 (PST) Received: from mail.linuxfoundation.org (mail.linuxfoundation.org. [140.211.169.12]) by mx.google.com with ESMTPS id b81si1905545wmd.97.2018.03.03.00.54.59 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 03 Mar 2018 00:54:59 -0800 (PST) Date: Sat, 3 Mar 2018 09:54:54 +0100 From: Greg Kroah-Hartman Subject: Re: [PATCH 0/2] Backport IBPB on context switch to non-dumpable process Message-ID: <20180303085454.GA23988@kroah.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Sender: owner-linux-mm@kvack.org List-ID: To: Tim Chen Cc: stable@vger.kernel.org, Andy Lutomirski , Nadav Amit , Thomas Gleixner , Andrew Morton , Arjan van de Ven , Borislav Petkov , Dave Hansen , Linus Torvalds , Mel Gorman , Peter Zijlstra , Rik van Riel , Ingo Molnar , David Woodhouse , ak@linux.intel.com, karahmed@amazon.de, pbonzini@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org On Fri, Mar 02, 2018 at 01:32:08PM -0800, Tim Chen wrote: > Greg, > > I will like to propose backporting "x86/speculation: Use Indirect Branch > Prediction Barrier on context switch" from commit 18bf3c3e in upstream > to 4.9 and 4.4 stable. The patch has already been ported to 4.14 and > 4.15 stable. The patch needs mm context id that Andy added in commit > f39681ed. I have lifted the mm context id change from Andy's upstream > patch and included it here. What does this patch "fix" in those older kernels? Is this a performance improvement or something else? thanks, greg k-h -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qk0-f198.google.com (mail-qk0-f198.google.com [209.85.220.198]) by kanga.kvack.org (Postfix) with ESMTP id 477A86B0003 for ; Sat, 3 Mar 2018 06:38:05 -0500 (EST) Received: by mail-qk0-f198.google.com with SMTP id 13so9821171qkg.23 for ; Sat, 03 Mar 2018 03:38:05 -0800 (PST) Received: from smtp-fw-4101.amazon.com (smtp-fw-4101.amazon.com. [72.21.198.25]) by mx.google.com with ESMTPS id o3si9005406qto.302.2018.03.03.03.38.03 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 03 Mar 2018 03:38:04 -0800 (PST) Content-Type: multipart/mixed; boundary="===============7353256177094947470==" MIME-Version: 1.0 From: "Woodhouse, David" Subject: Re: [PATCH 0/2] Backport IBPB on context switch to non-dumpable process Date: Sat, 3 Mar 2018 11:37:56 +0000 Message-ID: <1520077075.7929.4.camel@amazon.co.uk> References: <20180303085454.GA23988@kroah.com> In-Reply-To: <20180303085454.GA23988@kroah.com> MIME-Version: 1.0 Sender: owner-linux-mm@kvack.org List-ID: To: "gregkh@linuxfoundation.org" , "tim.c.chen@linux.intel.com" Cc: "mingo@kernel.org" , "peterz@infradead.org" , "arjan@linux.intel.com" , "Raslan, KarimAllah" , "torvalds@linux-foundation.org" , "tglx@linutronix.de" , "linux-mm@kvack.org" , "nadav.amit@gmail.com" , "linux-kernel@vger.kernel.org" , "stable@vger.kernel.org" , "ak@linux.intel.com" , "akpm@linux-foundation.org" , "riel@redhat.com" , "luto@kernel.org" , "pbonzini@redhat.com" , "bp@alien8.de" , "dave.hansen@intel.com" , "mgorman@suse.de" --===============7353256177094947470== Content-Language: en-US Content-Type: multipart/signed; micalg=sha-256; protocol="application/x-pkcs7-signature"; boundary="=-Z7kEP2drWRt5Nh7dR/J8" --=-Z7kEP2drWRt5Nh7dR/J8 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, 2018-03-03 at 09:54 +0100, Greg Kroah-Hartman wrote: > On Fri, Mar 02, 2018 at 01:32:08PM -0800, Tim Chen wrote: > >=20 > > Greg, > >=20 > > I will like to propose backporting "x86/speculation: Use Indirect Branc= h > > Prediction Barrier on context switch" from commit 18bf3c3e in upstream > > to 4.9 and 4.4 stable.=C2=A0=C2=A0The patch has already been ported to = 4.14 and > > 4.15 stable.=C2=A0=C2=A0The patch needs mm context id that Andy added i= n commit > > f39681ed. I have lifted the mm context id change from Andy's upstream > > patch and included it here. > > What does this patch "fix" in those older kernels?=C2=A0=C2=A0Is this a > performance improvement or something else? It's part of the Spectre variant 2 mitigation =E2=80=94 a full flush of the branch prediction on context switch to a sensitive=C2=B9 process. It was th= e one I called out as "needs more attention" when I did the rest of the retpoline etc backportingk, and Tim has now fixed it up. (Thanks). =C2=B9 for now, "sensitive" means non-dumpable. This isn't perfect but it's a reasonable approximation for now; it would be too expensive to do it on *every* context switch. And for your purposes, the important part is that it's what's upstream. --=-Z7kEP2drWRt5Nh7dR/J8 Content-Type: application/x-pkcs7-signature; name="smime.p7s" Content-Disposition: attachment; filename="smime.p7s" Content-Transfer-Encoding: base64 MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCCEE4w ggUuMIIEFqADAgECAhEApEtL31g6H7ROXdOiQnA9RjANBgkqhkiG9w0BAQsFADCBlzELMAkGA1UE BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxPTA7BgNVBAMTNENPTU9ETyBSU0EgQ2xpZW50IEF1dGhl bnRpY2F0aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0EwHhcNMTcxMjIxMDAwMDAwWhcNMTgxMjIxMjM1 OTU5WjAiMSAwHgYJKoZIhvcNAQkBFhFkd213QGFtYXpvbi5jby51azCCASIwDQYJKoZIhvcNAQEB BQADggEPADCCAQoCggEBAKdGKgXuwKMg2r+i/4BZZC0ddRxNq3xIKTakie/VCSzoO7P17A36ZzUc VMEYPfqDt/65xoc6Tdih+qkY2pNDppZ1DZ8mVrAX6O2O60ZhmXB60wMoDvXPZInvkMOW4drqnje/ 7/NOypn/XQAY+ln4KT+3tHG3TfryyJFMedqC/r29KJlCeeCxIzdtq2j5mN42tvPVv4+p+Kr77uui GOASNdFJbNdgx7UGF+il6kRGSle17LJZKMgRiLJXYjECwnGwdfLdN5SINWD5IC3yXY8d14Bq6DyD jNts1DFw+SKhW8kVFYRZpv7TE3/42QJKQVL6YWka5T4EJO7AD3gy2ypRsd8CAwEAAaOCAecwggHj MB8GA1UdIwQYMBaAFIKvbIz4xf6WYXzoHz0rcUhexIvAMB0GA1UdDgQWBBT/vhvBExl2wDr8f50u b+0yzFyZRjAOBgNVHQ8BAf8EBAMCBaAwDAYDVR0TAQH/BAIwADAgBgNVHSUEGTAXBggrBgEFBQcD BAYLKwYBBAGyMQEDBQIwEQYJYIZIAYb4QgEBBAQDAgUgMEYGA1UdIAQ/MD0wOwYMKwYBBAGyMQEC AQEBMCswKQYIKwYBBQUHAgEWHWh0dHBzOi8vc2VjdXJlLmNvbW9kby5uZXQvQ1BTMFoGA1UdHwRT MFEwT6BNoEuGSWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL0NPTU9ET1JTQUNsaWVudEF1dGhlbnRp Y2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcmwwgYsGCCsGAQUFBwEBBH8wfTBVBggrBgEFBQcwAoZJ aHR0cDovL2NydC5jb21vZG9jYS5jb20vQ09NT0RPUlNBQ2xpZW50QXV0aGVudGljYXRpb25hbmRT ZWN1cmVFbWFpbENBLmNydDAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMBwG A1UdEQQVMBOBEWR3bXdAYW1hem9uLmNvLnVrMA0GCSqGSIb3DQEBCwUAA4IBAQCK2HofespbCaDu udwwfh8GxDpVUnVbZZVWScpZMxfYpXzLot7L6iZrr16oMQ+UOiDDAK6/D3+u2QN8u0lJ6yLKVmvh lGOzDywGsyG2Ohy8Dt5jcEK5sz84OsPtrRH7ahZHLxYPhWlUKOjOPN6sb9h6uMYlXmG/KmAr2rwF exN6Zrwh6YwF7ukuMs175YcNyYRdB8kVYq3WikfbTHOoRbJiu9Unw7LqnvPTfx+xUvD6aN2CKLtr mactWbk98swNgbI18UWjfEpugvAqw09CDLjeq7N1v0SkUkQEDqGSUE+hKFryTNXtZ6zOfl+MQfD8 U7T5oJa34DmWXK9+x7dl+MrqMIIFLjCCBBagAwIBAgIRAKRLS99YOh+0Tl3TokJwPUYwDQYJKoZI hvcNAQELBQAwgZcxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO BgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMT0wOwYDVQQDEzRDT01P RE8gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTE3MTIy MTAwMDAwMFoXDTE4MTIyMTIzNTk1OVowIjEgMB4GCSqGSIb3DQEJARYRZHdtd0BhbWF6b24uY28u dWswggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCnRioF7sCjINq/ov+AWWQtHXUcTat8 SCk2pInv1Qks6Duz9ewN+mc1HFTBGD36g7f+ucaHOk3YofqpGNqTQ6aWdQ2fJlawF+jtjutGYZlw etMDKA71z2SJ75DDluHa6p43v+/zTsqZ/10AGPpZ+Ck/t7Rxt0368siRTHnagv69vSiZQnngsSM3 bato+ZjeNrbz1b+Pqfiq++7rohjgEjXRSWzXYMe1BhfopepERkpXteyyWSjIEYiyV2IxAsJxsHXy 3TeUiDVg+SAt8l2PHdeAaug8g4zbbNQxcPkioVvJFRWEWab+0xN/+NkCSkFS+mFpGuU+BCTuwA94 MtsqUbHfAgMBAAGjggHnMIIB4zAfBgNVHSMEGDAWgBSCr2yM+MX+lmF86B89K3FIXsSLwDAdBgNV HQ4EFgQU/74bwRMZdsA6/H+dLm/tMsxcmUYwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAw IAYDVR0lBBkwFwYIKwYBBQUHAwQGCysGAQQBsjEBAwUCMBEGCWCGSAGG+EIBAQQEAwIFIDBGBgNV HSAEPzA9MDsGDCsGAQQBsjEBAgEBATArMCkGCCsGAQUFBwIBFh1odHRwczovL3NlY3VyZS5jb21v ZG8ubmV0L0NQUzBaBgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01P RE9SU0FDbGllbnRBdXRoZW50aWNhdGlvbmFuZFNlY3VyZUVtYWlsQ0EuY3JsMIGLBggrBgEFBQcB AQR/MH0wVQYIKwYBBQUHMAKGSWh0dHA6Ly9jcnQuY29tb2RvY2EuY29tL0NPTU9ET1JTQUNsaWVu dEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcnQwJAYIKwYBBQUHMAGGGGh0dHA6Ly9v Y3NwLmNvbW9kb2NhLmNvbTAcBgNVHREEFTATgRFkd213QGFtYXpvbi5jby51azANBgkqhkiG9w0B AQsFAAOCAQEAith6H3rKWwmg7rncMH4fBsQ6VVJ1W2WVVknKWTMX2KV8y6Ley+oma69eqDEPlDog wwCuvw9/rtkDfLtJSesiylZr4ZRjsw8sBrMhtjocvA7eY3BCubM/ODrD7a0R+2oWRy8WD4VpVCjo zjzerG/YerjGJV5hvypgK9q8BXsTema8IemMBe7pLjLNe+WHDcmEXQfJFWKt1opH20xzqEWyYrvV J8Oy6p7z038fsVLw+mjdgii7a5mnLVm5PfLMDYGyNfFFo3xKboLwKsNPQgy43quzdb9EpFJEBA6h klBPoSha8kzV7Weszn5fjEHw/FO0+aCWt+A5llyvfse3ZfjK6jCCBeYwggPOoAMCAQICEGqb4Tg7 /ytrnwHV2binUlYwDQYJKoZIhvcNAQEMBQAwgYUxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVh dGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1p dGVkMSswKQYDVQQDEyJDT01PRE8gUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDEx MDAwMDAwMFoXDTI4MDEwOTIzNTk1OVowgZcxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVy IE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVk MT0wOwYDVQQDEzRDT01PRE8gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVt YWlsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvrOeV6wodnVAFsc4A5jTxhh2 IVDzJXkLTLWg0X06WD6cpzEup/Y0dtmEatrQPTRI5Or1u6zf+bGBSyD9aH95dDSmeny1nxdlYCeX IoymMv6pQHJGNcIDpFDIMypVpVSRsivlJTRENf+RKwrB6vcfWlP8dSsE3Rfywq09N0ZfxcBa39V0 wsGtkGWC+eQKiz4pBZYKjrc5NOpG9qrxpZxyb4o4yNNwTqzaaPpGRqXB7IMjtf7tTmU2jqPMLxFN e1VXj9XB1rHvbRikw8lBoNoSWY66nJN/VCJv5ym6Q0mdCbDKCMPybTjoNCQuelc0IAaO4nLUXk0B OSxSxt8kCvsUtQIDAQABo4IBPDCCATgwHwYDVR0jBBgwFoAUu69+Aj36pvE8hI6t7jiY7NkyMtQw HQYDVR0OBBYEFIKvbIz4xf6WYXzoHz0rcUhexIvAMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8E CDAGAQH/AgEAMBEGA1UdIAQKMAgwBgYEVR0gADBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vY3Js LmNvbW9kb2NhLmNvbS9DT01PRE9SU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBxBggrBgEF BQcBAQRlMGMwOwYIKwYBBQUHMAKGL2h0dHA6Ly9jcnQuY29tb2RvY2EuY29tL0NPTU9ET1JTQUFk ZFRydXN0Q0EuY3J0MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21vZG9jYS5jb20wDQYJKoZI hvcNAQEMBQADggIBAHhcsoEoNE887l9Wzp+XVuyPomsX9vP2SQgG1NgvNc3fQP7TcePo7EIMERoh 42awGGsma65u/ITse2hKZHzT0CBxhuhb6txM1n/y78e/4ZOs0j8CGpfb+SJA3GaBQ+394k+z3ZBy WPQedXLL1OdK8aRINTsjk/H5Ns77zwbjOKkDamxlpZ4TKSDMKVmU/PUWNMKSTvtlenlxBhh7ETrN 543j/Q6qqgCWgWuMAXijnRglp9fyadqGOncjZjaaSOGTTFB+E2pvOUtY+hPebuPtTbq7vODqzCM6 ryEhNhzf+enm0zlpXK7q332nXttNtjv7VFNYG+I31gnMrwfHM5tdhYF/8v5UY5g2xANPECTQdu9v WPoqNSGDt87b3gXb1AiGGaI06vzgkejL580ul+9hz9D0S0U4jkhJiA7EuTecP/CFtR72uYRBcunw wH3fciPjviDDAI9SnC/2aPY8ydehzuZutLbZdRJ5PDEJM/1tyZR2niOYihZ+FCbtf3D9mB12D4ln 9icgc7CwaxpNSCPt8i/GqK2HsOgkL3VYnwtx7cJUmpvVdZ4ognzgXtgtdk3ShrtOS1iAN2ZBXFiR mjVzmehoMof06r1xub+85hFQzVxZx5/bRaTKTlL8YXLI8nAbR9HWdFqzcOoB/hxfEyIQpx9/s81r gzdEZOofSlZHynoSMYIDyjCCA8YCAQEwga0wgZcxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVh dGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1p dGVkMT0wOwYDVQQDEzRDT01PRE8gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJl IEVtYWlsIENBAhEApEtL31g6H7ROXdOiQnA9RjANBglghkgBZQMEAgEFAKCCAe0wGAYJKoZIhvcN AQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTgwMzAzMTEzNzU1WjAvBgkqhkiG9w0B CQQxIgQgBWWrtY9EBlqJhnhiaNCBz+sQJa7lnFpdrFJ4wh5z/4Awgb4GCSsGAQQBgjcQBDGBsDCB rTCBlzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMH U2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxPTA7BgNVBAMTNENPTU9ETyBSU0Eg Q2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0ECEQCkS0vfWDoftE5d06JC cD1GMIHABgsqhkiG9w0BCRACCzGBsKCBrTCBlzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0 ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0 ZWQxPTA7BgNVBAMTNENPTU9ETyBSU0EgQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBTZWN1cmUg RW1haWwgQ0ECEQCkS0vfWDoftE5d06JCcD1GMA0GCSqGSIb3DQEBAQUABIIBAGbuJ8pKIFvfst78 3z7n+2a6KNZwV0qclJIR1qs+cauT2uNWEDNfFf1ynMYJhxlspkGYm6X/xtK5lmyvLC2Ex936bxaQ NHJfQsTD1hOXfGPoI3hd2SbLWTznI3IHlLYgs+PeByIodL0FG5nKIkaIMUUWLMdFwv2LnPAjX1I/ XZRyB3+uG7iEZL5aBZzHAR+j4J9/EXmhGpo1p96LwNhCi1GSppcT79aPybumTIQK5mFjrOd3gPHQ 92PyHMK+rQKNzdLNaUc//6s42ygl4QIsuagzJEm/3j3QBb7wL8k/cBHdcs8wMtvHZH1IhgYMwNUT dAoQrPSHx2uRrlPjNb8WdIoAAAAAAAA= --=-Z7kEP2drWRt5Nh7dR/J8-- --===============7353256177094947470== Content-Type: multipart/alternative; boundary="===============3329041558673815841==" MIME-Version: 1.0 Content-Disposition: inline --===============3329041558673815841== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Amazon Web Services UK Limited. Registered in England and Wales with regist= ration number 08650665 with its registered office at 1 Principal Place, Wor= ship Street, London, EC2A 2FA, United Kingdom. --===============3329041558673815841== Content-Type: text/html; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable


Amazon Web Services UK Limited. Registered in England and Wales= with registration number 08650665 with its registered office at 1 Principa= l Place, Worship Street, London, EC2A 2FA, United Kingdom.


--===============3329041558673815841==-- --===============7353256177094947470==-- -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr0-f200.google.com (mail-wr0-f200.google.com [209.85.128.200]) by kanga.kvack.org (Postfix) with ESMTP id 1DBEC6B0008 for ; Wed, 7 Mar 2018 12:30:38 -0500 (EST) Received: by mail-wr0-f200.google.com with SMTP id j21so1652662wre.20 for ; Wed, 07 Mar 2018 09:30:38 -0800 (PST) Received: from mail.linuxfoundation.org (mail.linuxfoundation.org. [140.211.169.12]) by mx.google.com with ESMTPS id h30si14267775wrh.247.2018.03.07.09.30.36 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Mar 2018 09:30:36 -0800 (PST) Date: Wed, 7 Mar 2018 09:30:36 -0800 From: Greg Kroah-Hartman Subject: Re: [PATCH 1/2] x86/mm: Give each mm a unique ID Message-ID: <20180307173036.GJ7097@kroah.com> References: <3351ba53a3b570ba08f2a0f5a59d01b7d80a8955.1520026221.git.tim.c.chen@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3351ba53a3b570ba08f2a0f5a59d01b7d80a8955.1520026221.git.tim.c.chen@linux.intel.com> Sender: owner-linux-mm@kvack.org List-ID: To: Tim Chen Cc: stable@vger.kernel.org, Andy Lutomirski , Nadav Amit , Thomas Gleixner , Andrew Morton , Arjan van de Ven , Borislav Petkov , Dave Hansen , Linus Torvalds , Mel Gorman , Peter Zijlstra , Rik van Riel , Ingo Molnar , David Woodhouse , ak@linux.intel.com, karahmed@amazon.de, pbonzini@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org On Fri, Mar 02, 2018 at 01:32:09PM -0800, Tim Chen wrote: > From: Andy Lutomirski > commit: f39681ed0f48498b80455095376f11535feea332 > > This adds a new variable to mmu_context_t: ctx_id. > ctx_id uniquely identifies the mm_struct and will never be reused. > > Signed-off-by: Andy Lutomirski > Reviewed-by: Nadav Amit > Reviewed-by: Thomas Gleixner > Cc: Andrew Morton > Cc: Arjan van de Ven > Cc: Borislav Petkov > Cc: Dave Hansen > Cc: Linus Torvalds > Cc: Mel Gorman > Cc: Peter Zijlstra > Cc: Rik van Riel > Cc: linux-mm@kvack.org > Link: http://lkml.kernel.org/r/413a91c24dab3ed0caa5f4e4d017d87b0857f920.1498751203.git.luto@kernel.org > Signed-off-by: Ingo Molnar > Signed-off-by: Tim Chen > --- > arch/x86/include/asm/mmu.h | 15 +++++++++++++-- > arch/x86/include/asm/mmu_context.h | 5 +++++ > arch/x86/mm/tlb.c | 2 ++ > 3 files changed, 20 insertions(+), 2 deletions(-) > Does not apply to 4.4.y :( Can you provide a working backport for that tree? thanks, greg k-h -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr0-f200.google.com (mail-wr0-f200.google.com [209.85.128.200]) by kanga.kvack.org (Postfix) with ESMTP id E85096B000A for ; Wed, 7 Mar 2018 12:32:03 -0500 (EST) Received: by mail-wr0-f200.google.com with SMTP id h33so1653765wrh.10 for ; Wed, 07 Mar 2018 09:32:03 -0800 (PST) Received: from mail.linuxfoundation.org (mail.linuxfoundation.org. [140.211.169.12]) by mx.google.com with ESMTPS id e5si4364979wrd.9.2018.03.07.09.32.02 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Mar 2018 09:32:02 -0800 (PST) Date: Wed, 7 Mar 2018 09:32:02 -0800 From: Greg Kroah-Hartman Subject: Re: [PATCH 0/2] Backport IBPB on context switch to non-dumpable process Message-ID: <20180307173202.GK7097@kroah.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Sender: owner-linux-mm@kvack.org List-ID: To: Tim Chen Cc: stable@vger.kernel.org, Andy Lutomirski , Nadav Amit , Thomas Gleixner , Andrew Morton , Arjan van de Ven , Borislav Petkov , Dave Hansen , Linus Torvalds , Mel Gorman , Peter Zijlstra , Rik van Riel , Ingo Molnar , David Woodhouse , ak@linux.intel.com, karahmed@amazon.de, pbonzini@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org On Fri, Mar 02, 2018 at 01:32:08PM -0800, Tim Chen wrote: > Greg, > > I will like to propose backporting "x86/speculation: Use Indirect Branch > Prediction Barrier on context switch" from commit 18bf3c3e in upstream > to 4.9 and 4.4 stable. The patch has already been ported to 4.14 and > 4.15 stable. The patch needs mm context id that Andy added in commit > f39681ed. I have lifted the mm context id change from Andy's upstream > patch and included it here. Applied to 4.9.y, but I need a separate set of patches for 4.4.y in order for them to work there. Can you provide that? thanks, greg k-h -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl0-f72.google.com (mail-pl0-f72.google.com [209.85.160.72]) by kanga.kvack.org (Postfix) with ESMTP id CC0486B0007 for ; Thu, 8 Mar 2018 13:23:23 -0500 (EST) Received: by mail-pl0-f72.google.com with SMTP id h61-v6so3164475pld.3 for ; Thu, 08 Mar 2018 10:23:23 -0800 (PST) Received: from mga18.intel.com (mga18.intel.com. [134.134.136.126]) by mx.google.com with ESMTPS id s61-v6si15043750plb.381.2018.03.08.10.23.22 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 08 Mar 2018 10:23:22 -0800 (PST) Subject: Re: [PATCH 1/2] x86/mm: Give each mm a unique ID References: <3351ba53a3b570ba08f2a0f5a59d01b7d80a8955.1520026221.git.tim.c.chen@linux.intel.com> <20180307173036.GJ7097@kroah.com> From: Tim Chen Message-ID: <9b0d1195-23bd-5bf9-0dd8-b2ca29165bbb@linux.intel.com> Date: Thu, 8 Mar 2018 10:23:21 -0800 MIME-Version: 1.0 In-Reply-To: <20180307173036.GJ7097@kroah.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: owner-linux-mm@kvack.org List-ID: To: Greg Kroah-Hartman Cc: stable@vger.kernel.org, Andy Lutomirski , Nadav Amit , Thomas Gleixner , Andrew Morton , Arjan van de Ven , Borislav Petkov , Dave Hansen , Linus Torvalds , Mel Gorman , Peter Zijlstra , Rik van Riel , Ingo Molnar , David Woodhouse , ak@linux.intel.com, karahmed@amazon.de, pbonzini@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org On 03/07/2018 09:30 AM, Greg Kroah-Hartman wrote: > On Fri, Mar 02, 2018 at 01:32:09PM -0800, Tim Chen wrote: >> From: Andy Lutomirski >> commit: f39681ed0f48498b80455095376f11535feea332 >> >> This adds a new variable to mmu_context_t: ctx_id. >> ctx_id uniquely identifies the mm_struct and will never be reused. >> >> Signed-off-by: Andy Lutomirski >> Reviewed-by: Nadav Amit >> Reviewed-by: Thomas Gleixner >> Cc: Andrew Morton >> Cc: Arjan van de Ven >> Cc: Borislav Petkov >> Cc: Dave Hansen >> Cc: Linus Torvalds >> Cc: Mel Gorman >> Cc: Peter Zijlstra >> Cc: Rik van Riel >> Cc: linux-mm@kvack.org >> Link: http://lkml.kernel.org/r/413a91c24dab3ed0caa5f4e4d017d87b0857f920.1498751203.git.luto@kernel.org >> Signed-off-by: Ingo Molnar >> Signed-off-by: Tim Chen >> --- >> arch/x86/include/asm/mmu.h | 15 +++++++++++++-- >> arch/x86/include/asm/mmu_context.h | 5 +++++ >> arch/x86/mm/tlb.c | 2 ++ >> 3 files changed, 20 insertions(+), 2 deletions(-) >> > > Does not apply to 4.4.y :( > > Can you provide a working backport for that tree? > Okay. Will do. Thanks. Tim From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg0-f72.google.com (mail-pg0-f72.google.com [74.125.83.72]) by kanga.kvack.org (Postfix) with ESMTP id 613786B0007 for ; Fri, 9 Mar 2018 20:04:42 -0500 (EST) Received: by mail-pg0-f72.google.com with SMTP id l14so4593648pgn.21 for ; Fri, 09 Mar 2018 17:04:42 -0800 (PST) Received: from mga03.intel.com (mga03.intel.com. [134.134.136.65]) by mx.google.com with ESMTPS id o23-v6si1745557pll.433.2018.03.09.17.04.40 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Mar 2018 17:04:40 -0800 (PST) Subject: Re: [PATCH 1/2] x86/mm: Give each mm a unique ID From: Tim Chen References: <3351ba53a3b570ba08f2a0f5a59d01b7d80a8955.1520026221.git.tim.c.chen@linux.intel.com> <20180307173036.GJ7097@kroah.com> <9b0d1195-23bd-5bf9-0dd8-b2ca29165bbb@linux.intel.com> Message-ID: <8322b21f-5ee7-41a6-7897-d73faa0ece27@linux.intel.com> Date: Fri, 9 Mar 2018 17:04:39 -0800 MIME-Version: 1.0 In-Reply-To: <9b0d1195-23bd-5bf9-0dd8-b2ca29165bbb@linux.intel.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: owner-linux-mm@kvack.org List-ID: To: Greg Kroah-Hartman Cc: stable@vger.kernel.org, Andy Lutomirski , Nadav Amit , Thomas Gleixner , Andrew Morton , Arjan van de Ven , Borislav Petkov , Dave Hansen , Linus Torvalds , Mel Gorman , Peter Zijlstra , Rik van Riel , Ingo Molnar , David Woodhouse , ak@linux.intel.com, karahmed@amazon.de, pbonzini@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org On 03/08/2018 10:23 AM, Tim Chen wrote: > On 03/07/2018 09:30 AM, Greg Kroah-Hartman wrote: >> On Fri, Mar 02, 2018 at 01:32:09PM -0800, Tim Chen wrote: >>> From: Andy Lutomirski >>> commit: f39681ed0f48498b80455095376f11535feea332 >>> >>> This adds a new variable to mmu_context_t: ctx_id. >>> ctx_id uniquely identifies the mm_struct and will never be reused. >>> >>> Signed-off-by: Andy Lutomirski >>> Reviewed-by: Nadav Amit >>> Reviewed-by: Thomas Gleixner >>> Cc: Andrew Morton >>> Cc: Arjan van de Ven >>> Cc: Borislav Petkov >>> Cc: Dave Hansen >>> Cc: Linus Torvalds >>> Cc: Mel Gorman >>> Cc: Peter Zijlstra >>> Cc: Rik van Riel >>> Cc: linux-mm@kvack.org >>> Link: http://lkml.kernel.org/r/413a91c24dab3ed0caa5f4e4d017d87b0857f920.1498751203.git.luto@kernel.org >>> Signed-off-by: Ingo Molnar >>> Signed-off-by: Tim Chen >>> --- >>> arch/x86/include/asm/mmu.h | 15 +++++++++++++-- >>> arch/x86/include/asm/mmu_context.h | 5 +++++ >>> arch/x86/mm/tlb.c | 2 ++ >>> 3 files changed, 20 insertions(+), 2 deletions(-) >>> >> >> Does not apply to 4.4.y :( >> >> Can you provide a working backport for that tree? >> > > Okay. Will do. Thanks. > Greg, I actually found that there are a number of dependent IBPB related patches that haven't been backported yet to 4.4: x86/cpufeatures: Add AMD feature bits for Speculation Control (cherry picked from commit 5d10cbc91d9eb5537998b65608441b592eec65e7) x86/msr: Add definitions for new speculation control MSRs (cherry picked from commit 1e340c60d0dd3ae07b5bedc16a0469c14b9f3410) x86/speculation: Add basic IBPB (Indirect Branch Prediction Barrier) support (cherry picked from commit 20ffa1caecca4db8f79fe665acdeaa5af815a24d) x86/cpufeatures: Clean up Spectre v2 related CPUID flags (cherry picked from commit 2961298efe1ea1b6fc0d7ee8b76018fa6c0bcef2) And probably and a few more. You have plans to backport these patches? Tim From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f71.google.com (mail-wm0-f71.google.com [74.125.82.71]) by kanga.kvack.org (Postfix) with ESMTP id 52A466B0007 for ; Fri, 9 Mar 2018 20:14:42 -0500 (EST) Received: by mail-wm0-f71.google.com with SMTP id m78so1719200wma.7 for ; Fri, 09 Mar 2018 17:14:42 -0800 (PST) Received: from mail.linuxfoundation.org (mail.linuxfoundation.org. [140.211.169.12]) by mx.google.com with ESMTPS id 46si1262863wrx.458.2018.03.09.17.14.40 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Mar 2018 17:14:40 -0800 (PST) Date: Fri, 9 Mar 2018 17:14:35 -0800 From: Greg Kroah-Hartman Subject: Re: [PATCH 1/2] x86/mm: Give each mm a unique ID Message-ID: <20180310011435.GA27284@kroah.com> References: <3351ba53a3b570ba08f2a0f5a59d01b7d80a8955.1520026221.git.tim.c.chen@linux.intel.com> <20180307173036.GJ7097@kroah.com> <9b0d1195-23bd-5bf9-0dd8-b2ca29165bbb@linux.intel.com> <8322b21f-5ee7-41a6-7897-d73faa0ece27@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <8322b21f-5ee7-41a6-7897-d73faa0ece27@linux.intel.com> Sender: owner-linux-mm@kvack.org List-ID: To: Tim Chen Cc: stable@vger.kernel.org, Andy Lutomirski , Nadav Amit , Thomas Gleixner , Andrew Morton , Arjan van de Ven , Borislav Petkov , Dave Hansen , Linus Torvalds , Mel Gorman , Peter Zijlstra , Rik van Riel , Ingo Molnar , David Woodhouse , ak@linux.intel.com, karahmed@amazon.de, pbonzini@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org On Fri, Mar 09, 2018 at 05:04:39PM -0800, Tim Chen wrote: > On 03/08/2018 10:23 AM, Tim Chen wrote: > > On 03/07/2018 09:30 AM, Greg Kroah-Hartman wrote: > >> On Fri, Mar 02, 2018 at 01:32:09PM -0800, Tim Chen wrote: > >>> From: Andy Lutomirski > >>> commit: f39681ed0f48498b80455095376f11535feea332 > >>> > >>> This adds a new variable to mmu_context_t: ctx_id. > >>> ctx_id uniquely identifies the mm_struct and will never be reused. > >>> > >>> Signed-off-by: Andy Lutomirski > >>> Reviewed-by: Nadav Amit > >>> Reviewed-by: Thomas Gleixner > >>> Cc: Andrew Morton > >>> Cc: Arjan van de Ven > >>> Cc: Borislav Petkov > >>> Cc: Dave Hansen > >>> Cc: Linus Torvalds > >>> Cc: Mel Gorman > >>> Cc: Peter Zijlstra > >>> Cc: Rik van Riel > >>> Cc: linux-mm@kvack.org > >>> Link: http://lkml.kernel.org/r/413a91c24dab3ed0caa5f4e4d017d87b0857f920.1498751203.git.luto@kernel.org > >>> Signed-off-by: Ingo Molnar > >>> Signed-off-by: Tim Chen > >>> --- > >>> arch/x86/include/asm/mmu.h | 15 +++++++++++++-- > >>> arch/x86/include/asm/mmu_context.h | 5 +++++ > >>> arch/x86/mm/tlb.c | 2 ++ > >>> 3 files changed, 20 insertions(+), 2 deletions(-) > >>> > >> > >> Does not apply to 4.4.y :( > >> > >> Can you provide a working backport for that tree? > >> > > > > Okay. Will do. Thanks. > > > > > Greg, > > I actually found that there are a number of dependent IBPB related patches that haven't been > backported yet to 4.4: > > x86/cpufeatures: Add AMD feature bits for Speculation Control > (cherry picked from commit 5d10cbc91d9eb5537998b65608441b592eec65e7) > > x86/msr: Add definitions for new speculation control MSRs > (cherry picked from commit 1e340c60d0dd3ae07b5bedc16a0469c14b9f3410) > > x86/speculation: Add basic IBPB (Indirect Branch Prediction Barrier) support > (cherry picked from commit 20ffa1caecca4db8f79fe665acdeaa5af815a24d) > > x86/cpufeatures: Clean up Spectre v2 related CPUID flags > (cherry picked from commit 2961298efe1ea1b6fc0d7ee8b76018fa6c0bcef2) > > And probably and a few more. > You have plans to backport these patches? I don't, but I think someone from Amazon was looking into it, but I haven't heard from them in a few weeks. I'll gladly take patches if you have them, or at the worse case, a list like above of the git commits that are missing. thanks, greg k-h From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Cyrus-Session-Id: sloti22d1t05-2537421-1520026351-2-13494068599499796203 X-Sieve: CMU Sieve 3.0 X-Spam-known-sender: no X-Spam-score: 0.0 X-Spam-hits: BAYES_00 -1.9, HEADER_FROM_DIFFERENT_DOMAINS 0.249, ME_NOAUTH 0.01, RCVD_IN_DNSWL_HI -5, T_RP_MATCHES_RCVD -0.01, LANGUAGES en, BAYES_USED global, SA_VERSION 3.4.0 X-Spam-source: IP='209.132.180.67', Host='vger.kernel.org', Country='CN', FromHeader='com', MailFrom='org' X-Spam-charsets: plain='UTF-8' X-Resolved-to: greg@kroah.com X-Delivered-to: greg@kroah.com X-Mail-from: stable-owner@vger.kernel.org ARC-Seal: i=1; a=rsa-sha256; cv=none; d=messagingengine.com; s=arctest; t=1520026351; b=M0m98AjeOHHbxMdybGYQUGgVDy/K0KQX8eD06s7uOc7J++g STwOnjXZhG67azI/pYDg3r3Ly9lVKeXCx0LzuYOSdeYBx4VR27npSXOVhNZPmVPC RKjEIy5BLzp6qLYiDTSwAFTU5CBTZkzCn5A1a1jyV8bKkDKzeQhekU56AeUVwoU4 wOW71/2vqCp5NQnQ9YgLD/Csq+0NupOD+biss66AIo6loBvg47E90v2pnvgnxRVk F8QM+VqjgPPybamiFwOPCe+nY1WoKt8fum325N+oRdm0a0zjzkfWPBa4KmVV32Ln Pm6FTT5R4YE7IRNpHNJSg8bmv83OQdpS1hU2+0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=from:to:cc:subject:date:message-id :mime-version:content-type:content-transfer-encoding:sender :list-id; s=arctest; t=1520026351; bh=Tev/LUA9XNlwUhOoM5d70USP9k UN7yH/Ky7cvEX7R/8=; b=kkk9tg26Z5Hcz5hMnOg1sHKtAak720b0SFiUGdbz7s s+LXEHVF8/NEC5FxH+lRGcAQuC73UZFDkxcCgB4ZrdokQAfOWsN0s4yIS8fQoRkE xw/1MnnmMVhyZGQMPTcJxrTrnRwTysuPfOjSlN8q7GjozBo1Jgf6rDzRe9TpJk08 Th/nTi8BJm3MTFZ3p6WW1dXJCHSwX4Ki9FOJ1IIHjuFJ9Xj7zai/1vxyffViufpK CLgSoAJaPc9Lnf+2eMtG2+8Ornd5Mq6P2jQ6l9l4SFBmXsJ0Jh8n9gKWT8nbWguy z1/d5HJaDOUzOqUN5eMIig6d7MJixeNwTfyk30zv82DA== ARC-Authentication-Results: i=1; mx2.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=none (p=none,has-list-id=yes,d=none) header.from=linux.intel.com; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=stable-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=linux.intel.com header.result=pass header_org.domain=intel.com header_org.result=pass header_is_org_domain=no Authentication-Results: mx2.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=none (p=none,has-list-id=yes,d=none) header.from=linux.intel.com; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=stable-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=linux.intel.com header.result=pass header_org.domain=intel.com header_org.result=pass header_is_org_domain=no Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933997AbeCBVcZ (ORCPT ); Fri, 2 Mar 2018 16:32:25 -0500 Received: from mga11.intel.com ([192.55.52.93]:55419 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933990AbeCBVcY (ORCPT ); Fri, 2 Mar 2018 16:32:24 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.47,413,1515484800"; d="scan'208";a="22145314" From: Tim Chen To: stable@vger.kernel.org, Greg Kroah-Hartman Cc: Tim Chen , Andy Lutomirski , Nadav Amit , Thomas Gleixner , Andrew Morton , Arjan van de Ven , Borislav Petkov , Dave Hansen , Linus Torvalds , Mel Gorman , Peter Zijlstra , Rik van Riel , Ingo Molnar , David Woodhouse , ak@linux.intel.com, karahmed@amazon.de, pbonzini@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 0/2] Backport IBPB on context switch to non-dumpable process Date: Fri, 2 Mar 2018 13:32:08 -0800 Message-Id: X-Mailer: git-send-email 2.9.4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: stable-owner@vger.kernel.org X-Mailing-List: stable@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-Mailing-List: linux-kernel@vger.kernel.org List-ID: Greg, I will like to propose backporting "x86/speculation: Use Indirect Branch Prediction Barrier on context switch" from commit 18bf3c3e in upstream to 4.9 and 4.4 stable. The patch has already been ported to 4.14 and 4.15 stable. The patch needs mm context id that Andy added in commit f39681ed. I have lifted the mm context id change from Andy's upstream patch and included it here. Thanks. Tim Tim Chen (2): x86/mm: Give each mm a unique ID x86/speculation: Use Indirect Branch Prediction Barrier in context switch arch/x86/include/asm/mmu.h | 15 +++++++++++++-- arch/x86/include/asm/mmu_context.h | 5 +++++ arch/x86/include/asm/tlbflush.h | 2 ++ arch/x86/mm/tlb.c | 33 +++++++++++++++++++++++++++++++++ 4 files changed, 53 insertions(+), 2 deletions(-) -- 2.9.4 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Cyrus-Session-Id: sloti22d1t05-2531373-1520026390-2-2686051855401146485 X-Sieve: CMU Sieve 3.0 X-Spam-known-sender: no X-Spam-score: 0.0 X-Spam-hits: BAYES_00 -1.9, HEADER_FROM_DIFFERENT_DOMAINS 0.249, ME_NOAUTH 0.01, RCVD_IN_DNSWL_HI -5, T_RP_MATCHES_RCVD -0.01, LANGUAGES unknown, BAYES_USED global, SA_VERSION 3.4.0 X-Spam-source: IP='209.132.180.67', Host='vger.kernel.org', Country='CN', FromHeader='com', MailFrom='org' X-Spam-charsets: X-Resolved-to: greg@kroah.com X-Delivered-to: greg@kroah.com X-Mail-from: stable-owner@vger.kernel.org ARC-Seal: i=1; a=rsa-sha256; cv=none; d=messagingengine.com; s=arctest; t=1520026389; b=YUw9L++KrsD6N66URrLhVUZN262UvSDYB5FWblps6TAKKMr YU4mM4aMW+xZezRCyYorx5LgZmI/nOLXaN00Qc4fhk64WBqCCvOMfDIcPYUU2NPQ 93VfADVRrhRxDgiRsL2OqziVXQyj49LC9MAJvbd2iYt1gonCoMDMrIp/5AGwQNZU DNKXQoCTyvducJ/gNykadzwF6w16IQelzPBLMjmuhaAibjtNWerkMEek16Jhbrv/ vAzaUzmxWhAtGoxmyRFysDMyZbpjvQoIaMq/RfMJWVjkhLQazk4IKeQwmQhpb+Hg hvHphUnq7UWj9fL8hbsIEb24SO/Az3pk178DtCQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=from:to:cc:subject:date:message-id :in-reply-to:references:in-reply-to:references:sender:list-id; s=arctest; t=1520026389; bh=r5dc4Rp8ng+WyS5nCa2CywFByVfO7LnPBFg a9dJzfuc=; b=Bizplddiby6Onm3ZOQ+R60Pi9B7bRtcD1wI/b03myWZPf8PXr0F 9Gqu0tQi88XbooK0XohXRyKTUPQ7w+zaAEn1ZqUhdVJ33PHDfjxhzr3ffXFU/QKz z4GyXTz+OQ1iEx0zIJmtHZtskBNyeUNs8UZET8iqmACTgFcrvx3wLBkprI1gA3K7 gE9m5o6ybtGy9amKzw3/T9uEqMuXQZI5Zx4i4MQrWbIA39EO4fdJQ+Aip8O1TNqw pirT2Fkneov5ArS+EMvEcZHtgXlBK7IDUFEM0Cqs5Y1krkvPr7A5e01JFenRgDm2 sXCiuIEkfwat3X8whp1pkyeub64MmMmBd2A== ARC-Authentication-Results: i=1; mx4.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=none (p=none,has-list-id=yes,d=none) header.from=linux.intel.com; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=stable-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=linux.intel.com header.result=pass header_org.domain=intel.com header_org.result=pass header_is_org_domain=no Authentication-Results: mx4.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=none (p=none,has-list-id=yes,d=none) header.from=linux.intel.com; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=stable-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=linux.intel.com header.result=pass header_org.domain=intel.com header_org.result=pass header_is_org_domain=no Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934016AbeCBVcz (ORCPT ); Fri, 2 Mar 2018 16:32:55 -0500 Received: from mga11.intel.com ([192.55.52.93]:55419 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933995AbeCBVcZ (ORCPT ); Fri, 2 Mar 2018 16:32:25 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.47,413,1515484800"; d="scan'208";a="22145320" From: Tim Chen To: stable@vger.kernel.org, Greg Kroah-Hartman Cc: Tim Chen , Andy Lutomirski , Nadav Amit , Thomas Gleixner , Andrew Morton , Arjan van de Ven , Borislav Petkov , Dave Hansen , Linus Torvalds , Mel Gorman , Peter Zijlstra , Rik van Riel , Ingo Molnar , David Woodhouse , ak@linux.intel.com, karahmed@amazon.de, pbonzini@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/2] x86/mm: Give each mm a unique ID Date: Fri, 2 Mar 2018 13:32:09 -0800 Message-Id: <3351ba53a3b570ba08f2a0f5a59d01b7d80a8955.1520026221.git.tim.c.chen@linux.intel.com> X-Mailer: git-send-email 2.9.4 In-Reply-To: References: In-Reply-To: References: Sender: stable-owner@vger.kernel.org X-Mailing-List: stable@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-Mailing-List: linux-kernel@vger.kernel.org List-ID: From: Andy Lutomirski commit: f39681ed0f48498b80455095376f11535feea332 This adds a new variable to mmu_context_t: ctx_id. ctx_id uniquely identifies the mm_struct and will never be reused. Signed-off-by: Andy Lutomirski Reviewed-by: Nadav Amit Reviewed-by: Thomas Gleixner Cc: Andrew Morton Cc: Arjan van de Ven Cc: Borislav Petkov Cc: Dave Hansen Cc: Linus Torvalds Cc: Mel Gorman Cc: Peter Zijlstra Cc: Rik van Riel Cc: linux-mm@kvack.org Link: http://lkml.kernel.org/r/413a91c24dab3ed0caa5f4e4d017d87b0857f920.1498751203.git.luto@kernel.org Signed-off-by: Ingo Molnar Signed-off-by: Tim Chen --- arch/x86/include/asm/mmu.h | 15 +++++++++++++-- arch/x86/include/asm/mmu_context.h | 5 +++++ arch/x86/mm/tlb.c | 2 ++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/arch/x86/include/asm/mmu.h b/arch/x86/include/asm/mmu.h index 8b272a0..e2e0934 100644 --- a/arch/x86/include/asm/mmu.h +++ b/arch/x86/include/asm/mmu.h @@ -3,12 +3,18 @@ #include #include +#include /* - * The x86 doesn't have a mmu context, but - * we put the segment information here. + * x86 has arch-specific MMU state beyond what lives in mm_struct. */ typedef struct { + /* + * ctx_id uniquely identifies this mm_struct. A ctx_id will never + * be reused, and zero is not a valid ctx_id. + */ + u64 ctx_id; + #ifdef CONFIG_MODIFY_LDT_SYSCALL struct ldt_struct *ldt; #endif @@ -33,6 +39,11 @@ typedef struct { #endif } mm_context_t; +#define INIT_MM_CONTEXT(mm) \ + .context = { \ + .ctx_id = 1, \ + } + void leave_mm(int cpu); #endif /* _ASM_X86_MMU_H */ diff --git a/arch/x86/include/asm/mmu_context.h b/arch/x86/include/asm/mmu_context.h index d23e355..5a295bb 100644 --- a/arch/x86/include/asm/mmu_context.h +++ b/arch/x86/include/asm/mmu_context.h @@ -12,6 +12,9 @@ #include #include #include + +extern atomic64_t last_mm_ctx_id; + #ifndef CONFIG_PARAVIRT static inline void paravirt_activate_mm(struct mm_struct *prev, struct mm_struct *next) @@ -106,6 +109,8 @@ static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk) static inline int init_new_context(struct task_struct *tsk, struct mm_struct *mm) { + mm->context.ctx_id = atomic64_inc_return(&last_mm_ctx_id); + #ifdef CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS if (cpu_feature_enabled(X86_FEATURE_OSPKE)) { /* pkey 0 is the default and always allocated */ diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c index 578973a..fa74bf5 100644 --- a/arch/x86/mm/tlb.c +++ b/arch/x86/mm/tlb.c @@ -29,6 +29,8 @@ * Implement flush IPI by CALL_FUNCTION_VECTOR, Alex Shi */ +atomic64_t last_mm_ctx_id = ATOMIC64_INIT(1); + struct flush_tlb_info { struct mm_struct *flush_mm; unsigned long flush_start; -- 2.9.4 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Cyrus-Session-Id: sloti22d1t05-3808880-1520443839-2-14289040449296497851 X-Sieve: CMU Sieve 3.0 X-Spam-known-sender: no X-Spam-score: 0.0 X-Spam-hits: BAYES_00 -1.9, HEADER_FROM_DIFFERENT_DOMAINS 0.25, ME_NOAUTH 0.01, RCVD_IN_DNSWL_HI -5, T_RP_MATCHES_RCVD -0.01, LANGUAGES en, BAYES_USED global, SA_VERSION 3.4.0 X-Spam-source: IP='209.132.180.67', Host='vger.kernel.org', Country='CN', FromHeader='org', MailFrom='org' X-Spam-charsets: plain='us-ascii' X-Resolved-to: greg@kroah.com X-Delivered-to: greg@kroah.com X-Mail-from: stable-owner@vger.kernel.org ARC-Seal: i=1; a=rsa-sha256; cv=none; d=messagingengine.com; s=arctest; t=1520443839; b=sjkxOd990QbBVnKRc6CN0jviLaQTOJximO+3zS/GWW75YBW z2nzfLef7FiY9gBQ/1VybbhYZ6aJT6lSnnRCVZ9bxkAvNLYlRvyW7CoCGtZtdh3F +x0kWw0C4k1XTGZDdG6GuyB/wGYmCPB04UGjJ2/LxjPupO12R7sfLIXzb+lTbFoo 2TT86v7yDJIST81FqLWJ1/DYeuaaC9DlJqHTTXjWkytgjIwynNtst6dN2EwrdiLM s1rlnD8GkHrdC+Qv7bTKxSi4G6t6kEJZdsQNB32jHw25UR5knej/VtZVQ0BOBcXz FOHwT9SjWzCAhmQxjb2lT7f1XQnJP+ICDFhruNg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=date:from:to:cc:subject:message-id :references:mime-version:content-type:in-reply-to:sender :list-id; s=arctest; t=1520443839; bh=0xak1XiPnfO08xgBpzlxSKfjE9 kylrVrzuA3KloI4Qk=; b=skXN+m0RZibKtQ3viDtrRUi6awWIvuiuSmdjjf5Hc0 fITmASoobEkjaOneMdgF6zpKArZza+g+VtBvjLvmAYzSN0TbaezVWI7b25BBajRp eKDI+oseTGkumVxSKFJNCrPctCLS3t3CdgwFX0W/sIcvTpadjMxTYEwaaDoz7SHM UIAafUR4n7w+a8I+JXG93u08NGt/nmhN24V9Q9XUr4R7cSiRAFP0PxHmDpPVG6gC HkYGIE0h7LkV5TMDFhk5o9BEXh3+5ZAWKGHkqC4imO8XvBaYfTC3CjwmMrDLRH/H Q0GviuGl4k7xhCTuDy1COLoXN2uMj08Rz759ArEQsDlA== ARC-Authentication-Results: i=1; mx5.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=none (p=none,has-list-id=yes,d=none) header.from=linuxfoundation.org; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=stable-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-category=clean score=-100 state=0; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=linuxfoundation.org header.result=pass header_is_org_domain=yes Authentication-Results: mx5.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=none (p=none,has-list-id=yes,d=none) header.from=linuxfoundation.org; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=stable-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-category=clean score=-100 state=0; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=linuxfoundation.org header.result=pass header_is_org_domain=yes Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754248AbeCGRag (ORCPT ); Wed, 7 Mar 2018 12:30:36 -0500 Received: from mail.linuxfoundation.org ([140.211.169.12]:42126 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751189AbeCGRaf (ORCPT ); Wed, 7 Mar 2018 12:30:35 -0500 Date: Wed, 7 Mar 2018 09:30:36 -0800 From: Greg Kroah-Hartman To: Tim Chen Cc: stable@vger.kernel.org, Andy Lutomirski , Nadav Amit , Thomas Gleixner , Andrew Morton , Arjan van de Ven , Borislav Petkov , Dave Hansen , Linus Torvalds , Mel Gorman , Peter Zijlstra , Rik van Riel , Ingo Molnar , David Woodhouse , ak@linux.intel.com, karahmed@amazon.de, pbonzini@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/2] x86/mm: Give each mm a unique ID Message-ID: <20180307173036.GJ7097@kroah.com> References: <3351ba53a3b570ba08f2a0f5a59d01b7d80a8955.1520026221.git.tim.c.chen@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3351ba53a3b570ba08f2a0f5a59d01b7d80a8955.1520026221.git.tim.c.chen@linux.intel.com> User-Agent: Mutt/1.9.4 (2018-02-28) Sender: stable-owner@vger.kernel.org X-Mailing-List: stable@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-Mailing-List: linux-kernel@vger.kernel.org List-ID: On Fri, Mar 02, 2018 at 01:32:09PM -0800, Tim Chen wrote: > From: Andy Lutomirski > commit: f39681ed0f48498b80455095376f11535feea332 > > This adds a new variable to mmu_context_t: ctx_id. > ctx_id uniquely identifies the mm_struct and will never be reused. > > Signed-off-by: Andy Lutomirski > Reviewed-by: Nadav Amit > Reviewed-by: Thomas Gleixner > Cc: Andrew Morton > Cc: Arjan van de Ven > Cc: Borislav Petkov > Cc: Dave Hansen > Cc: Linus Torvalds > Cc: Mel Gorman > Cc: Peter Zijlstra > Cc: Rik van Riel > Cc: linux-mm@kvack.org > Link: http://lkml.kernel.org/r/413a91c24dab3ed0caa5f4e4d017d87b0857f920.1498751203.git.luto@kernel.org > Signed-off-by: Ingo Molnar > Signed-off-by: Tim Chen > --- > arch/x86/include/asm/mmu.h | 15 +++++++++++++-- > arch/x86/include/asm/mmu_context.h | 5 +++++ > arch/x86/mm/tlb.c | 2 ++ > 3 files changed, 20 insertions(+), 2 deletions(-) > Does not apply to 4.4.y :( Can you provide a working backport for that tree? thanks, greg k-h From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Cyrus-Session-Id: sloti22d1t05-3808880-1520443926-2-18347979323452449411 X-Sieve: CMU Sieve 3.0 X-Spam-known-sender: no X-Spam-score: 0.0 X-Spam-hits: BAYES_00 -1.9, HEADER_FROM_DIFFERENT_DOMAINS 0.25, ME_NOAUTH 0.01, RCVD_IN_DNSWL_HI -5, T_RP_MATCHES_RCVD -0.01, LANGUAGES en, BAYES_USED global, SA_VERSION 3.4.0 X-Spam-source: IP='209.132.180.67', Host='vger.kernel.org', Country='CN', FromHeader='org', MailFrom='org' X-Spam-charsets: plain='us-ascii' X-Resolved-to: greg@kroah.com X-Delivered-to: greg@kroah.com X-Mail-from: stable-owner@vger.kernel.org ARC-Seal: i=1; a=rsa-sha256; cv=none; d=messagingengine.com; s=arctest; t=1520443925; b=QK8G/lZivqudezkYiDb9/WJmx4qHf/BRjdIZe05I5tyZTzH ugWz/q6dgmqC+rwM4jJ8Zg+QnavFKiSMdea+jMwk05QJh1RiLd3eajlSMb1O73x+ dQjyhBPQHmQbgPXb5OIMvFnnvpn6A4WoT02xk/RB+1djdfyGIu4l7CZ0up/mQ82U UMnFGu8hT3PPeAE/fCtuZsRjEYBb/kJHeR7CRJajN8N7vQYHDk3VBekWlNOoqaCa 4FoQv+t7OoyW0T6+Gblagk1eBU4up6tZou/KShmbjrdb+7Ci1WzEloxtHu27dqlA qGWzAA4QrG0VryOl6HKhz2HymOMiaBrMO9szoQQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=date:from:to:cc:subject:message-id :references:mime-version:content-type:in-reply-to:sender :list-id; s=arctest; t=1520443925; bh=Yebcrs7jpKEtDwR/nopgPiiB0v g2b7g8bl876nxFk0M=; b=iP3Yob0c8e8LfEy/ScjN7J4plXe7Pphd///aLeXoed WMwe094OlSvRgVnGHrtpC8gt0zQJajGHvVXLc/CvqcALnrgY7vtNQf5yGLDavPI1 UnycNtXrxDleA/80HeMvmDmH5MB84n4QHUXSjy+ayPnnp8kRkL36VLRVAaKD7Nn+ Wum1snc9k4LHvyYmZUDRfSXsM87nj6rVs0EsxILt+4fEKRXYofgFNN5nt90yNHZE VMVcNOKSPbMoBiwxPU5Z2YIDW4aBDwDgRj4bVXYrDMqIiB6W95STeiTHv/uPvnSo xkConK6O1+JINPGDt2dPm1r8k1FQou58SqCXIX0IIFPg== ARC-Authentication-Results: i=1; mx1.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=none (p=none,has-list-id=yes,d=none) header.from=linuxfoundation.org; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=stable-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-category=clean score=-100 state=0; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=linuxfoundation.org header.result=pass header_is_org_domain=yes Authentication-Results: mx1.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=none (p=none,has-list-id=yes,d=none) header.from=linuxfoundation.org; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=stable-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-category=clean score=-100 state=0; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=linuxfoundation.org header.result=pass header_is_org_domain=yes Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933173AbeCGRcD (ORCPT ); Wed, 7 Mar 2018 12:32:03 -0500 Received: from mail.linuxfoundation.org ([140.211.169.12]:42652 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933412AbeCGRcC (ORCPT ); Wed, 7 Mar 2018 12:32:02 -0500 Date: Wed, 7 Mar 2018 09:32:02 -0800 From: Greg Kroah-Hartman To: Tim Chen Cc: stable@vger.kernel.org, Andy Lutomirski , Nadav Amit , Thomas Gleixner , Andrew Morton , Arjan van de Ven , Borislav Petkov , Dave Hansen , Linus Torvalds , Mel Gorman , Peter Zijlstra , Rik van Riel , Ingo Molnar , David Woodhouse , ak@linux.intel.com, karahmed@amazon.de, pbonzini@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 0/2] Backport IBPB on context switch to non-dumpable process Message-ID: <20180307173202.GK7097@kroah.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.9.4 (2018-02-28) Sender: stable-owner@vger.kernel.org X-Mailing-List: stable@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-Mailing-List: linux-kernel@vger.kernel.org List-ID: On Fri, Mar 02, 2018 at 01:32:08PM -0800, Tim Chen wrote: > Greg, > > I will like to propose backporting "x86/speculation: Use Indirect Branch > Prediction Barrier on context switch" from commit 18bf3c3e in upstream > to 4.9 and 4.4 stable. The patch has already been ported to 4.14 and > 4.15 stable. The patch needs mm context id that Andy added in commit > f39681ed. I have lifted the mm context id change from Andy's upstream > patch and included it here. Applied to 4.9.y, but I need a separate set of patches for 4.4.y in order for them to work there. Can you provide that? thanks, greg k-h From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Cyrus-Session-Id: sloti22d1t05-3941094-1520067308-2-453622196612083206 X-Sieve: CMU Sieve 3.0 X-Spam-known-sender: no X-Spam-score: 0.0 X-Spam-hits: BAYES_00 -1.9, HEADER_FROM_DIFFERENT_DOMAINS 0.249, ME_NOAUTH 0.01, RCVD_IN_DNSWL_HI -5, T_RP_MATCHES_RCVD -0.01, LANGUAGES en, BAYES_USED global, SA_VERSION 3.4.0 X-Spam-source: IP='209.132.180.67', Host='vger.kernel.org', Country='CN', FromHeader='org', MailFrom='org' X-Spam-charsets: plain='us-ascii' X-Resolved-to: greg@kroah.com X-Delivered-to: greg@kroah.com X-Mail-from: stable-owner@vger.kernel.org ARC-Seal: i=1; a=rsa-sha256; cv=none; d=messagingengine.com; s=arctest; t=1520067307; b=qHwIY7nh0faTMdW5M8NumbpQPln8ZMMgC1ctFyDOXYvQYTn cmsFXdAwvbLk0Ux/cAeQ3tEVTLg7oAktIVPgemt59M8f/IEFsZa3ZrtS1wi++088 +lbxvSQUB8R08nneSdGXpDmauEvb20fMv7CdwKuojRXiA8niynLISpTih7mk9iqM Odv2KeuiqJDfIiCdlXfR2yxNhSlA4fnsJqGvT220LOMtBEDRd3/U+2Sl1zECH6WL HYfm2emJ8xNvFqoiZKNPihU293mUoDp5/gwjZaAJoGE4Bzn7NMTMXszbstjhuSKd asJ9JbX3zmBMWSLZLktHM3zQ21KQnmvhrDdlhLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=date:from:to:cc:subject:message-id :references:mime-version:content-type:in-reply-to:sender :list-id; s=arctest; t=1520067307; bh=BcML0Gg+sQ5DQJ53JLEkr+vM9d 0mR1FySzCU6/4ss78=; b=hyFrZYd4kqPU6aw7Q8Xv+m4MMYg2aqThx1XKRP7JZx /2OjWujtPmdpaei/8QcnB2XbMZyJ4d+Fy3HzmeLJg2j6NRbwDaXyTGG8lmWkpT/G YPHiFYjd7K25KUex31f17MgrzXBSclpRBy6q7q1pk22TsrYuPI3cUNleTLTs/8/o QnWjN9BwtruvXZju3nhtTlX/h3wvIXaL+nXwQx3twm7BsOIjMsaQc9tPC4Rdpv3x C9MqRLx0zN327lFBBSkqVDh9GLWEa5MhWBmokCFNvG9w7TDyTw/Vbskq5vTkkQMx Ou24QToNrFfyeoFR5F3hPQLP21pWaosvSX0k4Hac/ivA== ARC-Authentication-Results: i=1; mx2.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=none (p=none,has-list-id=yes,d=none) header.from=linuxfoundation.org; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=stable-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=linuxfoundation.org header.result=pass header_is_org_domain=yes Authentication-Results: mx2.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=none (p=none,has-list-id=yes,d=none) header.from=linuxfoundation.org; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=stable-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=linuxfoundation.org header.result=pass header_is_org_domain=yes Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751608AbeCCIy7 (ORCPT ); Sat, 3 Mar 2018 03:54:59 -0500 Received: from mail.linuxfoundation.org ([140.211.169.12]:34468 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751566AbeCCIy6 (ORCPT ); Sat, 3 Mar 2018 03:54:58 -0500 Date: Sat, 3 Mar 2018 09:54:54 +0100 From: Greg Kroah-Hartman To: Tim Chen Cc: stable@vger.kernel.org, Andy Lutomirski , Nadav Amit , Thomas Gleixner , Andrew Morton , Arjan van de Ven , Borislav Petkov , Dave Hansen , Linus Torvalds , Mel Gorman , Peter Zijlstra , Rik van Riel , Ingo Molnar , David Woodhouse , ak@linux.intel.com, karahmed@amazon.de, pbonzini@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 0/2] Backport IBPB on context switch to non-dumpable process Message-ID: <20180303085454.GA23988@kroah.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.9.3 (2018-01-21) Sender: stable-owner@vger.kernel.org X-Mailing-List: stable@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-Mailing-List: linux-kernel@vger.kernel.org List-ID: On Fri, Mar 02, 2018 at 01:32:08PM -0800, Tim Chen wrote: > Greg, > > I will like to propose backporting "x86/speculation: Use Indirect Branch > Prediction Barrier on context switch" from commit 18bf3c3e in upstream > to 4.9 and 4.4 stable. The patch has already been ported to 4.14 and > 4.15 stable. The patch needs mm context id that Andy added in commit > f39681ed. I have lifted the mm context id change from Andy's upstream > patch and included it here. What does this patch "fix" in those older kernels? Is this a performance improvement or something else? thanks, greg k-h From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Cyrus-Session-Id: sloti22d1t05-2531373-1520026352-2-3252556526885760734 X-Sieve: CMU Sieve 3.0 X-Spam-known-sender: no X-Spam-score: 0.0 X-Spam-hits: BAYES_00 -1.9, HEADER_FROM_DIFFERENT_DOMAINS 0.249, ME_NOAUTH 0.01, RCVD_IN_DNSWL_HI -5, T_RP_MATCHES_RCVD -0.01, LANGUAGES en, BAYES_USED global, SA_VERSION 3.4.0 X-Spam-source: IP='209.132.180.67', Host='vger.kernel.org', Country='CN', FromHeader='com', MailFrom='org' X-Spam-charsets: plain='UTF-8' X-Resolved-to: greg@kroah.com X-Delivered-to: greg@kroah.com X-Mail-from: stable-owner@vger.kernel.org ARC-Seal: i=1; a=rsa-sha256; cv=none; d=messagingengine.com; s=arctest; t=1520026352; b=m7a9/o5dobEfrs8/ewx8MLVm4V+GfGXkb2hQSVzgUMf99hS VYzmftcvaF2ILNAyFbBCnegkZL/xMmQ0+e7HtKwdtvWuCN6WcYot8Sc2hNwZAb+K BB8UiHdMALJj3yK973ZbHBKAwbbWVWWsBRdseNXY0cLEH/JDlMuwpq4gePnRhFqD wYnTZorr8y9dtXug5F72CKBLhL0dAksZGuQbjH7Sh1HCmnthMpQLEsy5Lvn2yjLR me1mSn0TOHok3j4W5ZG6zqvZOcG61ockqkQrMzPjSPrcFRNt8UQ7xzHnEWo61drS PL8i//sXJS3QTlyUFR+tDsYENKc8ou0toUsv3lg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=from:to:cc:subject:date:message-id :in-reply-to:references:in-reply-to:references:mime-version :content-type:content-transfer-encoding:sender:list-id; s= arctest; t=1520026352; bh=Ltpzrwu92nSCsiw5UiFnheZ8I1GtxGNCyYxszx SJY5w=; b=ZFbUU+5VyiKkMFMB/5no5y7jpMGoxVnxNHN3WdlmOA+rmLL8GOAVzo a8MGJkssLcZtSbbSOTTBusiXFNdYzKLT/Y3lkObBYmzpuAhIok0tVPKRgHGBhHL3 MZIaFIuoVFW1Om/oYxLk01W/c9wMQSG1ON6qMk4H70Zpw/uFSgYyZGD4S9CQP98x 9SXnj7zKlYHBtQ9NqerXBdb00njDM5I5InZi7veYUjhGlyJB8IxIXO8HqgHMd2wU WyTy2QsS+8LwCeJ2J820giq13fipZhBSH4kFScbrm+MIPfoGivTSh68zZ+ji/ezO iNVzpByWtHqeqExJktFAoWo6D43zQqvg== ARC-Authentication-Results: i=1; mx5.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=none (p=none,has-list-id=yes,d=none) header.from=linux.intel.com; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=stable-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=linux.intel.com header.result=pass header_org.domain=intel.com header_org.result=pass header_is_org_domain=no Authentication-Results: mx5.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=none (p=none,has-list-id=yes,d=none) header.from=linux.intel.com; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=stable-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=linux.intel.com header.result=pass header_org.domain=intel.com header_org.result=pass header_is_org_domain=no Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933990AbeCBVc3 (ORCPT ); Fri, 2 Mar 2018 16:32:29 -0500 Received: from mga11.intel.com ([192.55.52.93]:55420 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934016AbeCBVc0 (ORCPT ); Fri, 2 Mar 2018 16:32:26 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.47,413,1515484800"; d="scan'208";a="22145325" From: Tim Chen To: stable@vger.kernel.org, Greg Kroah-Hartman Cc: Tim Chen , Andy Lutomirski , Nadav Amit , Thomas Gleixner , Andrew Morton , Arjan van de Ven , Borislav Petkov , Dave Hansen , Linus Torvalds , Mel Gorman , Peter Zijlstra , Rik van Riel , Ingo Molnar , David Woodhouse , ak@linux.intel.com, karahmed@amazon.de, pbonzini@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux@dominikbrodowski.net, gregkh@linux-foundation.org Subject: [PATCH 2/2] x86/speculation: Use Indirect Branch Prediction Barrier in context switch Date: Fri, 2 Mar 2018 13:32:10 -0800 Message-Id: X-Mailer: git-send-email 2.9.4 In-Reply-To: References: In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: stable-owner@vger.kernel.org X-Mailing-List: stable@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-Mailing-List: linux-kernel@vger.kernel.org List-ID: commit: 18bf3c3ea8ece8f03b6fc58508f2dfd23c7711c7 Flush indirect branches when switching into a process that marked itself non dumpable. This protects high value processes like gpg better, without having too high performance overhead. If done naïvely, we could switch to a kernel idle thread and then back to the original process, such as: process A -> idle -> process A In such scenario, we do not have to do IBPB here even though the process is non-dumpable, as we are switching back to the same process after a hiatus. To avoid the redundant IBPB, which is expensive, we track the last mm user context ID. The cost is to have an extra u64 mm context id to track the last mm we were using before switching to the init_mm used by idle. Avoiding the extra IBPB is probably worth the extra memory for this common scenario. For those cases where tlb_defer_switch_to_init_mm() returns true (non PCID), lazy tlb will defer switch to init_mm, so we will not be changing the mm for the process A -> idle -> process A switch. So IBPB will be skipped for this case. Thanks to the reviewers and Andy Lutomirski for the suggestion of using ctx_id which got rid of the problem of mm pointer recycling. Signed-off-by: Tim Chen Signed-off-by: David Woodhouse Signed-off-by: Thomas Gleixner Cc: ak@linux.intel.com Cc: karahmed@amazon.de Cc: arjan@linux.intel.com Cc: torvalds@linux-foundation.org Cc: linux@dominikbrodowski.net Cc: peterz@infradead.org Cc: bp@alien8.de Cc: luto@kernel.org Cc: pbonzini@redhat.com Cc: gregkh@linux-foundation.org Link: https://lkml.kernel.org/r/1517263487-3708-1-git-send-email-dwmw@amazon.co.uk --- arch/x86/include/asm/tlbflush.h | 2 ++ arch/x86/mm/tlb.c | 31 +++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/arch/x86/include/asm/tlbflush.h b/arch/x86/include/asm/tlbflush.h index 94146f6..99185a0 100644 --- a/arch/x86/include/asm/tlbflush.h +++ b/arch/x86/include/asm/tlbflush.h @@ -68,6 +68,8 @@ static inline void invpcid_flush_all_nonglobals(void) struct tlb_state { struct mm_struct *active_mm; int state; + /* last user mm's ctx id */ + u64 last_ctx_id; /* * Access to this CR4 shadow and to H/W CR4 is protected by diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c index fa74bf5..eac92e2 100644 --- a/arch/x86/mm/tlb.c +++ b/arch/x86/mm/tlb.c @@ -10,6 +10,7 @@ #include #include +#include #include #include #include @@ -106,6 +107,28 @@ void switch_mm_irqs_off(struct mm_struct *prev, struct mm_struct *next, unsigned cpu = smp_processor_id(); if (likely(prev != next)) { + u64 last_ctx_id = this_cpu_read(cpu_tlbstate.last_ctx_id); + + /* + * Avoid user/user BTB poisoning by flushing the branch + * predictor when switching between processes. This stops + * one process from doing Spectre-v2 attacks on another. + * + * As an optimization, flush indirect branches only when + * switching into processes that disable dumping. This + * protects high value processes like gpg, without having + * too high performance overhead. IBPB is *expensive*! + * + * This will not flush branches when switching into kernel + * threads. It will also not flush if we switch to idle + * thread and back to the same process. It will flush if we + * switch to a different non-dumpable process. + */ + if (tsk && tsk->mm && + tsk->mm->context.ctx_id != last_ctx_id && + get_dumpable(tsk->mm) != SUID_DUMP_USER) + indirect_branch_prediction_barrier(); + if (IS_ENABLED(CONFIG_VMAP_STACK)) { /* * If our current stack is in vmalloc space and isn't @@ -120,6 +143,14 @@ void switch_mm_irqs_off(struct mm_struct *prev, struct mm_struct *next, set_pgd(pgd, init_mm.pgd[stack_pgd_index]); } + /* + * Record last user mm's context id, so we can avoid + * flushing branch buffer with IBPB if we switch back + * to the same user. + */ + if (next != &init_mm) + this_cpu_write(cpu_tlbstate.last_ctx_id, next->context.ctx_id); + this_cpu_write(cpu_tlbstate.state, TLBSTATE_OK); this_cpu_write(cpu_tlbstate.active_mm, next); -- 2.9.4 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-fw-4101.amazon.com ([72.21.198.25]:64556 "EHLO smtp-fw-4101.amazon.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751845AbeCCLj3 (ORCPT ); Sat, 3 Mar 2018 06:39:29 -0500 Message-ID: <1520077075.7929.4.camel@amazon.co.uk> Subject: Re: [PATCH 0/2] Backport IBPB on context switch to non-dumpable process To: Greg Kroah-Hartman , Tim Chen CC: , Andy Lutomirski , Nadav Amit , Thomas Gleixner , Andrew Morton , Arjan van de Ven , Borislav Petkov , Dave Hansen , "Linus Torvalds" , Mel Gorman , Peter Zijlstra , Rik van Riel , "Ingo Molnar" , , , , , In-Reply-To: <20180303085454.GA23988@kroah.com> References: <20180303085454.GA23988@kroah.com> Content-Type: multipart/signed; micalg=sha-256; protocol="application/x-pkcs7-signature"; boundary="=-Z7kEP2drWRt5Nh7dR/J8" Date: Sat, 3 Mar 2018 12:37:55 +0100 MIME-Version: 1.0 From: "Woodhouse, David" Sender: stable-owner@vger.kernel.org List-ID: --=-Z7kEP2drWRt5Nh7dR/J8 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, 2018-03-03 at 09:54 +0100, Greg Kroah-Hartman wrote: > On Fri, Mar 02, 2018 at 01:32:08PM -0800, Tim Chen wrote: > >=20 > > Greg, > >=20 > > I will like to propose backporting "x86/speculation: Use Indirect Branc= h > > Prediction Barrier on context switch" from commit 18bf3c3e in upstream > > to 4.9 and 4.4 stable.=C2=A0=C2=A0The patch has already been ported to = 4.14 and > > 4.15 stable.=C2=A0=C2=A0The patch needs mm context id that Andy added i= n commit > > f39681ed. I have lifted the mm context id change from Andy's upstream > > patch and included it here. > > What does this patch "fix" in those older kernels?=C2=A0=C2=A0Is this a > performance improvement or something else? It's part of the Spectre variant 2 mitigation =E2=80=94 a full flush of the branch prediction on context switch to a sensitive=C2=B9 process. It was th= e one I called out as "needs more attention" when I did the rest of the retpoline etc backportingk, and Tim has now fixed it up. (Thanks). =C2=B9 for now, "sensitive" means non-dumpable. This isn't perfect but it's a reasonable approximation for now; it would be too expensive to do it on *every* context switch. And for your purposes, the important part is that it's what's upstream. --=-Z7kEP2drWRt5Nh7dR/J8 Content-Type: application/x-pkcs7-signature; name="smime.p7s" Content-Disposition: attachment; filename="smime.p7s" Content-Transfer-Encoding: base64 MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCCEE4w ggUuMIIEFqADAgECAhEApEtL31g6H7ROXdOiQnA9RjANBgkqhkiG9w0BAQsFADCBlzELMAkGA1UE BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxPTA7BgNVBAMTNENPTU9ETyBSU0EgQ2xpZW50IEF1dGhl bnRpY2F0aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0EwHhcNMTcxMjIxMDAwMDAwWhcNMTgxMjIxMjM1 OTU5WjAiMSAwHgYJKoZIhvcNAQkBFhFkd213QGFtYXpvbi5jby51azCCASIwDQYJKoZIhvcNAQEB BQADggEPADCCAQoCggEBAKdGKgXuwKMg2r+i/4BZZC0ddRxNq3xIKTakie/VCSzoO7P17A36ZzUc VMEYPfqDt/65xoc6Tdih+qkY2pNDppZ1DZ8mVrAX6O2O60ZhmXB60wMoDvXPZInvkMOW4drqnje/ 7/NOypn/XQAY+ln4KT+3tHG3TfryyJFMedqC/r29KJlCeeCxIzdtq2j5mN42tvPVv4+p+Kr77uui GOASNdFJbNdgx7UGF+il6kRGSle17LJZKMgRiLJXYjECwnGwdfLdN5SINWD5IC3yXY8d14Bq6DyD jNts1DFw+SKhW8kVFYRZpv7TE3/42QJKQVL6YWka5T4EJO7AD3gy2ypRsd8CAwEAAaOCAecwggHj MB8GA1UdIwQYMBaAFIKvbIz4xf6WYXzoHz0rcUhexIvAMB0GA1UdDgQWBBT/vhvBExl2wDr8f50u b+0yzFyZRjAOBgNVHQ8BAf8EBAMCBaAwDAYDVR0TAQH/BAIwADAgBgNVHSUEGTAXBggrBgEFBQcD BAYLKwYBBAGyMQEDBQIwEQYJYIZIAYb4QgEBBAQDAgUgMEYGA1UdIAQ/MD0wOwYMKwYBBAGyMQEC AQEBMCswKQYIKwYBBQUHAgEWHWh0dHBzOi8vc2VjdXJlLmNvbW9kby5uZXQvQ1BTMFoGA1UdHwRT MFEwT6BNoEuGSWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL0NPTU9ET1JTQUNsaWVudEF1dGhlbnRp Y2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcmwwgYsGCCsGAQUFBwEBBH8wfTBVBggrBgEFBQcwAoZJ aHR0cDovL2NydC5jb21vZG9jYS5jb20vQ09NT0RPUlNBQ2xpZW50QXV0aGVudGljYXRpb25hbmRT ZWN1cmVFbWFpbENBLmNydDAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMBwG A1UdEQQVMBOBEWR3bXdAYW1hem9uLmNvLnVrMA0GCSqGSIb3DQEBCwUAA4IBAQCK2HofespbCaDu udwwfh8GxDpVUnVbZZVWScpZMxfYpXzLot7L6iZrr16oMQ+UOiDDAK6/D3+u2QN8u0lJ6yLKVmvh lGOzDywGsyG2Ohy8Dt5jcEK5sz84OsPtrRH7ahZHLxYPhWlUKOjOPN6sb9h6uMYlXmG/KmAr2rwF exN6Zrwh6YwF7ukuMs175YcNyYRdB8kVYq3WikfbTHOoRbJiu9Unw7LqnvPTfx+xUvD6aN2CKLtr mactWbk98swNgbI18UWjfEpugvAqw09CDLjeq7N1v0SkUkQEDqGSUE+hKFryTNXtZ6zOfl+MQfD8 U7T5oJa34DmWXK9+x7dl+MrqMIIFLjCCBBagAwIBAgIRAKRLS99YOh+0Tl3TokJwPUYwDQYJKoZI hvcNAQELBQAwgZcxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO BgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMT0wOwYDVQQDEzRDT01P RE8gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTE3MTIy MTAwMDAwMFoXDTE4MTIyMTIzNTk1OVowIjEgMB4GCSqGSIb3DQEJARYRZHdtd0BhbWF6b24uY28u dWswggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCnRioF7sCjINq/ov+AWWQtHXUcTat8 SCk2pInv1Qks6Duz9ewN+mc1HFTBGD36g7f+ucaHOk3YofqpGNqTQ6aWdQ2fJlawF+jtjutGYZlw etMDKA71z2SJ75DDluHa6p43v+/zTsqZ/10AGPpZ+Ck/t7Rxt0368siRTHnagv69vSiZQnngsSM3 bato+ZjeNrbz1b+Pqfiq++7rohjgEjXRSWzXYMe1BhfopepERkpXteyyWSjIEYiyV2IxAsJxsHXy 3TeUiDVg+SAt8l2PHdeAaug8g4zbbNQxcPkioVvJFRWEWab+0xN/+NkCSkFS+mFpGuU+BCTuwA94 MtsqUbHfAgMBAAGjggHnMIIB4zAfBgNVHSMEGDAWgBSCr2yM+MX+lmF86B89K3FIXsSLwDAdBgNV HQ4EFgQU/74bwRMZdsA6/H+dLm/tMsxcmUYwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAw IAYDVR0lBBkwFwYIKwYBBQUHAwQGCysGAQQBsjEBAwUCMBEGCWCGSAGG+EIBAQQEAwIFIDBGBgNV HSAEPzA9MDsGDCsGAQQBsjEBAgEBATArMCkGCCsGAQUFBwIBFh1odHRwczovL3NlY3VyZS5jb21v ZG8ubmV0L0NQUzBaBgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01P RE9SU0FDbGllbnRBdXRoZW50aWNhdGlvbmFuZFNlY3VyZUVtYWlsQ0EuY3JsMIGLBggrBgEFBQcB AQR/MH0wVQYIKwYBBQUHMAKGSWh0dHA6Ly9jcnQuY29tb2RvY2EuY29tL0NPTU9ET1JTQUNsaWVu dEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcnQwJAYIKwYBBQUHMAGGGGh0dHA6Ly9v Y3NwLmNvbW9kb2NhLmNvbTAcBgNVHREEFTATgRFkd213QGFtYXpvbi5jby51azANBgkqhkiG9w0B AQsFAAOCAQEAith6H3rKWwmg7rncMH4fBsQ6VVJ1W2WVVknKWTMX2KV8y6Ley+oma69eqDEPlDog wwCuvw9/rtkDfLtJSesiylZr4ZRjsw8sBrMhtjocvA7eY3BCubM/ODrD7a0R+2oWRy8WD4VpVCjo zjzerG/YerjGJV5hvypgK9q8BXsTema8IemMBe7pLjLNe+WHDcmEXQfJFWKt1opH20xzqEWyYrvV J8Oy6p7z038fsVLw+mjdgii7a5mnLVm5PfLMDYGyNfFFo3xKboLwKsNPQgy43quzdb9EpFJEBA6h klBPoSha8kzV7Weszn5fjEHw/FO0+aCWt+A5llyvfse3ZfjK6jCCBeYwggPOoAMCAQICEGqb4Tg7 /ytrnwHV2binUlYwDQYJKoZIhvcNAQEMBQAwgYUxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVh dGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1p dGVkMSswKQYDVQQDEyJDT01PRE8gUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDEx MDAwMDAwMFoXDTI4MDEwOTIzNTk1OVowgZcxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVy IE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVk MT0wOwYDVQQDEzRDT01PRE8gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVt YWlsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvrOeV6wodnVAFsc4A5jTxhh2 IVDzJXkLTLWg0X06WD6cpzEup/Y0dtmEatrQPTRI5Or1u6zf+bGBSyD9aH95dDSmeny1nxdlYCeX IoymMv6pQHJGNcIDpFDIMypVpVSRsivlJTRENf+RKwrB6vcfWlP8dSsE3Rfywq09N0ZfxcBa39V0 wsGtkGWC+eQKiz4pBZYKjrc5NOpG9qrxpZxyb4o4yNNwTqzaaPpGRqXB7IMjtf7tTmU2jqPMLxFN e1VXj9XB1rHvbRikw8lBoNoSWY66nJN/VCJv5ym6Q0mdCbDKCMPybTjoNCQuelc0IAaO4nLUXk0B OSxSxt8kCvsUtQIDAQABo4IBPDCCATgwHwYDVR0jBBgwFoAUu69+Aj36pvE8hI6t7jiY7NkyMtQw HQYDVR0OBBYEFIKvbIz4xf6WYXzoHz0rcUhexIvAMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8E CDAGAQH/AgEAMBEGA1UdIAQKMAgwBgYEVR0gADBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vY3Js LmNvbW9kb2NhLmNvbS9DT01PRE9SU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBxBggrBgEF BQcBAQRlMGMwOwYIKwYBBQUHMAKGL2h0dHA6Ly9jcnQuY29tb2RvY2EuY29tL0NPTU9ET1JTQUFk ZFRydXN0Q0EuY3J0MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21vZG9jYS5jb20wDQYJKoZI hvcNAQEMBQADggIBAHhcsoEoNE887l9Wzp+XVuyPomsX9vP2SQgG1NgvNc3fQP7TcePo7EIMERoh 42awGGsma65u/ITse2hKZHzT0CBxhuhb6txM1n/y78e/4ZOs0j8CGpfb+SJA3GaBQ+394k+z3ZBy WPQedXLL1OdK8aRINTsjk/H5Ns77zwbjOKkDamxlpZ4TKSDMKVmU/PUWNMKSTvtlenlxBhh7ETrN 543j/Q6qqgCWgWuMAXijnRglp9fyadqGOncjZjaaSOGTTFB+E2pvOUtY+hPebuPtTbq7vODqzCM6 ryEhNhzf+enm0zlpXK7q332nXttNtjv7VFNYG+I31gnMrwfHM5tdhYF/8v5UY5g2xANPECTQdu9v WPoqNSGDt87b3gXb1AiGGaI06vzgkejL580ul+9hz9D0S0U4jkhJiA7EuTecP/CFtR72uYRBcunw wH3fciPjviDDAI9SnC/2aPY8ydehzuZutLbZdRJ5PDEJM/1tyZR2niOYihZ+FCbtf3D9mB12D4ln 9icgc7CwaxpNSCPt8i/GqK2HsOgkL3VYnwtx7cJUmpvVdZ4ognzgXtgtdk3ShrtOS1iAN2ZBXFiR mjVzmehoMof06r1xub+85hFQzVxZx5/bRaTKTlL8YXLI8nAbR9HWdFqzcOoB/hxfEyIQpx9/s81r gzdEZOofSlZHynoSMYIDyjCCA8YCAQEwga0wgZcxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVh dGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1p dGVkMT0wOwYDVQQDEzRDT01PRE8gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJl IEVtYWlsIENBAhEApEtL31g6H7ROXdOiQnA9RjANBglghkgBZQMEAgEFAKCCAe0wGAYJKoZIhvcN AQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTgwMzAzMTEzNzU1WjAvBgkqhkiG9w0B CQQxIgQgBWWrtY9EBlqJhnhiaNCBz+sQJa7lnFpdrFJ4wh5z/4Awgb4GCSsGAQQBgjcQBDGBsDCB rTCBlzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMH U2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxPTA7BgNVBAMTNENPTU9ETyBSU0Eg Q2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0ECEQCkS0vfWDoftE5d06JC cD1GMIHABgsqhkiG9w0BCRACCzGBsKCBrTCBlzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0 ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0 ZWQxPTA7BgNVBAMTNENPTU9ETyBSU0EgQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBTZWN1cmUg RW1haWwgQ0ECEQCkS0vfWDoftE5d06JCcD1GMA0GCSqGSIb3DQEBAQUABIIBAGbuJ8pKIFvfst78 3z7n+2a6KNZwV0qclJIR1qs+cauT2uNWEDNfFf1ynMYJhxlspkGYm6X/xtK5lmyvLC2Ex936bxaQ NHJfQsTD1hOXfGPoI3hd2SbLWTznI3IHlLYgs+PeByIodL0FG5nKIkaIMUUWLMdFwv2LnPAjX1I/ XZRyB3+uG7iEZL5aBZzHAR+j4J9/EXmhGpo1p96LwNhCi1GSppcT79aPybumTIQK5mFjrOd3gPHQ 92PyHMK+rQKNzdLNaUc//6s42ygl4QIsuagzJEm/3j3QBb7wL8k/cBHdcs8wMtvHZH1IhgYMwNUT dAoQrPSHx2uRrlPjNb8WdIoAAAAAAAA= --=-Z7kEP2drWRt5Nh7dR/J8-- From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tim Chen To: stable@vger.kernel.org, Greg Kroah-Hartman Cc: Tim Chen , Andy Lutomirski , Nadav Amit , Thomas Gleixner , Andrew Morton , Arjan van de Ven , Borislav Petkov , Dave Hansen , Linus Torvalds , Mel Gorman , Peter Zijlstra , Rik van Riel , Ingo Molnar , David Woodhouse , ak@linux.intel.com, karahmed@amazon.de, pbonzini@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux@dominikbrodowski.net, gregkh@linux-foundation.org Subject: [PATCH 2/2] x86/speculation: Use Indirect Branch Prediction Barrier in context switch Date: Fri, 2 Mar 2018 13:32:10 -0800 Message-Id: In-Reply-To: References: In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: owner-linux-mm@kvack.org List-ID: commit: 18bf3c3ea8ece8f03b6fc58508f2dfd23c7711c7 Flush indirect branches when switching into a process that marked itself non dumpable. This protects high value processes like gpg better, without having too high performance overhead. If done naïvely, we could switch to a kernel idle thread and then back to the original process, such as: process A -> idle -> process A In such scenario, we do not have to do IBPB here even though the process is non-dumpable, as we are switching back to the same process after a hiatus. To avoid the redundant IBPB, which is expensive, we track the last mm user context ID. The cost is to have an extra u64 mm context id to track the last mm we were using before switching to the init_mm used by idle. Avoiding the extra IBPB is probably worth the extra memory for this common scenario. For those cases where tlb_defer_switch_to_init_mm() returns true (non PCID), lazy tlb will defer switch to init_mm, so we will not be changing the mm for the process A -> idle -> process A switch. So IBPB will be skipped for this case. Thanks to the reviewers and Andy Lutomirski for the suggestion of using ctx_id which got rid of the problem of mm pointer recycling. Signed-off-by: Tim Chen Signed-off-by: David Woodhouse Signed-off-by: Thomas Gleixner Cc: ak@linux.intel.com Cc: karahmed@amazon.de Cc: arjan@linux.intel.com Cc: torvalds@linux-foundation.org Cc: linux@dominikbrodowski.net Cc: peterz@infradead.org Cc: bp@alien8.de Cc: luto@kernel.org Cc: pbonzini@redhat.com Cc: gregkh@linux-foundation.org Link: https://lkml.kernel.org/r/1517263487-3708-1-git-send-email-dwmw@amazon.co.uk --- arch/x86/include/asm/tlbflush.h | 2 ++ arch/x86/mm/tlb.c | 31 +++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/arch/x86/include/asm/tlbflush.h b/arch/x86/include/asm/tlbflush.h index 94146f6..99185a0 100644 --- a/arch/x86/include/asm/tlbflush.h +++ b/arch/x86/include/asm/tlbflush.h @@ -68,6 +68,8 @@ static inline void invpcid_flush_all_nonglobals(void) struct tlb_state { struct mm_struct *active_mm; int state; + /* last user mm's ctx id */ + u64 last_ctx_id; /* * Access to this CR4 shadow and to H/W CR4 is protected by diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c index fa74bf5..eac92e2 100644 --- a/arch/x86/mm/tlb.c +++ b/arch/x86/mm/tlb.c @@ -10,6 +10,7 @@ #include #include +#include #include #include #include @@ -106,6 +107,28 @@ void switch_mm_irqs_off(struct mm_struct *prev, struct mm_struct *next, unsigned cpu = smp_processor_id(); if (likely(prev != next)) { + u64 last_ctx_id = this_cpu_read(cpu_tlbstate.last_ctx_id); + + /* + * Avoid user/user BTB poisoning by flushing the branch + * predictor when switching between processes. This stops + * one process from doing Spectre-v2 attacks on another. + * + * As an optimization, flush indirect branches only when + * switching into processes that disable dumping. This + * protects high value processes like gpg, without having + * too high performance overhead. IBPB is *expensive*! + * + * This will not flush branches when switching into kernel + * threads. It will also not flush if we switch to idle + * thread and back to the same process. It will flush if we + * switch to a different non-dumpable process. + */ + if (tsk && tsk->mm && + tsk->mm->context.ctx_id != last_ctx_id && + get_dumpable(tsk->mm) != SUID_DUMP_USER) + indirect_branch_prediction_barrier(); + if (IS_ENABLED(CONFIG_VMAP_STACK)) { /* * If our current stack is in vmalloc space and isn't @@ -120,6 +143,14 @@ void switch_mm_irqs_off(struct mm_struct *prev, struct mm_struct *next, set_pgd(pgd, init_mm.pgd[stack_pgd_index]); } + /* + * Record last user mm's context id, so we can avoid + * flushing branch buffer with IBPB if we switch back + * to the same user. + */ + if (next != &init_mm) + this_cpu_write(cpu_tlbstate.last_ctx_id, next->context.ctx_id); + this_cpu_write(cpu_tlbstate.state, TLBSTATE_OK); this_cpu_write(cpu_tlbstate.active_mm, next); -- 2.9.4 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org