[vfio-users] [PATCH v3 05/11] igd: TYPE_IGD_PASSTHROUGH_I440FX_PCI_DEVICE: call parent realize
Stefano Stabellini
stefano.stabellini at eu.citrix.com
Wed Jan 6 14:41:54 UTC 2016
On Tue, 5 Jan 2016, Gerd Hoffmann wrote:
> Signed-off-by: Gerd Hoffmann <kraxel at redhat.com>
> ---
> hw/pci-host/igd.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/hw/pci-host/igd.c b/hw/pci-host/igd.c
> index d1eeafb..6f52ab1 100644
> --- a/hw/pci-host/igd.c
> +++ b/hw/pci-host/igd.c
> @@ -53,12 +53,20 @@ out:
> return ret;
> }
>
> +static void (*i440fx_realize)(PCIDevice *pci_dev, Error **errp);
> static void igd_pt_i440fx_realize(PCIDevice *pci_dev, Error **errp)
> {
> + Error *err = NULL;
> uint32_t val = 0;
> int rc, i, num;
> int pos, len;
Can't we get the parent PCIDeviceClass realize function from pci_dev? So
that we don't have to introduce i440fx_realize?
> + i440fx_realize(pci_dev, &err);
> + if (err != NULL) {
> + error_propagate(errp, err);
> + return;
> + }
> +
> num = ARRAY_SIZE(igd_host_bridge_infos);
> for (i = 0; i < num; i++) {
> pos = igd_host_bridge_infos[i].offset;
> @@ -77,6 +85,7 @@ static void igd_passthrough_i440fx_class_init(ObjectClass *klass, void *data)
> DeviceClass *dc = DEVICE_CLASS(klass);
> PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
>
> + i440fx_realize = k->realize;
> k->realize = igd_pt_i440fx_realize;
> dc->desc = "IGD Passthrough Host bridge";
> }
> --
> 1.8.3.1
>
More information about the vfio-users
mailing list