NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
port-evbarm/51990: Regression data_abort_handler: data_aborts fsr=0x406 far=0xbfffeff5 on copyout in init
>Number: 51990
>Category: port-evbarm
>Synopsis: Regression data_abort_handler: data_aborts fsr=0x406 far=0xbfffeff5 on copyout in init
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: port-evbarm-maintainer
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Tue Feb 21 19:55:00 +0000 2017
>Originator: Stephan Meisinger
>Release: NetBSD 7.0 (and higher)
>Organization:
>Environment:
NetBSD 7.99.60 NetBSD 7.99.60 (GUMSTIX) #47: Tue Feb 21 20:23:40 CET 2017 root@netbsd:/usr/obj/sys/arch/evbarm/compile/GUMSTIX evbarm
>Description:
Booting a recent Gumstix fails with an data_abort_handler
Regression data_abort_handler: data_aborts fsr=0x406 far=0xbfffeff5
According to mailing list the issue was also detected on another Xscale board, but afaik not fixed:
https://mail-index.netbsd.org/port-arm/2015/03/13/msg002946.html
After going down the history. The data_aborts starting at 2012-09-22 01:00 UTC
this part of the commit changes the MMU code for all Xscale processors:
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/arch/arm/include/arm32/pmap.h.diff?r1=1.111&r2=1.112&f=h&only_with_tag=MAIN
from
#define PMAP_NEEDS_PTE_SYNC 0
to
fallback behaviour
Restoring the behaviour solves the problem with the old build and also with current builds. Even through an additional fix is needed - introduced by this commit:
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/arch/arm/arm32/pmap.c.diff?r1=1.261&r2=1.262&only_with_tag=MAIN&f=h
Maybe this could also cause isses for other MMU configurations not supporting ARMV6 or ARMV7.
Please also pull up fix on NetBSD 7 branch.
>How-To-Repeat:
boot Xscale Gumstix board from compact flash and select /sbin/init from SD-card
>Fix:
Index: sys/arch/arm/arm32/pmap.c
===================================================================
RCS file: /cvsroot/src/sys/arch/arm/arm32/pmap.c,v
retrieving revision 1.342
diff -u -r1.342 pmap.c
--- sys/arch/arm/arm32/pmap.c 23 Dec 2016 07:15:27 -0000 1.342
+++ sys/arch/arm/arm32/pmap.c 21 Feb 2017 19:33:40 -0000
@@ -1694,7 +1694,7 @@
/*
* Page tables must have the cache-mode set correctly.
*/
- const pt_entry_t npte = (pte & ~L2_S_CACHE_MASK)
+ const pt_entry_t npte = (opte & ~L2_S_CACHE_MASK)
| pte_l2_s_cache_mode_pt;
l2pte_set(ptep, npte, opte);
PTE_SYNC(ptep);
Index: sys/arch/arm/include/arm32/pmap.h
===================================================================
RCS file: /cvsroot/src/sys/arch/arm/include/arm32/pmap.h,v
retrieving revision 1.144
diff -u -r1.144 pmap.h
--- sys/arch/arm/include/arm32/pmap.h 14 Jul 2016 05:00:51 -0000 1.144
+++ sys/arch/arm/include/arm32/pmap.h 21 Feb 2017 19:33:40 -0000
@@ -491,6 +491,8 @@
#elif (ARM_MMU_SA1 == 0)
#define PMAP_NEEDS_PTE_SYNC 0
#endif
+#elif (ARM_MMU_XSCALE > 0)
+#define PMAP_NEEDS_PTE_SYNC 0
#endif
#endif /* _KERNEL_OPT */
Home |
Main Index |
Thread Index |
Old Index