From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57964) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bmkKO-00012w-Ln for qemu-devel@nongnu.org; Wed, 21 Sep 2016 12:24:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bmkKL-0008UK-B0 for qemu-devel@nongnu.org; Wed, 21 Sep 2016 12:24:56 -0400 Received: from mx1.redhat.com ([209.132.183.28]:56974) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bmkKL-0008UB-4o for qemu-devel@nongnu.org; Wed, 21 Sep 2016 12:24:53 -0400 References: <147377800565.11859.4411044563640180545.stgit@brijesh-build-machine> <147377817920.11859.9423132506504837623.stgit@brijesh-build-machine> <859d1705-0a8c-21d4-6abb-d33b62a77a14@redhat.com> From: Paolo Bonzini Message-ID: <9c90300e-cb67-f5aa-df97-d3b7453e3544@redhat.com> Date: Wed, 21 Sep 2016 18:24:41 +0200 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [RFC PATCH v1 17/22] target-i386: add cpuid Fn8000_001f List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Brijesh Singh , ehabkost@redhat.com, crosthwaite.peter@gmail.com, armbru@redhat.com, mst@redhat.com, p.fedin@samsung.com, qemu-devel@nongnu.org, lcapitulino@redhat.com, rth@twiddle.net 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 >>> --- >>> 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 >>