[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
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
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);
> }
>
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);
>> }
>>
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);
>>> }
>>>
>
> .
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);
>>>> }
>>>>
>>
>> .
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);
>>>> }
>>>>
>>
>> .
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);
>>>>> }
>>>>>
>>>
>>> .
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;