diff mbox

ppc: exit if compat mode is unknown

Message ID 146840102187.900.13546085522655887765.stgit@bahia.lan
State New
Headers show

Commit Message

Greg Kurz July 13, 2016, 9:10 a.m. UTC
Now that properties are set with -global, if we pass a bogus value for
compat mode, a warning is printed and the property is simply ignored.
For example, if the host is POWER8 and we pass compat=POWER7 instead of
compat=power7 the guest will see a POWER8 cpu.

While here, this patch also changes the error message to be more explicit.

Signed-off-by: Greg Kurz <groug@kaod.org>
---
 target-ppc/translate_init.c |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Comments

Greg Kurz July 13, 2016, 12:34 p.m. UTC | #1
On Wed, 13 Jul 2016 11:10:21 +0200
Greg Kurz <groug@kaod.org> wrote:

> Now that properties are set with -global, if we pass a bogus value for
> compat mode, a warning is printed and the property is simply ignored.
> For example, if the host is POWER8 and we pass compat=POWER7 instead of
> compat=power7 the guest will see a POWER8 cpu.
> 
> While here, this patch also changes the error message to be more explicit.
> 
> Signed-off-by: Greg Kurz <groug@kaod.org>
> ---

Of course this causes qom-set to exit as well... not sure this is what we want.

>  target-ppc/translate_init.c |    6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
> index 8f257fb74aa7..55688db9c9db 100644
> --- a/target-ppc/translate_init.c
> +++ b/target-ppc/translate_init.c
> @@ -8475,7 +8475,11 @@ static void powerpc_set_compat(Object *obj, Visitor *v, const char *name,
>      } else if (strcmp(value, "power8") == 0) {
>          *max_compat = CPU_POWERPC_LOGICAL_2_07;
>      } else {
> -        error_setg(errp, "Invalid compatibility mode \"%s\"", value);
> +        /* This is called from -global, which does not exit on error. Since we
> +         * don't want to start with a wrong compat mode, we exit now.
> +         */
> +        error_report("PPC does not support compatibility mode \"%s\"", value);
> +        exit(1);
>      }
>  
>      g_free(value);
> 
>
David Gibson July 14, 2016, 2:05 a.m. UTC | #2
On Wed, Jul 13, 2016 at 02:34:32PM +0200, Greg Kurz wrote:
> On Wed, 13 Jul 2016 11:10:21 +0200
> Greg Kurz <groug@kaod.org> wrote:
> 
> > Now that properties are set with -global, if we pass a bogus value for
> > compat mode, a warning is printed and the property is simply ignored.
> > For example, if the host is POWER8 and we pass compat=POWER7 instead of
> > compat=power7 the guest will see a POWER8 cpu.
> > 
> > While here, this patch also changes the error message to be more explicit.
> > 
> > Signed-off-by: Greg Kurz <groug@kaod.org>
> > ---
> 
> Of course this causes qom-set to exit as well... not sure this is
> what we want.

Yeah, that seems wrong.  If I'm reading this right this is obsoleted
by your later generic patch adding an &error_fatal to the generic
code, yes?

> 
> >  target-ppc/translate_init.c |    6 +++++-
> >  1 file changed, 5 insertions(+), 1 deletion(-)
> > 
> > diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
> > index 8f257fb74aa7..55688db9c9db 100644
> > --- a/target-ppc/translate_init.c
> > +++ b/target-ppc/translate_init.c
> > @@ -8475,7 +8475,11 @@ static void powerpc_set_compat(Object *obj, Visitor *v, const char *name,
> >      } else if (strcmp(value, "power8") == 0) {
> >          *max_compat = CPU_POWERPC_LOGICAL_2_07;
> >      } else {
> > -        error_setg(errp, "Invalid compatibility mode \"%s\"", value);
> > +        /* This is called from -global, which does not exit on error. Since we
> > +         * don't want to start with a wrong compat mode, we exit now.
> > +         */
> > +        error_report("PPC does not support compatibility mode \"%s\"", value);
> > +        exit(1);
> >      }
> >  
> >      g_free(value);
> > 
> > 
>
Greg Kurz July 14, 2016, 5:09 a.m. UTC | #3
On Thu, 14 Jul 2016 12:05:42 +1000
David Gibson <david@gibson.dropbear.id.au> wrote:

> On Wed, Jul 13, 2016 at 02:34:32PM +0200, Greg Kurz wrote:
> > On Wed, 13 Jul 2016 11:10:21 +0200
> > Greg Kurz <groug@kaod.org> wrote:
> >   
> > > Now that properties are set with -global, if we pass a bogus value for
> > > compat mode, a warning is printed and the property is simply ignored.
> > > For example, if the host is POWER8 and we pass compat=POWER7 instead of
> > > compat=power7 the guest will see a POWER8 cpu.
> > > 
> > > While here, this patch also changes the error message to be more explicit.
> > > 
> > > Signed-off-by: Greg Kurz <groug@kaod.org>
> > > ---  
> > 
> > Of course this causes qom-set to exit as well... not sure this is
> > what we want.  
> 
> Yeah, that seems wrong.  If I'm reading this right this is obsoleted
> by your later generic patch adding an &error_fatal to the generic
> code, yes?
> 

Yes it is indeed.

> >   
> > >  target-ppc/translate_init.c |    6 +++++-
> > >  1 file changed, 5 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
> > > index 8f257fb74aa7..55688db9c9db 100644
> > > --- a/target-ppc/translate_init.c
> > > +++ b/target-ppc/translate_init.c
> > > @@ -8475,7 +8475,11 @@ static void powerpc_set_compat(Object *obj, Visitor *v, const char *name,
> > >      } else if (strcmp(value, "power8") == 0) {
> > >          *max_compat = CPU_POWERPC_LOGICAL_2_07;
> > >      } else {
> > > -        error_setg(errp, "Invalid compatibility mode \"%s\"", value);
> > > +        /* This is called from -global, which does not exit on error. Since we
> > > +         * don't want to start with a wrong compat mode, we exit now.
> > > +         */
> > > +        error_report("PPC does not support compatibility mode \"%s\"", value);
> > > +        exit(1);
> > >      }
> > >  
> > >      g_free(value);
> > > 
> > >   
> >   
>
diff mbox

Patch

diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
index 8f257fb74aa7..55688db9c9db 100644
--- a/target-ppc/translate_init.c
+++ b/target-ppc/translate_init.c
@@ -8475,7 +8475,11 @@  static void powerpc_set_compat(Object *obj, Visitor *v, const char *name,
     } else if (strcmp(value, "power8") == 0) {
         *max_compat = CPU_POWERPC_LOGICAL_2_07;
     } else {
-        error_setg(errp, "Invalid compatibility mode \"%s\"", value);
+        /* This is called from -global, which does not exit on error. Since we
+         * don't want to start with a wrong compat mode, we exit now.
+         */
+        error_report("PPC does not support compatibility mode \"%s\"", value);
+        exit(1);
     }
 
     g_free(value);