arm SMP on Cortex-A15
Ruslan Bukin
br at FreeBSD.org
Sun Dec 22 09:26:51 UTC 2013
On Fri, Dec 20, 2013 at 04:56:39PM +0400, Ruslan Bukin wrote:
> On Thu, Dec 19, 2013 at 12:41:59PM +0100, Wojciech Macek wrote:
> > Hi,
> >
> > Finally, I'm able to run FreeBSD stable on Cortex-A15. The TLB issue which
> > was observed, was caused by an aggressive A15 feature called "L2 TLB
> > prefetch".
> >
>
> Great!? I successfully run buildworld with these patches on SMP-enabled
> dual-core Cortex-A15 machine (Exynos5250) with no problems at all.
>
> My timings:
> kernel-toolchain - ~3h
> buildkernel - ~1h
> buildworld - ~16h
>
> Note I used NFS for mount source and obj using USB-based ethernet.
> The next test I will try to produce is to adding -j2 option.
>
With -j2 it always goes panic, not immediately,
but after a few minutes of compilation, like this.
-Ruslan
-------------- next part --------------
--- games.cleandir__D ---
===> games/primes (cleandir)
--- lib.cleandir__D ---
--- cleanobj ---
--- games.cleandir__D ---
--- cleanobj ---
--- lib.cleandir__D ---
===> lib/libedit (cleandir)
--- games.cleandir__D ---
===> games/random (cleandir)
--- lib.cleandir__D ---
--- cleanobj ---
panic: Undefined instruction in kernel.
cpuid = 1
KDB: enter: panic
[ thread pid 5469 tid 100078 ]
Stopped at kdb_enter+0x4c: ldrb r15, [r15, r15, ror r15]!
db> bt
Tracing pid 5469 tid 100078 td 0xc6132640
db_trace_self() at db_trace_self
pc = 0xc1231a24 lr = 0xc0f2f2d4 (db_hex2dec+0x4dc)
sp = 0xfa2449b0 fp = 0xfa2449c8
r10 = 0xc131af80
db_hex2dec() at db_hex2dec+0x4dc
pc = 0xc0f2f2d4 lr = 0xc0f2ec40 (db_command_loop+0x2f0)
sp = 0xfa2449d0 fp = 0xfa244a70
r4 = 0x00000000 r5 = 0x00000000
r6 = 0xc1289f9c
db_command_loop() at db_command_loop+0x2f0
pc = 0xc0f2ec40 lr = 0xc0f2e9b0 (db_command_loop+0x60)
sp = 0xfa244a78 fp = 0xfa244a88
r4 = 0xc1267b79 r5 = 0xc1283402
r6 = 0xc136608c r7 = 0xc135c4d0
r8 = 0xfa244c60 r9 = 0xc131b1f0
r10 = 0xc135c4d4
db_command_loop() at db_command_loop+0x60
pc = 0xc0f2e9b0 lr = 0xc0f313b0 (X_db_symbol_values+0x254)
sp = 0xfa244a90 fp = 0xfa244bb0
r4 = 0x00000000 r5 = 0xfa244a98
r6 = 0xc135c500
X_db_symbol_values() at X_db_symbol_values+0x254
pc = 0xc0f313b0 lr = 0xc1090984 (kdb_trap+0x164)
sp = 0xfa244bb8 fp = 0xfa244be0
r4 = 0x00000000 r5 = 0x00000001
r6 = 0xc135c500 r7 = 0xc135c4d0
kdb_trap() at kdb_trap+0x164
pc = 0xc1090984 lr = 0xc1244c50 (undefinedinstruction+0x2b4)
sp = 0xfa244be8 fp = 0xfa244c58
r4 = 0x00000000 r5 = 0xc1244900
r6 = 0x00000000 r7 = 0xe7ffffff
r8 = 0xc6132640 r9 = 0xfa244c60
r10 = 0xc10900e8
undefinedinstruction() at undefinedinstruction+0x2b4
pc = 0xc1244c50 lr = 0xc1233610 (exception_exit)
sp = 0xfa244c60 fp = 0xfa244cb8
r4 = 0xc128345c r5 = 0x00000001
r6 = 0xc134e030 r7 = 0xc134e1d0
r8 = 0xc6132640 r9 = 0xc1367bd0
r10 = 0xfa244cfc
exception_exit() at exception_exit
pc = 0xc1233610 lr = 0xc10900dc (kdb_enter+0x40)
sp = 0xfa244cb4 fp = 0xfa244cb8
r0 = 0xc135c4e4 r1 = 0x00000000
r2 = 0xc1286ffa r3 = 0x000000ab
r4 = 0xc128345c r5 = 0x00000001
r6 = 0xc134e030 r7 = 0xc134e1d0
r8 = 0xc6132640 r9 = 0xc1367bd0
r10 = 0xfa244cfc r12 = 0x00000000
kdb_enter() at kdb_enter+0x50
pc = 0xc10900ec lr = 0xc1059d28 (kassert_panic+0x244)
sp = 0xfa244cc0 fp = 0xfa244ce0
r4 = 0x00000100
kassert_panic() at kassert_panic+0x244
pc = 0xc1059d28 lr = 0xc1059d98 (kproc_shutdown)
sp = 0xfa244ce8 fp = 0xfa244cf0
r4 = 0x00000000 r5 = 0xc12457b4
r6 = 0xc1365f64 r7 = 0xecb20a20
r8 = 0xc6132640 r9 = 0xfa244d80
r10 = 0xc12458c4
kproc_shutdown() at kproc_shutdown
pc = 0xc1059d98 lr = 0xc1244cd0 (undefinedinstruction+0x334)
sp = 0xfa244cf8 fp = 0xfa244d78
r4 = 0xfa244cfc r5 = 0xc107f470
undefinedinstruction() at undefinedinstruction+0x334
pc = 0xc1244cd0 lr = 0xc1233610 (exception_exit)
sp = 0xfa244d80 fp = 0xfa244de0
r4 = 0x00000010 r5 = 0x00000000
r6 = 0xc1365f70 r7 = 0x00000000
r8 = 0xc6132640 r9 = 0xfa244e60
r10 = 0x2011e750
exception_exit() at exception_exit
pc = 0xc1233610 lr = 0xc1244aa8 (undefinedinstruction+0x10c)
sp = 0xfa244dd4 fp = 0xfa244de0
r0 = 0x00000001 r1 = 0xfa244eb0
r2 = 0xfa244ef0 r3 = 0x00000010
r4 = 0x00000010 r5 = 0x00000000
r6 = 0xc1365f70 r7 = 0x00000000
r8 = 0xc6132640 r9 = 0xfa244e60
r10 = 0x2011e750 r12 = 0x0002ec68
vfp_bounce() at vfp_bounce+0x110
pc = 0xc12458c4 lr = 0xc1244aa8 (undefinedinstruction+0x10c)
sp = 0xfa244de8 fp = 0xfa244e58
r4 = 0x00000010 r5 = 0xc12457b4
r6 = 0xc1365f70 r7 = 0xec828b10
undefinedinstruction() at undefinedinstruction+0x10c
pc = 0xc1244aa8 lr = 0xc1233610 (exception_exit)
sp = 0xfa244e60 fp = 0xbfffe658
r4 = 0x00000000 r5 = 0xbfffe530
r6 = 0x2080b2ac r7 = 0x00030a04
r8 = 0xbfffec39 r9 = 0x00000008
r10 = 0x2080b2bc
exception_exit() at exception_exit
pc = 0xc1233610 lr = 0x2013481c (0x2013481c)
sp = 0xfa244eb4 fp = 0xbfffe658
r0 = 0xbfffe530 r1 = 0x4278f502
r2 = 0xbfffe5b0 r3 = 0x20233ae0
r4 = 0x00000000 r5 = 0xbfffe530
r6 = 0x2080b2ac r7 = 0x00030a04
r8 = 0xbfffec39 r9 = 0x00000008
r10 = 0x2080b2bc r12 = 0x0002ec68
Unable to unwind into user mode
db>
More information about the freebsd-arm
mailing list