[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen stable-4.9] x86/boot: Report details of speculative mitigations
commit 447dce891f05c0585ec67c47ed22eb2e073ce0ab Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> AuthorDate: Thu Feb 8 12:16:50 2018 +0100 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Thu Feb 8 12:16:50 2018 +0100 x86/boot: Report details of speculative mitigations Nothing very interesting at the moment, but the logic will grow as new mitigations are added. This is part of XSA-254. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Acked-by: Jan Beulich <jbeulich@xxxxxxxx> master commit: 31d6c53adf6417bf449ca50e8416e41b64d46803 master date: 2018-01-16 17:45:50 +0000 --- xen/arch/x86/Makefile | 1 + xen/arch/x86/setup.c | 3 ++ xen/arch/x86/spec_ctrl.c | 75 +++++++++++++++++++++++++++++++++++++++++ xen/include/asm-x86/spec_ctrl.h | 35 +++++++++++++++++++ 4 files changed, 114 insertions(+) diff --git a/xen/arch/x86/Makefile b/xen/arch/x86/Makefile index 70d89c4..1ecf4ba 100644 --- a/xen/arch/x86/Makefile +++ b/xen/arch/x86/Makefile @@ -56,6 +56,7 @@ obj-y += setup.o obj-y += shutdown.o obj-y += smp.o obj-y += smpboot.o +obj-y += spec_ctrl.o obj-y += srat.o obj-y += string.o obj-y += sysctl.o diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index de0edf3..c5736f1 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -51,6 +51,7 @@ #include <asm/alternative.h> #include <asm/mc146818rtc.h> #include <asm/cpuid.h> +#include <asm/spec_ctrl.h> /* opt_nosmp: If true, secondary processors are ignored. */ static bool_t __initdata opt_nosmp; @@ -1487,6 +1488,8 @@ void __init noreturn __start_xen(unsigned long mbi_p) if ( cpu_has_fsgsbase ) set_in_cr4(X86_CR4_FSGSBASE); + init_speculation_mitigations(); + init_idle_domain(); this_cpu(stubs.addr) = alloc_stub_page(smp_processor_id(), diff --git a/xen/arch/x86/spec_ctrl.c b/xen/arch/x86/spec_ctrl.c new file mode 100644 index 0000000..256701a --- /dev/null +++ b/xen/arch/x86/spec_ctrl.c @@ -0,0 +1,75 @@ +/****************************************************************************** + * arch/x86/spec_ctrl.c + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; If not, see <http://www.gnu.org/licenses/>. + * + * Copyright (c) 2017-2018 Citrix Systems Ltd. + */ +#include <xen/init.h> +#include <xen/lib.h> + +#include <asm/processor.h> +#include <asm/spec_ctrl.h> + +enum ind_thunk { + THUNK_DEFAULT, /* Decide which thunk to use at boot time. */ + THUNK_NONE, /* Missing compiler support for thunks. */ + + THUNK_RETPOLINE, +}; + +static void __init print_details(enum ind_thunk thunk) +{ + printk(XENLOG_DEBUG "Speculative mitigation facilities:\n"); + + /* Compiled-in support which pertains to BTI mitigations. */ + if ( IS_ENABLED(CONFIG_INDIRECT_THUNK) ) + printk(XENLOG_DEBUG " Compiled-in support: INDIRECT_THUNK\n"); + + printk(XENLOG_INFO + "BTI mitigations: Thunk %s\n", + thunk == THUNK_NONE ? "N/A" : + thunk == THUNK_RETPOLINE ? "RETPOLINE" : "?"); +} + +void __init init_speculation_mitigations(void) +{ + enum ind_thunk thunk = THUNK_DEFAULT; + + /* + * Supplimentary minor adjustments. Without compiler support, there are + * no thunks. + */ + if ( !IS_ENABLED(CONFIG_INDIRECT_THUNK) ) + thunk = THUNK_NONE; + + /* + * If there are still no thunk preferences, the compiled default is + * actually retpoline, and it is better than nothing. + */ + if ( thunk == THUNK_DEFAULT ) + thunk = THUNK_RETPOLINE; + + print_details(thunk); +} + +/* + * Local variables: + * mode: C + * c-file-style: "BSD" + * c-basic-offset: 4 + * tab-width: 4 + * indent-tabs-mode: nil + * End: + */ diff --git a/xen/include/asm-x86/spec_ctrl.h b/xen/include/asm-x86/spec_ctrl.h new file mode 100644 index 0000000..e088a55 --- /dev/null +++ b/xen/include/asm-x86/spec_ctrl.h @@ -0,0 +1,35 @@ +/****************************************************************************** + * include/asm-x86/spec_ctrl.h + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; If not, see <http://www.gnu.org/licenses/>. + * + * Copyright (c) 2017-2018 Citrix Systems Ltd. + */ + +#ifndef __X86_SPEC_CTRL_H__ +#define __X86_SPEC_CTRL_H__ + +void init_speculation_mitigations(void); + +#endif /* !__X86_SPEC_CTRL_H__ */ + +/* + * Local variables: + * mode: C + * c-file-style: "BSD" + * c-basic-offset: 4 + * tab-width: 4 + * indent-tabs-mode: nil + * End: + */ -- generated by git-patchbot for /home/xen/git/xen.git#stable-4.9 _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |