Date: Tue, 23 Mar 2004 10:30:16 -0800 (PST) From: Coleman Kane <cokane@FreeBSD.org> To: freebsd-gnats-submit@FreeBSD.org Subject: i386/64626: AP initialization problem on GIGABYTE GA-7DPXDW+ Athlon MP board Message-ID: <200403231830.i2NIUFH0074257@www.freebsd.org> Resent-Message-ID: <200403231840.i2NIeFSe027309@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 64626 >Category: i386 >Synopsis: AP initialization problem on GIGABYTE GA-7DPXDW+ Athlon MP board >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-i386 >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Tue Mar 23 10:40:14 PST 2004 >Closed-Date: >Last-Modified: >Originator: Coleman Kane >Release: 5.2.1-Release >Organization: DomainIt, Inc. >Environment: FreeBSD sparky.domainit.int 5.2.1-RELEASE FreeBSD 5.2.1-RELEASE #0: Tue Jan 8 23:15:10 GMT 2002 root@sparky.domainit.int:/usr/obj/usr/src/sys/SPARKY i386 >Description: System randomly fails to initialize the second CPU. Comes up with AP #1 (PHY #1) initialization failed panic?(y/n) And halts. I have installed 5.2-RELEASE and 5.2.1-RELEASE on three of these systems over the past couple months and they all exhibit the same behavior. The error is intermittent, and typically when the machine is restarted it comes up fine. >How-To-Repeat: Reboot the offending system repeatedly until the error occurs. >Fix: The machine always halts at the panic? (y/n) prompt, even if DDB_UNATTENDED is set. As a temporary solution (until the reason why CPU 1 doesn't start is ascertained), I suggest modifying sys/i386/i386/mp_machdep.c around line 635 from: if (!start_ap(apic_id)) { printf("AP #%d (PHY# %d) failed!\n", cpu, apic_id); CHECK_PRINT("trace"); /* show checkpoints */ /* better panic as the AP may be running loose */ printf("panic y/n? [y] "); if (cngetc() != 'n') panic("bye-bye"); } CHECK_PRINT("trace"); /* show checkpoints */ To: if (!start_ap(apic_id)) { printf("AP #%d (PHY# %d) failed!\n", cpu, apic_id); CHECK_PRINT("trace"); /* show checkpoints */ /* better panic as the AP may be running loose */ #ifndef DDB_UNATTENDED printf("panic y/n? [y] "); if (cngetc() != 'n') panic("bye-bye"); #else panic("Unable to init CPU"); #endif } CHECK_PRINT("trace"); /* show checkpoints */ The system will simply restart when the condition occurs in the unattended state, until it comes up clean. >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200403231830.i2NIUFH0074257>