From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LRXXV-0002Ec-N6 for qemu-devel@nongnu.org; Mon, 26 Jan 2009 14:54:33 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LRXXV-0002EI-3Q for qemu-devel@nongnu.org; Mon, 26 Jan 2009 14:54:33 -0500 Received: from [199.232.76.173] (port=50099 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LRXXU-0002EB-SQ for qemu-devel@nongnu.org; Mon, 26 Jan 2009 14:54:32 -0500 Received: from savannah.gnu.org ([199.232.41.3]:58137 helo=sv.gnu.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1LRXXU-0002of-Ce for qemu-devel@nongnu.org; Mon, 26 Jan 2009 14:54:32 -0500 Received: from cvs.savannah.gnu.org ([199.232.41.69]) by sv.gnu.org with esmtp (Exim 4.63) (envelope-from ) id 1LRXXT-0003ZO-SC for qemu-devel@nongnu.org; Mon, 26 Jan 2009 19:54:31 +0000 Received: from aliguori by cvs.savannah.gnu.org with local (Exim 4.63) (envelope-from ) id 1LRXXT-0003ZJ-Gm for qemu-devel@nongnu.org; Mon, 26 Jan 2009 19:54:31 +0000 MIME-Version: 1.0 Errors-To: aliguori Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: Anthony Liguori Message-Id: Date: Mon, 26 Jan 2009 19:54:31 +0000 Subject: [Qemu-devel] [6452] Log reset events (Jan Kiszka) Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Revision: 6452 http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=6452 Author: aliguori Date: 2009-01-26 19:54:31 +0000 (Mon, 26 Jan 2009) Log Message: ----------- Log reset events (Jan Kiszka) Original idea&code by Kevin Wolf, split-up in two patches and added more archs. This patch introduces a flag to log CPU resets. Useful for tracing unexpected resets (such as those triggered by x86 triple faults). Signed-off-by: Jan Kiszka Signed-off-by: Anthony Liguori Modified Paths: -------------- trunk/cpu-all.h trunk/exec.c trunk/target-arm/helper.c trunk/target-cris/translate.c trunk/target-i386/helper.c trunk/target-m68k/helper.c trunk/target-mips/translate.c trunk/target-ppc/helper.c trunk/target-sh4/translate.c trunk/target-sparc/helper.c Modified: trunk/cpu-all.h =================================================================== --- trunk/cpu-all.h 2009-01-26 19:37:41 UTC (rev 6451) +++ trunk/cpu-all.h 2009-01-26 19:54:31 UTC (rev 6452) @@ -816,6 +816,7 @@ #define CPU_LOG_PCALL (1 << 6) #define CPU_LOG_IOPORT (1 << 7) #define CPU_LOG_TB_CPU (1 << 8) +#define CPU_LOG_RESET (1 << 9) /* define log items */ typedef struct CPULogItem { Modified: trunk/exec.c =================================================================== --- trunk/exec.c 2009-01-26 19:37:41 UTC (rev 6451) +++ trunk/exec.c 2009-01-26 19:54:31 UTC (rev 6452) @@ -1569,6 +1569,8 @@ #ifdef TARGET_I386 { CPU_LOG_PCALL, "pcall", "show protected mode far calls/returns/exceptions" }, + { CPU_LOG_RESET, "cpu_reset", + "show CPU state before CPU resets" }, #endif #ifdef DEBUG_IOPORT { CPU_LOG_IOPORT, "ioport", Modified: trunk/target-arm/helper.c =================================================================== --- trunk/target-arm/helper.c 2009-01-26 19:37:41 UTC (rev 6451) +++ trunk/target-arm/helper.c 2009-01-26 19:54:31 UTC (rev 6452) @@ -159,6 +159,12 @@ void cpu_reset(CPUARMState *env) { uint32_t id; + + if (qemu_loglevel_mask(CPU_LOG_RESET)) { + qemu_log("CPU Reset (CPU %d)\n", env->cpu_index); + log_cpu_state(env, 0); + } + id = env->cp15.c0_cpuid; memset(env, 0, offsetof(CPUARMState, breakpoints)); if (id) Modified: trunk/target-cris/translate.c =================================================================== --- trunk/target-cris/translate.c 2009-01-26 19:37:41 UTC (rev 6451) +++ trunk/target-cris/translate.c 2009-01-26 19:54:31 UTC (rev 6452) @@ -3458,6 +3458,11 @@ void cpu_reset (CPUCRISState *env) { + if (qemu_loglevel_mask(CPU_LOG_RESET)) { + qemu_log("CPU Reset (CPU %d)\n", env->cpu_index); + log_cpu_state(env, 0); + } + memset(env, 0, offsetof(CPUCRISState, breakpoints)); tlb_flush(env, 1); Modified: trunk/target-i386/helper.c =================================================================== --- trunk/target-i386/helper.c 2009-01-26 19:37:41 UTC (rev 6451) +++ trunk/target-i386/helper.c 2009-01-26 19:54:31 UTC (rev 6452) @@ -418,6 +418,11 @@ { int i; + if (qemu_loglevel_mask(CPU_LOG_RESET)) { + qemu_log("CPU Reset (CPU %d)\n", env->cpu_index); + log_cpu_state(env, X86_DUMP_FPU | X86_DUMP_CCOP); + } + memset(env, 0, offsetof(CPUX86State, breakpoints)); tlb_flush(env, 1); Modified: trunk/target-m68k/helper.c =================================================================== --- trunk/target-m68k/helper.c 2009-01-26 19:37:41 UTC (rev 6451) +++ trunk/target-m68k/helper.c 2009-01-26 19:54:31 UTC (rev 6452) @@ -143,6 +143,11 @@ void cpu_reset(CPUM68KState *env) { + if (qemu_loglevel_mask(CPU_LOG_RESET)) { + qemu_log("CPU Reset (CPU %d)\n", env->cpu_index); + log_cpu_state(env, 0); + } + memset(env, 0, offsetof(CPUM68KState, breakpoints)); #if !defined (CONFIG_USER_ONLY) env->sr = 0x2700; Modified: trunk/target-mips/translate.c =================================================================== --- trunk/target-mips/translate.c 2009-01-26 19:37:41 UTC (rev 6451) +++ trunk/target-mips/translate.c 2009-01-26 19:54:31 UTC (rev 6452) @@ -8489,6 +8489,11 @@ void cpu_reset (CPUMIPSState *env) { + if (qemu_loglevel_mask(CPU_LOG_RESET)) { + qemu_log("CPU Reset (CPU %d)\n", env->cpu_index); + log_cpu_state(env, 0); + } + memset(env, 0, offsetof(CPUMIPSState, breakpoints)); tlb_flush(env, 1); Modified: trunk/target-ppc/helper.c =================================================================== --- trunk/target-ppc/helper.c 2009-01-26 19:37:41 UTC (rev 6451) +++ trunk/target-ppc/helper.c 2009-01-26 19:54:31 UTC (rev 6452) @@ -2709,10 +2709,14 @@ void cpu_ppc_reset (void *opaque) { - CPUPPCState *env; + CPUPPCState *env = opaque; target_ulong msr; - env = opaque; + if (qemu_loglevel_mask(CPU_LOG_RESET)) { + qemu_log("CPU Reset (CPU %d)\n", env->cpu_index); + log_cpu_state(env, 0); + } + msr = (target_ulong)0; if (0) { /* XXX: find a suitable condition to enable the hypervisor mode */ Modified: trunk/target-sh4/translate.c =================================================================== --- trunk/target-sh4/translate.c 2009-01-26 19:37:41 UTC (rev 6451) +++ trunk/target-sh4/translate.c 2009-01-26 19:54:31 UTC (rev 6452) @@ -184,6 +184,11 @@ static void cpu_sh4_reset(CPUSH4State * env) { + if (qemu_loglevel_mask(CPU_LOG_RESET)) { + qemu_log("CPU Reset (CPU %d)\n", env->cpu_index); + log_cpu_state(env, 0); + } + #if defined(CONFIG_USER_ONLY) env->sr = 0; #else Modified: trunk/target-sparc/helper.c =================================================================== --- trunk/target-sparc/helper.c 2009-01-26 19:37:41 UTC (rev 6451) +++ trunk/target-sparc/helper.c 2009-01-26 19:54:31 UTC (rev 6452) @@ -639,6 +639,11 @@ void cpu_reset(CPUSPARCState *env) { + if (qemu_loglevel_mask(CPU_LOG_RESET)) { + qemu_log("CPU Reset (CPU %d)\n", env->cpu_index); + log_cpu_state(env, 0); + } + tlb_flush(env, 1); env->cwp = 0; env->wim = 1;