All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH libibverbs] Allow use of huge pages in multiple calls to ibv_fork_init
@ 2016-02-03 11:42 Leon Romanovsky
       [not found] ` <1454499762-29819-1-git-send-email-leon-2ukJVAZIZ/Y@public.gmane.org>
  0 siblings, 1 reply; 2+ messages in thread
From: Leon Romanovsky @ 2016-02-03 11:42 UTC (permalink / raw)
  To: dledford-H+wXaHxf7aLQT0dZR+AlfA
  Cc: yosefe-VPRAkNaXOzVWk0Htik3J/w, linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	Leon Romanovsky

From: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>

Setting the environment variable RDMAV_HUGEPAGES_SAFE tells the library
to check the underlying page size used by the kernel for memory regions.
This is required if an application uses huge pages either directly or
indirectly via a library such as libhugetlbfs.

The check of this variable was performed at the first call to
ibv_fork_init. This caused to unpredicted behavior in complex
applications with multiple underlying libraries.

The proposed change will allow support of huge pages without relying on
ibv_fork_init calls order.

Signed-off-by: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
---
 src/memory.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/src/memory.c b/src/memory.c
index e9d1eecd9eab..89509c6e356f 100644
--- a/src/memory.c
+++ b/src/memory.c
@@ -140,6 +140,9 @@ int ibv_fork_init(void)
 	int ret;
 	unsigned long size;
 
+	if (getenv("RDMAV_HUGEPAGES_SAFE"))
+		huge_page_enabled = 1;
+
 	if (mm_root)
 		return 0;
 
@@ -153,11 +156,6 @@ int ibv_fork_init(void)
 	if (posix_memalign(&tmp, page_size, page_size))
 		return ENOMEM;
 
-	if (getenv("RDMAV_HUGEPAGES_SAFE"))
-		huge_page_enabled = 1;
-	else
-		huge_page_enabled = 0;
-
 	if (huge_page_enabled) {
 		size = get_page_size(tmp);
 		tmp_aligned = (void *) ((uintptr_t) tmp & ~(size - 1));
-- 
1.7.12.4

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [PATCH libibverbs] Allow use of huge pages in multiple calls to ibv_fork_init
       [not found] ` <1454499762-29819-1-git-send-email-leon-2ukJVAZIZ/Y@public.gmane.org>
@ 2016-03-03  2:44   ` Doug Ledford
  0 siblings, 0 replies; 2+ messages in thread
From: Doug Ledford @ 2016-03-03  2:44 UTC (permalink / raw)
  To: Leon Romanovsky
  Cc: yosefe-VPRAkNaXOzVWk0Htik3J/w, linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	Leon Romanovsky


[-- Attachment #1.1: Type: text/plain, Size: 1600 bytes --]

On 2/3/2016 6:42 AM, Leon Romanovsky wrote:
> From: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
> 
> Setting the environment variable RDMAV_HUGEPAGES_SAFE tells the library
> to check the underlying page size used by the kernel for memory regions.
> This is required if an application uses huge pages either directly or
> indirectly via a library such as libhugetlbfs.
> 
> The check of this variable was performed at the first call to
> ibv_fork_init. This caused to unpredicted behavior in complex
> applications with multiple underlying libraries.
> 
> The proposed change will allow support of huge pages without relying on
> ibv_fork_init calls order.

Thanks, applied.

> Signed-off-by: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
> ---
>  src/memory.c | 8 +++-----
>  1 file changed, 3 insertions(+), 5 deletions(-)
> 
> diff --git a/src/memory.c b/src/memory.c
> index e9d1eecd9eab..89509c6e356f 100644
> --- a/src/memory.c
> +++ b/src/memory.c
> @@ -140,6 +140,9 @@ int ibv_fork_init(void)
>  	int ret;
>  	unsigned long size;
>  
> +	if (getenv("RDMAV_HUGEPAGES_SAFE"))
> +		huge_page_enabled = 1;
> +
>  	if (mm_root)
>  		return 0;
>  
> @@ -153,11 +156,6 @@ int ibv_fork_init(void)
>  	if (posix_memalign(&tmp, page_size, page_size))
>  		return ENOMEM;
>  
> -	if (getenv("RDMAV_HUGEPAGES_SAFE"))
> -		huge_page_enabled = 1;
> -	else
> -		huge_page_enabled = 0;
> -
>  	if (huge_page_enabled) {
>  		size = get_page_size(tmp);
>  		tmp_aligned = (void *) ((uintptr_t) tmp & ~(size - 1));
> 



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 884 bytes --]

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

end of thread, other threads:[~2016-03-03  2:44 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-02-03 11:42 [PATCH libibverbs] Allow use of huge pages in multiple calls to ibv_fork_init Leon Romanovsky
     [not found] ` <1454499762-29819-1-git-send-email-leon-2ukJVAZIZ/Y@public.gmane.org>
2016-03-03  2:44   ` Doug Ledford

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.