On Mon, Jan 23, 2017 at 11:05:25AM +0000, Ferruh Yigit wrote: > >>>>>> lib/librte_ether/rte_ethdev.c | 2 +- > >>>>>> 1 file changed, 1 insertion(+), 1 deletion(-) > >>>>>> > >>>>>> diff --git a/lib/librte_ether/rte_ethdev.c > >>>>>> b/lib/librte_ether/rte_ethdev.c > >>>>>> index 4790faf..61f44e2 100644 > >>>>>> --- a/lib/librte_ether/rte_ethdev.c > >>>>>> +++ b/lib/librte_ether/rte_ethdev.c > >>>>>> @@ -225,7 +225,7 @@ struct rte_eth_dev * > >>>>>> return NULL; > >>>>>> } > >>>>>> > >>>>>> - memset(&rte_eth_devices[port_id], 0, sizeof(*eth_dev->data)); > >>>>>> + memset(&rte_eth_dev_data[port_id], 0, sizeof(struct > >>>>>> rte_eth_dev_data)); > >>>>> > >>>>> Not directly related to the this issue, but, after fix, this may have > >>>>> issues with secondary process. > >>>>> > >>>>> There were patches sent to fix this. > >>>> > >>>> I mean this one: > >>>> http://dpdk.org/ml/archives/dev/2017-January/054422.html > >>> > >>> d948f596fee2 ("ethdev: fix port data mismatched in multiple process > >>> model") should have fixed it. > >> > >> Think about case, where secondary process uses a virtual PMD, which does > >> a rte_eth_dev_allocate() call, shouldn't this corrupt primary process > >> device data? > > > > Yes, it may. However, I doubt that's the typical usage. > > But this is a use case, and broken now,
I thought it was broken since the beginning? > and fix is known. And there is already a fix? > Should be > fixed I think. Sure. > > > Besides that, > > most of virtual PMDs don't support Multipleprocess: git grep shows pcap > > is the only one that does claim Multipleprocess is supported. > > I guess you searched for NIC feature documentation for this. Yes. > But as far > as I know, all virtual drivers can be used in both primary and secondary > process. Maybe. But it becomes very error-prone to me then when vdev are involved in both primary and secondary process. I don't think current code is (or designed to be) strong enough to support that. I don't know it's allowed to use hotplug or not in the multiple process model. If yes, I think there would be many ways to break it. Honestly, the multiple process doesn't look like a good/clean design to me, especially when some piece of code claim to support it while some other doesn't. So my point was, yes, there is a bug, we should fix it. But it seems that there could be so many bugs if we hugely expand the test coverage of the multiple process feature. --yliu