This version of the series has finally run on real hardware, Intel
PantherLake. Notable changes:
* Rework TSS setup, given an unpleasant discovery about VT-x.
* Fix an INT $N emulation bug in IDT mode, discovered by XTF testing to check
that FRED behaved the same.
* Document aspects of the PV ABI now they've been thoroughly reverse
engineered.
By the end of patch 6, PVH dom0 works.
By the end of the series, PV dom0 works.
https://gitlab.com/xen-project/hardware/xen-staging/-/pipelines/2354867216
Andrew Cooper (14):
x86/pv: Don't assume that INT $imm8 instructions are two bytes long
docs/guest-guide: Describe the PV traps and entrypoints ABI
x86/boot: Move gdt_l1e caching out of traps_init()
x86/boot: Document the ordering dependency of _svm_cpu_up()
x86/traps: Move traps_init() earlier on boot
x86/traps: Don't configure Supervisor Shadow Stack tokens in FRED mode
x86/traps: Introduce FRED entrypoints
x86/traps: Enable FRED when requested
x86/pv: Adjust GS handling for FRED mode
x86/pv: Guest exception handling in FRED mode
x86/pv: ERETU error handling
x86/pv: System call handling in FRED mode
x86: Clamp reserved bits in eflags more aggressively
x86/traps: Use fatal_trap() for #UD and #GP
docs/glossary.rst | 3 +
docs/guest-guide/x86/index.rst | 1 +
docs/guest-guide/x86/pv-traps.rst | 123 +++++++
xen/arch/x86/cpu/common.c | 4 +-
xen/arch/x86/domain.c | 22 +-
xen/arch/x86/hvm/domain.c | 4 +-
xen/arch/x86/hvm/svm/svm.c | 16 +
xen/arch/x86/include/asm/asm_defns.h | 63 ++++
xen/arch/x86/include/asm/current.h | 3 +
xen/arch/x86/include/asm/domain.h | 2 +
xen/arch/x86/include/asm/hypercall.h | 2 -
xen/arch/x86/include/asm/pv/traps.h | 2 +
xen/arch/x86/include/asm/traps.h | 2 +
xen/arch/x86/include/asm/x86-defns.h | 7 +
xen/arch/x86/mm.c | 14 +-
xen/arch/x86/pv/dom0_build.c | 2 +-
xen/arch/x86/pv/domain.c | 22 +-
xen/arch/x86/pv/emul-priv-op.c | 72 +++-
xen/arch/x86/pv/iret.c | 8 +-
xen/arch/x86/pv/misc-hypercalls.c | 16 +-
xen/arch/x86/pv/traps.c | 39 +++
xen/arch/x86/setup.c | 20 +-
xen/arch/x86/smpboot.c | 11 +
xen/arch/x86/traps-setup.c | 147 +++++++-
xen/arch/x86/traps.c | 486 ++++++++++++++++++++++++++-
xen/arch/x86/x86_64/Makefile | 1 +
xen/arch/x86/x86_64/entry-fred.S | 57 ++++
xen/arch/x86/x86_64/entry.S | 4 +-
28 files changed, 1091 insertions(+), 62 deletions(-)
create mode 100644 docs/guest-guide/x86/pv-traps.rst
create mode 100644 xen/arch/x86/x86_64/entry-fred.S
--
2.39.5