Opened 16 years ago
Closed 15 years ago
#2573 closed defect (fixed)
Local APIC timer dies
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.
Change History (4)
comment:1 by , 16 years ago
Description: | modified (diff) |
---|
comment:2 by , 16 years ago
comment:4 by , 15 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Please reopen if still reproducible with VBox 3.1.6.
Note:
See TracTickets
for help on using tickets.
Defined constants:
A constant APIC_LVT_TRIGGER_LEVEL takes no effect (if it is used or not) and is described in timer's LVT entry as reserved. So you can ignore it.