From b270420c34cd990b1bcbe506c3fb0ef6f76d21a8 Mon Sep 17 00:00:00 2001 From: Ani Sinha Date: Wed, 8 Jan 2025 15:10:22 +0530 Subject: [PATCH 5/7] pc: q35: Bump max_cpus to 4096 vcpus RH-Author: Ani Sinha RH-MergeRequest: 317: pc: q35: Bump max_cpus to 4096 vcpus RH-Jira: RHEL-57668 RH-Acked-by: Miroslav Rezanina RH-Commit: [1/1] 35242a1fa8fc21f7d73422d23074cd8da5f74781 (anisinha/centos-qemu-kvm) This is the downstream change equivalent of the upstream QEMU commit e4e98c7e ("pc: q35: Bump max_cpus to 4096 vcpus") Since upstream Linux kernel commit f10a570b093e6 ("KVM: x86: Add CONFIG_KVM_MAX_NR_VCPUS to allow up to 4096 vCPUs") Linux kernel can support upto a maximum number of 4096 vcpus when MAXSMP is enabled in the kernel. This upstream change has been backported to c9s kernel already. Please see JIRA https://issues.redhat.com/browse/RHEL-11579 and the following commit authored by Vitaly Kuznetsov: a85f846be686b0a ("KVM: x86: Add CONFIG_KVM_MAX_NR_VCPUS to allow up to 4096 vCPUs") At present, QEMU has been tested to correctly boot a linux guest with 4096 vcpus using edk2 that has the fixes corresponding to the following two upstream edk2 PRs: https://github.com/tianocore/edk2/pull/5410 https://github.com/tianocore/edk2/pull/5418 The changes corresponding to the above two upstream edk2 PRs has been included in the downstream c9s edk2 with the following MR: https://gitlab.com/redhat/centos-stream/src/edk2/-/merge_requests/59 So bump up the value max_cpus to 4096 for RHEL q35 machines versions 9.6 and newer. Q35 RHEL machines versions 9.4 and older continue to support 710 maximum vcpus as before for compatibility reasons. See also https://gitlab.com/redhat/centos-stream/src/qemu-kvm/-/merge_requests/236 https://gitlab.com/redhat/centos-stream/src/qemu-kvm/-/merge_requests/273 Signed-off-by: Ani Sinha --- hw/i386/pc_q35.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c index 37f54062c8..506f9dc0c0 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c @@ -344,7 +344,7 @@ static void pc_q35_machine_options(MachineClass *m) m->default_display = "std"; m->default_nic = "e1000e"; m->no_floppy = 1; - m->max_cpus = 710; + m->max_cpus = 4096; m->no_parallel = 1; machine_class_allow_dynamic_sysbus_dev(m, TYPE_AMD_IOMMU_DEVICE); machine_class_allow_dynamic_sysbus_dev(m, TYPE_INTEL_IOMMU_DEVICE); @@ -698,6 +698,9 @@ static void pc_q35_rhel_machine_9_4_0_options(MachineClass *m) { PCMachineClass *pcmc = PC_MACHINE_CLASS(m); pc_q35_rhel_machine_9_6_0_options(m); + + /* older RHEL machines continue to support 710 vcpus */ + m->max_cpus = 710; m->desc = "RHEL-9.4.0 PC (Q35 + ICH9, 2009)"; pcmc->smbios_stream_product = "RHEL"; pcmc->smbios_stream_version = "9.4.0"; -- 2.39.3