#include <palacios/vmm_msr.h>
-#ifndef DEBUG_APIC
+#ifndef CONFIG_DEBUG_APIC
#undef PrintDebug
#define PrintDebug(fmt, args...)
#endif
uchar_t flag = 0x1 << minor_offset;
uchar_t * svc_location = apic->int_svc_reg + major_offset;
- PrintDebug("Received APIC EOI\n");
+ PrintDebug("Received APIC EOI for IRQ %d\n", isr_irq);
*svc_location &= ~flag;
}
tmr_ticks = cpu_cycles >> shift_num;
- PrintDebug("Timer Ticks: %p\n", (void *)tmr_ticks);
+ // PrintDebug("Timer Ticks: %p\n", (void *)tmr_ticks);
if (tmr_ticks < apic->tmr_cur_cnt) {
apic->tmr_cur_cnt -= tmr_ticks;
PrintDebug("Raising APIC Timer interrupt (periodic=%d) (icnt=%d) (div=%d)\n",
apic->tmr_vec_tbl.tmr_mode, apic->tmr_init_cnt, shift_num);
+ if (apic_intr_pending(priv_data)) {
+ PrintDebug("Overriding pending IRQ %d\n", apic_get_intr_number(priv_data));
+ }
+
if (activate_internal_irq(apic, APIC_TMR_INT) == -1) {
PrintError("Could not raise Timer interrupt\n");
}
struct apic_state * apic = (struct apic_state *)V3_Malloc(sizeof(struct apic_state));
- struct vm_device * dev = v3_allocate_device("APIC", &dev_ops, apic);
+ struct vm_device * dev = v3_allocate_device("LAPIC", &dev_ops, apic);
if (v3_attach_device(vm, dev) == -1) {
- PrintError("Could not attach device %s\n", "APIC");
+ PrintError("Could not attach device %s\n", "LAPIC");
return -1;
}
-device_register("LAPIC", &apic_init)
+device_register("LAPIC", apic_init)