On Fri, Mar 04, 2011 at 01:29:19PM -0700, Theo de Raadt wrote:
> I don't know how to help you debug this further. You need to go into
> the code and start adding printf's and such.
>
> None of us currently have machines which fail in this way.
>
> However the issue is that whatever the problem is, the odds of being
> related to ACPI are less than 1%.
>
> Mentioning ACPI in your bug report in this way does not help.
Yes, you're absolutely right. I've done quite a bit of digging,
and found the problem occurs in /usr/src/sys/arch/amd64/amd64/cpu.c
in function cpu_boot_secondary. There is a loop:
for (i = 100000; (!(ci->ci_flags & CPUF_RUNNING)) && i>0; i--) {
delay(10);
}
I put a printf before the loop and after the loop. It managed to
print both printfs, but right afterwards I received a
panic: uvm_fault: fault on non-pageable map (0xffffffff80xx8ac0,
0xffff80000017200) Stopped at Debugger+0x5: leave
I tried to type 'trace' and then enter.. once I hit enter, the
system reboot.
So I wonder if perhaps the CPU was not ready yet... working on that
theory I increased delay(10) to delay(20) but it made no difference.
Is there a way to safely dump out the CPU flags of the secondary
processor? (In this case, it's CPU 1.. since it's a dual core amd64)