On 08/30/13 13:54, Lundberg, Johannes wrote:
Still got the same behaviour after applying the patch...

Johannes Lundberg
BRILLIANTSERVICE CO., LTD. <http://www.brilliantservice.co.jp>

I've seen something similar with my mac, that the boot menu counter is not always counting stable. I think this problem is inside the following function, if you say that the code is stuck inside pause():

sys/x86/isa/clock.c:DELAY()

Maybe you can try this patch instead. Just apply it by hand:

=== sys/x86/isa/clock.c
==================================================================
--- sys/x86/isa/clock.c (revision 254832)
+++ sys/x86/isa/clock.c (local)
@@ -262,6 +262,7 @@
        timecounter_get_t *func;
        uint64_t end, freq, now;
        u_int last, mask, u;
+       int overflow = 0;

        tc = timecounter;
        freq = atomic_load_acq_64(&tsc_freq);
@@ -281,6 +282,11 @@
                sched_pin();
        last = func(tc) & mask;
        do {
+               if (--overflow == 0) {
+                       printf("DELAY overflow\n");
+                       break;
+               }
+
                cpu_spinwait();
                u = func(tc) & mask;
                if (u < last)
@@ -304,6 +310,7 @@
 DELAY(int n)
 {
        int delta, prev_tick, tick, ticks_left;
+       int overflow = 0;
 #ifdef DELAYDEBUG
        int getit_calls = 1;
        int n1;
@@ -365,6 +372,10 @@
                             / 1000000;

        while (ticks_left > 0) {
+               if (--overflow == 0) {
+                       printf("DELAY overflow\n");
+                       break;
+               }
 #ifdef KDB
                if (kdb_active) {
 #ifdef PC98


--HPS
_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to