[Qemu-devel] [PATCH 4/4] hw/pci: remove obsolete PCIDevice->init()

Philippe Mathieu-Daudé posted 4 patches 7 years, 10 months ago
There is a newer version of this series
[Qemu-devel] [PATCH 4/4] hw/pci: remove obsolete PCIDevice->init()
Posted by Philippe Mathieu-Daudé 7 years, 10 months ago
All PCI devices are now QOM'ified.

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 include/hw/pci/pci.h |  1 -
 hw/pci/pci.c         | 14 --------------
 2 files changed, 15 deletions(-)

diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h
index 8d02a0a383..0f1ed64c2f 100644
--- a/include/hw/pci/pci.h
+++ b/include/hw/pci/pci.h
@@ -217,7 +217,6 @@ typedef struct PCIDeviceClass {
     DeviceClass parent_class;
 
     void (*realize)(PCIDevice *dev, Error **errp);
-    int (*init)(PCIDevice *dev);/* TODO convert to realize() and remove */
     PCIUnregisterFunc *exit;
     PCIConfigReadFunc *config_read;
     PCIConfigWriteFunc *config_write;
diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index b2d139bd9a..cd25ab6f6b 100644
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -2054,18 +2054,6 @@ static void pci_qdev_realize(DeviceState *qdev, Error **errp)
     }
 }
 
-static void pci_default_realize(PCIDevice *dev, Error **errp)
-{
-    PCIDeviceClass *pc = PCI_DEVICE_GET_CLASS(dev);
-
-    if (pc->init) {
-        if (pc->init(dev) < 0) {
-            error_setg(errp, "Device initialization failed");
-            return;
-        }
-    }
-}
-
 PCIDevice *pci_create_multifunction(PCIBus *bus, int devfn, bool multifunction,
                                     const char *name)
 {
@@ -2538,13 +2526,11 @@ MemoryRegion *pci_address_space_io(PCIDevice *dev)
 static void pci_device_class_init(ObjectClass *klass, void *data)
 {
     DeviceClass *k = DEVICE_CLASS(klass);
-    PCIDeviceClass *pc = PCI_DEVICE_CLASS(klass);
 
     k->realize = pci_qdev_realize;
     k->unrealize = pci_qdev_unrealize;
     k->bus_type = TYPE_PCI_BUS;
     k->props = pci_props;
-    pc->realize = pci_default_realize;
 }
 
 static void pci_device_class_base_init(ObjectClass *klass, void *data)
-- 
2.15.1


Re: [Qemu-devel] [PATCH 4/4] hw/pci: remove obsolete PCIDevice->init()
Posted by Marcel Apfelbaum 7 years, 10 months ago
On 17/12/2017 22:49, Philippe Mathieu-Daudé wrote:
> All PCI devices are now QOM'ified.
> 

Finally!


> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>   include/hw/pci/pci.h |  1 -
>   hw/pci/pci.c         | 14 --------------
>   2 files changed, 15 deletions(-)
> 
> diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h
> index 8d02a0a383..0f1ed64c2f 100644
> --- a/include/hw/pci/pci.h
> +++ b/include/hw/pci/pci.h
> @@ -217,7 +217,6 @@ typedef struct PCIDeviceClass {
>       DeviceClass parent_class;
>   
>       void (*realize)(PCIDevice *dev, Error **errp);
> -    int (*init)(PCIDevice *dev);/* TODO convert to realize() and remove */
>       PCIUnregisterFunc *exit;
>       PCIConfigReadFunc *config_read;
>       PCIConfigWriteFunc *config_write;
> diff --git a/hw/pci/pci.c b/hw/pci/pci.c
> index b2d139bd9a..cd25ab6f6b 100644
> --- a/hw/pci/pci.c
> +++ b/hw/pci/pci.c
> @@ -2054,18 +2054,6 @@ static void pci_qdev_realize(DeviceState *qdev, Error **errp)
>       }
>   }
>   
> -static void pci_default_realize(PCIDevice *dev, Error **errp)
> -{
> -    PCIDeviceClass *pc = PCI_DEVICE_GET_CLASS(dev);
> -
> -    if (pc->init) {
> -        if (pc->init(dev) < 0) {
> -            error_setg(errp, "Device initialization failed");
> -            return;
> -        }
> -    }
> -}
> -
>   PCIDevice *pci_create_multifunction(PCIBus *bus, int devfn, bool multifunction,
>                                       const char *name)
>   {
> @@ -2538,13 +2526,11 @@ MemoryRegion *pci_address_space_io(PCIDevice *dev)
>   static void pci_device_class_init(ObjectClass *klass, void *data)
>   {
>       DeviceClass *k = DEVICE_CLASS(klass);
> -    PCIDeviceClass *pc = PCI_DEVICE_CLASS(klass);
>   
>       k->realize = pci_qdev_realize;
>       k->unrealize = pci_qdev_unrealize;
>       k->bus_type = TYPE_PCI_BUS;
>       k->props = pci_props;
> -    pc->realize = pci_default_realize;
>   }
>   
>   static void pci_device_class_base_init(ObjectClass *klass, void *data)
> 

Reviewed-by: Marcel Apfelbaum <marcel@redhat.com>

Thanks,
Marcel


Re: [Qemu-devel] [PATCH 4/4] hw/pci: remove obsolete PCIDevice->init()
Posted by Philippe Mathieu-Daudé 7 years, 7 months ago
Hi Michael, Paolo.

Now than all other PCI QOM'ification patches got applied, can you take
this patch for 2.12?

Thanks,

Phil.

On 12/17/2017 09:49 PM, Philippe Mathieu-Daudé wrote:
> All PCI devices are now QOM'ified.
> 
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  include/hw/pci/pci.h |  1 -
>  hw/pci/pci.c         | 14 --------------
>  2 files changed, 15 deletions(-)
> 
> diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h
> index 8d02a0a383..0f1ed64c2f 100644
> --- a/include/hw/pci/pci.h
> +++ b/include/hw/pci/pci.h
> @@ -217,7 +217,6 @@ typedef struct PCIDeviceClass {
>      DeviceClass parent_class;
>  
>      void (*realize)(PCIDevice *dev, Error **errp);
> -    int (*init)(PCIDevice *dev);/* TODO convert to realize() and remove */
>      PCIUnregisterFunc *exit;
>      PCIConfigReadFunc *config_read;
>      PCIConfigWriteFunc *config_write;
> diff --git a/hw/pci/pci.c b/hw/pci/pci.c
> index b2d139bd9a..cd25ab6f6b 100644
> --- a/hw/pci/pci.c
> +++ b/hw/pci/pci.c
> @@ -2054,18 +2054,6 @@ static void pci_qdev_realize(DeviceState *qdev, Error **errp)
>      }
>  }
>  
> -static void pci_default_realize(PCIDevice *dev, Error **errp)
> -{
> -    PCIDeviceClass *pc = PCI_DEVICE_GET_CLASS(dev);
> -
> -    if (pc->init) {
> -        if (pc->init(dev) < 0) {
> -            error_setg(errp, "Device initialization failed");
> -            return;
> -        }
> -    }
> -}
> -
>  PCIDevice *pci_create_multifunction(PCIBus *bus, int devfn, bool multifunction,
>                                      const char *name)
>  {
> @@ -2538,13 +2526,11 @@ MemoryRegion *pci_address_space_io(PCIDevice *dev)
>  static void pci_device_class_init(ObjectClass *klass, void *data)
>  {
>      DeviceClass *k = DEVICE_CLASS(klass);
> -    PCIDeviceClass *pc = PCI_DEVICE_CLASS(klass);
>  
>      k->realize = pci_qdev_realize;
>      k->unrealize = pci_qdev_unrealize;
>      k->bus_type = TYPE_PCI_BUS;
>      k->props = pci_props;
> -    pc->realize = pci_default_realize;
>  }
>  
>  static void pci_device_class_base_init(ObjectClass *klass, void *data)
> 

Re: [Qemu-devel] [PATCH 4/4] hw/pci: remove obsolete PCIDevice->init()
Posted by Michael S. Tsirkin 7 years, 7 months ago
On Sun, Mar 11, 2018 at 04:46:52PM +0100, Philippe Mathieu-Daudé wrote:
> Hi Michael, Paolo.
> 
> Now than all other PCI QOM'ification patches got applied, can you take
> this patch for 2.12?
> 
> Thanks,
> 
> Phil.
> 
> On 12/17/2017 09:49 PM, Philippe Mathieu-Daudé wrote:
> > All PCI devices are now QOM'ified.
> > 
> > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> > ---
> >  include/hw/pci/pci.h |  1 -
> >  hw/pci/pci.c         | 14 --------------
> >  2 files changed, 15 deletions(-)
> > 
> > diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h
> > index 8d02a0a383..0f1ed64c2f 100644
> > --- a/include/hw/pci/pci.h
> > +++ b/include/hw/pci/pci.h
> > @@ -217,7 +217,6 @@ typedef struct PCIDeviceClass {
> >      DeviceClass parent_class;
> >  
> >      void (*realize)(PCIDevice *dev, Error **errp);
> > -    int (*init)(PCIDevice *dev);/* TODO convert to realize() and remove */
> >      PCIUnregisterFunc *exit;
> >      PCIConfigReadFunc *config_read;
> >      PCIConfigWriteFunc *config_write;
> > diff --git a/hw/pci/pci.c b/hw/pci/pci.c
> > index b2d139bd9a..cd25ab6f6b 100644
> > --- a/hw/pci/pci.c
> > +++ b/hw/pci/pci.c
> > @@ -2054,18 +2054,6 @@ static void pci_qdev_realize(DeviceState *qdev, Error **errp)
> >      }
> >  }
> >  
> > -static void pci_default_realize(PCIDevice *dev, Error **errp)
> > -{
> > -    PCIDeviceClass *pc = PCI_DEVICE_GET_CLASS(dev);
> > -
> > -    if (pc->init) {
> > -        if (pc->init(dev) < 0) {
> > -            error_setg(errp, "Device initialization failed");
> > -            return;
> > -        }
> > -    }
> > -}
> > -
> >  PCIDevice *pci_create_multifunction(PCIBus *bus, int devfn, bool multifunction,
> >                                      const char *name)
> >  {
> > @@ -2538,13 +2526,11 @@ MemoryRegion *pci_address_space_io(PCIDevice *dev)
> >  static void pci_device_class_init(ObjectClass *klass, void *data)
> >  {
> >      DeviceClass *k = DEVICE_CLASS(klass);
> > -    PCIDeviceClass *pc = PCI_DEVICE_CLASS(klass);
> >  
> >      k->realize = pci_qdev_realize;
> >      k->unrealize = pci_qdev_unrealize;
> >      k->bus_type = TYPE_PCI_BUS;
> >      k->props = pci_props;
> > -    pc->realize = pci_default_realize;

How about we assert !init here?

+	assert(!pc->init);

> >  }
> >  
> >  static void pci_device_class_base_init(ObjectClass *klass, void *data)
> > 



Re: [Qemu-devel] [PATCH 4/4] hw/pci: remove obsolete PCIDevice->init()
Posted by Michael S. Tsirkin 7 years, 7 months ago
On Mon, Mar 12, 2018 at 02:03:17AM +0200, Michael S. Tsirkin wrote:
> On Sun, Mar 11, 2018 at 04:46:52PM +0100, Philippe Mathieu-Daudé wrote:
> > Hi Michael, Paolo.
> > 
> > Now than all other PCI QOM'ification patches got applied, can you take
> > this patch for 2.12?
> > 
> > Thanks,
> > 
> > Phil.
> > 
> > On 12/17/2017 09:49 PM, Philippe Mathieu-Daudé wrote:
> > > All PCI devices are now QOM'ified.
> > > 
> > > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> > > ---
> > >  include/hw/pci/pci.h |  1 -
> > >  hw/pci/pci.c         | 14 --------------
> > >  2 files changed, 15 deletions(-)
> > > 
> > > diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h
> > > index 8d02a0a383..0f1ed64c2f 100644
> > > --- a/include/hw/pci/pci.h
> > > +++ b/include/hw/pci/pci.h
> > > @@ -217,7 +217,6 @@ typedef struct PCIDeviceClass {
> > >      DeviceClass parent_class;
> > >  
> > >      void (*realize)(PCIDevice *dev, Error **errp);
> > > -    int (*init)(PCIDevice *dev);/* TODO convert to realize() and remove */
> > >      PCIUnregisterFunc *exit;
> > >      PCIConfigReadFunc *config_read;
> > >      PCIConfigWriteFunc *config_write;
> > > diff --git a/hw/pci/pci.c b/hw/pci/pci.c
> > > index b2d139bd9a..cd25ab6f6b 100644
> > > --- a/hw/pci/pci.c
> > > +++ b/hw/pci/pci.c
> > > @@ -2054,18 +2054,6 @@ static void pci_qdev_realize(DeviceState *qdev, Error **errp)
> > >      }
> > >  }
> > >  
> > > -static void pci_default_realize(PCIDevice *dev, Error **errp)
> > > -{
> > > -    PCIDeviceClass *pc = PCI_DEVICE_GET_CLASS(dev);
> > > -
> > > -    if (pc->init) {
> > > -        if (pc->init(dev) < 0) {
> > > -            error_setg(errp, "Device initialization failed");
> > > -            return;
> > > -        }
> > > -    }
> > > -}
> > > -
> > >  PCIDevice *pci_create_multifunction(PCIBus *bus, int devfn, bool multifunction,
> > >                                      const char *name)
> > >  {
> > > @@ -2538,13 +2526,11 @@ MemoryRegion *pci_address_space_io(PCIDevice *dev)
> > >  static void pci_device_class_init(ObjectClass *klass, void *data)
> > >  {
> > >      DeviceClass *k = DEVICE_CLASS(klass);
> > > -    PCIDeviceClass *pc = PCI_DEVICE_CLASS(klass);
> > >  
> > >      k->realize = pci_qdev_realize;
> > >      k->unrealize = pci_qdev_unrealize;
> > >      k->bus_type = TYPE_PCI_BUS;
> > >      k->props = pci_props;
> > > -    pc->realize = pci_default_realize;
> 
> How about we assert !init here?
> 
> +	assert(!pc->init);

Oh sorry I missed the chunk that drops it completely.
Will apply.

> > >  }
> > >  
> > >  static void pci_device_class_base_init(ObjectClass *klass, void *data)
> > > 
> 
> 

Re: [Qemu-devel] [PATCH 4/4] hw/pci: remove obsolete PCIDevice->init()
Posted by Philippe Mathieu-Daudé 7 years, 7 months ago
On 03/12/2018 01:04 AM, Michael S. Tsirkin wrote:
> On Mon, Mar 12, 2018 at 02:03:17AM +0200, Michael S. Tsirkin wrote:
>> On Sun, Mar 11, 2018 at 04:46:52PM +0100, Philippe Mathieu-Daudé wrote:
>>> Hi Michael, Paolo.
>>>
>>> Now than all other PCI QOM'ification patches got applied, can you take
>>> this patch for 2.12?
>>>
>>> Thanks,
>>>
>>> Phil.
>>>
>>> On 12/17/2017 09:49 PM, Philippe Mathieu-Daudé wrote:
>>>> All PCI devices are now QOM'ified.
>>>>
>>>> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>>>> ---
>>>>  include/hw/pci/pci.h |  1 -
>>>>  hw/pci/pci.c         | 14 --------------
>>>>  2 files changed, 15 deletions(-)
>>>>
>>>> diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h
>>>> index 8d02a0a383..0f1ed64c2f 100644
>>>> --- a/include/hw/pci/pci.h
>>>> +++ b/include/hw/pci/pci.h
>>>> @@ -217,7 +217,6 @@ typedef struct PCIDeviceClass {
>>>>      DeviceClass parent_class;
>>>>  
>>>>      void (*realize)(PCIDevice *dev, Error **errp);
>>>> -    int (*init)(PCIDevice *dev);/* TODO convert to realize() and remove */
>>>>      PCIUnregisterFunc *exit;
>>>>      PCIConfigReadFunc *config_read;
>>>>      PCIConfigWriteFunc *config_write;
>>>> diff --git a/hw/pci/pci.c b/hw/pci/pci.c
>>>> index b2d139bd9a..cd25ab6f6b 100644
>>>> --- a/hw/pci/pci.c
>>>> +++ b/hw/pci/pci.c
>>>> @@ -2054,18 +2054,6 @@ static void pci_qdev_realize(DeviceState *qdev, Error **errp)
>>>>      }
>>>>  }
>>>>  
>>>> -static void pci_default_realize(PCIDevice *dev, Error **errp)
>>>> -{
>>>> -    PCIDeviceClass *pc = PCI_DEVICE_GET_CLASS(dev);
>>>> -
>>>> -    if (pc->init) {
>>>> -        if (pc->init(dev) < 0) {
>>>> -            error_setg(errp, "Device initialization failed");
>>>> -            return;
>>>> -        }
>>>> -    }
>>>> -}
>>>> -
>>>>  PCIDevice *pci_create_multifunction(PCIBus *bus, int devfn, bool multifunction,
>>>>                                      const char *name)
>>>>  {
>>>> @@ -2538,13 +2526,11 @@ MemoryRegion *pci_address_space_io(PCIDevice *dev)
>>>>  static void pci_device_class_init(ObjectClass *klass, void *data)
>>>>  {
>>>>      DeviceClass *k = DEVICE_CLASS(klass);
>>>> -    PCIDeviceClass *pc = PCI_DEVICE_CLASS(klass);
>>>>  
>>>>      k->realize = pci_qdev_realize;
>>>>      k->unrealize = pci_qdev_unrealize;
>>>>      k->bus_type = TYPE_PCI_BUS;
>>>>      k->props = pci_props;
>>>> -    pc->realize = pci_default_realize;
>>
>> How about we assert !init here?
>>
>> +	assert(!pc->init);
> 
> Oh sorry I missed the chunk that drops it completely.
> Will apply.

Thanks!

> 
>>>>  }
>>>>  
>>>>  static void pci_device_class_base_init(ObjectClass *klass, void *data)
>>>>
>>
>>