X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fgeekos%2Fint.c;h=84431cf15e2820f4be034e9c9b3584f81147a453;hb=1ca13097c7c85318c400c3811ccbb54ac6c619f1;hp=70b7b7095af64662d344c0a488a251b7bb3cebe5;hpb=01e2bfdc462dbbe8d62b71c7e99e198c27844f0f;p=palacios.releases.git diff --git a/palacios/src/geekos/int.c b/palacios/src/geekos/int.c index 70b7b70..84431cf 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.5 $ * * This is free software. You are permitted to use, * redistribute, and modify it as specified in the file "COPYING". @@ -318,11 +318,18 @@ 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 +397,7 @@ void Dump_Interrupt_State(struct Interrupt_State* state) { uint_t errorCode = state->errorCode; - Print("eax=%08x ebx=%08x ecx=%08x edx=%08x\n" + PrintBoth("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"