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>