Hi Huawei,

2016-02-26 09:53, Huawei Xie:
> --- a/drivers/net/virtio/virtio_ethdev.c
> +++ b/drivers/net/virtio/virtio_ethdev.c
> @@ -1,4 +1,5 @@
>  /*-
> +

This new line seems useless :)

>   *   BSD LICENSE
>   *
[...]
> @@ -1037,8 +1039,11 @@ eth_virtio_dev_init(struct rte_eth_dev *eth_dev)
>  
>       pci_dev = eth_dev->pci_dev;
>  
> -     if (vtpci_init(pci_dev, hw) < 0)
> -             return -1;
> +     ret = vtpci_init(pci_dev, hw);
> +     if (ret) {
> +             rte_free(eth_dev->data->mac_addrs);

The freeing seems not related to this patch.

> +             return ret;
> +     }
[...]
>       PMD_INIT_LOG(INFO, "trying with legacy virtio pci.");
> -     if (legacy_virtio_resource_init(dev, hw) < 0)
> +     if (legacy_virtio_resource_init(dev, hw) < 0) {
> +             if (dev->kdrv == RTE_KDRV_UNKNOWN) {
> +                     PMD_INIT_LOG(INFO,
> +                             "skip kernel managed virtio device.");
> +                     return 1;
> +             }
>               return -1;
> +     }

You cannot skip a device if it was whitelisted.
I think you should check RTE_DEVTYPE_WHITELISTED_PCI and throw an error
in this case.

Reply via email to