Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 17 Nov 2006 12:40:07 GMT
From:      Bruce Evans <bde@zeta.org.au>
To:        freebsd-i386@FreeBSD.org
Subject:   Re: i386/104678: SMP not working on Turion XP Laptop
Message-ID:  <200611171240.kAHCe7DZ075910@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR i386/104678; it has been noted by GNATS.

From: Bruce Evans <bde@zeta.org.au>
To: Ariff Abdullah <ariff@freebsd.org>
Cc: bug-followup@freebsd.org, danolson@visi.com, rainer.alves@gmail.com, 
    infofarmer@freebsd.org, jhb@freebsd.org
Subject: Re: i386/104678: SMP not working on Turion XP Laptop
Date: Fri, 17 Nov 2006 23:36:49 +1100 (EST)

 On Fri, 17 Nov 2006, Ariff Abdullah wrote:
 
 > It seems the workaround is rather simple:
 >
 > machdep.cpu_idle_hlt=0
 
 This sort of works on an HP nx6325 too.  It fixes booting.
 
 > Unfortunately, the only place where you can set that is after the
 > system comes alive. This patch deals with that so that you can set it
 > as early as possible during boot procedure through loader.conf.
 
 After booting I had no problems that matter much to me (sleep/suspend
 don't work; closing the lid only turns off the screen and drops 1
 second from the timecounter), but with cpu_idle_hlt=0 (set manually
 in ddb after booting with -d), the system runs very hot, and turning
 cpu_idle_hlt back on works strangely (it cools an idle system, but
 stops clock interrupts working), and turning it back off works as
 expected (it reheats an idle system and restarts clock interrupts).
 Apparently the SMP hook into cpu_idle() doesn't work right if the flag
 is changed after booting.
 
 > Summary:
 > Basically the cpu enter deep sleep mode whenever it receives HLT
 > call within idle loop, and that only if APIC + Local APIC timer is
 > enabled. I can't tell whether it is because of APIC misseting, CPU bug
 > or else, but one thing for sure, FreeBSD 5.x/SMP boots happily on this
 > (well, that's because it doesn't use local APIC timer).
 
 The boot problem also caused clock interrupts to stop working *until
 I toggled AC power), so the problem is apparently related to using the
 local APIC timer.
 
 The power penalty seems to be more than slight.  On my nx6325,
 tz0.temperature is now 50C with cpu_idle_hlt=1 and 75C with cpu_idle_hlt=0,
 the latter even when on battery power.  I've also noticed this system
 getting hot while in ddb, and wondered if it would help to use pause()
 in the spinloops in console i/o routines.
 
 Bruce



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