Opened 16 years ago
Closed 14 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 , 14 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.