On 2018/09/14 10:05, Mike Larkin wrote:
> On Thu, Sep 13, 2018 at 11:17:15AM +0200, Hrvoje Popovski wrote:
> > Hi all,
> >
> > i'm having Fujitsu PRIMERGY RX2530 M4 server with Intel Gold 6134 cpu
> > with 8/16 cores.
> > When booting box up to 14 cores everything seems fine, but with 16 cores
> > i'm getting panic. In attachment you can find sendbug. Dmesg in sendbug
> > is with 14 cores.
> >
> > 8 cores (HT disabled) are more than enough for me but maybe this panic
> > is interesting to developers so i report it ...
> >
> >
> > root on sd0a (fa90dc9ea66a7e54.a) swap on sd0b dump on sd0b
> > panipanic: l anel pu
> > gnStopped at db_enter+0x12: popq %r11
> > TID PID UID PRFLAGS PFLAGS CPU COMMAND
> > 380736 12442 0 0x14000 0x200 5 zerothread
> > 196414 98064 0 0x14000 0x200 7 aiodoned
> > db_enter() at db_enter+0x12
> > panic() at panic+0x120
> > acpicpu_idle() at acpicpu_idle+0x2e8
> > sched_idle(0) at sched_idle+0x245
> > end trace frame: 0x0, count: 11
> > https://www.openbsd.org/ddb.html describes the minimum info required in
> > bug reports. Insufficient info makes it difficult to find and fix bugs.
> >
> >
> > ddb{3}> trace
> > db_enter() at db_enter+0x12
> > panic() at panic+0x120
> > acpicpu_idle() at acpicpu_idle+0x2e8
>
> There are only 3 panics in acpicpu_idle. One at the very top:
> panic ("null acpicpu");
>
> and two much further down:
> panic ("idle with interrupts blocked");
>
> Based on the fact that it's called at acpicpu_idle+0x2e8, I'm
> inclined to believe it to be the lattter, but the garbled
> panic string seems to more closely match the former.
Looking at objdump --line --disassemble --reloc acpicpu.o, it does indeed seem
to be null acpicpu.
...
0000000000001260 <acpicpu_idle>:
acpicpu_idle():
/src/cvs-openbsd/sys/dev/acpi/acpicpu.c:1138
...
$ moo 0x1260+0x2e8
0x1548
...
/src/cvs-openbsd/sys/dev/acpi/acpicpu.c:1146
153a: 48 c7 c7 00 00 00 00 mov $0x0,%rdi
153d: R_X86_64_32S .rodata.str1.1+0x299
1541: 31 c0 xor %eax,%eax
1543: e8 00 00 00 00 callq 1548 <acpicpu_idle+0x2e8>
1544: R_X86_64_PC32 panic+0xfffffffffffffffc
1548: 48 c7 c7 00 00 00 00 mov $0x0,%rdi
154b: R_X86_64_32S .rodata.str1.1+0x318
154f: e8 00 00 00 00 callq 1554 <acpicpu_idle+0x2f4>
1550: R_X86_64_PC32
__stack_smash_handler+0xfffffffffffffffc
...
$ cat -n /src/cvs-openbsd/sys/dev/acpi/acpicpu.c | grep -5 1146
1141 struct acpi_cstate *best, *cx;
1142 unsigned long itime;
1143
1144 if (sc == NULL) {
1145 __asm volatile("sti");
1146 panic("null acpicpu");
1147 }
1148
1149 /* possibly update the MWAIT_ONLY flag in cpu_info */
1150 if (sc->sc_flags & FLAGS_MWAIT_ONLY) {
1151 if ((ci->ci_mwait & MWAIT_ONLY) == 0)