[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH RESEND v9 15/36] x86/fred: No ESPFIX needed when FRED is enabled
 
- To: linux-doc@xxxxxxxxxxxxxxx,	linux-kernel@xxxxxxxxxxxxxxx,	linux-edac@xxxxxxxxxxxxxxx,	linux-hyperv@xxxxxxxxxxxxxxx,	kvm@xxxxxxxxxxxxxxx,	xen-devel@xxxxxxxxxxxxxxxxxxxx
 
- From: Xin Li <xin3.li@xxxxxxxxx>
 
- Date: Tue,  1 Aug 2023 01:32:57 -0700
 
- Cc: Jonathan Corbet <corbet@xxxxxxx>,	Thomas Gleixner <tglx@xxxxxxxxxxxxx>,	Ingo Molnar <mingo@xxxxxxxxxx>,	Borislav Petkov <bp@xxxxxxxxx>,	Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx>,	x86@xxxxxxxxxx,	"H . Peter Anvin" <hpa@xxxxxxxxx>,	Andy Lutomirski <luto@xxxxxxxxxx>,	Oleg Nesterov <oleg@xxxxxxxxxx>,	Tony Luck <tony.luck@xxxxxxxxx>,	"K . Y . Srinivasan" <kys@xxxxxxxxxxxxx>,	Haiyang Zhang <haiyangz@xxxxxxxxxxxxx>,	Wei Liu <wei.liu@xxxxxxxxxx>,	Dexuan Cui <decui@xxxxxxxxxxxxx>,	Paolo Bonzini <pbonzini@xxxxxxxxxx>,	Wanpeng Li <wanpengli@xxxxxxxxxxx>,	Vitaly Kuznetsov <vkuznets@xxxxxxxxxx>,	Sean Christopherson <seanjc@xxxxxxxxxx>,	Peter Zijlstra <peterz@xxxxxxxxxxxxx>,	Juergen Gross <jgross@xxxxxxxx>,	Stefano Stabellini <sstabellini@xxxxxxxxxx>,	Oleksandr Tyshchenko <oleksandr_tyshchenko@xxxxxxxx>,	Josh Poimboeuf <jpoimboe@xxxxxxxxxx>,	"Paul E . McKenney" <paulmck@xxxxxxxxxx>,	Catalin Marinas <catalin.marinas@xxxxxxx>,	Randy Dunlap <rdunlap@xxxxxxxxxxxxx>,	Steven Rostedt <rostedt@xxxxxxxxxxx>,	Kim Phillips <kim.phillips@xxxxxxx>,	Xin Li <xin3.li@xxxxxxxxx>,	Hyeonggon Yoo <42.hyeyoo@xxxxxxxxx>,	"Liam R . Howlett" <Liam.Howlett@xxxxxxxxxx>,	Sebastian Reichel <sebastian.reichel@xxxxxxxxxxxxx>,	"Kirill A . Shutemov" <kirill.shutemov@xxxxxxxxxxxxxxx>,	Suren Baghdasaryan <surenb@xxxxxxxxxx>,	Pawan Gupta <pawan.kumar.gupta@xxxxxxxxxxxxxxx>,	Babu Moger <babu.moger@xxxxxxx>,	Jim Mattson <jmattson@xxxxxxxxxx>,	Sandipan Das <sandipan.das@xxxxxxx>,	Lai Jiangshan <jiangshanlai@xxxxxxxxx>,	Hans de Goede <hdegoede@xxxxxxxxxx>,	Reinette Chatre <reinette.chatre@xxxxxxxxx>,	Daniel Sneddon <daniel.sneddon@xxxxxxxxxxxxxxx>,	Breno Leitao <leitao@xxxxxxxxxx>,	Nikunj A Dadhania <nikunj@xxxxxxx>,	Brian Gerst <brgerst@xxxxxxxxx>,	Sami Tolvanen <samitolvanen@xxxxxxxxxx>,	Alexander Potapenko <glider@xxxxxxxxxx>,	Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>,	Arnd Bergmann <arnd@xxxxxxxx>,	"Eric W . Biederman" <ebiederm@xxxxxxxxxxxx>,	Kees Cook <keescook@xxxxxxxxxxxx>,	Masami Hiramatsu <mhiramat@xxxxxxxxxx>,	Masahiro Yamada <masahiroy@xxxxxxxxxx>,	Ze Gao <zegao2021@xxxxxxxxx>,	Fei Li <fei1.li@xxxxxxxxx>,	Conghui <conghui.chen@xxxxxxxxx>,	Ashok Raj <ashok.raj@xxxxxxxxx>,	"Jason A . Donenfeld" <Jason@xxxxxxxxx>,	Mark Rutland <mark.rutland@xxxxxxx>,	Jacob Pan <jacob.jun.pan@xxxxxxxxxxxxxxx>,	Jiapeng Chong <jiapeng.chong@xxxxxxxxxxxxxxxxx>,	Jane Malalane <jane.malalane@xxxxxxxxxx>,	David Woodhouse <dwmw@xxxxxxxxxxxx>,	Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx>,	Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>,	Yantengsi <siyanteng@xxxxxxxxxxx>,	Christophe Leroy <christophe.leroy@xxxxxxxxxx>,	Sathvika Vasireddy <sv@xxxxxxxxxxxxx>
 
- Delivery-date: Tue, 01 Aug 2023 09:02:13 +0000
 
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
 
 
 
From: "H. Peter Anvin (Intel)" <hpa@xxxxxxxxx>
Because FRED always restores the full value of %rsp, ESPFIX is
no longer needed when it's enabled.
Signed-off-by: H. Peter Anvin (Intel) <hpa@xxxxxxxxx>
Tested-by: Shan Kang <shan.kang@xxxxxxxxx>
Signed-off-by: Xin Li <xin3.li@xxxxxxxxx>
---
 arch/x86/kernel/espfix_64.c | 8 ++++++++
 1 file changed, 8 insertions(+)
diff --git a/arch/x86/kernel/espfix_64.c b/arch/x86/kernel/espfix_64.c
index 16f9814c9be0..48d133a54f45 100644
--- a/arch/x86/kernel/espfix_64.c
+++ b/arch/x86/kernel/espfix_64.c
@@ -106,6 +106,10 @@ void __init init_espfix_bsp(void)
        pgd_t *pgd;
        p4d_t *p4d;
 
+       /* FRED systems don't need ESPFIX */
+       if (cpu_feature_enabled(X86_FEATURE_FRED))
+               return;
+
        /* Install the espfix pud into the kernel page directory */
        pgd = &init_top_pgt[pgd_index(ESPFIX_BASE_ADDR)];
        p4d = p4d_alloc(&init_mm, pgd, ESPFIX_BASE_ADDR);
@@ -129,6 +133,10 @@ void init_espfix_ap(int cpu)
        void *stack_page;
        pteval_t ptemask;
 
+       /* FRED systems don't need ESPFIX */
+       if (cpu_feature_enabled(X86_FEATURE_FRED))
+               return;
+
        /* We only have to do this once... */
        if (likely(per_cpu(espfix_stack, cpu)))
                return;         /* Already initialized */
-- 
2.34.1
 
    
     |