From owner-freebsd-bugs@FreeBSD.ORG Tue May 27 06:20:04 2008 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 21501106566B for ; Tue, 27 May 2008 06:20:04 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 0ECDF8FC14 for ; Tue, 27 May 2008 06:20:04 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.14.2/8.14.2) with ESMTP id m4R6K3oi060502 for ; Tue, 27 May 2008 06:20:03 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.2/8.14.1/Submit) id m4R6K34L060501; Tue, 27 May 2008 06:20:03 GMT (envelope-from gnats) Date: Tue, 27 May 2008 06:20:03 GMT Message-Id: <200805270620.m4R6K34L060501@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org From: Bob Frazier Cc: Subject: Re: kern/123140: [smp] SMP boot causes slow KB, ATA drives not detected X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Bob Frazier List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 May 2008 06:20:04 -0000 The following reply was made to PR kern/123140; it has been noted by GNATS. From: Bob Frazier To: bug-followup@FreeBSD.org Cc: gavin@FreeBSD.org, freebsd-bugs@FreeBSD.org Subject: Re: kern/123140: [smp] SMP boot causes slow KB, ATA drives not detected Date: Tue, 27 May 2008 00:16:26 -0700 inserted test code into lapic_handle_timer to indicate the proper execution of timer interrupt callbacks by printing a message once every 4096 times that the function is called. The test code was inserted as follows. lapic_handle_timer(struct trapframe *frame) { // BBB begin static int iBBBIter = 0; // BBB end struct lapic *la; /* Send EOI first thing. */ lapic_eoi(); // BBB begin if(!((iBBBIter++) & 0xfff)) { printf("TEMPORARY - cpu %d timer tick %xH\n", PCPU_GET(cpuid), iBBBIter - 1); } // BBB end observations: a) just prior to the point of failure (when disk access is being attempted), only CPU #0 is calling the ISR, and the ISR appears to be invoked approximately 2000 times per second. Divider value is assigned to a value of '66666' or '66667' (same value for all 4 CPUs). b) at the actual point of failure (ATA drives not detected) it appears as if there are still timer callbacks being invoked. Drive detection takes place after the 'firewire' setup message and before the additional CPUs are initialized. c) once the 'mountroot' prompt appeared, only a single CPU (varies each time I retried) received timer interrupts. These timer interrupts appear to be taking place 4 times as often (is this because of the 4 CPU cores?) d) after pressing at 'mountroot' and getting the 'db' prompt, entering 'continue' allowed the other CPUs to get their timer interrupts prior to system restart.