Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 05 Nov 2007 15:24:35 +0200
From:      Ian FREISLICH <ianf@clue.co.za>
To:        Rui Paulo <rpaulo@fnop.net>
Cc:        freebsd-current@FreeBSD.org, freebsd-hardware@FreeBSD.org
Subject:   Re: MacBook users: possible fix for the SMP problem 
Message-ID:  <E1Ip1wR-0000Ik-W4@clue.co.za>
In-Reply-To: Message from Rui Paulo <rpaulo@fnop.net> of "Sun, 04 Nov 2007 20:59:28 GMT." <4A5A9C78-22AC-4480-BDEB-A72F6CF472DB@fnop.net> 

next in thread | previous in thread | raw e-mail | index | archive | help
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
> @@ -577,6 +577,8 @@ 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
> @@ -621,6 +621,8 @@ 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).

This indeed fixes the Mc Time problem I was experiencing.  How nice
not to have to attend the boot :)  Now I can power on and turn my
attention to the coffee machine first thing in the morning.  Thanks!

> Also, please test if there are any USB problems.

No USB problems that I can tell.

Ian

--
Ian Freislich




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E1Ip1wR-0000Ik-W4>