From: Thomas Monjalon <thomas@monjalon.net>
To: David Christensen <drc@linux.vnet.ibm.com>
Cc: dev@dpdk.org
Subject: Re: [PATCH] eal/linux: verify mmu type for DPDK support (ppc64le)
Date: Tue, 17 Oct 2023 14:39:01 +0200 [thread overview]
Message-ID: <3356591.usfYGdeWWP@thomas> (raw)
In-Reply-To: <20231010225100.335049-1-drc@linux.vnet.ibm.com>
11/10/2023 00:51, David Christensen:
> IBM POWER systems support more than one type of memory management unit
> (MMU). The Power ISA 3.0 specification, which applies to P9 and later
> CPUs, defined a new Radix MMU which, among other things, allows an
> anonymous memory page mapping to be converted into a hugepage mapping
> at a specific address. This is a required feature in DPDK so we need
> to test the MMU type when POWER systems are used and provide a more
> useful error message for the user when running on an unsupported
> system.
>
> Bugzilla ID: 1221
> Suggested-by: Thomas Monjalon <thomas@monjalon.net>
> Signed-off-by: David Christensen <drc@linux.vnet.ibm.com>
> ---
> --- a/lib/eal/linux/eal.c
> +++ b/lib/eal/linux/eal.c
> +/*
> + * IBM POWER systems support more than one type of memory management unit (MMU).
> + * The Power ISA 3.0 specification, which applies to P9 and later CPUs, defined
> + * a new Radix MMU which, among other things, allows an anonymous memory page
> + * mapping to be converted into a hugepage mapping at a specific address. This
> + * is a required feature in DPDK so we need to test the MMU type when POWER
> + * systems are used.
> + */
> +static bool
> +is_mmu_supported(void)
> +{
> +#ifdef RTE_ARCH_PPC_64
> + static const char proc_cpuinfo[] = "/proc/cpuinfo";
> + static const char str_mmu[] = "MMU";
> + static const char str_radix[] = "Radix";
> + char buf[512];
> + char *ret = NULL;
> + FILE *f = fopen(proc_cpuinfo, "r");
> +
> + if (f == NULL) {
> + RTE_LOG(ERR, EAL, "Cannot open %s\n", proc_cpuinfo);
> + return false;
> + }
> +
> + /*
> + * Example "MMU" in /proc/cpuinfo:
> + * ...
> + * model : 8335-GTW
> + * machine : PowerNV 8335-GTW
> + * firmware : OPAL
> + * MMU : Radix
> + * ... or ...
> + * model : IBM,9009-22A
> + * machine : CHRP IBM,9009-22A
> + * MMU : Hash
> + */
> + while (fgets(buf, sizeof(buf), f) != NULL) {
> + ret = strstr(buf, str_mmu);
> + if (ret == NULL)
> + continue;
> + ret += sizeof(str_mmu) - 1;
> + ret = strchr(ret, ':');
> + if (ret == NULL)
> + continue;
> + ret = strstr(ret, str_radix);
> + break;
> + }
> + fclose(f);
> + if (ret == NULL)
> + rte_eal_init_alert("DPDK on PPC64 requires radix-mmu.");
> + return (ret != NULL);
> +#else
> + return true;
> +#endif
> +}
I feel this function should not be implemented in the common EAL.
What about adding a new function in lib/eal/ppc/ ?
And add the "return true" for other architectures?
next prev parent reply other threads:[~2023-10-17 12:39 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-10 22:51 [PATCH] eal/linux: verify mmu type for DPDK support (ppc64le) David Christensen
2023-10-17 12:39 ` Thomas Monjalon [this message]
2023-10-23 21:59 ` David Christensen
2023-11-06 13:54 ` Thomas Monjalon
2023-10-23 23:19 ` [PATCH v2] eal/linux: " David Christensen
2023-10-24 2:02 ` David Christensen
2023-10-24 17:43 ` [PATCH v3] " David Christensen
2023-11-06 13:55 ` Thomas Monjalon
2023-11-30 19:18 ` [PATCH v4] eal: " David Christensen
2024-05-30 16:44 ` [PATCH v5] " David Christensen
2024-06-28 12:10 ` David Marchand
2024-07-10 23:21 ` [PATCH v6] " David Christensen
2024-07-10 23:38 ` [PATCH v7] " David Christensen
2024-07-12 9:03 ` David Marchand
[not found] ` <20240529183222.105731-1-drc@linux.vnet.ibm.com>
2024-06-27 21:11 ` [PATCH v5] " David Christensen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3356591.usfYGdeWWP@thomas \
--to=thomas@monjalon.net \
--cc=dev@dpdk.org \
--cc=drc@linux.vnet.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.