* [Qemu-devel] [PATCH] Add another sanity check to smp_parse() function
@ 2015-07-22 13:59 Thomas Huth
2015-07-23 12:07 ` Igor Mammedov
` (3 more replies)
0 siblings, 4 replies; 9+ messages in thread
From: Thomas Huth @ 2015-07-22 13:59 UTC (permalink / raw)
To: qemu-devel, Paolo Bonzini; +Cc: qemu-trivial, Eduardo Habkost
The code in smp_parse already checks the topology information for
sockets * cores * threads < cpus and bails out with an error in
that case. However, it is still possible to supply a bad configuration
the other way round, e.g. with:
qemu-system-xxx -smp 4,sockets=1,cores=4,threads=2
QEMU then still starts the guest, with topology configuration that
is rather incomprehensible and likely not what the user wanted.
So let's add another check to refuse such wrong configurations.
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
vl.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/vl.c b/vl.c
index 5856396..c8d24b1 100644
--- a/vl.c
+++ b/vl.c
@@ -1224,7 +1224,13 @@ static void smp_parse(QemuOpts *opts)
exit(1);
}
- max_cpus = qemu_opt_get_number(opts, "maxcpus", 0);
+ max_cpus = qemu_opt_get_number(opts, "maxcpus", cpus);
+ if (sockets * cores * threads > max_cpus) {
+ fprintf(stderr, "cpu topology: error: "
+ "sockets (%u) * cores (%u) * threads (%u) > maxcpus (%u)\n",
+ sockets, cores, threads, max_cpus);
+ exit(1);
+ }
smp_cpus = cpus;
smp_cores = cores > 0 ? cores : 1;
--
1.8.3.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH] Add another sanity check to smp_parse() function
2015-07-22 13:59 [Qemu-devel] [PATCH] Add another sanity check to smp_parse() function Thomas Huth
@ 2015-07-23 12:07 ` Igor Mammedov
2015-07-24 11:53 ` Thomas Huth
2015-08-18 23:39 ` Thomas Huth
` (2 subsequent siblings)
3 siblings, 1 reply; 9+ messages in thread
From: Igor Mammedov @ 2015-07-23 12:07 UTC (permalink / raw)
To: Thomas Huth; +Cc: qemu-trivial, Paolo Bonzini, qemu-devel, Eduardo Habkost
On Wed, 22 Jul 2015 15:59:50 +0200
Thomas Huth <thuth@redhat.com> wrote:
> The code in smp_parse already checks the topology information for
> sockets * cores * threads < cpus and bails out with an error in
> that case. However, it is still possible to supply a bad configuration
> the other way round, e.g. with:
>
> qemu-system-xxx -smp 4,sockets=1,cores=4,threads=2
>
> QEMU then still starts the guest, with topology configuration that
> is rather incomprehensible and likely not what the user wanted.
> So let's add another check to refuse such wrong configurations.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
> vl.c | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/vl.c b/vl.c
> index 5856396..c8d24b1 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -1224,7 +1224,13 @@ static void smp_parse(QemuOpts *opts)
> exit(1);
> }
>
> - max_cpus = qemu_opt_get_number(opts, "maxcpus", 0);
> + max_cpus = qemu_opt_get_number(opts, "maxcpus", cpus);
> + if (sockets * cores * threads > max_cpus) {
> + fprintf(stderr, "cpu topology: error: "
> + "sockets (%u) * cores (%u) * threads (%u) >
> maxcpus (%u)\n",
just a nit, maybe s/maxcpus/[max]cpus/
> + sockets, cores, threads, max_cpus);
> + exit(1);
> + }
>
> smp_cpus = cpus;
> smp_cores = cores > 0 ? cores : 1;
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH] Add another sanity check to smp_parse() function
2015-07-23 12:07 ` Igor Mammedov
@ 2015-07-24 11:53 ` Thomas Huth
0 siblings, 0 replies; 9+ messages in thread
From: Thomas Huth @ 2015-07-24 11:53 UTC (permalink / raw)
To: Igor Mammedov; +Cc: qemu-trivial, Paolo Bonzini, qemu-devel, Eduardo Habkost
On 23/07/15 14:07, Igor Mammedov wrote:
> On Wed, 22 Jul 2015 15:59:50 +0200
> Thomas Huth <thuth@redhat.com> wrote:
>
>> The code in smp_parse already checks the topology information for
>> sockets * cores * threads < cpus and bails out with an error in
>> that case. However, it is still possible to supply a bad configuration
>> the other way round, e.g. with:
>>
>> qemu-system-xxx -smp 4,sockets=1,cores=4,threads=2
>>
>> QEMU then still starts the guest, with topology configuration that
>> is rather incomprehensible and likely not what the user wanted.
>> So let's add another check to refuse such wrong configurations.
>>
>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>> ---
>> vl.c | 8 +++++++-
>> 1 file changed, 7 insertions(+), 1 deletion(-)
>>
>> diff --git a/vl.c b/vl.c
>> index 5856396..c8d24b1 100644
>> --- a/vl.c
>> +++ b/vl.c
>> @@ -1224,7 +1224,13 @@ static void smp_parse(QemuOpts *opts)
>> exit(1);
>> }
>>
>> - max_cpus = qemu_opt_get_number(opts, "maxcpus", 0);
>> + max_cpus = qemu_opt_get_number(opts, "maxcpus", cpus);
>> + if (sockets * cores * threads > max_cpus) {
>> + fprintf(stderr, "cpu topology: error: "
>> + "sockets (%u) * cores (%u) * threads (%u) >
>> maxcpus (%u)\n",
> just a nit, maybe s/maxcpus/[max]cpus/
I think it should be pretty obvious for the user that maxcpus = cpus
when the "maxcpus" option has not been specified but only the "cpus"
option. So I'd prefer to keep it the way without the square brackets,
it's IMHO easier to read.
Thomas
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH] Add another sanity check to smp_parse() function
2015-07-22 13:59 [Qemu-devel] [PATCH] Add another sanity check to smp_parse() function Thomas Huth
2015-07-23 12:07 ` Igor Mammedov
@ 2015-08-18 23:39 ` Thomas Huth
2015-08-19 15:58 ` Eduardo Habkost
2015-08-26 16:02 ` Eduardo Habkost
3 siblings, 0 replies; 9+ messages in thread
From: Thomas Huth @ 2015-08-18 23:39 UTC (permalink / raw)
To: qemu-devel, Paolo Bonzini; +Cc: qemu-trivial, Eduardo Habkost
On 22/07/15 06:59, Thomas Huth wrote:
> The code in smp_parse already checks the topology information for
> sockets * cores * threads < cpus and bails out with an error in
> that case. However, it is still possible to supply a bad configuration
> the other way round, e.g. with:
>
> qemu-system-xxx -smp 4,sockets=1,cores=4,threads=2
>
> QEMU then still starts the guest, with topology configuration that
> is rather incomprehensible and likely not what the user wanted.
> So let's add another check to refuse such wrong configurations.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
> vl.c | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/vl.c b/vl.c
> index 5856396..c8d24b1 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -1224,7 +1224,13 @@ static void smp_parse(QemuOpts *opts)
> exit(1);
> }
>
> - max_cpus = qemu_opt_get_number(opts, "maxcpus", 0);
> + max_cpus = qemu_opt_get_number(opts, "maxcpus", cpus);
> + if (sockets * cores * threads > max_cpus) {
> + fprintf(stderr, "cpu topology: error: "
> + "sockets (%u) * cores (%u) * threads (%u) > maxcpus (%u)\n",
> + sockets, cores, threads, max_cpus);
> + exit(1);
> + }
>
> smp_cpus = cpus;
> smp_cores = cores > 0 ? cores : 1;
*ping*
Thomas
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH] Add another sanity check to smp_parse() function
2015-07-22 13:59 [Qemu-devel] [PATCH] Add another sanity check to smp_parse() function Thomas Huth
2015-07-23 12:07 ` Igor Mammedov
2015-08-18 23:39 ` Thomas Huth
@ 2015-08-19 15:58 ` Eduardo Habkost
2015-08-25 13:25 ` Thomas Huth
2015-08-26 16:02 ` Eduardo Habkost
3 siblings, 1 reply; 9+ messages in thread
From: Eduardo Habkost @ 2015-08-19 15:58 UTC (permalink / raw)
To: Thomas Huth; +Cc: qemu-trivial, Paolo Bonzini, qemu-devel
On Wed, Jul 22, 2015 at 03:59:50PM +0200, Thomas Huth wrote:
> The code in smp_parse already checks the topology information for
> sockets * cores * threads < cpus and bails out with an error in
> that case. However, it is still possible to supply a bad configuration
> the other way round, e.g. with:
>
> qemu-system-xxx -smp 4,sockets=1,cores=4,threads=2
>
> QEMU then still starts the guest, with topology configuration that
> is rather incomprehensible and likely not what the user wanted.
> So let's add another check to refuse such wrong configurations.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
> vl.c | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/vl.c b/vl.c
> index 5856396..c8d24b1 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -1224,7 +1224,13 @@ static void smp_parse(QemuOpts *opts)
> exit(1);
> }
>
> - max_cpus = qemu_opt_get_number(opts, "maxcpus", 0);
> + max_cpus = qemu_opt_get_number(opts, "maxcpus", cpus);
> + if (sockets * cores * threads > max_cpus) {
> + fprintf(stderr, "cpu topology: error: "
> + "sockets (%u) * cores (%u) * threads (%u) > maxcpus (%u)\n",
> + sockets, cores, threads, max_cpus);
> + exit(1);
> + }
I am always afraid of breaking existing setups when we do that, because
there may be existing VMs running with these weird configurations, and
people won't be able to live-migrate them to a newer QEMU.
But I think we really have to start refusing to run obviously broken
configurations one day, or we will never fix this mess, so:
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
I want to apply this through the x86 tree, but I would like to get some
Acked-by from other maintainers first.
--
Eduardo
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH] Add another sanity check to smp_parse() function
2015-08-19 15:58 ` Eduardo Habkost
@ 2015-08-25 13:25 ` Thomas Huth
2015-08-26 11:36 ` Cornelia Huck
2015-08-26 12:11 ` Bastian Koppelmann
0 siblings, 2 replies; 9+ messages in thread
From: Thomas Huth @ 2015-08-25 13:25 UTC (permalink / raw)
To: Eduardo Habkost
Cc: Peter Maydell, James Hogan, Jia Liu, Max Filippov,
Bastian Koppelmann, Anthony Green, Stefano Stabellini,
Mark Cave-Ayland, Alexander Graf, qemu-devel, Blue Swirl,
Christian Borntraeger, Michael Walle, Edgar E. Iglesias,
Cornelia Huck, Paolo Bonzini, Guan Xuetao, Aurelien Jarno,
Richard Henderson
On 19/08/15 17:58, Eduardo Habkost wrote:
> On Wed, Jul 22, 2015 at 03:59:50PM +0200, Thomas Huth wrote:
>> The code in smp_parse already checks the topology information for
>> sockets * cores * threads < cpus and bails out with an error in
>> that case. However, it is still possible to supply a bad configuration
>> the other way round, e.g. with:
>>
>> qemu-system-xxx -smp 4,sockets=1,cores=4,threads=2
>>
>> QEMU then still starts the guest, with topology configuration that
>> is rather incomprehensible and likely not what the user wanted.
>> So let's add another check to refuse such wrong configurations.
>>
>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>> ---
>> vl.c | 8 +++++++-
>> 1 file changed, 7 insertions(+), 1 deletion(-)
>>
>> diff --git a/vl.c b/vl.c
>> index 5856396..c8d24b1 100644
>> --- a/vl.c
>> +++ b/vl.c
>> @@ -1224,7 +1224,13 @@ static void smp_parse(QemuOpts *opts)
>> exit(1);
>> }
>>
>> - max_cpus = qemu_opt_get_number(opts, "maxcpus", 0);
>> + max_cpus = qemu_opt_get_number(opts, "maxcpus", cpus);
>> + if (sockets * cores * threads > max_cpus) {
>> + fprintf(stderr, "cpu topology: error: "
>> + "sockets (%u) * cores (%u) * threads (%u) > maxcpus (%u)\n",
>> + sockets, cores, threads, max_cpus);
>> + exit(1);
>> + }
>
> I am always afraid of breaking existing setups when we do that, because
> there may be existing VMs running with these weird configurations, and
> people won't be able to live-migrate them to a newer QEMU.
>
> But I think we really have to start refusing to run obviously broken
> configurations one day, or we will never fix this mess, so:
>
> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
>
> I want to apply this through the x86 tree, but I would like to get some
> Acked-by from other maintainers first.
Ok, thanks!
So *ping* to the other CPU core maintainers here ... could I get some
more ACKs, please?
Thomas
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH] Add another sanity check to smp_parse() function
2015-08-25 13:25 ` Thomas Huth
@ 2015-08-26 11:36 ` Cornelia Huck
2015-08-26 12:11 ` Bastian Koppelmann
1 sibling, 0 replies; 9+ messages in thread
From: Cornelia Huck @ 2015-08-26 11:36 UTC (permalink / raw)
To: Thomas Huth
Cc: Peter Maydell, James Hogan, Eduardo Habkost, Max Filippov,
Bastian Koppelmann, Anthony Green, Stefano Stabellini,
Mark Cave-Ayland, Alexander Graf, qemu-devel, Blue Swirl,
Christian Borntraeger, Michael Walle, Edgar E. Iglesias,
Paolo Bonzini, Jia Liu, Guan Xuetao, Aurelien Jarno,
Richard Henderson
On Tue, 25 Aug 2015 15:25:00 +0200
Thomas Huth <thuth@redhat.com> wrote:
> On 19/08/15 17:58, Eduardo Habkost wrote:
> > On Wed, Jul 22, 2015 at 03:59:50PM +0200, Thomas Huth wrote:
> >> The code in smp_parse already checks the topology information for
> >> sockets * cores * threads < cpus and bails out with an error in
> >> that case. However, it is still possible to supply a bad configuration
> >> the other way round, e.g. with:
> >>
> >> qemu-system-xxx -smp 4,sockets=1,cores=4,threads=2
> >>
> >> QEMU then still starts the guest, with topology configuration that
> >> is rather incomprehensible and likely not what the user wanted.
> >> So let's add another check to refuse such wrong configurations.
> >>
> >> Signed-off-by: Thomas Huth <thuth@redhat.com>
> >> ---
> >> vl.c | 8 +++++++-
> >> 1 file changed, 7 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/vl.c b/vl.c
> >> index 5856396..c8d24b1 100644
> >> --- a/vl.c
> >> +++ b/vl.c
> >> @@ -1224,7 +1224,13 @@ static void smp_parse(QemuOpts *opts)
> >> exit(1);
> >> }
> >>
> >> - max_cpus = qemu_opt_get_number(opts, "maxcpus", 0);
> >> + max_cpus = qemu_opt_get_number(opts, "maxcpus", cpus);
> >> + if (sockets * cores * threads > max_cpus) {
> >> + fprintf(stderr, "cpu topology: error: "
> >> + "sockets (%u) * cores (%u) * threads (%u) > maxcpus (%u)\n",
> >> + sockets, cores, threads, max_cpus);
> >> + exit(1);
> >> + }
> >
> > I am always afraid of breaking existing setups when we do that, because
> > there may be existing VMs running with these weird configurations, and
> > people won't be able to live-migrate them to a newer QEMU.
> >
> > But I think we really have to start refusing to run obviously broken
> > configurations one day, or we will never fix this mess, so:
> >
> > Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
> >
> > I want to apply this through the x86 tree, but I would like to get some
> > Acked-by from other maintainers first.
>
> Ok, thanks!
>
> So *ping* to the other CPU core maintainers here ... could I get some
> more ACKs, please?
Looks reasonable.
Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH] Add another sanity check to smp_parse() function
2015-08-25 13:25 ` Thomas Huth
2015-08-26 11:36 ` Cornelia Huck
@ 2015-08-26 12:11 ` Bastian Koppelmann
1 sibling, 0 replies; 9+ messages in thread
From: Bastian Koppelmann @ 2015-08-26 12:11 UTC (permalink / raw)
To: Thomas Huth, Eduardo Habkost
Cc: Peter Maydell, James Hogan, Jia Liu, Max Filippov, Anthony Green,
Stefano Stabellini, Mark Cave-Ayland, Alexander Graf, qemu-devel,
Blue Swirl, Christian Borntraeger, Michael Walle,
Edgar E. Iglesias, Cornelia Huck, Paolo Bonzini, Guan Xuetao,
Aurelien Jarno, Richard Henderson
Am 25.08.2015 um 15:25 schrieb Thomas Huth:
> On 19/08/15 17:58, Eduardo Habkost wrote:
>> On Wed, Jul 22, 2015 at 03:59:50PM +0200, Thomas Huth wrote:
>>> The code in smp_parse already checks the topology information for
>>> sockets * cores * threads < cpus and bails out with an error in
>>> that case. However, it is still possible to supply a bad configuration
>>> the other way round, e.g. with:
>>>
>>> qemu-system-xxx -smp 4,sockets=1,cores=4,threads=2
>>>
>>> QEMU then still starts the guest, with topology configuration that
>>> is rather incomprehensible and likely not what the user wanted.
>>> So let's add another check to refuse such wrong configurations.
>>>
>>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>>> ---
>>> vl.c | 8 +++++++-
>>> 1 file changed, 7 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/vl.c b/vl.c
>>> index 5856396..c8d24b1 100644
>>> --- a/vl.c
>>> +++ b/vl.c
>>> @@ -1224,7 +1224,13 @@ static void smp_parse(QemuOpts *opts)
>>> exit(1);
>>> }
>>>
>>> - max_cpus = qemu_opt_get_number(opts, "maxcpus", 0);
>>> + max_cpus = qemu_opt_get_number(opts, "maxcpus", cpus);
>>> + if (sockets * cores * threads > max_cpus) {
>>> + fprintf(stderr, "cpu topology: error: "
>>> + "sockets (%u) * cores (%u) * threads (%u) > maxcpus (%u)\n",
>>> + sockets, cores, threads, max_cpus);
>>> + exit(1);
>>> + }
>> I am always afraid of breaking existing setups when we do that, because
>> there may be existing VMs running with these weird configurations, and
>> people won't be able to live-migrate them to a newer QEMU.
>>
>> But I think we really have to start refusing to run obviously broken
>> configurations one day, or we will never fix this mess, so:
>>
>> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
>>
>> I want to apply this through the x86 tree, but I would like to get some
>> Acked-by from other maintainers first.
> Ok, thanks!
>
> So *ping* to the other CPU core maintainers here ... could I get some
> more ACKs, please?
>
> Thomas
>
>
Acked-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH] Add another sanity check to smp_parse() function
2015-07-22 13:59 [Qemu-devel] [PATCH] Add another sanity check to smp_parse() function Thomas Huth
` (2 preceding siblings ...)
2015-08-19 15:58 ` Eduardo Habkost
@ 2015-08-26 16:02 ` Eduardo Habkost
3 siblings, 0 replies; 9+ messages in thread
From: Eduardo Habkost @ 2015-08-26 16:02 UTC (permalink / raw)
To: Thomas Huth; +Cc: qemu-trivial, Paolo Bonzini, qemu-devel
On Wed, Jul 22, 2015 at 03:59:50PM +0200, Thomas Huth wrote:
> The code in smp_parse already checks the topology information for
> sockets * cores * threads < cpus and bails out with an error in
> that case. However, it is still possible to supply a bad configuration
> the other way round, e.g. with:
>
> qemu-system-xxx -smp 4,sockets=1,cores=4,threads=2
>
> QEMU then still starts the guest, with topology configuration that
> is rather incomprehensible and likely not what the user wanted.
> So let's add another check to refuse such wrong configurations.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
Applied to the x86 tree. Thanks!
--
Eduardo
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2015-08-26 16:02 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-22 13:59 [Qemu-devel] [PATCH] Add another sanity check to smp_parse() function Thomas Huth
2015-07-23 12:07 ` Igor Mammedov
2015-07-24 11:53 ` Thomas Huth
2015-08-18 23:39 ` Thomas Huth
2015-08-19 15:58 ` Eduardo Habkost
2015-08-25 13:25 ` Thomas Huth
2015-08-26 11:36 ` Cornelia Huck
2015-08-26 12:11 ` Bastian Koppelmann
2015-08-26 16:02 ` Eduardo Habkost
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).