diff mbox

[v2,01/10] qdev: Don't stop applying globals on first error

Message ID 1466437983-27133-2-git-send-email-ehabkost@redhat.com
State New
Headers show

Commit Message

Eduardo Habkost June 20, 2016, 3:52 p.m. UTC
Since commit 25f8dd9, qdev_prop_set_globals_for_type() stops
applying global properties on the first error. It is a leftover
from when QEMU exited on any error when applying global property.
Now we print a warning about the first error, bug ignore all
other global properties after it.

For example, the following command-line will not set CPUID level
to 3, but will warn only about "x86_64-cpu.vendor" being ignored.

  $ ./x86_64-softmmu/qemu-system-x86_64 \
      -global x86_64-cpu.vendor=x \
      -global x86_64-cpu.level=3
  qemu-system-x86_64: Warning: global x86_64-cpu.vendor=x ignored: Property '.vendor' doesn't take value 'x'

Fix this by not returning from qdev_prop_set_globals_for_type()
on the first error.

Cc: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Marcel Apfelbaum <marcel@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 hw/core/qdev-properties.c | 1 -
 1 file changed, 1 deletion(-)

Comments

Markus Armbruster June 23, 2016, 7:40 a.m. UTC | #1
Eduardo Habkost <ehabkost@redhat.com> writes:

> Since commit 25f8dd9, qdev_prop_set_globals_for_type() stops
> applying global properties on the first error. It is a leftover
> from when QEMU exited on any error when applying global property.
> Now we print a warning about the first error, bug ignore all
> other global properties after it.

Actually, we've stopped since forever.  Before commit 25f8dd9, that was
okay.  Since commit, it isn't.  Suggest:

qdev_prop_set_globals_for_type() stops applying global properties on the
first error.  It is a leftover from when QEMU exited on any error when
applying global property.  Commit 25f8dd9 changed the fatal error to a
warning, but neglected to drop the stopping.  Fix that.

> For example, the following command-line will not set CPUID level
> to 3, but will warn only about "x86_64-cpu.vendor" being ignored.
>
>   $ ./x86_64-softmmu/qemu-system-x86_64 \
>       -global x86_64-cpu.vendor=x \
>       -global x86_64-cpu.level=3
>   qemu-system-x86_64: Warning: global x86_64-cpu.vendor=x ignored: Property '.vendor' doesn't take value 'x'
>
> Fix this by not returning from qdev_prop_set_globals_for_type()
> on the first error.
>
> Cc: Markus Armbruster <armbru@redhat.com>
> Reviewed-by: Markus Armbruster <armbru@redhat.com>
> Reviewed-by: Marcel Apfelbaum <marcel@redhat.com>
> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
> ---
>  hw/core/qdev-properties.c | 1 -
>  1 file changed, 1 deletion(-)
>
> diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c
> index e3b2184..c10edee 100644
> --- a/hw/core/qdev-properties.c
> +++ b/hw/core/qdev-properties.c
> @@ -1088,7 +1088,6 @@ static void qdev_prop_set_globals_for_type(DeviceState *dev,
>              assert(prop->user_provided);
>              error_reportf_err(err, "Warning: global %s.%s=%s ignored: ",
>                                prop->driver, prop->property, prop->value);
> -            return;
>          }
>      }
>  }

Preferably with a clarified commit message:
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Eduardo Habkost June 23, 2016, 11:36 a.m. UTC | #2
On Thu, Jun 23, 2016 at 09:40:54AM +0200, Markus Armbruster wrote:
> Eduardo Habkost <ehabkost@redhat.com> writes:
> 
> > Since commit 25f8dd9, qdev_prop_set_globals_for_type() stops
> > applying global properties on the first error. It is a leftover
> > from when QEMU exited on any error when applying global property.
> > Now we print a warning about the first error, bug ignore all
> > other global properties after it.
> 
> Actually, we've stopped since forever.  Before commit 25f8dd9, that was
> okay.  Since commit, it isn't.  Suggest:
> 
> qdev_prop_set_globals_for_type() stops applying global properties on the
> first error.  It is a leftover from when QEMU exited on any error when
> applying global property.  Commit 25f8dd9 changed the fatal error to a
> warning, but neglected to drop the stopping.  Fix that.

Fixed that. Thanks!
diff mbox

Patch

diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c
index e3b2184..c10edee 100644
--- a/hw/core/qdev-properties.c
+++ b/hw/core/qdev-properties.c
@@ -1088,7 +1088,6 @@  static void qdev_prop_set_globals_for_type(DeviceState *dev,
             assert(prop->user_provided);
             error_reportf_err(err, "Warning: global %s.%s=%s ignored: ",
                               prop->driver, prop->property, prop->value);
-            return;
         }
     }
 }