From d2fd3b2ec2c265eb9ed3bdcc1db3e4c3feee3846 Mon Sep 17 00:00:00 2001 From: Nilay Vaish Date: Thu, 28 Mar 2013 09:34:23 -0500 Subject: [PATCH] x86: changes to apic, keyboard It is possible that operating system wants to shutdown the lapic timer by writing timer's initial count to 0. This patch adds a check that the timer event is only scheduled if the count is 0. The patch also converts few of the panics related to the keyboard to warnings since we are any way not interested in simulating the keyboard. --- src/arch/x86/interrupts.cc | 7 ++++--- src/dev/x86/i8042.cc | 8 +++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/arch/x86/interrupts.cc b/src/arch/x86/interrupts.cc index 9983d7305..ad9d483c7 100644 --- a/src/arch/x86/interrupts.cc +++ b/src/arch/x86/interrupts.cc @@ -597,9 +597,10 @@ X86ISA::Interrupts::setReg(ApicRegIndex reg, uint32_t val) curTick() + (newCount + 1) * clockPeriod() - offset, true); } else { - reschedule(apicTimerEvent, - curTick() + newCount * - clockPeriod(), true); + if (newCount) + reschedule(apicTimerEvent, + curTick() + newCount * + clockPeriod(), true); } } break; diff --git a/src/dev/x86/i8042.cc b/src/dev/x86/i8042.cc index 1fc50db15..c0bd34ad2 100644 --- a/src/dev/x86/i8042.cc +++ b/src/dev/x86/i8042.cc @@ -411,10 +411,12 @@ X86ISA::I8042::write(PacketPtr pkt) case ReadOutputPort: panic("i8042 \"Read output port\" command not implemented.\n"); case WriteOutputPort: - panic("i8042 \"Write output port\" command not implemented.\n"); + warn("i8042 \"Write output port\" command not implemented.\n"); + lastCommand = WriteOutputPort; case WriteKeyboardOutputBuff: - panic("i8042 \"Write keyboard output buffer\" " + warn("i8042 \"Write keyboard output buffer\" " "command not implemented.\n"); + lastCommand = WriteKeyboardOutputBuff; case WriteMouseOutputBuff: DPRINTF(I8042, "Got command to write to mouse output buffer.\n"); lastCommand = WriteMouseOutputBuff; @@ -432,7 +434,7 @@ X86ISA::I8042::write(PacketPtr pkt) case SystemReset: panic("i8042 \"System reset\" command not implemented.\n"); default: - panic("Write to unknown i8042 " + warn("Write to unknown i8042 " "(keyboard controller) command port.\n"); } } else { -- 2.30.2