From 2eb6ad4d30af54f309f35f16a39a119aa26e7911 Mon Sep 17 00:00:00 2001 From: liqingqing <liqingqing3@huawei.com> Date: Sat, 8 Aug 2020 00:03:25 -0400 Subject: [PATCH] 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: liqingqing <liqingqing3@huawei.com> --- drivers/net/hinic/hinic_pmd_ethdev.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/drivers/net/hinic/hinic_pmd_ethdev.c b/drivers/net/hinic/hinic_pmd_ethdev.c index 67e6afcf7..26c6098d3 100644 --- a/drivers/net/hinic/hinic_pmd_ethdev.c +++ b/drivers/net/hinic/hinic_pmd_ethdev.c @@ -3060,15 +3060,6 @@ static int hinic_func_init(struct rte_eth_dev *eth_dev) int rc; 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; - } - nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(eth_dev); memset(nic_dev, 0, sizeof(*nic_dev)); @@ -3206,6 +3197,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); } -- 2.19.1
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: liqingqing <liqingqing3@huawei.com> --- v2: solve the coding style issue. --- drivers/net/hinic/hinic_pmd_ethdev.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/drivers/net/hinic/hinic_pmd_ethdev.c b/drivers/net/hinic/hinic_pmd_ethdev.c index 67e6afcf7..26c6098d3 100644 --- a/drivers/net/hinic/hinic_pmd_ethdev.c +++ b/drivers/net/hinic/hinic_pmd_ethdev.c @@ -3060,15 +3060,6 @@ static int hinic_func_init(struct rte_eth_dev *eth_dev) int rc; 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; - } - nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(eth_dev); memset(nic_dev, 0, sizeof(*nic_dev)); @@ -3206,6 +3197,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); } -- 2.19.1
On 8/8/2020 8:45 AM, liqingqing wrote: > 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: liqingqing <liqingqing3@huawei.com> Hi, Overall patch looks good but can you please add your name and surname to the sign off, to make it following syntax: Signed-off-by: Name Surname <liqingqing3@huawei.com> Also what do you think about following patch title: "net/hinic: fix crash in secondary process" > --- > v2: solve the coding style issue. > --- > drivers/net/hinic/hinic_pmd_ethdev.c | 21 ++++++++++++--------- > 1 file changed, 12 insertions(+), 9 deletions(-) > > diff --git a/drivers/net/hinic/hinic_pmd_ethdev.c b/drivers/net/hinic/hinic_pmd_ethdev.c > index 67e6afcf7..26c6098d3 100644 > --- a/drivers/net/hinic/hinic_pmd_ethdev.c > +++ b/drivers/net/hinic/hinic_pmd_ethdev.c > @@ -3060,15 +3060,6 @@ static int hinic_func_init(struct rte_eth_dev *eth_dev) > int rc; > > 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; > - } > - > nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(eth_dev); > memset(nic_dev, 0, sizeof(*nic_dev)); > > @@ -3206,6 +3197,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 9/1/2020 12:44 PM, Ferruh Yigit wrote:
> On 8/8/2020 8:45 AM, liqingqing wrote:
>> 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: liqingqing <liqingqing3@huawei.com>
>
> Hi,
>
> Overall patch looks good but can you please add your name and surname to the
> sign off, to make it following syntax:
> Signed-off-by: Name Surname <liqingqing3@huawei.com>
>
> Also what do you think about following patch title:
> "net/hinic: fix crash in secondary process"
>
Hi Ziyang, Xiaoyun, Guoyang,
Can you please review the patch, also can you please help on getting the
correct sign off?
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> --- v3: update the signed-off information. --- v2: solve the coding style issue. --- drivers/net/hinic/hinic_pmd_ethdev.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/drivers/net/hinic/hinic_pmd_ethdev.c b/drivers/net/hinic/hinic_pmd_ethdev.c index 67e6afcf7..26c6098d3 100644 --- a/drivers/net/hinic/hinic_pmd_ethdev.c +++ b/drivers/net/hinic/hinic_pmd_ethdev.c @@ -3060,15 +3060,6 @@ static int hinic_func_init(struct rte_eth_dev *eth_dev) int rc; 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; - } - nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(eth_dev); memset(nic_dev, 0, sizeof(*nic_dev)); @@ -3206,6 +3197,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); } -- 2.19.1
On 10/9/2020 8:47 AM, l00283554 wrote:
> 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>
> ---
> v3: update the signed-off information.
> ---
> v2: solve the coding style issue.
> ---
> drivers/net/hinic/hinic_pmd_ethdev.c | 21 ++++++++++++---------
> 1 file changed, 12 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/net/hinic/hinic_pmd_ethdev.c
> b/drivers/net/hinic/hinic_pmd_ethdev.c
> index 67e6afcf7..26c6098d3 100644
> --- a/drivers/net/hinic/hinic_pmd_ethdev.c
> +++ b/drivers/net/hinic/hinic_pmd_ethdev.c
> @@ -3060,15 +3060,6 @@ static int hinic_func_init(struct rte_eth_dev *eth_dev)
> int rc;
>
> 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;
> - }
> -
> nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(eth_dev);
> memset(nic_dev, 0, sizeof(*nic_dev));
>
> @@ -3206,6 +3197,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);
> }
>
Overall looks good to me, waiting ack from driver maintainers.
Meanwhile the patch doesn't apply cleanly, it seems same problem in the CI, can
you please rebase on top of latest head and send the patch again?