From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LRlAO-0002gy-Fm for qemu-devel@nongnu.org; Tue, 27 Jan 2009 05:27:36 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LRlAN-0002gF-RJ for qemu-devel@nongnu.org; Tue, 27 Jan 2009 05:27:35 -0500 Received: from [199.232.76.173] (port=54358 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LRlAN-0002g5-9M for qemu-devel@nongnu.org; Tue, 27 Jan 2009 05:27:35 -0500 Received: from ns.suse.de ([195.135.220.2]:54604 helo=mx1.suse.de) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1LRlAM-00046e-LU for qemu-devel@nongnu.org; Tue, 27 Jan 2009 05:27:35 -0500 Message-ID: <497EE312.5090406@suse.de> Date: Tue, 27 Jan 2009 11:33:54 +0100 From: Kevin Wolf MIME-Version: 1.0 Subject: Re: [Qemu-devel] [6453] x86: Issue reset on triple faults (Jan Kiszka) References: <497EDEC2.8020805@suse.de> <497EE0DF.9050102@siemens.com> In-Reply-To: <497EE0DF.9050102@siemens.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jan Kiszka Cc: qemu-devel@nongnu.org Jan Kiszka schrieb: > Kevin Wolf wrote: >> Anthony Liguori schrieb: >>> Revision: 6453 >>> http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=6453 >>> Author: aliguori >>> Date: 2009-01-26 19:54:36 +0000 (Mon, 26 Jan 2009) >>> >>> Log Message: >>> ----------- >>> x86: Issue reset on triple faults (Jan Kiszka) >>> >>> As discussed a few times on this list: A triple fault causes a system >>> reset on x86, and some guests make use of this (e.g. 386BSD). To keep >>> the chance of tracing unexpected resets, log them if CPU_LOG_RESET is >>> set. >>> >>> Signed-off-by: Jan Kiszka >>> Signed-off-by: Anthony Liguori >>> >>> Modified Paths: >>> -------------- >>> trunk/target-i386/op_helper.c >>> >>> Modified: trunk/target-i386/op_helper.c >>> =================================================================== >>> --- trunk/target-i386/op_helper.c 2009-01-26 19:54:31 UTC (rev 6452) >>> +++ trunk/target-i386/op_helper.c 2009-01-26 19:54:36 UTC (rev 6453) >>> @@ -1251,6 +1251,9 @@ >>> } >>> } >>> >>> +/* This should come from sysemu.h - if we could include it here... */ >>> +void qemu_system_reset_request(void); >>> + >>> /* >>> * Check nested exceptions and change to double or triple fault if >>> * needed. It should only be called, if this is not an interrupt. >>> @@ -1267,9 +1270,19 @@ >>> qemu_log_mask(CPU_LOG_INT, "check_exception old: 0x%x new 0x%x\n", >>> env->old_exception, intno); >>> >>> - if (env->old_exception == EXCP08_DBLE) >>> - cpu_abort(env, "triple fault"); >>> +#if !defined(CONFIG_USER_ONLY) >>> + if (env->old_exception == EXCP08_DBLE) { >>> + if (env->hflags & HF_SVMI_MASK) >>> + helper_vmexit(SVM_EXIT_SHUTDOWN, 0); /* does not return */ >>> >>> + if (loglevel & CPU_LOG_RESET) >>> + fprintf(logfile, "Triple fault\n"); >> I think this one should use the new logging macros as well. > > Or in other words: > > ---------> > > Use new logging API. > > Signed-off-by: Jan Kiszka > > diff --git a/target-i386/op_helper.c b/target-i386/op_helper.c > index 8cf3bb2..edf569e 100644 > --- a/target-i386/op_helper.c > +++ b/target-i386/op_helper.c > @@ -1275,7 +1275,7 @@ static int check_exception(int intno, int *error_code) > if (env->hflags & HF_SVMI_MASK) > helper_vmexit(SVM_EXIT_SHUTDOWN, 0); /* does not return */ > > - if (loglevel & CPU_LOG_RESET) > + if (qemu_loglevel_mask(CPU_LOG_RESET)) > fprintf(logfile, "Triple fault\n"); > > qemu_system_reset_request(); Well, no. There's still a fprintf on logfile. ;-) qemu_log_mask(CPU_LOG_RESET, "Triple fault\n") should do the right thing. Kevin