On Fri, Feb 18, 2011 at 06:41:26PM +0100, Pascal Stumpf wrote:
> I am too experiencing the booting problems described a few days ago for
> the SL410. With the MP kernel, booting would sometines just stop at
> mtrr: Pentium Pro MTRR support,
>
> forcing a hard reset of the machine. Other times it just works fine, not
> following any apparent pattern.
>
> How can I provide more info to debug this?
My SL510 works if I "disable acpitz*". The debugging-only diff at the
end of this message can help show that this is indeed the issue (by
default, it doesn't do much; use boot -d and 'write
acpitz_skip_first_setperfs 10' (if it's N >= 0, skip the first N
acpitz_cpu_setperf() calls; negative values drop you into ddb at
acpitz_cpu_setperf() calls, which allows you to get a backtrace.)
That said, I don't have the time or expertise to fix this myself, and I
guess it's rather hard to fix it without the hardware...
> The second problem has already been reported multiple times. (Hardware
> acceleration not working on some Radeon chips.) The corresponding PR is
> user/6549, the symptoms are exactly as described there.
Sorry, I can't help you with that - I have an Intel card.
Joachim
Index: acpitz.c
===================================================================
RCS file: /usr/cvs/src/src/sys/dev/acpi/acpitz.c,v
retrieving revision 1.39
diff -u -p -r1.39 acpitz.c
--- acpitz.c 27 Jul 2010 04:28:36 -0000 1.39
+++ acpitz.c 4 Oct 2010 08:37:30 -0000
@@ -88,6 +88,7 @@ void (*acpitz_cpu_setperf)(int);
int acpitz_perflevel = -1;
extern void (*cpu_setperf)(int);
extern int perflevel;
+int acpitz_skip_first_setperfs = 0;
#define PERFSTEP 10
#define ACPITZ_TRIPS (1L << 0)
@@ -376,8 +377,21 @@ acpitz_refresh(void *arg)
/* Perform CPU setperf */
if (acpitz_cpu_setperf && nperf != acpitz_perflevel) {
- acpitz_perflevel = nperf;
- acpitz_cpu_setperf(nperf);
+ if (acpitz_skip_first_setperfs < 0) {
+ /* Enter ddb here - and hopefully continue */
+ Debugger();
+ } else if (acpitz_skip_first_setperfs > 0) {
+ acpitz_skip_first_setperfs--;
+ printf("%s: skipping %d more setperf() calls\n",
+ DEVNAME(sc), acpitz_skip_first_setperfs);
+ } else {
+ acpitz_perflevel = nperf;
+ printf("%s: acpitz_cpu_setperf at %p called:
acpitz_cpu_setperf(%d)\n",
+ DEVNAME(sc), (void *) acpitz_cpu_setperf,
nperf);
+ acpitz_cpu_setperf(nperf);
+ printf("%s: acpitz_cpu_setperf ok\n",
+ DEVNAME(sc));
+ }
}
}
sc->sc_lasttmp = sc->sc_tmp;