Problem with IPMI KCS driver
Anton Yuzhaninov
citrin at citrin.ru
Thu Oct 18 09:45:08 UTC 2012
On 28.09.2012 16:48, John Baldwin wrote:
>> kcs_wait_for_obf() at kcs_wait_for_obf+0xb6 point to
>> > /usr/src/sys/dev/ipmi/ipmi_kcs.c:94
>> >
>> > 91 while (ticks - start< MAX_TIMEOUT&&
>> > 92 !(status& KCS_STATUS_OBF)) {
>> > 93 DELAY(100);
>> > 94 status = INB(sc, KCS_CTL_STS);
>> > 95 }
> Hummm. I'm a bit out of ideas then. Even the volatile change is a bug that
> could have been confirmed (to see if volatile was preventing the compiler
> from caching the value of 'ticks') by examining the assembly.
>
> Well, maybe this. This just avoids using 'ticks' altogether and depends on
> DELAY(100) doing what it says:
New patch also don't solve my problem.
My guess was wrong. Loop in kcs_wait_for_obf() is not endless, at least with
last patch.
Whole function called in some loop, but because loop in kcs_wait_for_obf() takes
much CPU time, backtrace always point to loop kcs_wait_for_obf().
This problem need further investigation.
--
Anton Yuzhaninov
More information about the freebsd-stable
mailing list