Alternatives have had a reasonably severe restriction since their
introduction. This has been the source of several bugs, and several
inefficiencies particularly in the speculative safety paths.
https://gitlab.com/xen-project/hardware/xen-staging/-/pipelines/2724019865
v3:
* Run through Gitlab CI.
* Fix up Eclair issues, Clang issues, and older-binutils issues.
Andrew Cooper (5):
x86/emul: Introduce x86_decode_lite()
tests/x86: Introduce a userspace test harness for x86_decode_lite()
x86/alternative: Walk all replacements during self tests
x86/alternative: Relocate all insn-relative fields
x86/spec-ctrl: Introduce and use DO_COND_BHB_SEQ
tools/tests/Makefile | 1 +
tools/tests/x86-decode-lite/.gitignore | 1 +
tools/tests/x86-decode-lite/Makefile | 56 ++
tools/tests/x86-decode-lite/insns.S | 703 ++++++++++++++++++++++
tools/tests/x86-decode-lite/macro-magic.h | 62 ++
tools/tests/x86-decode-lite/main.c | 111 ++++
tools/tests/x86-decode-lite/x86-emulate.h | 27 +
xen/arch/x86/alternative.c | 102 +++-
xen/arch/x86/hvm/vmx/entry.S | 12 +-
xen/arch/x86/include/asm/spec_ctrl_asm.h | 43 +-
xen/arch/x86/x86_emulate/Makefile | 6 +
xen/arch/x86/x86_emulate/decode-lite.c | 330 ++++++++++
xen/arch/x86/x86_emulate/x86_emulate.h | 14 +
13 files changed, 1434 insertions(+), 34 deletions(-)
create mode 100644 tools/tests/x86-decode-lite/.gitignore
create mode 100644 tools/tests/x86-decode-lite/Makefile
create mode 100644 tools/tests/x86-decode-lite/insns.S
create mode 100644 tools/tests/x86-decode-lite/macro-magic.h
create mode 100644 tools/tests/x86-decode-lite/main.c
create mode 100644 tools/tests/x86-decode-lite/x86-emulate.h
create mode 100644 xen/arch/x86/x86_emulate/decode-lite.c
--
2.39.5