X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fgeekos%2Fint.c;h=f83087e78e41dc6b1f52991b0a60fc73ceb193ab;hb=88a9fe78672db5f5672dc20a92253e508bd3b7e1;hp=70b7b7095af64662d344c0a488a251b7bb3cebe5;hpb=01e2bfdc462dbbe8d62b71c7e99e198c27844f0f;p=palacios.releases.git diff --git a/palacios/src/geekos/int.c b/palacios/src/geekos/int.c index 70b7b70..f83087e 100644 --- a/palacios/src/geekos/int.c +++ b/palacios/src/geekos/int.c @@ -1,7 +1,7 @@ /* * GeekOS interrupt handling data structures and functions * Copyright (c) 2001,2003 David H. Hovemeyer - * $Revision: 1.3 $ + * $Revision: 1.7 $ * * This is free software. You are permitted to use, * redistribute, and modify it as specified in the file "COPYING". @@ -317,12 +317,18 @@ char *exception_type_names[] = { static void Dummy_Interrupt_Handler(struct Interrupt_State* state) { Begin_IRQ(state); - - Print("Unexpected Interrupt! Ignoring!\n"); - SerialPrint("*** Unexpected interrupt! *** Ignoring!\n"); - Dump_Interrupt_State(state); - // SerialPrint_VMCS_ALL(); - + + /* A "feature" of some chipsets is that if an interrupt is raised by mistake + * then its automatically assigned to IRQ 7(Int 39). + * Makes perfect sense... + * See: + * http://forums12.itrc.hp.com/service/forums/questionanswer.do?admit=109447627+1204759699215+28353475&threadId=1118488 + */ + if (state->intNum != 39) { + Print("Unexpected Interrupt! Ignoring!\n"); + SerialPrint("*** Unexpected interrupt! *** Ignoring!\n"); + Dump_Interrupt_State(state); + } End_IRQ(state); //STOP(); @@ -390,7 +396,7 @@ void Dump_Interrupt_State(struct Interrupt_State* state) { uint_t errorCode = state->errorCode; - Print("eax=%08x ebx=%08x ecx=%08x edx=%08x\n" + SerialPrint("eax=%08x ebx=%08x ecx=%08x edx=%08x\n" "esi=%08x edi=%08x ebp=%08x\n" "eip=%08x cs=%08x eflags=%08x\n" "Interrupt number=%d (%s), error code=%d\n"