Re: [Xen-devel] [PATCH][SVM] CPL initialization fix

Keir Fraser
Mon, 10 Mar 2008 19:18:26 -0000

CPL is architecturally SS.DPL in almost all cases. It''s certainly not
CS.DPL. What do you mean by ''migrate a QEMU guest''?

 -- Keir

On 10/3/08 19:14, "Ben Guthro" <bguthro@virtualiron.com> wrote:

> CPL should be determined by code segment''s DPL, not data
segment''s.
>
> This solves a problem migrating a QEMU guest without PV-on-HVM drivers
>
> Signed-off-by: Robert Plillips <rphillips@virtualiron.com>
> Signed-off-by: Ben Guthro <bguthro@virtualoiron.com>
> diff -r f76f151a7431 xen/arch/x86/hvm/svm/svm.c
> --- a/xen/arch/x86/hvm/svm/svm.c
> +++ b/xen/arch/x86/hvm/svm/svm.c
> @@ -557,7 +557,7 @@ static void svm_set_segment_register(str
>          break;
>      case x86_seg_ss:
>          memcpy(&vmcb->ss, reg, sizeof(*reg));
> -        vmcb->cpl = vmcb->ss.attr.fields.dpl;
> +        vmcb->cpl = vmcb->cs.attr.fields.dpl;
>          break;
>      case x86_seg_tr:
>          memcpy(&vmcb->tr, reg, sizeof(*reg));