Thread (92 messages) 92 messages, 9 authors, 2016-03-09

Re: [PATCH v4 4/4] virtio: return 1 to tell the upper layer we don't take over this device

From: Thomas Monjalon <hidden>
Date: 2016-03-01 09:57:12

2016-03-01 08:39, Xie, Huawei:
On 3/1/2016 4:24 PM, Thomas Monjalon wrote:
quoted
2016-03-01 07:53, Xie, Huawei:
quoted
On 3/1/2016 3:18 PM, Thomas Monjalon wrote:
quoted
2016-02-26 09:53, Huawei Xie:
quoted
@@ -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.
I can send a separate patch, ok within this patchset?
Yes
quoted
quoted
[...]
quoted
 	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.
I feel there is a subtle difference on the understanding of -w args. To
me, without it, probe all devices; with it, only probe whiltelisted API.
That is all.
I don't know if it is clearly documented indeed.
quoted
Do you mean that -w implies that devices whitelisted must be probed
successfully otherwise we throw an error? If i get it right, then what
about the devices whitelisted but without PMD driver?
Yes we should probably consider the whitelist as a "forced" init.
Later, we could introduce some device flags for probing/discovery:
PROBE_AUTO, PROBE_FORCE, PROBE_IGNORE. It would make white/black list
more precise.
quoted
I will fix, :).
if (dev->kdrv == RTE_KDRV_UNKNOWN && dev->devargs->type !=
RTE_DEVTYPE_WHITELISTED_PCI) {
        ....
        return 1;
}
You should also consider the blacklist case: if there is a blacklist,
the not blacklisted devices must be initialised or throw an error.
Don't we already skip probing the blacklisted device in
rte_eal_pci_probe_one_driver?
Yes, I'm talking about the devices which are not blacklisted.
Having some blacklisted devices imply that others are implicitly whitelisted.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help