On Fri, Sep 11, 2020 at 09:32:02AM -0400, Igor Mammedov wrote: > it's was deprecated since 3.1 > > Support for invalid topologies is removed, the user must ensure > that topologies described with -smp include all possible cpus, > i.e. (sockets * cores * threads) == maxcpus or QEMU will > exit with error. > > Signed-off-by: Igor Mammedov <imammedo@xxxxxxxxxx> Acked-by: memory tree I guess? > --- > docs/system/deprecated.rst | 26 +++++++++++++------------- > hw/core/machine.c | 16 ++++------------ > hw/i386/pc.c | 16 ++++------------ > 3 files changed, 21 insertions(+), 37 deletions(-) > > diff --git a/docs/system/deprecated.rst b/docs/system/deprecated.rst > index 122717cfee..d737728fab 100644 > --- a/docs/system/deprecated.rst > +++ b/docs/system/deprecated.rst > @@ -47,19 +47,6 @@ The 'file' driver for drives is no longer appropriate for character or host > devices and will only accept regular files (S_IFREG). The correct driver > for these file types is 'host_cdrom' or 'host_device' as appropriate. > > -``-smp`` (invalid topologies) (since 3.1) > -''''''''''''''''''''''''''''''''''''''''' > - > -CPU topology properties should describe whole machine topology including > -possible CPUs. > - > -However, historically it was possible to start QEMU with an incorrect topology > -where *n* <= *sockets* * *cores* * *threads* < *maxcpus*, > -which could lead to an incorrect topology enumeration by the guest. > -Support for invalid topologies will be removed, the user must ensure > -topologies described with -smp include all possible cpus, i.e. > -*sockets* * *cores* * *threads* = *maxcpus*. > - > ``-vnc acl`` (since 4.0.0) > '''''''''''''''''''''''''' > > @@ -618,6 +605,19 @@ New machine versions (since 5.1) will not accept the option but it will still > work with old machine types. User can check the QAPI schema to see if the legacy > option is supported by looking at MachineInfo::numa-mem-supported property. > > +``-smp`` (invalid topologies) (removed 5.2) > +''''''''''''''''''''''''''''''''''''''''''' > + > +CPU topology properties should describe whole machine topology including > +possible CPUs. > + > +However, historically it was possible to start QEMU with an incorrect topology > +where *n* <= *sockets* * *cores* * *threads* < *maxcpus*, > +which could lead to an incorrect topology enumeration by the guest. > +Support for invalid topologies is removed, the user must ensure > +topologies described with -smp include all possible cpus, i.e. > +*sockets* * *cores* * *threads* = *maxcpus*. > + > Block devices > ------------- > > diff --git a/hw/core/machine.c b/hw/core/machine.c > index ea26d61237..09aee4ea52 100644 > --- a/hw/core/machine.c > +++ b/hw/core/machine.c > @@ -754,23 +754,15 @@ static void smp_parse(MachineState *ms, QemuOpts *opts) > exit(1); > } > > - if (sockets * cores * threads > ms->smp.max_cpus) { > - error_report("cpu topology: " > - "sockets (%u) * cores (%u) * threads (%u) > " > - "maxcpus (%u)", > + if (sockets * cores * threads != ms->smp.max_cpus) { > + error_report("Invalid CPU topology: " > + "sockets (%u) * cores (%u) * threads (%u) " > + "!= maxcpus (%u)", > sockets, cores, threads, > ms->smp.max_cpus); > exit(1); > } > > - if (sockets * cores * threads != ms->smp.max_cpus) { > - warn_report("Invalid CPU topology deprecated: " > - "sockets (%u) * cores (%u) * threads (%u) " > - "!= maxcpus (%u)", > - sockets, cores, threads, > - ms->smp.max_cpus); > - } > - > ms->smp.cpus = cpus; > ms->smp.cores = cores; > ms->smp.threads = threads; > diff --git a/hw/i386/pc.c b/hw/i386/pc.c > index d071da787b..fbde6b04e6 100644 > --- a/hw/i386/pc.c > +++ b/hw/i386/pc.c > @@ -746,23 +746,15 @@ void pc_smp_parse(MachineState *ms, QemuOpts *opts) > exit(1); > } > > - if (sockets * dies * cores * threads > ms->smp.max_cpus) { > - error_report("cpu topology: " > - "sockets (%u) * dies (%u) * cores (%u) * threads (%u) > " > - "maxcpus (%u)", > + if (sockets * dies * cores * threads != ms->smp.max_cpus) { > + error_report("Invalid CPU topology deprecated: " > + "sockets (%u) * dies (%u) * cores (%u) * threads (%u) " > + "!= maxcpus (%u)", > sockets, dies, cores, threads, > ms->smp.max_cpus); > exit(1); > } > > - if (sockets * dies * cores * threads != ms->smp.max_cpus) { > - warn_report("Invalid CPU topology deprecated: " > - "sockets (%u) * dies (%u) * cores (%u) * threads (%u) " > - "!= maxcpus (%u)", > - sockets, dies, cores, threads, > - ms->smp.max_cpus); > - } > - > ms->smp.cpus = cpus; > ms->smp.cores = cores; > ms->smp.threads = threads; > -- > 2.27.0