Re: MacBook users: possible fix for the SMP problem

From: Joe Marcus Clarke <marcus_at_FreeBSD.org>
Date: Tue, 06 Nov 2007 14:35:37 -0500
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Rui Paulo wrote:
> Hi,
> I've been contacted by Marco Trillo and I think he has found the source
> of the SMP problem.
> The problem seems to rely on Intel ICH7. Basically we need to disable
> the "LEGACY_USB" bit before we calibrate the clocks.
> "LEGACY_USB", according to Marco (I don't have the ICH7 spec at hand),
> "causes legacy USB circuit to generate SMIs".
> 
> Please try the following patch:
> --- sys/amd64/isa/clock.c.orig    2007-11-04 20:31:09.000000000 +0000
> +++ sys/amd64/isa/clock.c    2007-11-04 20:34:59.000000000 +0000
> _at__at_ -577,6 +577,8 _at__at_ startrtclock()
>      writertc(RTC_STATUSA, rtc_statusa);
>      writertc(RTC_STATUSB, RTCSB_24HR);
> 
> +    outl(0x430, inl(0x430) & ~0x8);
> +
>      freq = calibrate_clocks();
>  #ifdef CLK_CALIBRATION_LOOP
>      if (bootverbose) {
> --- sys/i386/isa/clock.c.orig    2007-11-04 20:34:03.000000000 +0000
> +++ sys/i386/isa/clock.c    2007-11-04 20:34:30.000000000 +0000
> _at__at_ -621,6 +621,8 _at__at_ startrtclock()
>      writertc(RTC_STATUSA, rtc_statusa);
>      writertc(RTC_STATUSB, RTCSB_24HR);
> 
> +    outl(0x430, inl(0x430) & ~0x8);
> +
>      freq = calibrate_clocks();
>  #ifdef CLK_CALIBRATION_LOOP
>      if (bootverbose) {
> 
> 
> This should probably fix two issues:
> 1) The second core should start without any trick (e.g. key press)
> 2) We should be able to run with HZ=1000 (the default) without any
> problem. To check if this is indeed the case, try booting with HZ=1000
> (loader.conf variable kern.hz) and check if your CPU clock shows up
> correctly in the dmesg. After that, please also check if 'time sleep 1'
> takes one second (not more and not less).
> 
> Also, please test if there are any USB problems.
> 
> Note: this is still a hack. I'm still thinking about a way to correctly
> identify on which systems we need to apply this fix.

I can confirm on my MacBook Pro Core Duo 15", that this patch does fix
the second CPU init problem (no more key presses), and kern.hz=1000
works as expected (CPU _at_ 2.0 GHz).  Thanks!

Joe

- --
Joe Marcus Clarke
FreeBSD GNOME Team	::	gnome_at_FreeBSD.org
FreeNode / #freebsd-gnome
http://www.FreeBSD.org/gnome
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (Darwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFHMMIIb2iPiv4Uz4cRAlqPAKCZkhhP5QgOHT7N0f1QeTwGMIau1wCgpeDi
YysjxnhelxMxC1C2GQtIoik=
=fk/Q
-----END PGP SIGNATURE-----
Received on Tue Nov 06 2007 - 18:58:56 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:21 UTC