xhci broken on 10-CURRENT and 2013 MacBook Air?

Lundberg, Johannes johannes at brilliantservice.co.jp
Fri Aug 30 13:19:44 UTC 2013


Hi Hans

I tried that too and no change... But, the variable overflow you
introduced, it is never increased, right? So, it will never become zero...

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


On Fri, Aug 30, 2013 at 2:26 PM, Hans Petter Selasky <hps at bitfrost.no>wrote:

> 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<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
>


More information about the freebsd-current mailing list