[dpdk-dev] rte_eth_dev_attach returns 0, although device is not attached

Igor Ryzhov iryzhov at nfware.com
Thu Aug 4 13:51:35 CEST 2016


Hello Ferruh,

> 4 авг. 2016 г., в 14:33, Ferruh Yigit <ferruh.yigit at intel.com> написал(а):
> 
> Hi Igor,
> 
> On 8/3/2016 5:58 PM, Igor Ryzhov wrote:
>> Hello.
>> 
>> Function rte_eth_dev_attach can return false positive result.
>> It happens because rte_eal_pci_probe_one returns zero if no driver is found for the device:
>> ret = pci_probe_all_drivers(dev);
>> if (ret < 0)
>> 	goto err_return;
>> return 0;
>> (pci_probe_all_drivers returns 1 in that case)
>> 
>> For example, it can be easily reproduced by trying to attach virtio device, managed by kernel driver.
> 
> You are right, and I did able to reproduce this issue with virtio as you
> suggest.
> 
> But I wonder why rte_eth_dev_get_port_by_addr() is not catching this.
> Perhaps a dev->attached check needs to be added into this function.
> 
>> 
>> I think it should be:
>> ret = pci_probe_all_drivers(dev);
>> if (ret)
>> 	goto err_return;
>> return 0;
> 
> Your proposal looks good to me. Will you send a patch?

Patch sent.

> 
>> Best regards,
>> Igor
>> 
> 



More information about the dev mailing list