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

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

For reference, from AMD''s manual, Vol.2:
"The processor reads the current privilege level from the CPL field in the
VMCB, not from SS.DPL. However, SS.DPL should match the CPL field."

And from Intel''s manual, Vol.3B:
"Note that the value of the DPL field for SS is always equal to the logical
processor¹s current privilege level (CPL)."

 -- Keir

On 10/3/08 19:18, "Keir Fraser" <keir.fraser@eu.citrix.com>
wrote:

> 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));
>> _______________________________________________
>> Xen-devel mailing list
>> Xen-devel@lists.xensource.com
>> http://lists.xensource.com/xen-devel