Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 13 Aug 2012 12:34:53 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-stable@freebsd.org
Cc:        "mnln.l4" <mnln.l4@gmail.com>
Subject:   Re: Kernel panic at early boot time
Message-ID:  <201208131234.53905.jhb@freebsd.org>
In-Reply-To: <CALOP8J8axm_gTKR7UDLjykkoWdwB-BW-dYLaeXgYO76-TAF3gg@mail.gmail.com>
References:  <CALOP8J-2dEkFmmYS8u4sJSaPTbSssYeYxnfqc6N1AMdv88kz3Q@mail.gmail.com> <CALOP8J-S=pJWsNVoYSdgN%2BabAN07_fxqTJohFFeM%2BsSrg-cEZg@mail.gmail.com> <CALOP8J8axm_gTKR7UDLjykkoWdwB-BW-dYLaeXgYO76-TAF3gg@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wednesday, August 08, 2012 8:26:56 pm mnln.l4 wrote:
> I finally have some time to take a closer look at this issue. Yes, it
> is caused by SMI#. DragonflyBSD has tried to fix the similar problem
> (see 
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/bb467734fc407e2c2de7f8314c63dd9f708f4df4)
> 
> But Windows and Linux don't cause such problem on my machine.
> 
> I compared MP initialization code between FreeBSD, Linux and NetBSD. I
> believe the problem is FreeBSD doesn't wait for 10ms between IPI_INIT
> assert and IPI_INIT deassert (though FreeBSD waits for 10ms after
> IPI_INIT deassert). After inserting 10ms wait time, the issue is
> solved. BTW, Intel's MP spec 1.4 doesn't explain very well either.

I think the confusion is that we have an extra IPI step (deassert INIT IPI)
that we did have the wait after.  Your patch is correct and I've committed
it (well, a variant, I put the DELAY() after the lapic_ipi_wait()).  I think
we should actually just remove the deassert INIT IPI entirely as I can find
no reference in either the MP spec or otherwise that says that it should be
used.  It is also ignored on all modern processors.

-- 
John Baldwin



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