WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

RE: [Xen-devel] [PATCH] fix the bug of gdb which debugs xen.

To: "'Keir Fraser'" <keir.fraser@xxxxxxxxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: RE: [Xen-devel] [PATCH] fix the bug of gdb which debugs xen.
From: Caz Yokoyama <cazyokoyama@xxxxxxxxx>
Date: Wed, 12 Aug 2009 05:52:27 -0700
Cc:
Delivery-date: Wed, 12 Aug 2009 05:52:41 -0700
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:from:to:references:subject :date:message-id:mime-version:content-type:x-mailer:in-reply-to :thread-index:x-mimeole; bh=rb7kYoALeqkS/RehszImJ6zqpa/eX+wi8symn/QdEU4=; b=il1NNmqbwWq6Gieeszuwj/ClrrLERaR03YAeGyPRvGM5DREA8Ks0RhIR90W83McH+q 3UObeaLYlWnrEs/J8jn8bEVD7R4+9KKuFUm6a12x2yO+kHKD3w4yLoRO5pW0HDdeHQ8D VdXfqFZDW4KtwPGtrD1t35vxsMMi1n/cmx0GM=
Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:references:subject:date:message-id:mime-version :content-type:x-mailer:in-reply-to:thread-index:x-mimeole; b=pvXKvqXrhp2B+Ln0MYX21p6mYn//MiOGSep+f3fRYNlNoiSuALe+S9mfsGd+QXUxlj 09kN/BV9sipQGjWugfx9US/FnH96elZeDFLZ3qFj8Pyb9WAIXYeAIWWJq3fdl8HVxDZE SuGEnb7Mt9NfO3z3IQYohVhGb9r7BEruEsNbg=
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <C6A834AA.11E9D%keir.fraser@xxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <65A1F38D1CBF4B3E9F262F4FD3D01A91@xpjpn> <C6A834AA.11E9D%keir.fraser@xxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: Acoa8r/5gPp6Qi5vSqWmE3+LHCGKRQAL+ch1AAhh8kA=
Hello Keir,
You are right and good points. Thank you. I did not aware them because only
environment I test is x86_64. How about this? I am glad if you check in. I
regularly update my local source code by "hg pull; hg up".
-caz

-----Original Message-----
From: Keir Fraser [mailto:keir.fraser@xxxxxxxxxxxxx] 
Sent: Wednesday, August 12, 2009 12:58 AM
To: Caz Yokoyama; xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: Re: [Xen-devel] [PATCH] fix the bug of gdb which debugs xen.

I don't know whether you intend this for immediate checkin, but anyway:

 * Don't delete the sysenter logic in traps.c, leave it.
 * I'm not sure about swap64() in gdbstub.c. The value may not be 64 bits
(e.g., running on i386), or the system may not be little endian. Might be
better to define an alternative to str2ulong() which is endian aware, like
gdb_write_to_packet_hex().

 -- Keir

On 12/08/2009 03:15, "Caz Yokoyama" <cazyokoyama@xxxxxxxxx> wrote:

> Hello,
> This patch fixes the bug of gdb which debugs Xen hypervisor, i.e. not
domU. As
> Emre Can Sezer reported in
> http://lists.xensource.com/archives/html/xen-devel/2009-01/msg00885.html,
once
> break point is hit, continue command produces SIGTRAP at
restore_all_xen().
> This patch makes continue command resume Xen running. I still see other
bugs
> like backtrace command does not show function name. But I hope this helps
your
> debug.
> FYI, related postings.
> http://lists.xensource.com/archives/html/xen-devel/2007-12/msg00678.html
>
http://www.filewatcher.com/p/xen_2.0.6.orig.tar.gz.2456215/xen-2.0/docs/misc
/X
> enDebugger-HOWTO.html
>  
> connect gdb on step command
> --- a/xen/arch/x86/traps.c      Thu Aug 06 13:27:53 2009 +0100
> +++ b/xen/arch/x86/traps.c      Tue Aug 11 18:15:25 2009 -0700
> @@ -2977,13 +2977,7 @@
>         if ( regs->eflags & EF_TF )
>         {
>  #ifdef __x86_64__
> -           void sysenter_entry(void);
> -           void sysenter_eflags_saved(void);
> -           /* In SYSENTER entry path we can't zap TF until EFLAGS is
saved.
> */
> -           if ( (regs->rip >= (unsigned long)sysenter_entry) &&
> -                (regs->rip < (unsigned long)sysenter_eflags_saved) )
> -               goto out;
> -           WARN_ON(regs->rip != (unsigned long)sysenter_eflags_saved);
> +           debugger_trap_fatal(TRAP_debug, regs);
>  #else
>             WARN_ON(1);
>  #endif
>  
> Value of gdb command is little endian.
> diff -r 13fe7f07df15 xen/common/gdbstub.c
> --- a/xen/common/gdbstub.c      Thu Aug 06 13:27:53 2009 +0100
> +++ b/xen/common/gdbstub.c      Tue Aug 11 18:15:25 2009 -0700
> @@ -53,6 +53,10 @@
>  
>  #define GDB_RETRY_MAX   10
>  
> +#define swap16(_v) ((((u16)(_v)>>8)&0xff)|(((u16)(_v)&0xff)<<8))
> +#define swap32(_v)
> (((u32)swap16((u16)(_v))<<16)|(u32)swap16((u32)((_v)>>16)))
> +#define swap64(_v)
> (((u64)swap32((u32)(_v))<<32)|(u64)swap32((u32)((_v)>>32)))
> +
>  struct gdb_cpu_info
>  {
>      atomic_t paused;
> @@ -489,6 +493,7 @@
>         }
>         ptr++;
>         val = str2ulong(ptr, sizeof(unsigned long));
> +       val = swap64(val);
>         gdb_arch_write_reg(addr, val, regs, ctx);
>         break;
>     case 'D':
>  
> Thank you.
> -Caz Yokoyama, caz at caztech dot com. 503-804-1028(m).
>  
> 

Attachment: XenGdb.patch
Description: Binary data

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel