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 <[email protected]>
>>> ---
>>> 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
>>