Il 18/04/2014 11:21, Andreas Färber ha scritto:
Improving this is greatly appreciated, thanks.
Now, I can see two ways things can go wrong: a) Mistyping or later
refactoring devices, or b) user typos or thinkos.
And four ways to set globals: -global, config file (I hope?), legacy
command line options (vl.c) and machine .compat_props.
If a property does not exist on the instance of an existing type,
object_property_parse() will raise an Error and we will abort in
device_post_init().
What we are silently missing is if a type is misspelled; for that we can
probably add an Error **errp to the two qdev_prop_register_global*()
functions - assuming QOM types are already registered at that point.
qom-test would help us catch any such mistake by instantiating each machine.
Even then, I suspect sooner or later machines other than PC and Q35 will be
versioned. At that point we'll probably want QEMU-global compat_props that
automatically apply to all machines, even if a type is not missing. I think we
should already approximate this behavior by allowing machine .compat_props
where the type doesn't exist.