1 Nested SVM (AMD) CPUID requirements

The first step in making nested SVM production-ready is to make sure that all features are implemented and well-tested. To make this tractable, we will initially be limiting the “supported” range of nested virt to a specific subset of host and guest features. This document describes the criteria for deciding on features, and the rationale behind each feature.

For AMD, all virtualization-related features can be found in CPUID leaf 8000000A:edx

2 Criteria

3 Bits

This is a pure optimization, both on the side of the L0 and L1. The implementaiton for L1 is entirely Xen-side, so can be provided even on hardware that doesn’t provide it. And it’s purely an optimization, so could be “implemented” by ignoring the bits entirely.

As such, we don’t need to require it for L0; and as it’s already implemented, no reason not to provide it to L1. Before this feature was available those bits were marked SBZ (“should be zero”); setting them was already advertised to cause unpredictable behavior.