diff options
author | Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> | 2010-12-20 16:15:04 -0500 |
---|---|---|
committer | Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> | 2011-07-18 18:43:27 -0400 |
commit | c8eed1719afb337472c5ef31ec590d549770b173 (patch) | |
tree | ead8933db533218a1c8fbd11e0d68c1bac938b11 | |
parent | ab78f7ad2c78fb1b724b278479adec998933be36 (diff) |
xen/trace: add tlb flush tracepoints
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
-rw-r--r-- | arch/x86/xen/mmu.c | 8 | ||||
-rw-r--r-- | include/trace/events/xen.h | 48 |
2 files changed, 56 insertions, 0 deletions
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c index 5dfa90a7ad18..c3abba17ab00 100644 --- a/arch/x86/xen/mmu.c +++ b/arch/x86/xen/mmu.c | |||
@@ -1222,6 +1222,8 @@ static void xen_flush_tlb(void) | |||
1222 | struct mmuext_op *op; | 1222 | struct mmuext_op *op; |
1223 | struct multicall_space mcs; | 1223 | struct multicall_space mcs; |
1224 | 1224 | ||
1225 | trace_xen_mmu_flush_tlb(0); | ||
1226 | |||
1225 | preempt_disable(); | 1227 | preempt_disable(); |
1226 | 1228 | ||
1227 | mcs = xen_mc_entry(sizeof(*op)); | 1229 | mcs = xen_mc_entry(sizeof(*op)); |
@@ -1240,6 +1242,8 @@ static void xen_flush_tlb_single(unsigned long addr) | |||
1240 | struct mmuext_op *op; | 1242 | struct mmuext_op *op; |
1241 | struct multicall_space mcs; | 1243 | struct multicall_space mcs; |
1242 | 1244 | ||
1245 | trace_xen_mmu_flush_tlb_single(addr); | ||
1246 | |||
1243 | preempt_disable(); | 1247 | preempt_disable(); |
1244 | 1248 | ||
1245 | mcs = xen_mc_entry(sizeof(*op)); | 1249 | mcs = xen_mc_entry(sizeof(*op)); |
@@ -1266,6 +1270,8 @@ static void xen_flush_tlb_others(const struct cpumask *cpus, | |||
1266 | } *args; | 1270 | } *args; |
1267 | struct multicall_space mcs; | 1271 | struct multicall_space mcs; |
1268 | 1272 | ||
1273 | trace_xen_mmu_flush_tlb_others(cpus, mm, va); | ||
1274 | |||
1269 | if (cpumask_empty(cpus)) | 1275 | if (cpumask_empty(cpus)) |
1270 | return; /* nothing to do */ | 1276 | return; /* nothing to do */ |
1271 | 1277 | ||
@@ -1305,6 +1311,8 @@ static void __xen_write_cr3(bool kernel, unsigned long cr3) | |||
1305 | struct multicall_space mcs; | 1311 | struct multicall_space mcs; |
1306 | unsigned long mfn; | 1312 | unsigned long mfn; |
1307 | 1313 | ||
1314 | trace_xen_mmu_write_cr3(kernel, cr3); | ||
1315 | |||
1308 | if (cr3) | 1316 | if (cr3) |
1309 | mfn = pfn_to_mfn(PFN_DOWN(cr3)); | 1317 | mfn = pfn_to_mfn(PFN_DOWN(cr3)); |
1310 | else | 1318 | else |
diff --git a/include/trace/events/xen.h b/include/trace/events/xen.h index 1dda50834f9c..1f71f2297c00 100644 --- a/include/trace/events/xen.h +++ b/include/trace/events/xen.h | |||
@@ -405,6 +405,54 @@ TRACE_EVENT(xen_mmu_pgd_unpin, | |||
405 | TP_printk("mm %p pgd %p", __entry->mm, __entry->pgd) | 405 | TP_printk("mm %p pgd %p", __entry->mm, __entry->pgd) |
406 | ); | 406 | ); |
407 | 407 | ||
408 | TRACE_EVENT(xen_mmu_flush_tlb, | ||
409 | TP_PROTO(int x), | ||
410 | TP_ARGS(x), | ||
411 | TP_STRUCT__entry(__array(char, x, 0)), | ||
412 | TP_fast_assign((void)x), | ||
413 | TP_printk("%s", "") | ||
414 | ); | ||
415 | |||
416 | TRACE_EVENT(xen_mmu_flush_tlb_single, | ||
417 | TP_PROTO(unsigned long addr), | ||
418 | TP_ARGS(addr), | ||
419 | TP_STRUCT__entry( | ||
420 | __field(unsigned long, addr) | ||
421 | ), | ||
422 | TP_fast_assign(__entry->addr = addr), | ||
423 | TP_printk("addr %lx", __entry->addr) | ||
424 | ); | ||
425 | |||
426 | TRACE_EVENT(xen_mmu_flush_tlb_others, | ||
427 | TP_PROTO(const struct cpumask *cpus, struct mm_struct *mm, | ||
428 | unsigned long addr), | ||
429 | TP_ARGS(cpus, mm, addr), | ||
430 | TP_STRUCT__entry( | ||
431 | __field(unsigned, ncpus) | ||
432 | __field(struct mm_struct *, mm) | ||
433 | __field(unsigned long, addr) | ||
434 | ), | ||
435 | TP_fast_assign(__entry->ncpus = cpumask_weight(cpus); | ||
436 | __entry->mm = mm; | ||
437 | __entry->addr = addr), | ||
438 | TP_printk("ncpus %d mm %p addr %lx", | ||
439 | __entry->ncpus, __entry->mm, __entry->addr) | ||
440 | ); | ||
441 | |||
442 | TRACE_EVENT(xen_mmu_write_cr3, | ||
443 | TP_PROTO(bool kernel, unsigned long cr3), | ||
444 | TP_ARGS(kernel, cr3), | ||
445 | TP_STRUCT__entry( | ||
446 | __field(bool, kernel) | ||
447 | __field(unsigned long, cr3) | ||
448 | ), | ||
449 | TP_fast_assign(__entry->kernel = kernel; | ||
450 | __entry->cr3 = cr3), | ||
451 | TP_printk("%s cr3 %lx", | ||
452 | __entry->kernel ? "kernel" : "user", __entry->cr3) | ||
453 | ); | ||
454 | |||
455 | |||
408 | /* CPU */ | 456 | /* CPU */ |
409 | TRACE_EVENT(xen_cpu_write_ldt_entry, | 457 | TRACE_EVENT(xen_cpu_write_ldt_entry, |
410 | TP_PROTO(struct desc_struct *dt, int entrynum, u64 desc), | 458 | TP_PROTO(struct desc_struct *dt, int entrynum, u64 desc), |