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] [PATCH 08/15] xen/trace: add segment desc tracing

To: Xen Devel <Xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] [PATCH 08/15] xen/trace: add segment desc tracing
From: Jeremy Fitzhardinge <jeremy@xxxxxxxx>
Date: Mon, 20 Jun 2011 15:15:04 -0700
Cc: Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx>, Ingo Molnar <mingo@xxxxxxxxxx>, Linux Kernel Mailing List <linux-kernel@xxxxxxxxxxxxxxx>, Steven Rostedt <rostedt@xxxxxxxxxxx>, Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
Delivery-date: Mon, 20 Jun 2011 15:26:55 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <cover.1308607697.git.jeremy.fitzhardinge@xxxxxxxxxx>
In-reply-to: <cover.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>
References: <cover.1308607697.git.jeremy.fitzhardinge@xxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
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);
        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)
+       );
+
+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)
+                   ),
+           TP_fast_assign(__entry->dt = dt;
+                          __entry->entrynum = entrynum;
+                          __entry->type = type;
+                          __entry->desc = *(u64 *)desc;
+                   ),
+           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>