qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 10/10] machine: Skip global registration for non


From: Eduardo Habkost
Subject: Re: [Qemu-devel] [PATCH 10/10] machine: Skip global registration for non-existing classes
Date: Mon, 20 Jun 2016 10:38:17 -0300
User-agent: Mutt/1.6.1 (2016-04-27)

On Sun, Jun 19, 2016 at 07:50:56PM +0300, Marcel Apfelbaum wrote:
> On 06/19/2016 07:39 PM, Marcel Apfelbaum wrote:
> > On 06/15/2016 11:32 PM, Eduardo Habkost wrote:
> > > MachineClass::compat_props may point to class names that are not
> > > compiled into the QEMU binary. Skip registering those as global
> > > properties. This will allow the qdev global property code to
> > > implement stricter checks on the global property values in the
> > > future.
> > > 
> > > Signed-off-by: Eduardo Habkost <address@hidden>
> > > ---
> > >   hw/core/machine.c | 9 +++++++++
> > >   1 file changed, 9 insertions(+)
> > > 
> > > diff --git a/hw/core/machine.c b/hw/core/machine.c
> > > index d6f6be4..51697cb 100644
> > > --- a/hw/core/machine.c
> > > +++ b/hw/core/machine.c
> > > @@ -583,6 +583,7 @@ static void machine_class_finalize(ObjectClass 
> > > *klass, void *data)
> > >   void machine_register_compat_props(MachineState *machine)
> > >   {
> > >       MachineClass *mc = MACHINE_GET_CLASS(machine);
> > > +    ObjectClass *oc;
> > >       int i;
> > >       GlobalProperty *p;
> > > 
> > > @@ -592,6 +593,14 @@ void machine_register_compat_props(MachineState 
> > > *machine)
> > > 
> > >       for (i = 0; i < mc->compat_props->len; i++) {
> > >           p = g_array_index(mc->compat_props, GlobalProperty *, i);
> > 
> > Hi Eduardo,
> > 
> > > +
> > > +        /* Skip registering globals for non-existing device classes */
> > > +        oc = object_class_by_name(p->driver);
> > 
> > This I understand. It ensure a corresponding class is in QEMU binary.
> > But even so, if such property is not available should we silently continue?
> > Maybe the user things the property is set...
> 
> Please forgive the spelling errors and disregard the above question.
> 
> > 
> > 
> > > +        oc = object_class_dynamic_cast(oc, TYPE_DEVICE);
> > 
> > This I don't understand. Do we check here?
> > 
> 
> Regarding my last question, it seems you followed an existing pattern
> here, however I don't quite understand, we found the class,
> why do we need to ensure is a TYPE_DEVICE?
> 
> What error case do we want to prevent?

Globals are a TYPE_DEVICE feature (implemented in
device_post_init()). Registering globals for non-TYPE_DEVICE
classes don't work.

-- 
Eduardo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]