From mboxrd@z Thu Jan 1 00:00:00 1970 From: Keir Fraser Subject: Re: [Patch][0/2]implement dump_execution_state() on ia64 Date: Thu, 27 Mar 2008 19:22:07 +0000 Message-ID: References: <82C8902F1E97A4takebe_akio@jp.fujitsu.com> Mime-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <82C8902F1E97A4takebe_akio@jp.fujitsu.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Akio Takebe , xen-ia64-devel , xen-devel List-Id: xen-devel@lists.xenproject.org On 27/3/08 17:22, "Akio Takebe" wrote: >> There is already a function which does what you want (i.e., takes a >> cpu_user_regs pointer) -- it's called show_execution_state(). >> >> On x86 we implement dump_execution_state() by forcing an exception (by >> executing an invalid opcode) and dumping the calltrace from within the >> exception handler. This works because the exception handler has a >> cpu_user_regs pointer and hence can call show_execution_state(). We use the >> same trick for handling BUG() and ASSERT(). The code concerned is in >> arch/x86/traps.c:do_invalid_op(). > On x86, does "xm debug-key d" make system hang? > Or it just uses the exception handler, not hangup? It works fine. It uses dump_execution_state(), as you have seen when you modified it, and hence it does indeed force an exception on each CPU in turn, and the exception handler dumps the cpu_user_regs (also known as 'pt_regs' in ia64) pointer that it receives. -- Keir