DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH v2 0/1] fix coredump when in secondary process
@ 2021-03-23 13:17 Guoyang Zhou
  2021-03-23 13:17 ` [dpdk-dev] [PATCH v2 1/1] net/hinic: " Guoyang Zhou
  0 siblings, 1 reply; 4+ messages in thread
From: Guoyang Zhou @ 2021-03-23 13:17 UTC (permalink / raw)
  To: dev
  Cc: ferruh.yigit, bluca, cloud.wangxiaoyun, luoxianjun, yin.yinshi,
	luojiachen, zhouguoyang, chenlizhong, zengweiliang.zengweiliang,
	liqingqing3

Some apps, such as fstack, will use secondary process to access the
memory of eth_dev_ops, and they want to get the info of dev, but hinic
driver does not initialized it when in secondary process.

--
v1->v2:
  - modify the patch title

v1:
  - fix coredump when PMD used by fstack

Guoyang Zhou (1):
  net/hinic: fix coredump when in secondary process

 drivers/net/hinic/base/hinic_compat.h | 25 ++++++++-----------------
 drivers/net/hinic/hinic_pmd_ethdev.c  |  5 +++++
 2 files changed, 13 insertions(+), 17 deletions(-)

-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [dpdk-dev] [PATCH v2 1/1] net/hinic: fix coredump when in secondary process
  2021-03-23 13:17 [dpdk-dev] [PATCH v2 0/1] fix coredump when in secondary process Guoyang Zhou
@ 2021-03-23 13:17 ` Guoyang Zhou
  2021-03-26 10:28   ` [dpdk-dev] [dpdk-stable] " Ferruh Yigit
  2021-03-30 13:06   ` Ferruh Yigit
  0 siblings, 2 replies; 4+ messages in thread
From: Guoyang Zhou @ 2021-03-23 13:17 UTC (permalink / raw)
  To: dev
  Cc: ferruh.yigit, bluca, cloud.wangxiaoyun, luoxianjun, yin.yinshi,
	luojiachen, zhouguoyang, chenlizhong, zengweiliang.zengweiliang,
	liqingqing3, stable

Some apps, such as fstack, will use secondary process to access the
memory of eth_dev_ops, and they want to get the info of dev, but hinic
driver does not initialized it when in secondary process.

Fixes: 66f64dd6dc86 ("net/hinic: fix secondary process")
Cc: stable@dpdk.org
Signed-off-by: Guoyang Zhou <zhouguoyang@huawei.com>
---
 drivers/net/hinic/base/hinic_compat.h | 25 ++++++++-----------------
 drivers/net/hinic/hinic_pmd_ethdev.c  |  5 +++++
 2 files changed, 13 insertions(+), 17 deletions(-)

diff --git a/drivers/net/hinic/base/hinic_compat.h b/drivers/net/hinic/base/hinic_compat.h
index 6dd210e..aea3320 100644
--- a/drivers/net/hinic/base/hinic_compat.h
+++ b/drivers/net/hinic/base/hinic_compat.h
@@ -171,6 +171,7 @@ static inline u32 readl(const volatile void *addr)
 #else
 #define CLOCK_TYPE CLOCK_MONOTONIC
 #endif
+#define HINIC_MUTEX_TIMEOUT  10
 
 static inline unsigned long clock_gettime_ms(void)
 {
@@ -225,24 +226,14 @@ static inline int hinic_mutex_destroy(pthread_mutex_t *pthreadmutex)
 static inline int hinic_mutex_lock(pthread_mutex_t *pthreadmutex)
 {
 	int err;
+	struct timespec tout;
 
-	err = pthread_mutex_lock(pthreadmutex);
-	if (!err) {
-		return err;
-	} else if (err == EOWNERDEAD) {
-		PMD_DRV_LOG(ERR, "Mutex lock failed. (ErrorNo=%d)", errno);
-#if defined(__GLIBC__)
-#if __GLIBC_PREREQ(2, 12)
-		(void)pthread_mutex_consistent(pthreadmutex);
-#else
-		(void)pthread_mutex_consistent_np(pthreadmutex);
-#endif
-#else
-		(void)pthread_mutex_consistent(pthreadmutex);
-#endif
-	} else {
-		PMD_DRV_LOG(ERR, "Mutex lock failed. (ErrorNo=%d)", errno);
-	}
+	(void)clock_gettime(CLOCK_TYPE, &tout);
+
+	tout.tv_sec += HINIC_MUTEX_TIMEOUT;
+	err = pthread_mutex_timedlock(pthreadmutex, &tout);
+	if (err)
+		PMD_DRV_LOG(ERR, "Mutex lock failed. (ErrorNo=%d)", err);
 
 	return err;
 }
diff --git a/drivers/net/hinic/hinic_pmd_ethdev.c b/drivers/net/hinic/hinic_pmd_ethdev.c
index 1d6b710..057e7b1 100644
--- a/drivers/net/hinic/hinic_pmd_ethdev.c
+++ b/drivers/net/hinic/hinic_pmd_ethdev.c
@@ -3085,6 +3085,10 @@ static int hinic_dev_close(struct rte_eth_dev *dev)
 	.filter_ctrl                   = hinic_dev_filter_ctrl,
 };
 
+static const struct eth_dev_ops hinic_dev_sec_ops = {
+	.dev_infos_get                 = hinic_dev_infos_get,
+};
+
 static int hinic_func_init(struct rte_eth_dev *eth_dev)
 {
 	struct rte_pci_device *pci_dev;
@@ -3099,6 +3103,7 @@ static int hinic_func_init(struct rte_eth_dev *eth_dev)
 
 	/* EAL is SECONDARY and eth_dev is already created */
 	if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
+		eth_dev->dev_ops = &hinic_dev_sec_ops;
 		PMD_DRV_LOG(INFO, "Initialize %s in secondary process",
 			    eth_dev->data->name);
 
-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [dpdk-dev] [dpdk-stable] [PATCH v2 1/1] net/hinic: fix coredump when in secondary process
  2021-03-23 13:17 ` [dpdk-dev] [PATCH v2 1/1] net/hinic: " Guoyang Zhou
@ 2021-03-26 10:28   ` Ferruh Yigit
  2021-03-30 13:06   ` Ferruh Yigit
  1 sibling, 0 replies; 4+ messages in thread
From: Ferruh Yigit @ 2021-03-26 10:28 UTC (permalink / raw)
  To: Guoyang Zhou, dev
  Cc: bluca, cloud.wangxiaoyun, luoxianjun, yin.yinshi, luojiachen,
	chenlizhong, zengweiliang.zengweiliang, liqingqing3, stable

On 3/23/2021 1:17 PM, Guoyang Zhou wrote:
> Some apps, such as fstack, will use secondary process to access the
> memory of eth_dev_ops, and they want to get the info of dev, but hinic
> driver does not initialized it when in secondary process.
> 
> Fixes: 66f64dd6dc86 ("net/hinic: fix secondary process")
> Cc: stable@dpdk.org
> Signed-off-by: Guoyang Zhou <zhouguoyang@huawei.com>

Some comments from previous versions seems outstanding, can you please 
check/comment on them please:

http://inbox.dpdk.org/dev/c3ceb0c3-4d35-c14e-ea6b-cd4b311657a4@intel.com/


Also can you please send a new version as reply to previous version?
This keeps different versions in same email thread and helps to find the 
comments/discussing to previous versions easier. You can do this  via "git 
send-email", '--in-reply-to' argument.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [dpdk-dev] [dpdk-stable] [PATCH v2 1/1] net/hinic: fix coredump when in secondary process
  2021-03-23 13:17 ` [dpdk-dev] [PATCH v2 1/1] net/hinic: " Guoyang Zhou
  2021-03-26 10:28   ` [dpdk-dev] [dpdk-stable] " Ferruh Yigit
@ 2021-03-30 13:06   ` Ferruh Yigit
  1 sibling, 0 replies; 4+ messages in thread
From: Ferruh Yigit @ 2021-03-30 13:06 UTC (permalink / raw)
  To: Guoyang Zhou, dev
  Cc: bluca, cloud.wangxiaoyun, luoxianjun, yin.yinshi, luojiachen,
	chenlizhong, zengweiliang.zengweiliang, liqingqing3, stable

On 3/23/2021 1:17 PM, Guoyang Zhou wrote:
> Some apps, such as fstack, will use secondary process to access the
> memory of eth_dev_ops, and they want to get the info of dev, but hinic
> driver does not initialized it when in secondary process.
> 
> Fixes: 66f64dd6dc86 ("net/hinic: fix secondary process")
> Cc: stable@dpdk.org
> Signed-off-by: Guoyang Zhou <zhouguoyang@huawei.com>

Applied to dpdk-next-net/main, thanks.


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-03-30 13:06 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-23 13:17 [dpdk-dev] [PATCH v2 0/1] fix coredump when in secondary process Guoyang Zhou
2021-03-23 13:17 ` [dpdk-dev] [PATCH v2 1/1] net/hinic: " Guoyang Zhou
2021-03-26 10:28   ` [dpdk-dev] [dpdk-stable] " Ferruh Yigit
2021-03-30 13:06   ` Ferruh Yigit

DPDK patches and discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \
		dev@dpdk.org
	public-inbox-index dev

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git