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

[Xen-devel] Re: [PATCH 08/15] xen/trace: add segment desc tracing

To: Jeremy Fitzhardinge <jeremy@xxxxxxxx>
Subject: [Xen-devel] Re: [PATCH 08/15] xen/trace: add segment desc tracing
From: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
Date: Tue, 21 Jun 2011 10:03:31 -0400
Cc: Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx>, Xen Devel <Xen-devel@xxxxxxxxxxxxxxxxxxx>, Ingo Molnar <mingo@xxxxxxxxxx>, Steven Rostedt <rostedt@xxxxxxxxxxx>, Linux Kernel Mailing List <linux-kernel@xxxxxxxxxxxxxxx>
Delivery-date: Tue, 21 Jun 2011 07:08:47 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <834e06a069d43f0cd34794326aaa7094cd53433b.1308607697.git.jeremy.fitzhardinge@xxxxxxxxxx>
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: <cover.1308607697.git.jeremy.fitzhardinge@xxxxxxxxxx> <834e06a069d43f0cd34794326aaa7094cd53433b.1308607697.git.jeremy.fitzhardinge@xxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.5.21 (2010-09-15)
On Mon, Jun 20, 2011 at 03:15:04PM -0700, Jeremy Fitzhardinge wrote:
> From: Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx>
> 
> Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx>
> ---
>  arch/x86/xen/enlighten.c   |   16 +++++++++-
>  include/trace/events/xen.h |   75 
> ++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 90 insertions(+), 1 deletions(-)
> 
> diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
> index dd7b88f..fa4e2d2 100644
> --- a/arch/x86/xen/enlighten.c
> +++ b/arch/x86/xen/enlighten.c
> @@ -341,6 +341,8 @@ static void xen_set_ldt(const void *addr, unsigned 
> entries)
>       struct mmuext_op *op;
>       struct multicall_space mcs = xen_mc_entry(sizeof(*op));
>  
> +     trace_xen_cpu_set_ldt(addr, entries);
> +
>       op = mcs.args;
>       op->cmd = MMUEXT_SET_LDT;
>       op->arg1.linear_addr = (unsigned long)addr;
> @@ -496,6 +498,8 @@ static void xen_write_ldt_entry(struct desc_struct *dt, 
> int entrynum,
>       xmaddr_t mach_lp = arbitrary_virt_to_machine(&dt[entrynum]);
>       u64 entry = *(u64 *)ptr;
>  
> +     trace_xen_cpu_write_ldt_entry(dt, entrynum, entry);
> +
>       preempt_disable();
>  
>       xen_mc_flush();
> @@ -565,6 +569,8 @@ static void xen_write_idt_entry(gate_desc *dt, int 
> entrynum, const gate_desc *g)
>       unsigned long p = (unsigned long)&dt[entrynum];
>       unsigned long start, end;
>  
> +     trace_xen_cpu_write_idt_entry(dt, entrynum, g);
> +
>       preempt_disable();
>  
>       start = __this_cpu_read(idt_desc.address);
> @@ -619,6 +625,8 @@ static void xen_load_idt(const struct desc_ptr *desc)
>       static DEFINE_SPINLOCK(lock);
>       static struct trap_info traps[257];
>  
> +     trace_xen_cpu_load_idt(desc);
> +
>       spin_lock(&lock);
>  
>       __get_cpu_var(idt_desc) = *desc;
> @@ -637,6 +645,8 @@ static void xen_load_idt(const struct desc_ptr *desc)
>  static void xen_write_gdt_entry(struct desc_struct *dt, int entry,
>                               const void *desc, int type)
>  {
> +     trace_xen_cpu_write_gdt_entry(dt, entry, desc, type);
> +
>       preempt_disable();
>  
>       switch (type) {
> @@ -665,6 +675,8 @@ static void xen_write_gdt_entry(struct desc_struct *dt, 
> int entry,
>  static void __init xen_write_gdt_entry_boot(struct desc_struct *dt, int 
> entry,
>                                           const void *desc, int type)
>  {
> +     trace_xen_cpu_write_gdt_entry(dt, entry, desc, type);
> +
>       switch (type) {
>       case DESC_LDT:
>       case DESC_TSS:
> @@ -684,7 +696,9 @@ static void __init xen_write_gdt_entry_boot(struct 
> desc_struct *dt, int entry,
>  static void xen_load_sp0(struct tss_struct *tss,
>                        struct thread_struct *thread)
>  {
> -     struct multicall_space mcs = xen_mc_entry(0);
> +     struct multicall_space mcs;
> +
> +     mcs = xen_mc_entry(0);

<scratches his head> Is this prepping it for another commit?

>       MULTI_stack_switch(mcs.mc, __KERNEL_DS, thread->sp0);
>       xen_mc_issue(PARAVIRT_LAZY_CPU);
>  }
> diff --git a/include/trace/events/xen.h b/include/trace/events/xen.h
> index 5811c24..b1f73c4 100644
> --- a/include/trace/events/xen.h
> +++ b/include/trace/events/xen.h
> @@ -405,6 +405,81 @@ TRACE_EVENT(xen_mmu_pgd_unpin,
>           TP_printk("mm %p pgd %p", __entry->mm, __entry->pgd)
>       );
>  
> +/* CPU */
> +TRACE_EVENT(xen_cpu_write_ldt_entry,
> +         TP_PROTO(struct desc_struct *dt, int entrynum, u64 desc),
> +         TP_ARGS(dt, entrynum, desc),
> +         TP_STRUCT__entry(
> +                 __field(struct desc_struct *, dt)
> +                 __field(int, entrynum)
> +                 __field(u64, desc)
> +                 ),
> +         TP_fast_assign(__entry->dt = dt;
> +                        __entry->entrynum = entrynum;
> +                        __entry->desc = desc;
> +                 ),
> +         TP_printk("dt %p  entrynum %d  entry %016llx",
> +                   __entry->dt, __entry->entrynum,
> +                   (unsigned long long)__entry->desc)
> +     );
> +
> +TRACE_EVENT(xen_cpu_write_idt_entry,
> +         TP_PROTO(gate_desc *dt, int entrynum, const gate_desc *ent),
> +         TP_ARGS(dt, entrynum, ent),
> +         TP_STRUCT__entry(
> +                 __field(gate_desc *, dt)
> +                 __field(int, entrynum)
> +                 ),
> +         TP_fast_assign(__entry->dt = dt;
> +                        __entry->entrynum = entrynum;
> +                 ),
> +         TP_printk("dt %p  entrynum %d",
> +                   __entry->dt, __entry->entrynum)
> +     );

The 'ent' isn't being printed?

> +
> +TRACE_EVENT(xen_cpu_load_idt,
> +         TP_PROTO(const struct desc_ptr *desc),
> +         TP_ARGS(desc),
> +         TP_STRUCT__entry(
> +                 __field(unsigned long, addr)
> +                 ),
> +         TP_fast_assign(__entry->addr = desc->address),
> +         TP_printk("addr %lx", __entry->addr)
> +     );
> +
> +TRACE_EVENT(xen_cpu_write_gdt_entry,
> +         TP_PROTO(struct desc_struct *dt, int entrynum, const void *desc, 
> int type),
> +         TP_ARGS(dt, entrynum, desc, type),
> +         TP_STRUCT__entry(
> +                 __field(struct desc_struct *, dt)
> +                 __field(int, entrynum)
> +                 __field(int, type)
> +                 __field(u64, desc)

The order here is different from the arguments.
> +                 ),
> +         TP_fast_assign(__entry->dt = dt;
> +                        __entry->entrynum = entrynum;
> +                        __entry->type = type;
> +                        __entry->desc = *(u64 *)desc;
> +                 ),

Ditto
> +         TP_printk("dt %p  entrynum %d  type %d  desc %016llx",
> +                   __entry->dt, __entry->entrynum, __entry->type,
> +                   (unsigned long long)__entry->desc)
> +     );
> +
> +TRACE_EVENT(xen_cpu_set_ldt,
> +         TP_PROTO(const void *addr, unsigned entries),
> +         TP_ARGS(addr, entries),
> +         TP_STRUCT__entry(
> +                 __field(const void *, addr)
> +                 __field(unsigned, entries)
> +                 ),
> +         TP_fast_assign(__entry->addr = addr;
> +                        __entry->entries = entries),
> +         TP_printk("addr %p  entries %u",
> +                   __entry->addr, __entry->entries)
> +     );
> +
> +
>  #endif /*  _TRACE_XEN_H */
>  
>  /* This part must be outside protection */
> -- 
> 1.7.5.4

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

<Prev in Thread] Current Thread [Next in Thread>