From nobody Mon May 6 07:38:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1504604318044968.2851455791526; Tue, 5 Sep 2017 02:38:38 -0700 (PDT) Received: from localhost ([::1]:57739 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dpAJY-0006M6-Ui for importer@patchew.org; Tue, 05 Sep 2017 05:38:36 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46358) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dpABp-0008T5-OV for qemu-devel@nongnu.org; Tue, 05 Sep 2017 05:30:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dpABk-0007uz-OY for qemu-devel@nongnu.org; Tue, 05 Sep 2017 05:30:37 -0400 Received: from szxga05-in.huawei.com ([45.249.212.191]:2251) by eggs.gnu.org with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.71) (envelope-from ) id 1dpABk-0007sz-4r for qemu-devel@nongnu.org; Tue, 05 Sep 2017 05:30:32 -0400 Received: from 172.30.72.60 (EHLO DGGEMS414-HUB.china.huawei.com) ([172.30.72.60]) by dggrg05-dlp.huawei.com (MOS 4.4.6-GA FastPath queued) with ESMTP id DGQ09083; Tue, 05 Sep 2017 17:30:24 +0800 (CST) Received: from localhost (10.177.18.62) by DGGEMS414-HUB.china.huawei.com (10.3.19.214) with Microsoft SMTP Server id 14.3.301.0; Tue, 5 Sep 2017 17:30:13 +0800 From: Gonglei To: Date: Tue, 5 Sep 2017 17:30:04 +0800 Message-ID: <1504603805-180240-2-git-send-email-arei.gonglei@huawei.com> X-Mailer: git-send-email 2.8.2.windows.1 In-Reply-To: <1504603805-180240-1-git-send-email-arei.gonglei@huawei.com> References: <1504603805-180240-1-git-send-email-arei.gonglei@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.177.18.62] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A0B0204.59AE6EB0.01F6, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0, ip=0.0.0.0, so=2014-11-16 11:51:01, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 957929774d3f9df61be49d3b077bc4f5 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x-2.6.x [generic] [fuzzy] X-Received-From: 45.249.212.191 Subject: [Qemu-devel] [PATCH 1/2] pc: add 2.11 machine type X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: weidong.huang@huawei.com, ehabkost@redhat.com, mst@redhat.com, mtosatti@redhat.com, Gonglei , vrozenfe@redhat.com, pbonzini@redhat.com, rth@twiddle.net Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" CC: "Michael S. Tsirkin" CC: Paolo Bonzini CC: Richard Henderson CC: Eduardo Habkost Signed-off-by: Gonglei Reviewed-by: Eduardo Habkost --- hw/i386/pc_piix.c | 15 ++++++++++++--- hw/i386/pc_q35.c | 13 +++++++++++-- include/hw/i386/pc.h | 3 +++ 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index 46dfd2c..b03cc04 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -436,21 +436,30 @@ static void pc_i440fx_machine_options(MachineClass *m) m->default_display =3D "std"; } =20 -static void pc_i440fx_2_10_machine_options(MachineClass *m) +static void pc_i440fx_2_11_machine_options(MachineClass *m) { pc_i440fx_machine_options(m); m->alias =3D "pc"; m->is_default =3D 1; } =20 +DEFINE_I440FX_MACHINE(v2_11, "pc-i440fx-2.11", NULL, + pc_i440fx_2_11_machine_options); + +static void pc_i440fx_2_10_machine_options(MachineClass *m) +{ + pc_i440fx_2_11_machine_options(m); + m->is_default =3D 0; + m->alias =3D NULL; + SET_MACHINE_COMPAT(m, PC_COMPAT_2_10); +} + DEFINE_I440FX_MACHINE(v2_10, "pc-i440fx-2.10", NULL, pc_i440fx_2_10_machine_options); =20 static void pc_i440fx_2_9_machine_options(MachineClass *m) { pc_i440fx_2_10_machine_options(m); - m->is_default =3D 0; - m->alias =3D NULL; SET_MACHINE_COMPAT(m, PC_COMPAT_2_9); m->numa_auto_assign_ram =3D numa_legacy_auto_assign_ram; } diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c index 169a214..d6fef8d 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c @@ -302,20 +302,29 @@ static void pc_q35_machine_options(MachineClass *m) m->max_cpus =3D 288; } =20 -static void pc_q35_2_10_machine_options(MachineClass *m) +static void pc_q35_2_11_machine_options(MachineClass *m) { pc_q35_machine_options(m); m->alias =3D "q35"; m->numa_auto_assign_ram =3D numa_legacy_auto_assign_ram; } =20 +DEFINE_Q35_MACHINE(v2_11, "pc-q35-2.11", NULL, + pc_q35_2_11_machine_options); + +static void pc_q35_2_10_machine_options(MachineClass *m) +{ + pc_q35_2_11_machine_options(m); + m->alias =3D NULL; + SET_MACHINE_COMPAT(m, PC_COMPAT_2_10); +} + DEFINE_Q35_MACHINE(v2_10, "pc-q35-2.10", NULL, pc_q35_2_10_machine_options); =20 static void pc_q35_2_9_machine_options(MachineClass *m) { pc_q35_2_10_machine_options(m); - m->alias =3D NULL; SET_MACHINE_COMPAT(m, PC_COMPAT_2_9); } =20 diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index d80859b..8226904 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -369,6 +369,9 @@ int e820_add_entry(uint64_t, uint64_t, uint32_t); int e820_get_num_entries(void); bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *); =20 +#define PC_COMPAT_2_10 \ + HW_COMPAT_2_10 \ + #define PC_COMPAT_2_9 \ HW_COMPAT_2_9 \ {\ --=20 1.8.3.1 From nobody Mon May 6 07:38:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1504604597762612.6716192146674; Tue, 5 Sep 2017 02:43:17 -0700 (PDT) Received: from localhost ([::1]:57761 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dpAO4-0001nh-Ne for importer@patchew.org; Tue, 05 Sep 2017 05:43:16 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46412) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dpABs-0008W3-VS for qemu-devel@nongnu.org; Tue, 05 Sep 2017 05:30:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dpABk-0007vD-Vm for qemu-devel@nongnu.org; Tue, 05 Sep 2017 05:30:40 -0400 Received: from szxga05-in.huawei.com ([45.249.212.191]:2252) by eggs.gnu.org with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.71) (envelope-from ) id 1dpABk-0007t2-95 for qemu-devel@nongnu.org; Tue, 05 Sep 2017 05:30:32 -0400 Received: from 172.30.72.60 (EHLO DGGEMS403-HUB.china.huawei.com) ([172.30.72.60]) by dggrg05-dlp.huawei.com (MOS 4.4.6-GA FastPath queued) with ESMTP id DGQ09082; Tue, 05 Sep 2017 17:30:24 +0800 (CST) Received: from localhost (10.177.18.62) by DGGEMS403-HUB.china.huawei.com (10.3.19.203) with Microsoft SMTP Server id 14.3.301.0; Tue, 5 Sep 2017 17:30:13 +0800 From: Gonglei To: Date: Tue, 5 Sep 2017 17:30:05 +0800 Message-ID: <1504603805-180240-3-git-send-email-arei.gonglei@huawei.com> X-Mailer: git-send-email 2.8.2.windows.1 In-Reply-To: <1504603805-180240-1-git-send-email-arei.gonglei@huawei.com> References: <1504603805-180240-1-git-send-email-arei.gonglei@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.177.18.62] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A0B0203.59AE6EB0.019A, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0, ip=0.0.0.0, so=2014-11-16 11:51:01, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: c806f08c8765f63f0508a95a3f5099f5 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x-2.6.x [generic] [fuzzy] X-Received-From: 45.249.212.191 Subject: [Qemu-devel] [PATCH 2/2] i386/cpu/hyperv: support over 64 vcpus for windows guests X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: weidong.huang@huawei.com, ehabkost@redhat.com, mst@redhat.com, mtosatti@redhat.com, Gonglei , vrozenfe@redhat.com, pbonzini@redhat.com, rth@twiddle.net Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Starting with Windows Server 2012 and Windows 8, if CPUID.40000005.EAX contains a value of -1, Windows assumes specific limit to the number of VPs. In this case, Windows Server 2012 guest VMs may use more than 64 VPs, up to the maximum supported number of processors applicable to the specific Windows version being used. https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/referenc= e/tlfs For compatibility, Let's introduce a new property for X86CPU, named "hv-cpuid-limits-eax" as Paolo's suggestion, and set it to "on" before machine 2.10. Signed-off-by: Gonglei --- include/hw/i386/pc.h | 5 +++++ target/i386/cpu.c | 1 + target/i386/cpu.h | 2 ++ target/i386/kvm.c | 18 +++++++++++++++++- 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index 8226904..db32e58 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -371,6 +371,11 @@ bool e820_get_entry(int, uint32_t, uint64_t *, uint64_= t *); =20 #define PC_COMPAT_2_10 \ HW_COMPAT_2_10 \ + {\ + .driver =3D TYPE_X86_CPU,\ + .property =3D "hv_cpuid_limits_eax",\ + .value =3D "on",\ + },\ =20 #define PC_COMPAT_2_9 \ HW_COMPAT_2_9 \ diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 69676e1..0d47bdd 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -4145,6 +4145,7 @@ static Property x86_cpu_properties[] =3D { false), DEFINE_PROP_BOOL("vmware-cpuid-freq", X86CPU, vmware_cpuid_freq, true), DEFINE_PROP_BOOL("tcg-cpuid", X86CPU, expose_tcg, true), + DEFINE_PROP_BOOL("hv-cpuid-limits-eax", X86CPU, hv_cpuid_limits_eax, f= alse), DEFINE_PROP_END_OF_LIST() }; =20 diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 525d35d..f8b455a 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -1282,6 +1282,8 @@ struct X86CPU { int32_t socket_id; int32_t core_id; int32_t thread_id; + + bool hv_cpuid_limits_eax; }; =20 static inline X86CPU *x86_env_get_cpu(CPUX86State *env) diff --git a/target/i386/kvm.c b/target/i386/kvm.c index 6db7783..cf6ef96 100644 --- a/target/i386/kvm.c +++ b/target/i386/kvm.c @@ -751,7 +751,23 @@ int kvm_arch_init_vcpu(CPUState *cs) =20 c =3D &cpuid_data.entries[cpuid_i++]; c->function =3D HYPERV_CPUID_IMPLEMENT_LIMITS; - c->eax =3D 0x40; + + if (!cpu->hv_cpuid_limits_eax) { + /* + * Starting with Windows Server 2012 and Windows 8, if + * CPUID.40000005.EAX contains a value of -1, Windows + * assumes specific limit to the number of VPs. In this case, + * Windows Server 2012 guest VMs may use more than 64 VPs, + * up to the maximum supported number of processors + * applicable to the specific Windows version being used. + * + * https://docs.microsoft.com/en-us/virtualization/ + * hyper-v-on-windows/reference/tlfs + */ + c->eax =3D -1; + } else { + c->eax =3D 0x40; + } c->ebx =3D 0x40; =20 kvm_base =3D KVM_CPUID_SIGNATURE_NEXT; --=20 1.8.3.1