[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH 00/16] x86: Support for CET Supervisor Shadow Stacks
This series implements Shadow Stack support for Xen to use. You'll need a CET-capable toolchain (Binutils 2.32 and later), but no specific compiler support required. CET-SS makes PV32 unusable, so using shadow stacks prevents the use of 32bit PV guests. Compatibilty can be obtained using PV Shim Andrew Cooper (16): x86/traps: Drop last_extable_addr x86/traps: Clean up printing in do_reserved_trap()/fatal_trap() x86/traps: Factor out exception_fixup() and make printing consistent x86/smpboot: Write the top-of-stack block in cpu_smpboot_alloc() x86/shstk: Introduce Supervisor Shadow Stack support x86/traps: Implement #CP handler and extend #PF for shadow stacks x86/shstk: Re-layout the stack block for shadow stacks x86/shstk: Create shadow stacks x86/cpu: Adjust enable_nmis() to be shadow stack compatible x86/cpu: Adjust reset_stack_and_jump() to be shadow stack compatible x86/spec-ctrl: Adjust DO_OVERWRITE_RSB to be shadow stack compatible x86/extable: Adjust extable handling to be shadow stack compatible x86/ioemul: Rewrite stub generation to be shadow stack compatible x86/alt: Adjust _alternative_instructions() to not create shadow stacks x86/entry: Adjust guest paths to be shadow stack compatible x86/shstk: Activate Supervisor Shadow Stacks xen/arch/x86/Kconfig | 17 +++ xen/arch/x86/acpi/wakeup_prot.S | 56 ++++++++++ xen/arch/x86/alternative.c | 14 +++ xen/arch/x86/boot/x86_64.S | 30 +++++- xen/arch/x86/cpu/common.c | 34 +++++- xen/arch/x86/crash.c | 7 ++ xen/arch/x86/ioport_emulate.c | 11 +- xen/arch/x86/mm.c | 41 ++++--- xen/arch/x86/pv/emul-priv-op.c | 91 ++++++++++++---- xen/arch/x86/pv/gpr_switch.S | 37 ++----- xen/arch/x86/setup.c | 56 ++++++++++ xen/arch/x86/smpboot.c | 10 +- xen/arch/x86/spec_ctrl.c | 8 ++ xen/arch/x86/traps.c | 206 ++++++++++++++++++++++-------------- xen/arch/x86/x86_64/compat/entry.S | 2 +- xen/arch/x86/x86_64/entry.S | 39 ++++++- xen/include/asm-x86/cpufeature.h | 1 + xen/include/asm-x86/cpufeatures.h | 1 + xen/include/asm-x86/current.h | 59 ++++++++--- xen/include/asm-x86/io.h | 3 +- xen/include/asm-x86/mm.h | 1 - xen/include/asm-x86/msr-index.h | 3 + xen/include/asm-x86/page.h | 1 + xen/include/asm-x86/processor.h | 60 +++++++---- xen/include/asm-x86/spec_ctrl_asm.h | 16 ++- xen/include/asm-x86/x86-defns.h | 36 +++++++ xen/include/asm-x86/x86_64/page.h | 1 + xen/scripts/Kconfig.include | 4 + 28 files changed, 640 insertions(+), 205 deletions(-) -- 2.11.0
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |