[v4] net/hinic: fix coredump when the scondary process using the hinic port.

Message ID ad3c9e64-5817-731d-1426-8239980d668f@huawei.com (mailing list archive)
State Superseded, archived
Delegated to: Ferruh Yigit
Headers
Series [v4] net/hinic: fix coredump when the scondary process using the hinic port. |

Checks

Context Check Description
ci/Intel-compilation fail apply issues

Commit Message

Qingqing Li Oct. 31, 2020, 10:10 a.m. UTC
  fix coredump when secondary process using the hinic port. the
reason is that during the stage of secondary process port 
initialization, it lack the initialization of "eth_dev->dev_ops".

Signed-off-by: Qingqing Li <liqingqing3@huawei.com>
---
v4: adapt to the latest version.
---
v3: update the signed-off information.
---
v2:  solve the coding style issue.
Signed-off-by: liqingqing <liqingqing3@huawei.com>
---
  drivers/net/hinic/hinic_pmd_ethdev.c | 20 ++++++++++++--------
  1 file changed, 12 insertions(+), 8 deletions(-)

  	nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(eth_dev);
@@ -3241,6 +3233,18 @@ static int hinic_dev_init(struct rte_eth_dev 
*eth_dev)
  	eth_dev->rx_pkt_burst = hinic_recv_pkts;
  	eth_dev->tx_pkt_burst = hinic_xmit_pkts;

+	/* EAL is SECONDARY and eth_dev is already created */
+	if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
+		PMD_DRV_LOG(INFO, "Initialize %s in secondary process", 
eth_dev->data->name);
+
+		struct hinic_nic_dev *nic_dev = 
HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(eth_dev);
+		if (HINIC_IS_VF(nic_dev->hwdev))
+			eth_dev->dev_ops = &hinic_pmd_vf_ops;
+		else
+			eth_dev->dev_ops = &hinic_pmd_ops;
+		return 0;
+	}
+
  	return hinic_func_init(eth_dev);
  }
  

Comments

Wangxiaoyun (Cloud) Nov. 12, 2020, 2:11 a.m. UTC | #1
Hi Ferruh,

Align with Qingqing Li, this path will not apply to dpdk master now, some dev_ops may
casue fail when run in secondary proc, so need to modify it later and add tests for other
dev_ops.

Thanks

在 2020/10/31 18:10, Qingqing Li 写道:
> fix coredump when secondary process using the hinic port. the
> reason is that during the stage of secondary process port initialization, it lack the initialization of "eth_dev->dev_ops".
> 
> Signed-off-by: Qingqing Li <liqingqing3@huawei.com>
> ---
> v4: adapt to the latest version.
> ---
> v3: update the signed-off information.
> ---
> v2:  solve the coding style issue.
> Signed-off-by: liqingqing <liqingqing3@huawei.com>
> ---
>   drivers/net/hinic/hinic_pmd_ethdev.c | 20 ++++++++++++--------
>   1 file changed, 12 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/net/hinic/hinic_pmd_ethdev.c b/drivers/net/hinic/hinic_pmd_ethdev.c
> index b694fd83c..526dafdad 100644
> --- a/drivers/net/hinic/hinic_pmd_ethdev.c
> +++ b/drivers/net/hinic/hinic_pmd_ethdev.c
> @@ -3100,14 +3100,6 @@ static int hinic_func_init(struct rte_eth_dev *eth_dev)
> 
>       pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev);
> 
> -    /* EAL is SECONDARY and eth_dev is already created */
> -    if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
> -        PMD_DRV_LOG(INFO, "Initialize %s in secondary process",
> -                eth_dev->data->name);
> -
> -        return 0;
> -    }
> -
>       eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS;
> 
>       nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(eth_dev);
> @@ -3241,6 +3233,18 @@ static int hinic_dev_init(struct rte_eth_dev *eth_dev)
>       eth_dev->rx_pkt_burst = hinic_recv_pkts;
>       eth_dev->tx_pkt_burst = hinic_xmit_pkts;
> 
> +    /* EAL is SECONDARY and eth_dev is already created */
> +    if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
> +        PMD_DRV_LOG(INFO, "Initialize %s in secondary process", eth_dev->data->name);
> +
> +        struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(eth_dev);
> +        if (HINIC_IS_VF(nic_dev->hwdev))
> +            eth_dev->dev_ops = &hinic_pmd_vf_ops;
> +        else
> +            eth_dev->dev_ops = &hinic_pmd_ops;
> +        return 0;
> +    }
> +
>       return hinic_func_init(eth_dev);
>   }
>
  
Ferruh Yigit Nov. 12, 2020, 9:26 a.m. UTC | #2
On 11/12/2020 2:11 AM, Wangxiaoyun (Cloud) wrote:
> Hi Ferruh,
> 
> Align with Qingqing Li, this path will not apply to dpdk master now, some 
> dev_ops may
> casue fail when run in secondary proc, so need to modify it later and add tests 
> for other
> dev_ops.
> 

So will there be a new version in next release?

Please feel free to put comments in the mail list, it helps recording the status 
and people looking for it later.


> Thanks
> 
> 在 2020/10/31 18:10, Qingqing Li 写道:
>> fix coredump when secondary process using the hinic port. the
>> reason is that during the stage of secondary process port initialization, it 
>> lack the initialization of "eth_dev->dev_ops".
>>
>> Signed-off-by: Qingqing Li <liqingqing3@huawei.com>
>> ---
>> v4: adapt to the latest version.
>> ---
>> v3: update the signed-off information.
>> ---
>> v2:  solve the coding style issue.
>> Signed-off-by: liqingqing <liqingqing3@huawei.com>
>> ---
>>   drivers/net/hinic/hinic_pmd_ethdev.c | 20 ++++++++++++--------
>>   1 file changed, 12 insertions(+), 8 deletions(-)
>>
>> diff --git a/drivers/net/hinic/hinic_pmd_ethdev.c 
>> b/drivers/net/hinic/hinic_pmd_ethdev.c
>> index b694fd83c..526dafdad 100644
>> --- a/drivers/net/hinic/hinic_pmd_ethdev.c
>> +++ b/drivers/net/hinic/hinic_pmd_ethdev.c
>> @@ -3100,14 +3100,6 @@ static int hinic_func_init(struct rte_eth_dev *eth_dev)
>>
>>       pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev);
>>
>> -    /* EAL is SECONDARY and eth_dev is already created */
>> -    if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
>> -        PMD_DRV_LOG(INFO, "Initialize %s in secondary process",
>> -                eth_dev->data->name);
>> -
>> -        return 0;
>> -    }
>> -
>>       eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS;
>>
>>       nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(eth_dev);
>> @@ -3241,6 +3233,18 @@ static int hinic_dev_init(struct rte_eth_dev *eth_dev)
>>       eth_dev->rx_pkt_burst = hinic_recv_pkts;
>>       eth_dev->tx_pkt_burst = hinic_xmit_pkts;
>>
>> +    /* EAL is SECONDARY and eth_dev is already created */
>> +    if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
>> +        PMD_DRV_LOG(INFO, "Initialize %s in secondary process", 
>> eth_dev->data->name);
>> +
>> +        struct hinic_nic_dev *nic_dev = 
>> HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(eth_dev);
>> +        if (HINIC_IS_VF(nic_dev->hwdev))
>> +            eth_dev->dev_ops = &hinic_pmd_vf_ops;
>> +        else
>> +            eth_dev->dev_ops = &hinic_pmd_ops;
>> +        return 0;
>> +    }
>> +
>>       return hinic_func_init(eth_dev);
>>   }
>>
  
Wangxiaoyun (Cloud) Nov. 12, 2020, 12:30 p.m. UTC | #3
When we complete repair and testing, we will upstream the patch in next release,
maybe not keep up with 20.11.

在 2020/11/12 17:26, Ferruh Yigit 写道:
> On 11/12/2020 2:11 AM, Wangxiaoyun (Cloud) wrote:
>> Hi Ferruh,
>>
>> Align with Qingqing Li, this path will not apply to dpdk master now, some dev_ops may
>> casue fail when run in secondary proc, so need to modify it later and add tests for other
>> dev_ops.
>>
> 
> So will there be a new version in next release?
> 
> Please feel free to put comments in the mail list, it helps recording the status and people looking for it later.
> 
> 
>> Thanks
>>
>> 在 2020/10/31 18:10, Qingqing Li 写道:
>>> fix coredump when secondary process using the hinic port. the
>>> reason is that during the stage of secondary process port initialization, it lack the initialization of "eth_dev->dev_ops".
>>>
>>> Signed-off-by: Qingqing Li <liqingqing3@huawei.com>
>>> ---
>>> v4: adapt to the latest version.
>>> ---
>>> v3: update the signed-off information.
>>> ---
>>> v2:  solve the coding style issue.
>>> Signed-off-by: liqingqing <liqingqing3@huawei.com>
>>> ---
>>>   drivers/net/hinic/hinic_pmd_ethdev.c | 20 ++++++++++++--------
>>>   1 file changed, 12 insertions(+), 8 deletions(-)
>>>
>>> diff --git a/drivers/net/hinic/hinic_pmd_ethdev.c b/drivers/net/hinic/hinic_pmd_ethdev.c
>>> index b694fd83c..526dafdad 100644
>>> --- a/drivers/net/hinic/hinic_pmd_ethdev.c
>>> +++ b/drivers/net/hinic/hinic_pmd_ethdev.c
>>> @@ -3100,14 +3100,6 @@ static int hinic_func_init(struct rte_eth_dev *eth_dev)
>>>
>>>       pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev);
>>>
>>> -    /* EAL is SECONDARY and eth_dev is already created */
>>> -    if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
>>> -        PMD_DRV_LOG(INFO, "Initialize %s in secondary process",
>>> -                eth_dev->data->name);
>>> -
>>> -        return 0;
>>> -    }
>>> -
>>>       eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS;
>>>
>>>       nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(eth_dev);
>>> @@ -3241,6 +3233,18 @@ static int hinic_dev_init(struct rte_eth_dev *eth_dev)
>>>       eth_dev->rx_pkt_burst = hinic_recv_pkts;
>>>       eth_dev->tx_pkt_burst = hinic_xmit_pkts;
>>>
>>> +    /* EAL is SECONDARY and eth_dev is already created */
>>> +    if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
>>> +        PMD_DRV_LOG(INFO, "Initialize %s in secondary process", eth_dev->data->name);
>>> +
>>> +        struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(eth_dev);
>>> +        if (HINIC_IS_VF(nic_dev->hwdev))
>>> +            eth_dev->dev_ops = &hinic_pmd_vf_ops;
>>> +        else
>>> +            eth_dev->dev_ops = &hinic_pmd_ops;
>>> +        return 0;
>>> +    }
>>> +
>>>       return hinic_func_init(eth_dev);
>>>   }
>>>
> 
> .
  
Ferruh Yigit Nov. 12, 2020, 12:39 p.m. UTC | #4
On 11/12/2020 12:30 PM, Wangxiaoyun (Cloud) wrote:

< copied the response down, please don't top post >

> 在 2020/11/12 17:26, Ferruh Yigit 写道:
>> On 11/12/2020 2:11 AM, Wangxiaoyun (Cloud) wrote:
>>> Hi Ferruh,
>>>
>>> Align with Qingqing Li, this path will not apply to dpdk master now, some 
>>> dev_ops may
>>> casue fail when run in secondary proc, so need to modify it later and add 
>>> tests for other
>>> dev_ops.
>>>
>>
>> So will there be a new version in next release?
>>
>> Please feel free to put comments in the mail list, it helps recording the 
>> status and people looking for it later.
>>
 > When we complete repair and testing, we will upstream the patch in next release,
 > maybe not keep up with 20.11.
 >

OK, I am updating the patch status as deferred to follow it in next release.

>>
>>> Thanks
>>>
>>> 在 2020/10/31 18:10, Qingqing Li 写道:
>>>> fix coredump when secondary process using the hinic port. the
>>>> reason is that during the stage of secondary process port initialization, it 
>>>> lack the initialization of "eth_dev->dev_ops".
>>>>
>>>> Signed-off-by: Qingqing Li <liqingqing3@huawei.com>
>>>> ---
>>>> v4: adapt to the latest version.
>>>> ---
>>>> v3: update the signed-off information.
>>>> ---
>>>> v2:  solve the coding style issue.
>>>> Signed-off-by: liqingqing <liqingqing3@huawei.com>
>>>> ---
>>>>   drivers/net/hinic/hinic_pmd_ethdev.c | 20 ++++++++++++--------
>>>>   1 file changed, 12 insertions(+), 8 deletions(-)
>>>>
>>>> diff --git a/drivers/net/hinic/hinic_pmd_ethdev.c 
>>>> b/drivers/net/hinic/hinic_pmd_ethdev.c
>>>> index b694fd83c..526dafdad 100644
>>>> --- a/drivers/net/hinic/hinic_pmd_ethdev.c
>>>> +++ b/drivers/net/hinic/hinic_pmd_ethdev.c
>>>> @@ -3100,14 +3100,6 @@ static int hinic_func_init(struct rte_eth_dev *eth_dev)
>>>>
>>>>       pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev);
>>>>
>>>> -    /* EAL is SECONDARY and eth_dev is already created */
>>>> -    if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
>>>> -        PMD_DRV_LOG(INFO, "Initialize %s in secondary process",
>>>> -                eth_dev->data->name);
>>>> -
>>>> -        return 0;
>>>> -    }
>>>> -
>>>>       eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS;
>>>>
>>>>       nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(eth_dev);
>>>> @@ -3241,6 +3233,18 @@ static int hinic_dev_init(struct rte_eth_dev *eth_dev)
>>>>       eth_dev->rx_pkt_burst = hinic_recv_pkts;
>>>>       eth_dev->tx_pkt_burst = hinic_xmit_pkts;
>>>>
>>>> +    /* EAL is SECONDARY and eth_dev is already created */
>>>> +    if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
>>>> +        PMD_DRV_LOG(INFO, "Initialize %s in secondary process", 
>>>> eth_dev->data->name);
>>>> +
>>>> +        struct hinic_nic_dev *nic_dev = 
>>>> HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(eth_dev);
>>>> +        if (HINIC_IS_VF(nic_dev->hwdev))
>>>> +            eth_dev->dev_ops = &hinic_pmd_vf_ops;
>>>> +        else
>>>> +            eth_dev->dev_ops = &hinic_pmd_ops;
>>>> +        return 0;
>>>> +    }
>>>> +
>>>>       return hinic_func_init(eth_dev);
>>>>   }
>>>>
>>
>> .
  
Wangxiaoyun (Cloud) March 18, 2021, 6:12 a.m. UTC | #5
Hi Ferruh,
	For secondary process fix,you can refer to this patch "net/hinic: fix coredump when PMD used by fstack".
Thanks

在 2020/11/12 20:30, Wangxiaoyun (Cloud) 写道:
> When we complete repair and testing, we will upstream the patch in next release,
> maybe not keep up with 20.11.
> 
> 在 2020/11/12 17:26, Ferruh Yigit 写道:
>> On 11/12/2020 2:11 AM, Wangxiaoyun (Cloud) wrote:
>>> Hi Ferruh,
>>>
>>> Align with Qingqing Li, this path will not apply to dpdk master now, some dev_ops may
>>> casue fail when run in secondary proc, so need to modify it later and add tests for other
>>> dev_ops.
>>>
>>
>> So will there be a new version in next release?
>>
>> Please feel free to put comments in the mail list, it helps recording the status and people looking for it later.
>>
>>
>>> Thanks
>>>
>>> 在 2020/10/31 18:10, Qingqing Li 写道:
>>>> fix coredump when secondary process using the hinic port. the
>>>> reason is that during the stage of secondary process port initialization, it lack the initialization of "eth_dev->dev_ops".
>>>>
>>>> Signed-off-by: Qingqing Li <liqingqing3@huawei.com>
>>>> ---
>>>> v4: adapt to the latest version.
>>>> ---
>>>> v3: update the signed-off information.
>>>> ---
>>>> v2:  solve the coding style issue.
>>>> Signed-off-by: liqingqing <liqingqing3@huawei.com>
>>>> ---
>>>>   drivers/net/hinic/hinic_pmd_ethdev.c | 20 ++++++++++++--------
>>>>   1 file changed, 12 insertions(+), 8 deletions(-)
>>>>
>>>> diff --git a/drivers/net/hinic/hinic_pmd_ethdev.c b/drivers/net/hinic/hinic_pmd_ethdev.c
>>>> index b694fd83c..526dafdad 100644
>>>> --- a/drivers/net/hinic/hinic_pmd_ethdev.c
>>>> +++ b/drivers/net/hinic/hinic_pmd_ethdev.c
>>>> @@ -3100,14 +3100,6 @@ static int hinic_func_init(struct rte_eth_dev *eth_dev)
>>>>
>>>>       pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev);
>>>>
>>>> -    /* EAL is SECONDARY and eth_dev is already created */
>>>> -    if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
>>>> -        PMD_DRV_LOG(INFO, "Initialize %s in secondary process",
>>>> -                eth_dev->data->name);
>>>> -
>>>> -        return 0;
>>>> -    }
>>>> -
>>>>       eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS;
>>>>
>>>>       nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(eth_dev);
>>>> @@ -3241,6 +3233,18 @@ static int hinic_dev_init(struct rte_eth_dev *eth_dev)
>>>>       eth_dev->rx_pkt_burst = hinic_recv_pkts;
>>>>       eth_dev->tx_pkt_burst = hinic_xmit_pkts;
>>>>
>>>> +    /* EAL is SECONDARY and eth_dev is already created */
>>>> +    if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
>>>> +        PMD_DRV_LOG(INFO, "Initialize %s in secondary process", eth_dev->data->name);
>>>> +
>>>> +        struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(eth_dev);
>>>> +        if (HINIC_IS_VF(nic_dev->hwdev))
>>>> +            eth_dev->dev_ops = &hinic_pmd_vf_ops;
>>>> +        else
>>>> +            eth_dev->dev_ops = &hinic_pmd_ops;
>>>> +        return 0;
>>>> +    }
>>>> +
>>>>       return hinic_func_init(eth_dev);
>>>>   }
>>>>
>>
>> .
  
Ferruh Yigit March 22, 2021, 9:04 a.m. UTC | #6
On 3/18/2021 6:12 AM, Wangxiaoyun (Cloud) wrote:
> Hi Ferruh,
>      For secondary process fix,you can refer to this patch "net/hinic: fix 
> coredump when PMD used by fstack".
> Thanks

Got it, thanks for new version. I am marking the old one as superseded.

For reference, the old one is:
https://patches.dpdk.org/project/dpdk/patch/19384408-c7b8-8140-2f92-a4fcc071715f@huawei.com/

> 
> 在 2020/11/12 20:30, Wangxiaoyun (Cloud) 写道:
>> When we complete repair and testing, we will upstream the patch in next release,
>> maybe not keep up with 20.11.
>>
>> 在 2020/11/12 17:26, Ferruh Yigit 写道:
>>> On 11/12/2020 2:11 AM, Wangxiaoyun (Cloud) wrote:
>>>> Hi Ferruh,
>>>>
>>>> Align with Qingqing Li, this path will not apply to dpdk master now, some 
>>>> dev_ops may
>>>> casue fail when run in secondary proc, so need to modify it later and add 
>>>> tests for other
>>>> dev_ops.
>>>>
>>>
>>> So will there be a new version in next release?
>>>
>>> Please feel free to put comments in the mail list, it helps recording the 
>>> status and people looking for it later.
>>>
>>>
>>>> Thanks
>>>>
>>>> 在 2020/10/31 18:10, Qingqing Li 写道:
>>>>> fix coredump when secondary process using the hinic port. the
>>>>> reason is that during the stage of secondary process port initialization, 
>>>>> it lack the initialization of "eth_dev->dev_ops".
>>>>>
>>>>> Signed-off-by: Qingqing Li <liqingqing3@huawei.com>
>>>>> ---
>>>>> v4: adapt to the latest version.
>>>>> ---
>>>>> v3: update the signed-off information.
>>>>> ---
>>>>> v2:  solve the coding style issue.
>>>>> Signed-off-by: liqingqing <liqingqing3@huawei.com>
>>>>> ---
>>>>>   drivers/net/hinic/hinic_pmd_ethdev.c | 20 ++++++++++++--------
>>>>>   1 file changed, 12 insertions(+), 8 deletions(-)
>>>>>
>>>>> diff --git a/drivers/net/hinic/hinic_pmd_ethdev.c 
>>>>> b/drivers/net/hinic/hinic_pmd_ethdev.c
>>>>> index b694fd83c..526dafdad 100644
>>>>> --- a/drivers/net/hinic/hinic_pmd_ethdev.c
>>>>> +++ b/drivers/net/hinic/hinic_pmd_ethdev.c
>>>>> @@ -3100,14 +3100,6 @@ static int hinic_func_init(struct rte_eth_dev *eth_dev)
>>>>>
>>>>>       pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev);
>>>>>
>>>>> -    /* EAL is SECONDARY and eth_dev is already created */
>>>>> -    if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
>>>>> -        PMD_DRV_LOG(INFO, "Initialize %s in secondary process",
>>>>> -                eth_dev->data->name);
>>>>> -
>>>>> -        return 0;
>>>>> -    }
>>>>> -
>>>>>       eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS;
>>>>>
>>>>>       nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(eth_dev);
>>>>> @@ -3241,6 +3233,18 @@ static int hinic_dev_init(struct rte_eth_dev *eth_dev)
>>>>>       eth_dev->rx_pkt_burst = hinic_recv_pkts;
>>>>>       eth_dev->tx_pkt_burst = hinic_xmit_pkts;
>>>>>
>>>>> +    /* EAL is SECONDARY and eth_dev is already created */
>>>>> +    if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
>>>>> +        PMD_DRV_LOG(INFO, "Initialize %s in secondary process", 
>>>>> eth_dev->data->name);
>>>>> +
>>>>> +        struct hinic_nic_dev *nic_dev = 
>>>>> HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(eth_dev);
>>>>> +        if (HINIC_IS_VF(nic_dev->hwdev))
>>>>> +            eth_dev->dev_ops = &hinic_pmd_vf_ops;
>>>>> +        else
>>>>> +            eth_dev->dev_ops = &hinic_pmd_ops;
>>>>> +        return 0;
>>>>> +    }
>>>>> +
>>>>>       return hinic_func_init(eth_dev);
>>>>>   }
>>>>>
>>>
>>> .
  

Patch

diff --git a/drivers/net/hinic/hinic_pmd_ethdev.c 
b/drivers/net/hinic/hinic_pmd_ethdev.c
index b694fd83c..526dafdad 100644
--- a/drivers/net/hinic/hinic_pmd_ethdev.c
+++ b/drivers/net/hinic/hinic_pmd_ethdev.c
@@ -3100,14 +3100,6 @@  static int hinic_func_init(struct rte_eth_dev 
*eth_dev)

  	pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev);

-	/* EAL is SECONDARY and eth_dev is already created */
-	if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
-		PMD_DRV_LOG(INFO, "Initialize %s in secondary process",
-			    eth_dev->data->name);
-
-		return 0;
-	}
-
  	eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS;