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 >>