Hi all,
I DO know you guys must be very busy always, so I am sorry to disturb you.
I please ask you to let me know the reason why the changes made in
co_timer_ack()
function on Mips kernel v2.6.23.1.
Because I got a problem on kernel v2.6.10 that the timer interrupt had ignored
rarely
and it causes no updates for "jiffies" for a while (approx. 4min on my board).
And I found the change - a part of your excellent works - on v2.6.23.1
for co_timer_ack() function in time.c.
v2.6.10 kernel:
/* Check to see if we have missed any timer interrupts. */
count = read_c0_count();
if ((count - expirelo) < 0x7fffffff) {
/* missed_timer_count++; */
expirelo = count + cycles_per_jiffy;
write_c0_compare(expirelo);
}
v2.6.23.1 kernel:
/* Check to see if we have missed any timer interrupts. */
while (((count = read_c0_count()) - expirelo) < 0x7fffffff) {
/* missed_timer_count++; */
expirelo = count + cycles_per_jiffy;
write_c0_compare(expirelo);
}
So, I plase ask you a couple of my questions -
1) What kind of phenomena did this change cause ?
2) What is the defect that this part of codes in v2.6.10 kernel has ?
Please let me know.
Thanks,
Best regards,
tnishioka
|