[Bug 225450] 11.1-* panics on AMD Opteron 2k due to EARLY_AP_STARTUP

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Sun Feb 11 02:49:50 UTC 2018


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225450

--- Comment #13 from Pablo Ruiz <pablo.ruiz at gmail.com> ---
Hi again,

Adding the following patch:

diff --git a/sys/x86/x86/mp_x86.c b/sys/x86/x86/mp_x86.c
index 7cc02d663bf..3cca61ca72e 100644
--- a/sys/x86/x86/mp_x86.c
+++ b/sys/x86/x86/mp_x86.c
@@ -925,6 +925,7 @@ init_secondary_tail(void)

        CTR1(KTR_SMP, "SMP: AP CPU #%d Launched", cpuid);
        printf("SMP: AP CPU #%d Launched!\n", cpuid);
+while(1);

        /* Determine if we are a logical CPU. */
        if (cpu_info[PCPU_GET(apic_id)].cpu_hyperthread)

I get into db while crashing:

[...]
cpu0 BSP:
     ID: 0x00000000   VER: 0x80050010 LDR: 0x00000000 DFR: 0xffffffff
  lint0: 0x00010700 lint1: 0x00000400 TPR: 0x00000000 SVR: 0x000001ff
  timer: 0x000100ef therm: 0x00010000 err: 0x000000f0 pmc: 0x00010400
   AMD ext features: 0x00010003
   AMD elvt0: 0x00010000
SMP: AP CPU #1 Launched!
kkkerneel trap 12 with interrupts disabled


Fatal trap 12: page fault while in kernel mode
cpuid = 2; apic id = 02
fault virtual address   = 0x0
fault code              = supervisor write data, page not present
instruction pointer     = 0x20:0xffffffff80bb739d
stack pointer           = 0x28:0xfffffe001b9835b0
frame pointer           = 0x28:0xfffffe001b983620
code segment            = base 0x0, limit 0xfffff, type 0x1b
                        = DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags        = resume, IOPL = 0
current process         = 11 (idle: cpu2)
[ thread pid 11 tid 100005 ]
Stopped at      putchar+0x15d:  movb    $0,(%rax)
db> bt
Tracing pid 11 tid 100005 td 0xfffff8000332c000
putchar() at putchar+0x15d/frame 0xfffffe001b983620
db> show all procs
  pid  ppid  pgrp   uid   state   wmesg         wchan        cmd
   11     0     0     0  RL      (threaded)                  [idle]
100003                   CanRun                              [idle: cpu0]
100004                   CanRun                              [idle: cpu1]
100005                   CanRun                              [idle: cpu2]
100006                   CanRun                              [idle: cpu3]
    1     0     0     0  ?L                                  [kernel]
   10     0     0     0  RL                                  [audit]
    0     0     0     0  RLs     CPU 0                       [swapper]
db> show all pcpu
Current CPU: 2

cpuid        = 0
dynamic pcpu = 0x682000
curthread    = 0xffffffff82883640: pid 0 "swapper"
curpcb       = 0xffffffff82c0ecc0
fpcurthread  = none
idlethread   = 0xfffff8000332d000: tid 100003 "idle: cpu0"
curpmap      = 0xffffffff828af188
tssp         = 0xffffffff828ad510
commontssp   = 0xffffffff828ad510
rsp0         = 0xffffffff82c0ecc0
gs32p        = 0xffffffff828ad708
ldt          = 0xffffffff828ad748
tss          = 0xffffffff828ad738

cpuid        = 1
dynamic pcpu = 0xfffffe00993f1000
curthread    = 0xfffff8000332c580: pid 11 "idle: cpu1"
curpcb       = 0
fpcurthread  = none
idlethread   = 0xfffff8000332c580: tid 100004 "idle: cpu1"
curpmap      = 0xffffffff828af188
tssp         = 0xffffffff828ad578
commontssp   = 0xffffffff828ad578
rsp0         = 0x0
gs32p        = 0xffffffff828ad770
ldt          = 0xffffffff828ad7b0
tss          = 0xffffffff828ad7a0

cpuid        = 2
dynamic pcpu = 0xfffffe00993f9000
curthread    = 0xfffff8000332c000: pid 11 "idle: cpu2"
curpcb       = 0
fpcurthread  = none
idlethread   = 0xfffff8000332c000: tid 100005 "idle: cpu2"
curpmap      = 0xffffffff828af188
tssp         = 0xffffffff828ad5e0
commontssp   = 0xffffffff828ad5e0
rsp0         = 0x0
gs32p        = 0xffffffff828ad7d8
ldt          = 0xffffffff828ad818
tss          = 0xffffffff828ad808

cpuid        = 3
dynamic pcpu = 0xfffffe0099401000
curthread    = 0xfffff8000332b580: pid 11 "idle: cpu3"
curpcb       = 0
fpcurthread  = none
idlethread   = 0xfffff8000332b580: tid 100006 "idle: cpu3"
curpmap      = 0xffffffff828af188
tssp         = 0xffffffff828ad648
commontssp   = 0xffffffff828ad648
rsp0         = 0x0
gs32p        = 0xffffffff828ad840
ldt          = 0xffffffff828ad880
tss          = 0xffffffff828ad870
db> show all trace

Tracing command idle pid 11 tid 100003 td 0xfffff8000332d000
fork_trampoline() at fork_trampoline

Tracing command idle pid 11 tid 100004 td 0xfffff8000332c580
fork_trampoline() at fork_trampoline

Tracing command idle pid 11 tid 100005 td 0xfffff8000332c000
putchar() at putchar+0x15d/frame 0xfffffe001b983620

Tracing command idle pid 11 tid 100006 td 0xfffff8000332b580
fork_trampoline() at fork_trampoline

Tracing command kernel pid 1 tid 100002 td 0xfffff8000332d580
fork_trampoline() at fork_trampoline

Tracing command audit pid 10 tid 100001 td 0xfffff8000332e000
fork_trampoline() at fork_trampoline

Tracing command kernel pid 0 tid 100000 td 0xffffffff82883640
KDB: reentering
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe001b982cc0
kdb_reenter() at kdb_reenter+0x2f/frame 0xfffffe001b982cd0
trap() at trap+0x4d/frame 0xfffffe001b982e90
calltrap() at calltrap+0x8/frame 0xfffffe001b982e90
--- trap 0xc, rip = 0xffffffff80c351d0, rsp = 0xfffffe001b982f60, rbp =
0xfffffe001b982f60 ---
strcmp() at strcmp+0x10/frame 0xfffffe001b982f60
db_backtrace() at db_backtrace+0x17d/frame 0xfffffe001b982ff0
db_trace_thread() at db_trace_thread+0x3f/frame 0xfffffe001b983010
db_stack_trace_all() at db_stack_trace_all+0x6f/frame 0xfffffe001b9830b0
db_command() at db_command+0x2bf/frame 0xfffffe001b983180
db_command_loop() at db_command_loop+0x64/frame 0xfffffe001b983190
db_trap() at db_trap+0xef/frame 0xfffffe001b983220
kdb_trap() at kdb_trap+0x13e/frame 0xfffffe001b983270
trap_fatal() at trap_fatal+0x2e2/frame 0xfffffe001b9832c0
trap_pfault() at trap_pfault+0x49/frame 0xfffffe001b983320
trap() at trap+0x286/frame 0xfffffe001b9834e0
calltrap() at calltrap+0x8/frame 0xfffffe001b9834e0
--- trap 0xc, rip = 0xffffffff80bb739d, rsp = 0xfffffe001b9835b0, rbp =
0xfffffe001b983620 ---
putchar() at putchar+0x15d/frame 0xfffffe001b983620
db> show threads
  100003 (0xfffff8000332d000) (stack 0xfffffe001b99c000)  fork_trampoline() at
fork_trampoline
  100004 (0xfffff8000332c580) (stack 0xfffffe001b9a1000)  fork_trampoline() at
fork_trampoline
  100005 (0xfffff8000332c000) (stack 0xfffffe001b9a6000)  putchar() at
putchar+0x15d/frame 0xfffffe001b983620
  100006 (0xfffff8000332b580) (stack 0xfffffe001b9ab000)  fork_trampoline() at
fork_trampoline
  100002 (0xfffff8000332d580) (stack 0xfffffe001b997000)  fork_trampoline() at
fork_trampoline
  100001 (0xfffff8000332e000) (stack 0xfffffe001b992000)  fork_trampoline() at
fork_trampoline
  100000 (0xffffffff82883640) (stack 0xffffffff82c0b000)KDB: reentering
KDB: stack backtrace:
  db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame
0xfffffe001b982cd0
kdb_reenter() at kdb_reenter+0x2f/frame 0xfffffe001b982ce0
trap() at trap+0x4d/frame 0xfffffe001b982ea0
calltrap() at calltrap+0x8/frame 0xfffffe001b982ea0
--- trap 0xc, rip = 0xffffffff80c351d0, rsp = 0xfffffe001b982f70, rbp =
0xfffffe001b982f70 ---
strcmp() at strcmp+0x10/frame 0xfffffe001b982f70
db_backtrace() at db_backtrace+0x17d/frame 0xfffffe001b983000
db_trace_thread() at db_trace_thread+0x3f/frame 0xfffffe001b983020
db_show_threads() at db_show_threads+0x83/frame 0xfffffe001b9830b0
db_command() at db_command+0x2bf/frame 0xfffffe001b983180
db_command_loop() at db_command_loop+0x64/frame 0xfffffe001b983190
db_trap() at db_trap+0xef/frame 0xfffffe001b983220
kdb_trap() at kdb_trap+0x13e/frame 0xfffffe001b983270
trap_fatal() at trap_fatal+0x2e2/frame 0xfffffe001b9832c0
trap_pfault() at trap_pfault+0x49/frame 0xfffffe001b983320
trap() at trap+0x286/frame 0xfffffe001b9834e0
calltrap() at calltrap+0x8/frame 0xfffffe001b9834e0
--- trap 0xc, rip = 0xffffffff80bb739d, rsp = 0xfffffe001b9835b0, rbp =
0xfffffe001b983620 ---
putchar() at putchar+0x15d/frame 0xfffffe001b983620
db> show ktr
--- End of trace buffer ---
db> show dpcpu_off
dpcpu_off[ 0] = 0x682000 (+ DPCPU_START = 0xffffffff82c0f000)
dpcpu_off[ 1] = 0xfffffe00993f1000 (+ DPCPU_START = 0xfffffe001b97e000)
dpcpu_off[ 2] = 0xfffffe00993f9000 (+ DPCPU_START = 0xfffffe001b986000)
dpcpu_off[ 3] = 0xfffffe0099401000 (+ DPCPU_START = 0xfffffe001b98e000)



Let me know if there is anything specific you want me to get from this point
on.. :)

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list