[v4,1/1] eal: add internal function to get base address
Checks
Commit Message
Added an internal helper to get OS-specific EAL mapping base address
This helper can be used by the drivers to map host address range with
offload devices and would be need for device specific operations like
firmware load
Signed-off-by: Srikanth Yalavarthi <syalavarthi@marvell.com>
---
lib/eal/common/eal_common_config.c | 7 +++++++
lib/eal/include/rte_eal.h | 9 +++++++++
lib/eal/version.map | 1 +
3 files changed, 17 insertions(+)
Comments
2022-01-17 05:42 (UTC-0800), Srikanth Yalavarthi:
> Added an internal helper to get OS-specific EAL mapping base address
>
> This helper can be used by the drivers to map host address range with
> offload devices and would be need for device specific operations like
> firmware load
Hello Srikanth,
Please elaborate on the intended usage of the new API
and how it will correlate with the EAL usage of the same VA ranges.
Note that on Windows eal_get_baseaddr() returns 0 which does not imply
anything about where EAL mappings will reside.
Hi Dmitry,
This is to cater to use cases where chunks of memory are allocated by the host / application, and would like to represent it as an offset from the Linux virtual base address. One use case is for a firmware running on an accelerator, this can be used as reference address to access host memory.
Another situation can be to use the offset as an identifier for the memory using smaller data types
Srikanth
-----Original Message-----
From: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
Sent: 17 January 2022 20:14
To: Srikanth Yalavarthi <syalavarthi@marvell.com>
Cc: Ray Kinsella <mdr@ashroe.eu>; dev@dpdk.org; Jerin Jacob Kollanukkaran <jerinj@marvell.com>; Shivah Shankar Shankar Narayan Rao <sshankarnara@marvell.com>
Subject: [EXT] Re: [PATCH v4 1/1] eal: add internal function to get base address
External Email
----------------------------------------------------------------------
2022-01-17 05:42 (UTC-0800), Srikanth Yalavarthi:
> Added an internal helper to get OS-specific EAL mapping base address
>
> This helper can be used by the drivers to map host address range with
> offload devices and would be need for device specific operations like
> firmware load
Hello Srikanth,
Please elaborate on the intended usage of the new API and how it will correlate with the EAL usage of the same VA ranges.
Note that on Windows eal_get_baseaddr() returns 0 which does not imply anything about where EAL mappings will reside.
2022-01-18 05:29 (UTC+0000), Srikanth Yalavarthi:
> Hi Dmitry,
>
> This is to cater to use cases where chunks of memory are allocated by the host / application, and would like to represent it as an offset from the Linux virtual base address. One use case is for a firmware running on an accelerator, this can be used as reference address to access host memory.
>
> Another situation can be to use the offset as an identifier for the memory using smaller data types
Thank you, the intent is clear now. It is worth adding to the commit log.
On the implementation: eal_get_baseaddr() does not respect --base-virtaddr,
you probably want something like what eal_get_virtual_area() uses:
internal_conf->base_virtaddr != 0 ?
internal_conf->base_virtaddr : eal_get_baseaddr()
P.S. Please avoid top-posting.
@@ -87,3 +87,10 @@ rte_eal_has_pci(void)
{
return !internal_config.no_pci;
}
+
+/* Get the EAL base address */
+uint64_t
+rte_eal_get_baseaddr(void)
+{
+ return eal_get_baseaddr();
+}
@@ -475,6 +475,15 @@ rte_eal_mbuf_user_pool_ops(void);
const char *
rte_eal_get_runtime_dir(void);
+/**
+ * Get the OS-specific EAL base address.
+ *
+ * @return
+ * The base address.
+ */
+__rte_internal
+uint64_t rte_eal_get_baseaddr(void);
+
#ifdef __cplusplus
}
#endif
@@ -425,6 +425,7 @@ EXPERIMENTAL {
INTERNAL {
global:
+ rte_eal_get_baseaddr;
rte_firmware_read;
rte_intr_allow_others;
rte_intr_cap_multiple;