Opened 15 years ago
Last modified 14 years ago
#2573 closed defect
Local APIC timer dies — at Initial Version
Reported by: | Vladimir | Owned by: | |
---|---|---|---|
Component: | other | Version: | VirtualBox 2.0.4 |
Keywords: | Cc: | ||
Guest type: | other | Host type: | other |
Description
An APIC timer is initialized as periodic: lapic_base: u32_t *lapic_base;
Disable timer first lapic_base[APIC_DWREG_LVT_TMR] = APIC_TIMER_VECTOR | APIC_LVT_D_STAT_IDLE | APIC_LVT_TMR_PERIODIC | APIC_LVT_TRIGGER_LEVEL | APIC_LVT_MASK; Write counters lapic_base[APIC_DWREG_TMR_DIVIDE] = div; lapic_base[APIC_DWREG_TMR_INIT] = counter;
Enable if it is enabled in configruation if (enabled)
lapic_base[APIC_DWREG_LVT_TMR] = APIC_TIMER_VECTOR | APIC_LVT_D_STAT_IDLE | APIC_LVT_TRIGGER_LEVEL | APIC_LVT_TMR_PERIODIC;
Timer interrupt is ok (a counter in a handler is periodically incremented) Then a system is sending INIT IPI: lapic_base[APIC_DWREG_ICR0] = APIC_ICR0_DST_ALL_NO_SELF | APIC_ICR0_D_MODE_INIT;
And whoops... A timer dies. And no timer re-initialization helps.