[dpdk-dev] [PATCH 4/4] virtio: check if any kernel driver is manipulating the device

Yuanhan Liu yuanhan.liu at linux.intel.com
Mon Dec 28 06:26:58 CET 2015


On Fri, Dec 25, 2015 at 02:38:12AM +0800, Huawei Xie wrote:
> virtio PMD could use IO port to configure the virtio device without
> using uio driver.
> 
> There are two issues with previous implementation:
> 1) virtio PMD will take over each virtio device blindly even if some
> are not intended for DPDK.
> 2) driver conflict between virtio PMD and virtio-net kernel driver.
> 
> This patch checks if there is any kernel driver manipulating the virtio
> device before virtio PMD uses IO port to configure the device.
> 
> Fixes: da978dfdc43b ("virtio: use port IO to get PCI resource")
> 
> Signed-off-by: Huawei Xie <huawei.xie at intel.com>
> ---
>  drivers/net/virtio/virtio_ethdev.c | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c
> index 00015ef..504346a 100644
> --- a/drivers/net/virtio/virtio_ethdev.c
> +++ b/drivers/net/virtio/virtio_ethdev.c
> @@ -1138,6 +1138,13 @@ static int virtio_resource_init_by_ioports(struct rte_pci_device *pci_dev)
>  	int found = 0;
>  	size_t linesz;
>  
> +	if (pci_dev->kdrv != RTE_KDRV_NONE) {
> +		PMD_INIT_LOG(ERR,
> +			"%s(): kernel driver is manipulating this device." \
> +			" Please unbind the kernel driver.", __func__);

PMD_INIT_LOG already prints the function, no need to reference __func__
again here.

	--yliu
> +		return -1;
> +	}
> +
>  	snprintf(pci_id, sizeof(pci_id), PCI_PRI_FMT,
>  		 pci_dev->addr.domain,
>  		 pci_dev->addr.bus,
> -- 
> 1.8.1.4


More information about the dev mailing list