This is the rework of "x86: Fix calculation of %dr6/dr7 reserved bits",
accounting for things which have changed in the past 5 years, and new
discoveries.
In particular, it was buggy to take Roger's R-by. The logic was correct when
he reviewed it, and was not correct in the forward-port presented.
Introduce enough BusLock infrastructure (avaialble in current/next gen Intel
and AMD CPUs) to get the dr6 calculations up-to-date, and reimplement the
constants logic with reserved bits in a way that's hopefully clear and
acceptable to everyone.
This is part 1 of the work to address the bug Jinoh reported. Sorry I haven't
had time to sort the rest yet, but at least this is a small bit of progress.
Andrew Cooper (3):
x86: Reject bad %dr6/%dr7 values when loading guest state
x86: Introduce new debug.c for debug register infrastructure
x86: Fix calculation of %dr6/dr7 reserved bits
xen/arch/x86/Makefile | 1 +
xen/arch/x86/debug.c | 46 +++++++++++++++++++++
xen/arch/x86/domain.c | 24 ++++++++++-
xen/arch/x86/hvm/hvm.c | 14 ++++++-
xen/arch/x86/include/asm/debugreg.h | 15 +++++--
xen/arch/x86/include/asm/x86-defns.h | 21 +++++++++-
xen/arch/x86/pv/misc-hypercalls.c | 16 ++-----
xen/include/public/arch-x86/cpufeatureset.h | 1 +
8 files changed, 117 insertions(+), 21 deletions(-)
create mode 100644 xen/arch/x86/debug.c
--
2.30.2