i386/104678: SMP not working on Turion XP Laptop
Bruce Evans
bde at zeta.org.au
Tue Nov 7 01:30:24 UTC 2006
The following reply was made to PR i386/104678; it has been noted by GNATS.
From: Bruce Evans <bde at zeta.org.au>
To: Andrew Pantyukhin <infofarmer at freebsd.org>
Cc: freebsd-gnats-submit at freebsd.org
Subject: Re: i386/104678: SMP not working on Turion XP Laptop
Date: Tue, 7 Nov 2006 12:25:40 +1100 (EST)
On Mon, 6 Nov 2006, Andrew Pantyukhin wrote:
> I experience the same on a Turion X2 laptop
> with FreeBSD 7/amd64,
On a similar laptop (HP nx6325 Turion X2 2GHz), I found 2 workarounds:
1. Boot with battery power only. Usually works.
2. After forgetting (1), toggle AC power off and on. Leave it off a
few seconds. Usually works after 1 iteration.
Some symptoms:
RELENG_6 GENERIC usually (appear to) hang after printing "ad4: ..."
just before mounting root. Hitting keys didn't seem to help. However,
about 1 time in 10, perhaps because I tried (1) or (2) accidentally,
the boot just worked, so I knew that there was no major problem with
ACPI. RELENG_6 GENERIC kernels don't have SMP and boot fine without
ACPI, so disabling ACPI is good enough for them.
My specialized kernels happened to have a wrong ROOTDEVNAME hard-coded,
so they acted like booting with -a. They always have ddb, and debugging
showed that everything was working at the time of asking the rootdev
name. Then a few steps later in the boot, critical interrupts mostly
stop working. Mainly the CPU timer interrupts. A few of them apparently
get through as side effects of other interrupts -- that's why pounding
on the keyboard eventually makes progress. Note that syscons only
redraws the screen after a timeout, so when timeouts don't work the
system appears to be more hung than it actually is. My kernels all
use HZ = 100 and some fixes for stathz and profhz being broken by this.
This may make a difference here.
At a lower level, some of the symptoms are:
- break into ddb using Ctrl-Alt-Esc (some keys, including the normal
debugger key Ctrl-SysReq, don't work on this laptop); put a breakpoint
at hardclock(); give the "c" command to exit from ddb. Then hardclock()
is never reached unless you hit some keys or otherwise generate interrupts
manually (ethernet interrupts don't seem to do it).
- same, except put a breakpoint at lapic_handle_timer() too. Now this
breakpoint keeps getting hit, and one at hardclock() keeps getting
hit too. Programmed delays didn't seem to help, and I stopped trying
them when I found workaround (1) while trying them.
- "show intrcnt" shows most interrupts except timer ones seem to be working,
but the timer interrupt rate drops from 1000*ncpu Hz to about 10 Hz
max (probably because I can only type at about 10 Hz max).
The misconfiguration apparently happens before stopping at the askname
prompt, since turning AC power off (but not back on as in (2)) on
reaching this prompt doesn't help and turning AC power on any time
after reaching this prompt doesn't break the boot or subsequent
operation. Only forgetting to turn it back on breaks subsequent
operation :).
Some other (software) problems with this laptop:
- no sleep states except S5 (shutdown) work right. The next closest to
working is the display switch. It turns the display off but the
system appears to hang for 1 second (+-10usec) and when it comes back
the timecounter has lost 1 second but the cputicker (TSC) has kept track
if the time perfectly.
- bge0 appears to lose interrupts for at least nfs traffic. Pinging with
an interval of 0.01 seconds helps to keep the nfs traffic flowing.,
> only I can't disable
> APIC for obvious reasons. I'll post details
> later, but we might need to reclassify this
> bug again.
I think the problem is in the HP BIOS, not in Turion X*'s.
Bruce
More information about the freebsd-i386
mailing list