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;

Reply via email to