[v2] eal: change max hugepage sizes to 4 for ARM platforms

Message ID 20190808121320.12253-1-g.singh@nxp.com (mailing list archive)
State Accepted, archived
Headers
Series [v2] eal: change max hugepage sizes to 4 for ARM platforms |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/iol-Compile-Testing success Compile Testing PASS
ci/intel-Performance-Testing success Performance Testing PASS
ci/mellanox-Performance-Testing success Performance Testing PASS

Commit Message

Gagandeep Singh Aug. 8, 2019, 12:13 p.m. UTC
  ARM is supporting maximum 4 hugepage sizes (64K, 2M, 32M
and 1G) when granule is 4KB since very long and DPDK
support maximum 3 hugepage sizes.

With all 4 hugepage sizes enabled, applications and some
stacks like VPP which are working over DPDK and using
"in-memory" eal option, or using separate mount points
on ARM based platform, fails at huge page initialization,
reporting error messages from eal:

EAL: FATAL: Cannot get hugepage information.
EAL: Cannot get hugepage information.
EAL: Error - exiting with code: 1

This issue is visible on kernel 5.2 (stable rel), where
kernel is by default creating directories for each supported
hugepage size in /sys/kernel/mm/hugepages/

On earlier Stable Kernel LTR's, the directories visible in
/sys/kernel/mm/hugepages/ were dependent upon what hugepage
sizes are configured at boot time.

This change increases the maximum supported mount points
to 4 for ARM based platforms.

Cc: stable@dpdk.org

Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
---

Changes in V2:
 - restricted this change specific to ARM
 - commit message updated
 - stable added to cc

 lib/librte_eal/common/eal_internal_cfg.h | 4 ++++
 1 file changed, 4 insertions(+)
  

Comments

David Marchand Aug. 8, 2019, 12:37 p.m. UTC | #1
On Thu, Aug 8, 2019 at 2:27 PM Gagandeep Singh <g.singh@nxp.com> wrote:
>
> ARM is supporting maximum 4 hugepage sizes (64K, 2M, 32M
> and 1G) when granule is 4KB since very long and DPDK
> support maximum 3 hugepage sizes.
>
> With all 4 hugepage sizes enabled, applications and some
> stacks like VPP which are working over DPDK and using
> "in-memory" eal option, or using separate mount points
> on ARM based platform, fails at huge page initialization,
> reporting error messages from eal:
>
> EAL: FATAL: Cannot get hugepage information.
> EAL: Cannot get hugepage information.
> EAL: Error - exiting with code: 1
>
> This issue is visible on kernel 5.2 (stable rel), where
> kernel is by default creating directories for each supported
> hugepage size in /sys/kernel/mm/hugepages/

Yes, any supported hugepage size is announced in sysfs.

> On earlier Stable Kernel LTR's, the directories visible in
> /sys/kernel/mm/hugepages/ were dependent upon what hugepage
> sizes are configured at boot time.

The change is in kernel 5.0 with:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a21b0b78

where all supported sizes are now registered.

>
> This change increases the maximum supported mount points
> to 4 for ARM based platforms.
>
> Cc: stable@dpdk.org
>
> Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
> Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
> ---
>
> Changes in V2:
>  - restricted this change specific to ARM
>  - commit message updated
>  - stable added to cc


Please keep me Cc:.
  
Thomas Monjalon Aug. 8, 2019, 3:26 p.m. UTC | #2
08/08/2019 14:37, David Marchand:
> On Thu, Aug 8, 2019 at 2:27 PM Gagandeep Singh <g.singh@nxp.com> wrote:
> >
> > ARM is supporting maximum 4 hugepage sizes (64K, 2M, 32M
> > and 1G) when granule is 4KB since very long and DPDK
> > support maximum 3 hugepage sizes.
> >
> > With all 4 hugepage sizes enabled, applications and some
> > stacks like VPP which are working over DPDK and using
> > "in-memory" eal option, or using separate mount points
> > on ARM based platform, fails at huge page initialization,
> > reporting error messages from eal:
> >
> > EAL: FATAL: Cannot get hugepage information.
> > EAL: Cannot get hugepage information.
> > EAL: Error - exiting with code: 1
> >
> > This issue is visible on kernel 5.2 (stable rel), where
> > kernel is by default creating directories for each supported
> > hugepage size in /sys/kernel/mm/hugepages/
> 
> Yes, any supported hugepage size is announced in sysfs.
> 
> > On earlier Stable Kernel LTR's, the directories visible in
> > /sys/kernel/mm/hugepages/ were dependent upon what hugepage
> > sizes are configured at boot time.
> 
> The change is in kernel 5.0 with:
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a21b0b78
> 
> where all supported sizes are now registered.
> 
> >
> > This change increases the maximum supported mount points
> > to 4 for ARM based platforms.
> >
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
> > Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>

Applied with small updates in commit log (especially commit origin in 5.0), thanks.
  

Patch

diff --git a/lib/librte_eal/common/eal_internal_cfg.h b/lib/librte_eal/common/eal_internal_cfg.h
index edff09d07..a42f34923 100644
--- a/lib/librte_eal/common/eal_internal_cfg.h
+++ b/lib/librte_eal/common/eal_internal_cfg.h
@@ -15,7 +15,11 @@ 
 
 #include "eal_thread.h"
 
+#if defined(RTE_ARCH_ARM) || defined(RTE_ARCH_ARM64)
+#define MAX_HUGEPAGE_SIZES 4  /**< support up to 4 page sizes */
+#else
 #define MAX_HUGEPAGE_SIZES 3  /**< support up to 3 page sizes */
+#endif
 
 /*
  * internal configuration structure for the number, size and