Re: [PATCH] dynamic tick patch

From: Tony Lindgren
Date: Fri Jan 21 2005 - 13:39:28 EST


* Zwane Mwaikambo <zwane@xxxxxxxxxxxxxxxx> [050121 10:27]:
> On Fri, 21 Jan 2005, Tony Lindgren wrote:
>
> > > This doesn't seem to cover the local APIC timer, what do you do about the
> > > 1kHz tick which it's programmed to do?
> >
> > Sorry for the delay in replaying. Thanks for pointing that out, I
> > don't know yet what to do with the local APIC timer. Have to look at
> > more.
>
> Pavel does your test system have a Local APIC? If so that may also explain
> why you didn't see a difference.

Yeah, that could explain why sleep mode seems to wake up too early.

> Tony, something like the following for oneshot should work, untested of
> course. Perhaps you could use that for the wakeup interrupt instead?
>
> void setup_oneshot_apic_timer(unsigned int count)
> {
> unsigned int lvtt, tmp_value;
> unsigned long flags;
>
> count *= calibration_result;
> local_irq_save(flags);
> lvtt = ~APIC_LVT_TIMER_PERIODIC | LOCAL_TIMER_VECTOR;
> apic_write_around(APIC_LVTT, lvtt);
> tmp_value = apic_read(APIC_TDCR);
> apic_write_around(APIC_TDCR, (tmp_value
> & ~(APIC_TDR_DIV_1 | APIC_TDR_DIV_TMBASE))
> | APIC_TDR_DIV_16);
>
> apic_write_around(APIC_TMICT, count/APIC_DIVISOR);
> local_irq_restore(flags);
> }
>

Thanks, I'll try it out! As George also pointed out, we should use apic
timer if available. Else we can fall back on use PIT.

Tony
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/