On 21/09/2016 18:20, Brijesh Singh wrote:
> Hi Paolo,
> 
> On 09/13/2016 06:07 PM, Paolo Bonzini wrote:
>>
>>
>> On 13/09/2016 16:49, Brijesh Singh wrote:
>>> Fn8000_001f cpuid provides the memory encryption (aka C-bit)
>>>
>>> Signed-off-by: Brijesh Singh <brijesh.si...@amd.com>
>>> ---
>>>  target-i386/cpu.c |    3 +++
>>>  1 file changed, 3 insertions(+)
>>>
>>> diff --git a/target-i386/cpu.c b/target-i386/cpu.c
>>> index 6a1afab..e039c08 100644
>>> --- a/target-i386/cpu.c
>>> +++ b/target-i386/cpu.c
>>> @@ -2625,6 +2625,9 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t
>>> index, uint32_t count,
>>>              *edx = 0;
>>>          }
>>>          break;
>>> +    case 0x8000001F:
>>> +        host_cpuid(index, 0, eax, ebx, ecx, edx);
>>> +        break;
>>>      case 0xC0000000:
>>>          *eax = env->cpuid_xlevel2;
>>>          *ebx = 0;
>>>
>>>
>>>
>>
>> This should only be visible to a SEV-enabled guest.  Also, the xlevel
>> should be bumped to 0x8000001F for SEV-enabled guests.
>>
> 
> Okay I will add sev_enabled() check before getting the cpuid.
> 
> Regarding xlevel, I am not able to locate qemu code which bumped the
> xelevel for KVM enabled guests. Maybe I am missing something, looking at
> code gave me impression that xlevel is obtained using CPUID_80000000.
> One of the KVM RFC patch [1] updates the min level.

That patch makes sure that entry->eax is _at most_ 0x8000001f.  Here you
want to make sure that CPUID[0x80000000].EAX == 0x8000001f for SEV guests.

I think you need to change x86_cpu_load_def:

    object_property_set_int(OBJECT(cpu), def->xlevel, "xlevel", errp);

if SEV is enabled, use max(0x8000001f, def->xlevel) instead of def->xlevel.

Paolo
 Do I need to do
> something more into qemu to bumped the xlevel?
> 
> http://marc.info/?l=linux-mm&m=147190934724195&w=2
> 
>> Paolo
>>

Reply via email to