Skip site navigation (1)Skip section navigation (2)
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>