[PATCH v4 00/14] x86: FRED support

Andrew Cooper posted 14 patches 3 days, 2 hours ago
Only 0 patches received!
There is a newer version of this series
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
[PATCH v4 00/14] x86: FRED support
Posted by Andrew Cooper 3 days, 2 hours ago
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