Re: [PATCH] Fix shared memory mapping

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 5/19/2013 3:00 AM, rongqing.li@xxxxxxxxxxxxx wrote:
> From: "Roy.Li" <rongqing.li@xxxxxxxxxxxxx>
> 
> On a number of arches, any fixed and shared mmap() mapping address must be
> aligned to 16k, or MIPS cpu askes that the address must be aligned to not
> violate cache aliasing constraints.
> 
> If we create a shared memory like below:
> 
>         addr_orig = mmap (NULL, bytes, PROT_NONE,
>                           MAP_ANONYMOUS| MAP_PRIVATE, -1, 0);
> 
>         addr = mmap (addr_orig, bytes, PROT_READ | PROT_WRITE,
>                 MAP_FIXED | MAP_SHARED, fd, 0);
> 
> If the first mmap() upper is not shared then the first mmap() will succeed
> because these restrictions do not apply to private mappings. The second
> mmap() wants a shared memory mapping but the address returned by the first
> one is only page-aligned and not aligned to 16k, or violate cache aliasing
> constraints on MIPS cpu, will lead to second mmap failure.
> 
> Signed-off-by: Roy.Li <rongqing.li@xxxxxxxxxxxxx>
> ---
>  configure.ac |   25 +++++++++++++++++++++++++
>  exec/cpg.c   |   13 +++++++++----
>  lib/cpg.c    |   10 ++++++++--
>  3 files changed, 42 insertions(+), 6 deletions(-)
> 
> diff --git a/configure.ac b/configure.ac
> index 523d2cf..d3a9c25 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -647,6 +647,31 @@ else
>    AC_SUBST(VERSCRIPT_LDFLAGS, [""])
>  fi
>  
> +arch_force_shmlba=no
> +AC_MSG_CHECKING([for architecture in ${host_cpu}])
> +case $host_cpu in
> +	sparc*)
> +		AC_MSG_RESULT([${host_cpu}])
> +		arch_force_shmlba=yes
> +		;;
> +	arm*)
> +		AC_MSG_RESULT([${host_cpu}])
> +		arch_force_shmlba=yes
> +		;;
> +	mips*)
> +		AC_MSG_RESULT([${host_cpu}])
> +		arch_force_shmlba=yes
> +		;;
> +	*)
> +		AC_MSG_RESULT([${host_cpu}])
> +	;;
> +esac

Hi,

this part of the patch is not ok. We spent a decent amount of time
dropping all hard coded architecture bits from configure.ac because they
are not portable.

You will need to find a more generic test to verify if shmlba is
necessary on a certain architecture/OS. Remember that we do support more
than just Linux for upstream.

Cheers
Fabio

_______________________________________________
discuss mailing list
discuss@xxxxxxxxxxxx
http://lists.corosync.org/mailman/listinfo/discuss




[Index of Archives]     [Linux Clusters]     [Corosync Project]     [Linux USB Devel]     [Linux Audio Users]     [Photo]     [Yosemite News]    [Yosemite Photos]    [Linux Kernel]     [Linux SCSI]     [X.Org]

  Powered by Linux