Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 27 May 2008 00:16:26 -0700
From:      Bob Frazier <bobf@mrp3.com>
To:        bug-followup@FreeBSD.org
Cc:        freebsd-bugs@FreeBSD.org, gavin@FreeBSD.org
Subject:   Re: kern/123140: [smp] SMP boot causes slow KB, ATA drives not detected
Message-ID:  <483BB54A.4010207@mrp3.com>

next in thread | raw e-mail | index | archive | help
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 <ENTER> at 'mountroot' and getting the 'db' prompt, 
entering 'continue' allowed the other CPUs to get their timer interrupts 
prior to system restart.





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?483BB54A.4010207>