Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 15 Jun 2016 20:30:14 -0700
From:      Mark Millard <markmi@dsl-only.net>
To:        freebsd-arm <freebsd-arm@freebsd.org>, FreeBSD Current <freebsd-current@freebsd.org>, kwhite@site.uottawa.ca
Subject:   RE: RPI-B 11.0-ALPHA3 r301815 panic ["when connecting via WiFi"]
Message-ID:  <5B47CB62-5BB6-41F3-82F9-507B42EF161B@dsl-only.net>

next in thread | raw e-mail | index | archive | help
h=
ttps://lists.freebsd.org/pipermail/freebsd-current/2016-June/061904.html =
reports an RPI-B alignment fault for -r301815 (the snapshot) "when =
connecting via WiFi".

-r301872 ( =
https://lists.freebsd.org/pipermail/svn-src-head/2016-June/088339.html ) =
has a fix for networking vs. alignment handling for armv6 contexts that =
might be needed. Quoting:

> Author: ian
> Date: Mon Jun 13 16:48:27 2016
> New Revision: 301872
> URL:=20
> https://svnweb.freebsd.org/changeset/base/301872
>=20
>=20
> Log:
>   Do not define __NO_STRICT_ALIGNMENT for armv6.  While the =
requirements
>   are no longer natural-alignment strict, there are still some =
restrictions.
>  =20
>   FreeBSD network code assumes data is naturally-aligned or is running
>   on a platform with no restrictions; pointers are not annotated to
>   indicate the data pointed to may be packed or unaligned.  The clang
>   optimizer can sometimes combine the load or store of a pair of =
adjacent
>   32-bit values into a single doubleword load/store, and that =
operation
>   requires at least 4-byte alignment.  __NO_STRICT_ALIGNMENT can lead
>   to tcp headers being only 2-byte aligned.
>  =20
>   Note that alignment faults remain disabled on armv6, this change =
reverts
>   only the defining of the symbol which leads to some overly-agressive =
code
>   shortcuts when building common/shared drivers and network code for =
arm.
>  =20
>   Approved by:	re(kib)
>=20
> Modified:
>   head/sys/arm/include/_types.h
>=20
> Modified: head/sys/arm/include/_types.h
> =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
> --- head/sys/arm/include/_types.h	Mon Jun 13 11:19:06 2016	=
(r301871)
> +++ head/sys/arm/include/_types.h	Mon Jun 13 16:48:27 2016	=
(r301872)
> @@ -43,10 +43,6 @@
>  #error this file needs sys/cdefs.h as a prerequisite
>  #endif
> =20
> -#if __ARM_ARCH >=3D 6
> -#define __NO_STRICT_ALIGNMENT
> -#endif
> -
>  /*
>   * Basic types upon which most other types are built.
>   */



=3D=3D=3D
Mark Millard
markmi at dsl-only.net




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5B47CB62-5BB6-41F3-82F9-507B42EF161B>