Opened 16 years ago
Last modified 14 years ago
#2573 closed defect
Local APIC timer dies — at Version 1
| Reported by: | Vladimir | Owned by: | |
|---|---|---|---|
| Component: | other | Version: | VirtualBox 2.0.4 |
| Keywords: | Cc: | ||
| Guest type: | other | Host type: | other |
Description (last modified by )
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.
Note:
See TracTickets
for help on using tickets.

