This is my work-in-progress series for getting nested virt working
again on AMD.
The first patch is an early draft to integrate the SVM bits into the
CPUID framework. It will be partially superseded by a series Andrew
has posted but which has not yet been checked in.
The second patch is a workaround which hides the PCID bit from the L1
when nested HVM is enabled. Long-term, nested support for PCID will
be necessary for performance.
Most of the rest of the patches involve improving tracing: Either
fixing what's bitrotted in xenalyze, what's bitrotted specifically on
the SVM side, or what could be improved in the upstream tracing.
The last patch is a placeholder for future work, commenting a place
where behavior is wrong and another where more work needs to be done
to assure safety.
George Dunlap (14):
x86/cpuid-policy: Add AMD SVM CPUID leaf to featureset
x86/cpu-policy: HACK Disable PCID when nested virt is enabled
xenalyze: Basic nested virt processing
xenalyze: Track generic event information when not in summary mode
xenalyze: Ignore vmexits where an HVM_HANDLER traces would be
redundant
xen/svm: Remove redundant HVM_HANDLER trace for EXCEPTION_AC
xen/hvm: Don't skip MSR_READ trace record
svm: Do NPF trace before calling hvm_hap_nested_page_fault
x86/emulate: Don't trace cr reads during emulation
xenalyze: Quiet warnings about VMEXIT_IOIO
x86/trace: Add trace to xsetbv svm/vmx handler path
xenalyze: Basic processing for XSETBV exits and handlers
x86/svm: Add a trace for VMEXIT_VMRUN
x86/nestedsvm: Note some places for improvement
tools/libs/light/libxl_cpuid.c | 1 +
tools/misc/xen-cpuid.c | 1 +
tools/xentrace/xenalyze.c | 133 +++++++++++++++-----
xen/arch/x86/cpu-policy.c | 24 ++--
xen/arch/x86/cpu/common.c | 2 +
xen/arch/x86/hvm/emulate.c | 1 -
xen/arch/x86/hvm/hvm.c | 4 +-
xen/arch/x86/hvm/svm/nestedsvm.c | 13 ++
xen/arch/x86/hvm/svm/svm.c | 7 +-
xen/include/public/arch-x86/cpufeatureset.h | 16 +++
xen/include/public/trace.h | 1 +
xen/include/xen/lib/x86/cpu-policy.h | 10 +-
xen/lib/x86/cpuid.c | 4 +-
13 files changed, 167 insertions(+), 50 deletions(-)
--
2.25.1