Re: [PATCH] svm: implement NEXTRIPsave SVM feature

Marcelo Tosatti
2010-04-13T16:39:26Z

On Sun, Apr 11, 2010 at 11:07:28PM +0200, Andre Przywara wrote:
> On SVM we set the instruction length of skipped instructions
> to hard-coded, well known values, which could be wrong when (bogus,
> but valid) prefixes (REX, segment override) are used.
> Newer AMD processors (Fam10h 45nm and better, aka. PhenomII or
> AthlonII) have an explicit NEXTRIP field in the VMCB containing the
> desired information.
> Since it is cheap to do so, we use this field to override the guessed
> value on newer processors.
> A fix for older CPUs would be rather expensive, as it would require
> to fetch and partially decode the instruction. As the problem is not
> a security issue and needs special, handcrafted code to trigger
> (no compiler will ever generate such code), I omit a fix for older
> CPUs.
> If someone is interested, I have both a patch for these CPUs as well as
> demo code triggering this issue: It segfaults under KVM, but runs
> perfectly on native Linux.
>
> Signed-off-by: Andre Przywara <andre.przywara@amd.com>
> ---
> arch/x86/include/asm/svm.h | 4 +++-
> arch/x86/kvm/svm.c | 13 ++++++++-----
> 2 files changed, 11 insertions(+), 6 deletions(-)

Applied, thanks.