patches for DPDK stable branches
 help / color / mirror / Atom feed
* [dpdk-stable] [PATCH v2 1/5] mem: fix error code for segment fd API for external segs
       [not found]   ` <cover.1542130721.git.anatoly.burakov@intel.com>
@ 2018-12-11 16:43     ` Anatoly Burakov
  2018-12-11 16:43     ` [dpdk-stable] [PATCH v2 2/5] memalloc: check for memfd support in segment fd API Anatoly Burakov
  1 sibling, 0 replies; 6+ messages in thread
From: Anatoly Burakov @ 2018-12-11 16:43 UTC (permalink / raw)
  To: dev
  Cc: John McNamara, Marko Kovacevic, przemyslawx.lal,
	kuralamudhan.ramakrishnan, ivan.coughlan, tiwei.bie,
	ray.kinsella, maxime.coquelin, stable

Segment fd API does not support getting segment fd's from
externally allocated memory, so return proper error code
on any attempts to do so. This changes API behavior, so
document the change as well.

Fixes: 5282bb1c3695 ("mem: allow memseg lists to be marked as external")
Cc: stable@dpdk.org

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---

Notes:
    The API is experimental, no deprecation notice needed.

 doc/guides/rel_notes/release_19_02.rst    |  6 ++++++
 lib/librte_eal/common/eal_common_memory.c | 12 ++++++++++++
 2 files changed, 18 insertions(+)

diff --git a/doc/guides/rel_notes/release_19_02.rst b/doc/guides/rel_notes/release_19_02.rst
index a94fa86a7..ade41b9c8 100644
--- a/doc/guides/rel_notes/release_19_02.rst
+++ b/doc/guides/rel_notes/release_19_02.rst
@@ -84,6 +84,12 @@ API Changes
    =========================================================
 
 
+* eal: segment fd API on Linux now sets error code to ``ENOTSUP`` in more cases
+  where segment fd API is not expected to be supported:
+
+  - On attempt to get segment fd for an externally allocated memory segment
+
+
 ABI Changes
 -----------
 
diff --git a/lib/librte_eal/common/eal_common_memory.c b/lib/librte_eal/common/eal_common_memory.c
index d47ea4938..999ba24b4 100644
--- a/lib/librte_eal/common/eal_common_memory.c
+++ b/lib/librte_eal/common/eal_common_memory.c
@@ -704,6 +704,12 @@ rte_memseg_get_fd_thread_unsafe(const struct rte_memseg *ms)
 		return -1;
 	}
 
+	/* segment fd API is not supported for external segments */
+	if (msl->external) {
+		rte_errno = ENOTSUP;
+		return -1;
+	}
+
 	ret = eal_memalloc_get_seg_fd(msl_idx, seg_idx);
 	if (ret < 0) {
 		rte_errno = -ret;
@@ -754,6 +760,12 @@ rte_memseg_get_fd_offset_thread_unsafe(const struct rte_memseg *ms,
 		return -1;
 	}
 
+	/* segment fd API is not supported for external segments */
+	if (msl->external) {
+		rte_errno = ENOTSUP;
+		return -1;
+	}
+
 	ret = eal_memalloc_get_seg_fd_offset(msl_idx, seg_idx, offset);
 	if (ret < 0) {
 		rte_errno = -ret;
-- 
2.17.1

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

* [dpdk-stable] [PATCH v2 2/5] memalloc: check for memfd support in segment fd API
       [not found]   ` <cover.1542130721.git.anatoly.burakov@intel.com>
  2018-12-11 16:43     ` [dpdk-stable] [PATCH v2 1/5] mem: fix error code for segment fd API for external segs Anatoly Burakov
@ 2018-12-11 16:43     ` Anatoly Burakov
  1 sibling, 0 replies; 6+ messages in thread
From: Anatoly Burakov @ 2018-12-11 16:43 UTC (permalink / raw)
  To: dev
  Cc: John McNamara, Marko Kovacevic, przemyslawx.lal,
	kuralamudhan.ramakrishnan, ivan.coughlan, tiwei.bie,
	ray.kinsella, maxime.coquelin, stable

If memfd support was not compiled, or hugepage memfd support
is not available at runtime, the API will now return proper
error code, indicating that this API is unsupported. This
changes the API, so document the changes.

Fixes: 41dbdb68723b ("mem: add external API to retrieve page fd")
Fixes: 3a44687139eb ("mem: allow querying offset into segment fd")
Cc: stable@dpdk.org

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---

Notes:
    The API is experimental, no deprecation notice needed.

 doc/guides/rel_notes/release_19_02.rst     |  2 ++
 lib/librte_eal/linuxapp/eal/eal_memalloc.c | 40 +++++++++++++++++-----
 2 files changed, 34 insertions(+), 8 deletions(-)

diff --git a/doc/guides/rel_notes/release_19_02.rst b/doc/guides/rel_notes/release_19_02.rst
index ade41b9c8..960098582 100644
--- a/doc/guides/rel_notes/release_19_02.rst
+++ b/doc/guides/rel_notes/release_19_02.rst
@@ -88,6 +88,8 @@ API Changes
   where segment fd API is not expected to be supported:
 
   - On attempt to get segment fd for an externally allocated memory segment
+  - In cases where memfd support would have been required to provide segment
+    fd's (such as in-memory or no-huge mode)
 
 
 ABI Changes
diff --git a/lib/librte_eal/linuxapp/eal/eal_memalloc.c b/lib/librte_eal/linuxapp/eal/eal_memalloc.c
index 784939566..a93548b8c 100644
--- a/lib/librte_eal/linuxapp/eal/eal_memalloc.c
+++ b/lib/librte_eal/linuxapp/eal/eal_memalloc.c
@@ -23,6 +23,10 @@
 #include <sys/time.h>
 #include <signal.h>
 #include <setjmp.h>
+#ifdef F_ADD_SEALS /* if file sealing is supported, so is memfd */
+#include <linux/memfd.h>
+#define MEMFD_SUPPORTED
+#endif
 #ifdef RTE_EAL_NUMA_AWARE_HUGEPAGES
 #include <numa.h>
 #include <numaif.h>
@@ -53,8 +57,8 @@ const int anonymous_hugepages_supported =
 #endif
 
 /*
- * we don't actually care if memfd itself is supported - we only need to check
- * if memfd supports hugetlbfs, as that already implies memfd support.
+ * we've already checked memfd support at compile-time, but we also need to
+ * check if we can create hugepage files with memfd.
  *
  * also, this is not a constant, because while we may be *compiled* with memfd
  * hugetlbfs support, we might not be *running* on a system that supports memfd
@@ -63,10 +67,11 @@ const int anonymous_hugepages_supported =
  */
 static int memfd_create_supported =
 #ifdef MFD_HUGETLB
-#define MEMFD_SUPPORTED
 		1;
+#define RTE_MFD_HUGETLB MFD_HUGETLB
 #else
 		0;
+#define RTE_MFD_HUGETLB 4U
 #endif
 
 /*
@@ -338,12 +343,12 @@ get_seg_memfd(struct hugepage_info *hi __rte_unused,
 	int fd;
 	char segname[250]; /* as per manpage, limit is 249 bytes plus null */
 
+	int flags = RTE_MFD_HUGETLB | pagesz_flags(hi->hugepage_sz);
+
 	if (internal_config.single_file_segments) {
 		fd = fd_list[list_idx].memseg_list_fd;
 
 		if (fd < 0) {
-			int flags = MFD_HUGETLB | pagesz_flags(hi->hugepage_sz);
-
 			snprintf(segname, sizeof(segname), "seg_%i", list_idx);
 			fd = memfd_create(segname, flags);
 			if (fd < 0) {
@@ -357,8 +362,6 @@ get_seg_memfd(struct hugepage_info *hi __rte_unused,
 		fd = fd_list[list_idx].fds[seg_idx];
 
 		if (fd < 0) {
-			int flags = MFD_HUGETLB | pagesz_flags(hi->hugepage_sz);
-
 			snprintf(segname, sizeof(segname), "seg_%i-%i",
 					list_idx, seg_idx);
 			fd = memfd_create(segname, flags);
@@ -1542,6 +1545,17 @@ int
 eal_memalloc_get_seg_fd(int list_idx, int seg_idx)
 {
 	int fd;
+
+	if (internal_config.in_memory || internal_config.no_hugetlbfs) {
+#ifndef MEMFD_SUPPORTED
+		/* in in-memory or no-huge mode, we rely on memfd support */
+		return -ENOTSUP;
+#endif
+		/* memfd supported, but hugetlbfs memfd may not be */
+		if (!internal_config.no_hugetlbfs && !memfd_create_supported)
+			return -ENOTSUP;
+	}
+
 	if (internal_config.single_file_segments) {
 		fd = fd_list[list_idx].memseg_list_fd;
 	} else if (fd_list[list_idx].len == 0) {
@@ -1565,7 +1579,7 @@ test_memfd_create(void)
 		int pagesz_flag = pagesz_flags(pagesz);
 		int flags;
 
-		flags = pagesz_flag | MFD_HUGETLB;
+		flags = pagesz_flag | RTE_MFD_HUGETLB;
 		int fd = memfd_create("test", flags);
 		if (fd < 0) {
 			/* we failed - let memalloc know this isn't working */
@@ -1589,6 +1603,16 @@ eal_memalloc_get_seg_fd_offset(int list_idx, int seg_idx, size_t *offset)
 {
 	struct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config;
 
+	if (internal_config.in_memory || internal_config.no_hugetlbfs) {
+#ifndef MEMFD_SUPPORTED
+		/* in in-memory or no-huge mode, we rely on memfd support */
+		return -ENOTSUP;
+#endif
+		/* memfd supported, but hugetlbfs memfd may not be */
+		if (!internal_config.no_hugetlbfs && !memfd_create_supported)
+			return -ENOTSUP;
+	}
+
 	/* fd_list not initialized? */
 	if (fd_list[list_idx].len == 0)
 		return -ENODEV;
-- 
2.17.1

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

* [dpdk-stable] [PATCH v3 1/5] mem: fix error code for segment fd API for external segs
       [not found] ` <cover.1544546363.git.anatoly.burakov@intel.com>
       [not found]   ` <cover.1542130721.git.anatoly.burakov@intel.com>
@ 2018-12-13 11:43   ` Anatoly Burakov
  2018-12-14  9:15     ` Maxime Coquelin
  2018-12-13 11:43   ` [dpdk-stable] [PATCH v3 2/5] memalloc: check for memfd support in segment fd API Anatoly Burakov
  2 siblings, 1 reply; 6+ messages in thread
From: Anatoly Burakov @ 2018-12-13 11:43 UTC (permalink / raw)
  To: dev
  Cc: John McNamara, Marko Kovacevic, przemyslawx.lal,
	kuralamudhan.ramakrishnan, ivan.coughlan, tiwei.bie,
	ray.kinsella, maxime.coquelin, stable

Segment fd API does not support getting segment fd's from
externally allocated memory, so return proper error code
on any attempts to do so. This changes API behavior, so
document the change as well.

Fixes: 5282bb1c3695 ("mem: allow memseg lists to be marked as external")
Cc: stable@dpdk.org

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Tiwei Bie <tiwei.bie@intel.com>
---

Notes:
    The API is experimental, no deprecation notice needed.

 doc/guides/rel_notes/release_19_02.rst    |  6 ++++++
 lib/librte_eal/common/eal_common_memory.c | 12 ++++++++++++
 2 files changed, 18 insertions(+)

diff --git a/doc/guides/rel_notes/release_19_02.rst b/doc/guides/rel_notes/release_19_02.rst
index a94fa86a7..ade41b9c8 100644
--- a/doc/guides/rel_notes/release_19_02.rst
+++ b/doc/guides/rel_notes/release_19_02.rst
@@ -84,6 +84,12 @@ API Changes
    =========================================================
 
 
+* eal: segment fd API on Linux now sets error code to ``ENOTSUP`` in more cases
+  where segment fd API is not expected to be supported:
+
+  - On attempt to get segment fd for an externally allocated memory segment
+
+
 ABI Changes
 -----------
 
diff --git a/lib/librte_eal/common/eal_common_memory.c b/lib/librte_eal/common/eal_common_memory.c
index d47ea4938..999ba24b4 100644
--- a/lib/librte_eal/common/eal_common_memory.c
+++ b/lib/librte_eal/common/eal_common_memory.c
@@ -704,6 +704,12 @@ rte_memseg_get_fd_thread_unsafe(const struct rte_memseg *ms)
 		return -1;
 	}
 
+	/* segment fd API is not supported for external segments */
+	if (msl->external) {
+		rte_errno = ENOTSUP;
+		return -1;
+	}
+
 	ret = eal_memalloc_get_seg_fd(msl_idx, seg_idx);
 	if (ret < 0) {
 		rte_errno = -ret;
@@ -754,6 +760,12 @@ rte_memseg_get_fd_offset_thread_unsafe(const struct rte_memseg *ms,
 		return -1;
 	}
 
+	/* segment fd API is not supported for external segments */
+	if (msl->external) {
+		rte_errno = ENOTSUP;
+		return -1;
+	}
+
 	ret = eal_memalloc_get_seg_fd_offset(msl_idx, seg_idx, offset);
 	if (ret < 0) {
 		rte_errno = -ret;
-- 
2.17.1

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

* [dpdk-stable] [PATCH v3 2/5] memalloc: check for memfd support in segment fd API
       [not found] ` <cover.1544546363.git.anatoly.burakov@intel.com>
       [not found]   ` <cover.1542130721.git.anatoly.burakov@intel.com>
  2018-12-13 11:43   ` [dpdk-stable] [PATCH v3 1/5] mem: fix error code for segment fd API for external segs Anatoly Burakov
@ 2018-12-13 11:43   ` Anatoly Burakov
  2018-12-14  9:19     ` Maxime Coquelin
  2 siblings, 1 reply; 6+ messages in thread
From: Anatoly Burakov @ 2018-12-13 11:43 UTC (permalink / raw)
  To: dev
  Cc: John McNamara, Marko Kovacevic, przemyslawx.lal,
	kuralamudhan.ramakrishnan, ivan.coughlan, tiwei.bie,
	ray.kinsella, maxime.coquelin, stable

If memfd support was not compiled, or hugepage memfd support
is not available at runtime, the API will now return proper
error code, indicating that this API is unsupported. This
changes the API, so document the changes.

Fixes: 41dbdb68723b ("mem: add external API to retrieve page fd")
Fixes: 3a44687139eb ("mem: allow querying offset into segment fd")
Cc: stable@dpdk.org

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Tiwei Bie <tiwei.bie@intel.com>
---

Notes:
    The API is experimental, no deprecation notice needed.

 doc/guides/rel_notes/release_19_02.rst     |  2 ++
 lib/librte_eal/linuxapp/eal/eal_memalloc.c | 40 +++++++++++++++++-----
 2 files changed, 34 insertions(+), 8 deletions(-)

diff --git a/doc/guides/rel_notes/release_19_02.rst b/doc/guides/rel_notes/release_19_02.rst
index ade41b9c8..960098582 100644
--- a/doc/guides/rel_notes/release_19_02.rst
+++ b/doc/guides/rel_notes/release_19_02.rst
@@ -88,6 +88,8 @@ API Changes
   where segment fd API is not expected to be supported:
 
   - On attempt to get segment fd for an externally allocated memory segment
+  - In cases where memfd support would have been required to provide segment
+    fd's (such as in-memory or no-huge mode)
 
 
 ABI Changes
diff --git a/lib/librte_eal/linuxapp/eal/eal_memalloc.c b/lib/librte_eal/linuxapp/eal/eal_memalloc.c
index 784939566..a93548b8c 100644
--- a/lib/librte_eal/linuxapp/eal/eal_memalloc.c
+++ b/lib/librte_eal/linuxapp/eal/eal_memalloc.c
@@ -23,6 +23,10 @@
 #include <sys/time.h>
 #include <signal.h>
 #include <setjmp.h>
+#ifdef F_ADD_SEALS /* if file sealing is supported, so is memfd */
+#include <linux/memfd.h>
+#define MEMFD_SUPPORTED
+#endif
 #ifdef RTE_EAL_NUMA_AWARE_HUGEPAGES
 #include <numa.h>
 #include <numaif.h>
@@ -53,8 +57,8 @@ const int anonymous_hugepages_supported =
 #endif
 
 /*
- * we don't actually care if memfd itself is supported - we only need to check
- * if memfd supports hugetlbfs, as that already implies memfd support.
+ * we've already checked memfd support at compile-time, but we also need to
+ * check if we can create hugepage files with memfd.
  *
  * also, this is not a constant, because while we may be *compiled* with memfd
  * hugetlbfs support, we might not be *running* on a system that supports memfd
@@ -63,10 +67,11 @@ const int anonymous_hugepages_supported =
  */
 static int memfd_create_supported =
 #ifdef MFD_HUGETLB
-#define MEMFD_SUPPORTED
 		1;
+#define RTE_MFD_HUGETLB MFD_HUGETLB
 #else
 		0;
+#define RTE_MFD_HUGETLB 4U
 #endif
 
 /*
@@ -338,12 +343,12 @@ get_seg_memfd(struct hugepage_info *hi __rte_unused,
 	int fd;
 	char segname[250]; /* as per manpage, limit is 249 bytes plus null */
 
+	int flags = RTE_MFD_HUGETLB | pagesz_flags(hi->hugepage_sz);
+
 	if (internal_config.single_file_segments) {
 		fd = fd_list[list_idx].memseg_list_fd;
 
 		if (fd < 0) {
-			int flags = MFD_HUGETLB | pagesz_flags(hi->hugepage_sz);
-
 			snprintf(segname, sizeof(segname), "seg_%i", list_idx);
 			fd = memfd_create(segname, flags);
 			if (fd < 0) {
@@ -357,8 +362,6 @@ get_seg_memfd(struct hugepage_info *hi __rte_unused,
 		fd = fd_list[list_idx].fds[seg_idx];
 
 		if (fd < 0) {
-			int flags = MFD_HUGETLB | pagesz_flags(hi->hugepage_sz);
-
 			snprintf(segname, sizeof(segname), "seg_%i-%i",
 					list_idx, seg_idx);
 			fd = memfd_create(segname, flags);
@@ -1542,6 +1545,17 @@ int
 eal_memalloc_get_seg_fd(int list_idx, int seg_idx)
 {
 	int fd;
+
+	if (internal_config.in_memory || internal_config.no_hugetlbfs) {
+#ifndef MEMFD_SUPPORTED
+		/* in in-memory or no-huge mode, we rely on memfd support */
+		return -ENOTSUP;
+#endif
+		/* memfd supported, but hugetlbfs memfd may not be */
+		if (!internal_config.no_hugetlbfs && !memfd_create_supported)
+			return -ENOTSUP;
+	}
+
 	if (internal_config.single_file_segments) {
 		fd = fd_list[list_idx].memseg_list_fd;
 	} else if (fd_list[list_idx].len == 0) {
@@ -1565,7 +1579,7 @@ test_memfd_create(void)
 		int pagesz_flag = pagesz_flags(pagesz);
 		int flags;
 
-		flags = pagesz_flag | MFD_HUGETLB;
+		flags = pagesz_flag | RTE_MFD_HUGETLB;
 		int fd = memfd_create("test", flags);
 		if (fd < 0) {
 			/* we failed - let memalloc know this isn't working */
@@ -1589,6 +1603,16 @@ eal_memalloc_get_seg_fd_offset(int list_idx, int seg_idx, size_t *offset)
 {
 	struct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config;
 
+	if (internal_config.in_memory || internal_config.no_hugetlbfs) {
+#ifndef MEMFD_SUPPORTED
+		/* in in-memory or no-huge mode, we rely on memfd support */
+		return -ENOTSUP;
+#endif
+		/* memfd supported, but hugetlbfs memfd may not be */
+		if (!internal_config.no_hugetlbfs && !memfd_create_supported)
+			return -ENOTSUP;
+	}
+
 	/* fd_list not initialized? */
 	if (fd_list[list_idx].len == 0)
 		return -ENODEV;
-- 
2.17.1

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

* Re: [dpdk-stable] [PATCH v3 1/5] mem: fix error code for segment fd API for external segs
  2018-12-13 11:43   ` [dpdk-stable] [PATCH v3 1/5] mem: fix error code for segment fd API for external segs Anatoly Burakov
@ 2018-12-14  9:15     ` Maxime Coquelin
  0 siblings, 0 replies; 6+ messages in thread
From: Maxime Coquelin @ 2018-12-14  9:15 UTC (permalink / raw)
  To: Anatoly Burakov, dev
  Cc: John McNamara, Marko Kovacevic, przemyslawx.lal,
	kuralamudhan.ramakrishnan, ivan.coughlan, tiwei.bie,
	ray.kinsella, stable



On 12/13/18 12:43 PM, Anatoly Burakov wrote:
> Segment fd API does not support getting segment fd's from
> externally allocated memory, so return proper error code
> on any attempts to do so. This changes API behavior, so
> document the change as well.
> 
> Fixes: 5282bb1c3695 ("mem: allow memseg lists to be marked as external")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> Acked-by: Tiwei Bie <tiwei.bie@intel.com>
> ---
> 
> Notes:
>      The API is experimental, no deprecation notice needed.
> 
>   doc/guides/rel_notes/release_19_02.rst    |  6 ++++++
>   lib/librte_eal/common/eal_common_memory.c | 12 ++++++++++++
>   2 files changed, 18 insertions(+)
> 

Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>

Thanks,
Maxime

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

* Re: [dpdk-stable] [PATCH v3 2/5] memalloc: check for memfd support in segment fd API
  2018-12-13 11:43   ` [dpdk-stable] [PATCH v3 2/5] memalloc: check for memfd support in segment fd API Anatoly Burakov
@ 2018-12-14  9:19     ` Maxime Coquelin
  0 siblings, 0 replies; 6+ messages in thread
From: Maxime Coquelin @ 2018-12-14  9:19 UTC (permalink / raw)
  To: Anatoly Burakov, dev
  Cc: John McNamara, Marko Kovacevic, przemyslawx.lal,
	kuralamudhan.ramakrishnan, ivan.coughlan, tiwei.bie,
	ray.kinsella, stable



On 12/13/18 12:43 PM, Anatoly Burakov wrote:
> If memfd support was not compiled, or hugepage memfd support
> is not available at runtime, the API will now return proper
> error code, indicating that this API is unsupported. This
> changes the API, so document the changes.
> 
> Fixes: 41dbdb68723b ("mem: add external API to retrieve page fd")
> Fixes: 3a44687139eb ("mem: allow querying offset into segment fd")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> Acked-by: Tiwei Bie <tiwei.bie@intel.com>
> ---
> 
> Notes:
>      The API is experimental, no deprecation notice needed.
> 
>   doc/guides/rel_notes/release_19_02.rst     |  2 ++
>   lib/librte_eal/linuxapp/eal/eal_memalloc.c | 40 +++++++++++++++++-----
>   2 files changed, 34 insertions(+), 8 deletions(-)
> 

Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>

Thanks,
Maxime

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

end of thread, other threads:[~2018-12-14  9:19 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <cover.1544701282.git.anatoly.burakov@intel.com>
     [not found] ` <cover.1544546363.git.anatoly.burakov@intel.com>
     [not found]   ` <cover.1542130721.git.anatoly.burakov@intel.com>
2018-12-11 16:43     ` [dpdk-stable] [PATCH v2 1/5] mem: fix error code for segment fd API for external segs Anatoly Burakov
2018-12-11 16:43     ` [dpdk-stable] [PATCH v2 2/5] memalloc: check for memfd support in segment fd API Anatoly Burakov
2018-12-13 11:43   ` [dpdk-stable] [PATCH v3 1/5] mem: fix error code for segment fd API for external segs Anatoly Burakov
2018-12-14  9:15     ` Maxime Coquelin
2018-12-13 11:43   ` [dpdk-stable] [PATCH v3 2/5] memalloc: check for memfd support in segment fd API Anatoly Burakov
2018-12-14  9:19     ` Maxime Coquelin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).