id = 2848 title = "i386 max_cpus off by one" state = "opened" created_at = "2025-03-02T00:58:09.053Z" closed_at = "n/a" labels = ["target: i386"] url = "https://gitlab.com/qemu-project/qemu/-/issues/2848" host-os = "NixOS" host-arch = "x86" qemu-version = "9.1.2" guest-os = "n/a" guest-arch = "x86" description = """X86 VMs are currently limited to 255 vCPUs (`mc->max_cpus = 255;` in `pc.c`). The first occurrence i can find of this limit is in d3e9db933f416c9f1c04df4834d36e2315952e42 from 2005 where both `MAX_APICS` and `MAX_CPUS` was set to 255. This is becoming relevant for some people as servers with 256 cores become more available. **Can we increase the limit to 256 vCPUs?** I think so. Today, the APIC id limit (see `apic_id_limit` in `x86-common.c`) is based on the CPU id limit. According to the a comment for `typdef uint32_t apic_id_t;` (see `topology.h`), we can have 256 APICs, but more APICs require x2APIC support. APIC seems to be no hindrance to increase max_cpus to 256. **Can we increase the limit to 512?** Maybe not? We need x2APIC support of which i have no clue. Also there is always a performance risk of exceeding the size at which current data structures work efficiently.""" reproduce = "n/a" additional = "n/a"