[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH RESEND v9 36/36] x86/fred: Disable FRED by default in its early stage
 
- 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:35:53 -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:04:47 +0000
 
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
 
 
 
Disable FRED by default in its early stage.
To enable FRED, a new kernel command line option "fred" needs to be added.
Tested-by: Shan Kang <shan.kang@xxxxxxxxx>
Signed-off-by: Xin Li <xin3.li@xxxxxxxxx>
---
Changes since v7:
* Add a log message when FRED is enabled.
---
 Documentation/admin-guide/kernel-parameters.txt | 4 ++++
 arch/x86/kernel/cpu/common.c                    | 3 +++
 arch/x86/kernel/fred.c                          | 3 +++
 3 files changed, 10 insertions(+)
diff --git a/Documentation/admin-guide/kernel-parameters.txt 
b/Documentation/admin-guide/kernel-parameters.txt
index a1457995fd41..cb12decfcdc0 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -1513,6 +1513,10 @@
                        Warning: use of this parameter will taint the kernel
                        and may cause unknown problems.
 
+       fred
+                       Forcefully enable flexible return and event delivery,
+                       which is otherwise disabled by default.
+
        ftrace=[tracer]
                        [FTRACE] will set and start the specified tracer
                        as early as possible in order to facilitate early
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
index b34a8a138755..38cf4f64a56e 100644
--- a/arch/x86/kernel/cpu/common.c
+++ b/arch/x86/kernel/cpu/common.c
@@ -1451,6 +1451,9 @@ static void __init cpu_parse_early_param(void)
        char *argptr = arg, *opt;
        int arglen, taint = 0;
 
+       if (!cmdline_find_option_bool(boot_command_line, "fred"))
+               setup_clear_cpu_cap(X86_FEATURE_FRED);
+
 #ifdef CONFIG_X86_32
        if (cmdline_find_option_bool(boot_command_line, "no387"))
 #ifdef CONFIG_MATH_EMULATION
diff --git a/arch/x86/kernel/fred.c b/arch/x86/kernel/fred.c
index 7fdf79c964a8..a4a726ea9fc2 100644
--- a/arch/x86/kernel/fred.c
+++ b/arch/x86/kernel/fred.c
@@ -8,6 +8,9 @@
 
 void cpu_init_fred_exceptions(void)
 {
+       /* When FRED is enabled by default, this log message may not needed */
+       pr_info("Initialize FRED on CPU%d\n", smp_processor_id());
+
        wrmsrl(MSR_IA32_FRED_CONFIG,
               /* Reserve for CALL emulation */
               FRED_CONFIG_REDZONE |
-- 
2.34.1
 
    
     |