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.
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); }
The VST patch on sourceforge (http://sourceforge.net/projects/high-res-timers/) uses the local apic timer to do the wake up. This is the same timer that is used for the High Res work.
-- George Anzinger george@mvista.com High-res-timers: http://sourceforge.net/projects/high-res-timers/
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/