[PATCH 0/3] x86: Debug Regs fixes, part 1

Andrew Cooper posted 3 patches 8 months, 1 week ago
Patches applied successfully (tree, apply log)
git fetch https://gitlab.com/xen-project/patchew/xen tags/patchew/20230829134333.3551243-1-andrew.cooper3@citrix.com
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
[PATCH 0/3] x86: Debug Regs fixes, part 1
Posted by Andrew Cooper 8 months, 1 week ago
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