[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] nested virtualization: tracing capabilities



At 15:26 +0100 on 07 Apr (1302189962), Christoph Egger wrote:
> # HG changeset patch
> # User cegger
> # Date 1302180533 -7200
> Tracing facility for nested virtualization
> 
> Signed-off-by: Christoph Egger <Christoph.Egger@xxxxxxx>
> 
> diff -r ee39668a7840 -r aef9e2deb9a7 tools/xentrace/formats
> --- a/tools/xentrace/formats
> +++ b/tools/xentrace/formats
> @@ -5,6 +5,7 @@ 0x0001f002  CPU%(cpu)d  %(tsc)d (+%(relt
>  0x0001f003  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  cpu_change        0x%(1)08x
>  0x0001f004  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  trace_irq    [ vector = 
> %(1)d, count = %(2)d, tot_cycles = 0x%(3)08x, max_cycles = 0x%(4)08x ]
>  
> +0x00021002  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  continue_running    [ 
> dom:vcpu = 0x%(1)08x ]
>  0x00021011  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  running_to_runnable [ 
> dom:vcpu = 0x%(1)08x ]
>  0x00021021  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  running_to_blocked  [ 
> dom:vcpu = 0x%(1)08x ]
>  0x00021031  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  running_to_offline  [ 
> dom:vcpu = 0x%(1)08x ]
> @@ -34,7 +35,10 @@ 0x0002800d  CPU%(cpu)d  %(tsc)d (+%(relt
>  0x0002800e  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  switch_infprev    [ 
> old_domid = 0x%(1)08x, runtime = %(2)d ]
>  0x0002800f  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  switch_infnext    [ 
> new_domid = 0x%(1)08x, time = %(2)d, r_time = %(3)d ]
>  
> -0x00081001  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  VMENTRY
> +0x00081401  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  nVMENTRY    [ rIP = 
> 0x%(1)08x ]
> +0x00081402  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  nVMEXIT     [ exitcode = 
> 0x%(1)08x, rIP  = 0x%(2)08x, intercepted = 0x%(5)01x ]
> +0x00081502  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  nVMEXIT     [ exitcode = 
> 0x%(1)08x, rIP  = 0x%(3)08x%(2)08x, intercepted = 0x%(6)01x ]
> +0x00081001  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  VMENTRY     [ rIP = 
> 0x%(1)08x ]

Shouldn't these be kept in numerical order?

> diff -r ee39668a7840 -r aef9e2deb9a7 xen/arch/x86/hvm/emulate.c
> --- a/xen/arch/x86/hvm/emulate.c
> +++ b/xen/arch/x86/hvm/emulate.c
> @@ -45,6 +45,9 @@ static void hvmtrace_io_assist(int is_mm
>          size += 4;
>      }
>  
> +    *(uint32_t *)&buffer[size] = guest_cpu_user_regs()->eip;
> +    size += 4;
> +

...unconditionally overruning a stack buffer with a guest register. 

>      trace_var(event, 0/*!cycles*/, size, buffer);
>  }
>  
> @@ -153,8 +156,6 @@ static int hvmemul_do_io(
>      p->df = df;
>      p->data = value;
>  
> -    hvmtrace_io_assist(is_mmio, p);
> -
>      if ( is_mmio )
>      {
>          rc = hvm_mmio_intercept(p);
> @@ -166,6 +167,8 @@ static int hvmemul_do_io(
>          rc = hvm_portio_intercept(p);
>      }
>  
> +    hvmtrace_io_assist(is_mmio, p);
> +

Why so?

Tim.

-- 
Tim Deegan <Tim.Deegan@xxxxxxxxxx>
Principal Software Engineer, Xen Platform Team
Citrix Systems UK Ltd.  (Company #02937203, SL9 0BG)

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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.