remove lttng, it didn't build properly and no one seems to care about it.
diff --git a/patches.ktap/ktap-0.4.patch b/patches.ktap/ktap-0.4.patch
index dda586c..eee5885 100644
--- a/patches.ktap/ktap-0.4.patch
+++ b/patches.ktap/ktap-0.4.patch
@@ -242,19 +242,19 @@
 
 --- a/drivers/staging/Kconfig
 +++ b/drivers/staging/Kconfig
-@@ -148,4 +148,6 @@ source "drivers/staging/dgap/Kconfig"
+@@ -146,4 +146,6 @@ source "drivers/staging/dgnc/Kconfig"
  
- source "drivers/staging/lttng/Kconfig"
+ source "drivers/staging/dgap/Kconfig"
  
 +source "drivers/staging/ktap/Kconfig"
 +
  endif # STAGING
 --- a/drivers/staging/Makefile
 +++ b/drivers/staging/Makefile
-@@ -66,3 +66,4 @@ obj-$(CONFIG_DGNC)			+= dgnc/
+@@ -65,3 +65,4 @@ obj-$(CONFIG_XILLYBUS)		+= xillybus/
+ obj-$(CONFIG_DGNC)			+= dgnc/
  obj-$(CONFIG_DGAP)			+= dgap/
  obj-$(CONFIG_MTD_SPINAND_MT29F)	+= mt29f_spinand/
- obj-$(CONFIG_LTTNG)		+= lttng/
 +obj-$(CONFIG_KTAP)              += ktap/
 --- /dev/null
 +++ b/drivers/staging/ktap/Kconfig
diff --git a/patches.lttng/lttng-2.3.4.patch b/patches.lttng/lttng-2.3.4.patch
deleted file mode 100644
index a8937f0..0000000
--- a/patches.lttng/lttng-2.3.4.patch
+++ /dev/null
@@ -1,69697 +0,0 @@
-From foo@baz Fri Dec 27 13:11:07 PST 2013
-Date: Mon, Dec 9 12:34:09 2013 -0800
-To: Greg KH <gregkh@linuxfoundation.org>
-From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
-Subject: LTTng 2.3.4 release
-
-This was taken from the git://git.lttng.org/lttng-modules.git stable-2.3
-branch, and turned into a patch for the 3.10.y kernel by Greg.
-
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
-
----
- MAINTAINERS                                                                                           |    7 
- drivers/staging/Kconfig                                                                               |    2 
- drivers/staging/Makefile                                                                              |    1 
- drivers/staging/lttng/Kconfig                                                                         |   35 
- drivers/staging/lttng/LICENSE                                                                         |   27 
- drivers/staging/lttng/Makefile                                                                        |   38 
- drivers/staging/lttng/README                                                                          |   93 
- drivers/staging/lttng/TODO                                                                            |  117 
- drivers/staging/lttng/instrumentation/events/README                                                   |   27 
- drivers/staging/lttng/instrumentation/events/lttng-module/arch/x86/kvm/mmutrace.h                     |  285 
- drivers/staging/lttng/instrumentation/events/lttng-module/arch/x86/kvm/trace.h                        |  833 ++
- drivers/staging/lttng/instrumentation/events/lttng-module/asoc.h                                      |  422 +
- drivers/staging/lttng/instrumentation/events/lttng-module/block.h                                     |  878 ++
- drivers/staging/lttng/instrumentation/events/lttng-module/btrfs.h                                     | 1117 +++
- drivers/staging/lttng/instrumentation/events/lttng-module/compaction.h                                |   74 
- drivers/staging/lttng/instrumentation/events/lttng-module/ext3.h                                      |  902 ++
- drivers/staging/lttng/instrumentation/events/lttng-module/ext4.h                                      | 3130 ++++++++++
- drivers/staging/lttng/instrumentation/events/lttng-module/gpio.h                                      |   56 
- drivers/staging/lttng/instrumentation/events/lttng-module/irq.h                                       |  220 
- drivers/staging/lttng/instrumentation/events/lttng-module/jbd.h                                       |  268 
- drivers/staging/lttng/instrumentation/events/lttng-module/jbd2.h                                      |  280 
- drivers/staging/lttng/instrumentation/events/lttng-module/kmem.h                                      |  380 +
- drivers/staging/lttng/instrumentation/events/lttng-module/kvm.h                                       |  356 +
- drivers/staging/lttng/instrumentation/events/lttng-module/lock.h                                      |  207 
- drivers/staging/lttng/instrumentation/events/lttng-module/lttng-statedump.h                           |  166 
- drivers/staging/lttng/instrumentation/events/lttng-module/module.h                                    |  157 
- drivers/staging/lttng/instrumentation/events/lttng-module/napi.h                                      |   38 
- drivers/staging/lttng/instrumentation/events/lttng-module/net.h                                       |  105 
- drivers/staging/lttng/instrumentation/events/lttng-module/power.h                                     |  351 +
- drivers/staging/lttng/instrumentation/events/lttng-module/printk.h                                    |   83 
- drivers/staging/lttng/instrumentation/events/lttng-module/random.h                                    |  152 
- drivers/staging/lttng/instrumentation/events/lttng-module/rcu.h                                       |  763 ++
- drivers/staging/lttng/instrumentation/events/lttng-module/regmap.h                                    |  188 
- drivers/staging/lttng/instrumentation/events/lttng-module/regulator.h                                 |  141 
- drivers/staging/lttng/instrumentation/events/lttng-module/rpm.h                                       |  101 
- drivers/staging/lttng/instrumentation/events/lttng-module/sched.h                                     |  560 +
- drivers/staging/lttng/instrumentation/events/lttng-module/scsi.h                                      |  406 +
- drivers/staging/lttng/instrumentation/events/lttng-module/signal.h                                    |  202 
- drivers/staging/lttng/instrumentation/events/lttng-module/skb.h                                       |   84 
- drivers/staging/lttng/instrumentation/events/lttng-module/sock.h                                      |   68 
- drivers/staging/lttng/instrumentation/events/lttng-module/sunrpc.h                                    |  177 
- drivers/staging/lttng/instrumentation/events/lttng-module/syscalls.h                                  |   76 
- drivers/staging/lttng/instrumentation/events/lttng-module/timer.h                                     |  336 +
- drivers/staging/lttng/instrumentation/events/lttng-module/udp.h                                       |   32 
- drivers/staging/lttng/instrumentation/events/lttng-module/vmscan.h                                    |  594 +
- drivers/staging/lttng/instrumentation/events/lttng-module/workqueue.h                                 |  219 
- drivers/staging/lttng/instrumentation/events/lttng-module/writeback.h                                 |  617 +
- drivers/staging/lttng/instrumentation/events/mainline/arch/x86/kvm/mmutrace.h                         |  285 
- drivers/staging/lttng/instrumentation/events/mainline/arch/x86/kvm/trace.h                            |  828 ++
- drivers/staging/lttng/instrumentation/events/mainline/asoc.h                                          |  410 +
- drivers/staging/lttng/instrumentation/events/mainline/block.h                                         |  571 +
- drivers/staging/lttng/instrumentation/events/mainline/btrfs.h                                         |  918 ++
- drivers/staging/lttng/instrumentation/events/mainline/compaction.h                                    |   74 
- drivers/staging/lttng/instrumentation/events/mainline/ext3.h                                          |  864 ++
- drivers/staging/lttng/instrumentation/events/mainline/ext4.h                                          | 2061 ++++++
- drivers/staging/lttng/instrumentation/events/mainline/gpio.h                                          |   56 
- drivers/staging/lttng/instrumentation/events/mainline/irq.h                                           |  150 
- drivers/staging/lttng/instrumentation/events/mainline/jbd.h                                           |  194 
- drivers/staging/lttng/instrumentation/events/mainline/jbd2.h                                          |  262 
- drivers/staging/lttng/instrumentation/events/mainline/kmem.h                                          |  308 
- drivers/staging/lttng/instrumentation/events/mainline/kvm.h                                           |  312 
- drivers/staging/lttng/instrumentation/events/mainline/lock.h                                          |   86 
- drivers/staging/lttng/instrumentation/events/mainline/module.h                                        |  131 
- drivers/staging/lttng/instrumentation/events/mainline/napi.h                                          |   38 
- drivers/staging/lttng/instrumentation/events/mainline/net.h                                           |   84 
- drivers/staging/lttng/instrumentation/events/mainline/power.h                                         |  275 
- drivers/staging/lttng/instrumentation/events/mainline/printk.h                                        |   41 
- drivers/staging/lttng/instrumentation/events/mainline/random.h                                        |  134 
- drivers/staging/lttng/instrumentation/events/mainline/rcu.h                                           |  618 +
- drivers/staging/lttng/instrumentation/events/mainline/regmap.h                                        |  181 
- drivers/staging/lttng/instrumentation/events/mainline/regulator.h                                     |  141 
- drivers/staging/lttng/instrumentation/events/mainline/rpm.h                                           |  100 
- drivers/staging/lttng/instrumentation/events/mainline/sched.h                                         |  432 +
- drivers/staging/lttng/instrumentation/events/mainline/scsi.h                                          |  365 +
- drivers/staging/lttng/instrumentation/events/mainline/signal.h                                        |  125 
- drivers/staging/lttng/instrumentation/events/mainline/skb.h                                           |   75 
- drivers/staging/lttng/instrumentation/events/mainline/sock.h                                          |   68 
- drivers/staging/lttng/instrumentation/events/mainline/sunrpc.h                                        |  177 
- drivers/staging/lttng/instrumentation/events/mainline/syscalls.h                                      |   75 
- drivers/staging/lttng/instrumentation/events/mainline/timer.h                                         |  329 +
- drivers/staging/lttng/instrumentation/events/mainline/udp.h                                           |   32 
- drivers/staging/lttng/instrumentation/events/mainline/vmscan.h                                        |  383 +
- drivers/staging/lttng/instrumentation/events/mainline/workqueue.h                                     |  121 
- drivers/staging/lttng/instrumentation/events/mainline/writeback.h                                     |  492 +
- drivers/staging/lttng/instrumentation/syscalls/3.0.34/powerpc-32-syscalls-3.0.34                      |  286 
- drivers/staging/lttng/instrumentation/syscalls/3.1.0-rc6/x86-32-syscalls-3.1.0-rc6                    |  291 
- drivers/staging/lttng/instrumentation/syscalls/3.10.0-rc7/x86-64-syscalls-3.10.0-rc7                  |  290 
- drivers/staging/lttng/instrumentation/syscalls/3.4.25/arm-32-syscalls-3.4.25                          |  299 
- drivers/staging/lttng/instrumentation/syscalls/3.5.0/mips-32-syscalls-3.5.0                           |  141 
- drivers/staging/lttng/instrumentation/syscalls/3.5.0/mips-64-syscalls-3.5.0                           |  289 
- drivers/staging/lttng/instrumentation/syscalls/README                                                 |   18 
- drivers/staging/lttng/instrumentation/syscalls/headers/arm-32-syscalls-3.4.25_integers.h              | 1181 +++
- drivers/staging/lttng/instrumentation/syscalls/headers/arm-32-syscalls-3.4.25_integers_override.h     |   52 
- drivers/staging/lttng/instrumentation/syscalls/headers/arm-32-syscalls-3.4.25_pointers.h              | 2316 +++++++
- drivers/staging/lttng/instrumentation/syscalls/headers/arm-32-syscalls-3.4.25_pointers_override.h     |   39 
- drivers/staging/lttng/instrumentation/syscalls/headers/compat_syscalls_integers.h                     |    3 
- drivers/staging/lttng/instrumentation/syscalls/headers/compat_syscalls_pointers.h                     |    3 
- drivers/staging/lttng/instrumentation/syscalls/headers/mips-32-syscalls-3.5.0_integers.h              |  677 ++
- drivers/staging/lttng/instrumentation/syscalls/headers/mips-32-syscalls-3.5.0_integers_override.h     |    3 
- drivers/staging/lttng/instrumentation/syscalls/headers/mips-32-syscalls-3.5.0_pointers.h              |  984 +++
- drivers/staging/lttng/instrumentation/syscalls/headers/mips-32-syscalls-3.5.0_pointers_override.h     |    8 
- drivers/staging/lttng/instrumentation/syscalls/headers/mips-64-syscalls-3.5.0_integers.h              | 1163 +++
- drivers/staging/lttng/instrumentation/syscalls/headers/mips-64-syscalls-3.5.0_integers_override.h     |    3 
- drivers/staging/lttng/instrumentation/syscalls/headers/mips-64-syscalls-3.5.0_pointers.h              | 2232 +++++++
- drivers/staging/lttng/instrumentation/syscalls/headers/mips-64-syscalls-3.5.0_pointers_override.h     |    8 
- drivers/staging/lttng/instrumentation/syscalls/headers/powerpc-32-syscalls-3.0.34_integers.h          | 1043 +++
- drivers/staging/lttng/instrumentation/syscalls/headers/powerpc-32-syscalls-3.0.34_integers_override.h |    9 
- drivers/staging/lttng/instrumentation/syscalls/headers/powerpc-32-syscalls-3.0.34_pointers.h          | 2316 +++++++
- drivers/staging/lttng/instrumentation/syscalls/headers/powerpc-32-syscalls-3.0.34_pointers_override.h |   36 
- drivers/staging/lttng/instrumentation/syscalls/headers/syscalls_integers.h                            |   15 
- drivers/staging/lttng/instrumentation/syscalls/headers/syscalls_integers_override.h                   |   14 
- drivers/staging/lttng/instrumentation/syscalls/headers/syscalls_pointers.h                            |   15 
- drivers/staging/lttng/instrumentation/syscalls/headers/syscalls_pointers_override.h                   |   53 
- drivers/staging/lttng/instrumentation/syscalls/headers/syscalls_unknown.h                             |   55 
- drivers/staging/lttng/instrumentation/syscalls/headers/x86-32-syscalls-3.1.0-rc6_integers.h           | 1163 +++
- drivers/staging/lttng/instrumentation/syscalls/headers/x86-32-syscalls-3.1.0-rc6_integers_override.h  |   38 
- drivers/staging/lttng/instrumentation/syscalls/headers/x86-32-syscalls-3.1.0-rc6_pointers.h           | 2232 +++++++
- drivers/staging/lttng/instrumentation/syscalls/headers/x86-32-syscalls-3.1.0-rc6_pointers_override.h  |   33 
- drivers/staging/lttng/instrumentation/syscalls/headers/x86-64-syscalls-3.10.0-rc7_integers.h          | 1097 +++
- drivers/staging/lttng/instrumentation/syscalls/headers/x86-64-syscalls-3.10.0-rc7_integers_override.h |    3 
- drivers/staging/lttng/instrumentation/syscalls/headers/x86-64-syscalls-3.10.0-rc7_pointers.h          | 2304 +++++++
- drivers/staging/lttng/instrumentation/syscalls/headers/x86-64-syscalls-3.10.0-rc7_pointers_override.h |   12 
- drivers/staging/lttng/instrumentation/syscalls/lttng-syscalls-extractor/Makefile                      |    1 
- drivers/staging/lttng/instrumentation/syscalls/lttng-syscalls-extractor/lttng-syscalls-extractor.c    |  100 
- drivers/staging/lttng/instrumentation/syscalls/lttng-syscalls-generate-headers.sh                     |  279 
- drivers/staging/lttng/lib/Makefile                                                                    |   11 
- drivers/staging/lttng/lib/align.h                                                                     |   73 
- drivers/staging/lttng/lib/bitfield.h                                                                  |  408 +
- drivers/staging/lttng/lib/bug.h                                                                       |   41 
- drivers/staging/lttng/lib/prio_heap/lttng_prio_heap.c                                                 |  215 
- drivers/staging/lttng/lib/prio_heap/lttng_prio_heap.h                                                 |  125 
- drivers/staging/lttng/lib/ringbuffer/api.h                                                            |   37 
- drivers/staging/lttng/lib/ringbuffer/backend.h                                                        |  272 
- drivers/staging/lttng/lib/ringbuffer/backend_internal.h                                               |  461 +
- drivers/staging/lttng/lib/ringbuffer/backend_types.h                                                  |   97 
- drivers/staging/lttng/lib/ringbuffer/config.h                                                         |  315 +
- drivers/staging/lttng/lib/ringbuffer/frontend.h                                                       |  240 
- drivers/staging/lttng/lib/ringbuffer/frontend_api.h                                                   |  371 +
- drivers/staging/lttng/lib/ringbuffer/frontend_internal.h                                              |  456 +
- drivers/staging/lttng/lib/ringbuffer/frontend_types.h                                                 |  188 
- drivers/staging/lttng/lib/ringbuffer/iterator.h                                                       |   83 
- drivers/staging/lttng/lib/ringbuffer/nohz.h                                                           |   42 
- drivers/staging/lttng/lib/ringbuffer/ring_buffer_backend.c                                            |  869 ++
- drivers/staging/lttng/lib/ringbuffer/ring_buffer_frontend.c                                           | 1830 +++++
- drivers/staging/lttng/lib/ringbuffer/ring_buffer_iterator.c                                           |  810 ++
- drivers/staging/lttng/lib/ringbuffer/ring_buffer_mmap.c                                               |  128 
- drivers/staging/lttng/lib/ringbuffer/ring_buffer_splice.c                                             |  227 
- drivers/staging/lttng/lib/ringbuffer/ring_buffer_vfs.c                                                |  450 +
- drivers/staging/lttng/lib/ringbuffer/vatomic.h                                                        |   97 
- drivers/staging/lttng/lib/ringbuffer/vfs.h                                                            |  150 
- drivers/staging/lttng/lttng-abi-old.h                                                                 |  141 
- drivers/staging/lttng/lttng-abi.c                                                                     | 1346 ++++
- drivers/staging/lttng/lttng-abi.h                                                                     |  177 
- drivers/staging/lttng/lttng-calibrate.c                                                               |   42 
- drivers/staging/lttng/lttng-context-hostname.c                                                        |   99 
- drivers/staging/lttng/lttng-context-nice.c                                                            |   81 
- drivers/staging/lttng/lttng-context-perf-counters.c                                                   |  285 
- drivers/staging/lttng/lttng-context-pid.c                                                             |   81 
- drivers/staging/lttng/lttng-context-ppid.c                                                            |   93 
- drivers/staging/lttng/lttng-context-prio.c                                                            |  102 
- drivers/staging/lttng/lttng-context-procname.c                                                        |   85 
- drivers/staging/lttng/lttng-context-tid.c                                                             |   81 
- drivers/staging/lttng/lttng-context-vpid.c                                                            |   87 
- drivers/staging/lttng/lttng-context-vppid.c                                                           |  102 
- drivers/staging/lttng/lttng-context-vtid.c                                                            |   87 
- drivers/staging/lttng/lttng-context.c                                                                 |  105 
- drivers/staging/lttng/lttng-endian.h                                                                  |   43 
- drivers/staging/lttng/lttng-events.c                                                                  | 1260 ++++
- drivers/staging/lttng/lttng-events.h                                                                  |  507 +
- drivers/staging/lttng/lttng-kernel-version.h                                                          |   36 
- drivers/staging/lttng/lttng-probes.c                                                                  |  171 
- drivers/staging/lttng/lttng-ring-buffer-client-discard.c                                              |   33 
- drivers/staging/lttng/lttng-ring-buffer-client-mmap-discard.c                                         |   33 
- drivers/staging/lttng/lttng-ring-buffer-client-mmap-overwrite.c                                       |   33 
- drivers/staging/lttng/lttng-ring-buffer-client-overwrite.c                                            |   33 
- drivers/staging/lttng/lttng-ring-buffer-client.h                                                      |  600 +
- drivers/staging/lttng/lttng-ring-buffer-metadata-client.c                                             |   33 
- drivers/staging/lttng/lttng-ring-buffer-metadata-client.h                                             |  342 +
- drivers/staging/lttng/lttng-ring-buffer-metadata-mmap-client.c                                        |   33 
- drivers/staging/lttng/lttng-statedump-impl.c                                                          |  427 +
- drivers/staging/lttng/lttng-syscalls.c                                                                |  459 +
- drivers/staging/lttng/lttng-tracer-core.h                                                             |   41 
- drivers/staging/lttng/lttng-tracer.h                                                                  |   81 
- drivers/staging/lttng/probes/Makefile                                                                 |  240 
- drivers/staging/lttng/probes/define_trace.h                                                           |  180 
- drivers/staging/lttng/probes/lttng-events-reset.h                                                     |   99 
- drivers/staging/lttng/probes/lttng-events.h                                                           |  868 ++
- drivers/staging/lttng/probes/lttng-ftrace.c                                                           |  201 
- drivers/staging/lttng/probes/lttng-kprobes.c                                                          |  177 
- drivers/staging/lttng/probes/lttng-kretprobes.c                                                       |  290 
- drivers/staging/lttng/probes/lttng-probe-asoc.c                                                       |   45 
- drivers/staging/lttng/probes/lttng-probe-block.c                                                      |   45 
- drivers/staging/lttng/probes/lttng-probe-btrfs.c                                                      |   48 
- drivers/staging/lttng/probes/lttng-probe-compaction.c                                                 |   43 
- drivers/staging/lttng/probes/lttng-probe-ext3.c                                                       |   52 
- drivers/staging/lttng/probes/lttng-probe-ext4.c                                                       |   51 
- drivers/staging/lttng/probes/lttng-probe-gpio.c                                                       |   43 
- drivers/staging/lttng/probes/lttng-probe-irq.c                                                        |   45 
- drivers/staging/lttng/probes/lttng-probe-jbd.c                                                        |   43 
- drivers/staging/lttng/probes/lttng-probe-jbd2.c                                                       |   45 
- drivers/staging/lttng/probes/lttng-probe-kmem.c                                                       |   45 
- drivers/staging/lttng/probes/lttng-probe-kvm-x86-mmu.c                                                |   43 
- drivers/staging/lttng/probes/lttng-probe-kvm-x86.c                                                    |   45 
- drivers/staging/lttng/probes/lttng-probe-kvm.c                                                        |   45 
- drivers/staging/lttng/probes/lttng-probe-lock.c                                                       |   50 
- drivers/staging/lttng/probes/lttng-probe-module.c                                                     |   45 
- drivers/staging/lttng/probes/lttng-probe-napi.c                                                       |   45 
- drivers/staging/lttng/probes/lttng-probe-net.c                                                        |   43 
- drivers/staging/lttng/probes/lttng-probe-power.c                                                      |   45 
- drivers/staging/lttng/probes/lttng-probe-printk.c                                                     |   43 
- drivers/staging/lttng/probes/lttng-probe-random.c                                                     |   43 
- drivers/staging/lttng/probes/lttng-probe-rcu.c                                                        |   44 
- drivers/staging/lttng/probes/lttng-probe-regmap.c                                                     |   44 
- drivers/staging/lttng/probes/lttng-probe-regulator.c                                                  |   43 
- drivers/staging/lttng/probes/lttng-probe-rpm.c                                                        |   44 
- drivers/staging/lttng/probes/lttng-probe-sched.c                                                      |   44 
- drivers/staging/lttng/probes/lttng-probe-scsi.c                                                       |   44 
- drivers/staging/lttng/probes/lttng-probe-signal.c                                                     |   42 
- drivers/staging/lttng/probes/lttng-probe-skb.c                                                        |   45 
- drivers/staging/lttng/probes/lttng-probe-sock.c                                                       |   43 
- drivers/staging/lttng/probes/lttng-probe-statedump.c                                                  |   46 
- drivers/staging/lttng/probes/lttng-probe-sunrpc.c                                                     |   43 
- drivers/staging/lttng/probes/lttng-probe-timer.c                                                      |   46 
- drivers/staging/lttng/probes/lttng-probe-udp.c                                                        |   43 
- drivers/staging/lttng/probes/lttng-probe-user.c                                                       |   54 
- drivers/staging/lttng/probes/lttng-probe-user.h                                                       |   30 
- drivers/staging/lttng/probes/lttng-probe-vmscan.c                                                     |   45 
- drivers/staging/lttng/probes/lttng-probe-workqueue.c                                                  |   49 
- drivers/staging/lttng/probes/lttng-probe-writeback.c                                                  |   54 
- drivers/staging/lttng/probes/lttng-type-list.h                                                        |   33 
- drivers/staging/lttng/probes/lttng-types.c                                                            |   61 
- drivers/staging/lttng/probes/lttng-types.h                                                            |   84 
- drivers/staging/lttng/probes/lttng.h                                                                  |   27 
- drivers/staging/lttng/wrapper/compiler.h                                                              |   42 
- drivers/staging/lttng/wrapper/fdtable.c                                                               |   57 
- drivers/staging/lttng/wrapper/fdtable.h                                                               |   44 
- drivers/staging/lttng/wrapper/ftrace.h                                                                |   84 
- drivers/staging/lttng/wrapper/inline_memcpy.h                                                         |   23 
- drivers/staging/lttng/wrapper/irq.h                                                                   |   38 
- drivers/staging/lttng/wrapper/irqdesc.c                                                               |   58 
- drivers/staging/lttng/wrapper/irqdesc.h                                                               |   33 
- drivers/staging/lttng/wrapper/kallsyms.h                                                              |   51 
- drivers/staging/lttng/wrapper/nsproxy.h                                                               |   42 
- drivers/staging/lttng/wrapper/perf.h                                                                  |   71 
- drivers/staging/lttng/wrapper/poll.h                                                                  |   33 
- drivers/staging/lttng/wrapper/random.c                                                                |   77 
- drivers/staging/lttng/wrapper/random.h                                                                |   32 
- drivers/staging/lttng/wrapper/ringbuffer/api.h                                                        |    1 
- drivers/staging/lttng/wrapper/ringbuffer/backend.h                                                    |    1 
- drivers/staging/lttng/wrapper/ringbuffer/backend_internal.h                                           |    2 
- drivers/staging/lttng/wrapper/ringbuffer/backend_types.h                                              |    1 
- drivers/staging/lttng/wrapper/ringbuffer/config.h                                                     |    1 
- drivers/staging/lttng/wrapper/ringbuffer/frontend.h                                                   |    1 
- drivers/staging/lttng/wrapper/ringbuffer/frontend_api.h                                               |    1 
- drivers/staging/lttng/wrapper/ringbuffer/frontend_internal.h                                          |    1 
- drivers/staging/lttng/wrapper/ringbuffer/frontend_types.h                                             |    1 
- drivers/staging/lttng/wrapper/ringbuffer/iterator.h                                                   |    1 
- drivers/staging/lttng/wrapper/ringbuffer/nohz.h                                                       |    1 
- drivers/staging/lttng/wrapper/ringbuffer/vatomic.h                                                    |    1 
- drivers/staging/lttng/wrapper/ringbuffer/vfs.h                                                        |    1 
- drivers/staging/lttng/wrapper/spinlock.h                                                              |   47 
- drivers/staging/lttng/wrapper/splice.c                                                                |   60 
- drivers/staging/lttng/wrapper/splice.h                                                                |   37 
- drivers/staging/lttng/wrapper/trace-clock.h                                                           |  102 
- drivers/staging/lttng/wrapper/tracepoint.h                                                            |   44 
- drivers/staging/lttng/wrapper/uuid.h                                                                  |   43 
- drivers/staging/lttng/wrapper/vmalloc.h                                                               |   63 
- drivers/staging/lttng/wrapper/writeback.h                                                             |   61 
- 268 files changed, 68597 insertions(+)
-
---- a/MAINTAINERS
-+++ b/MAINTAINERS
-@@ -5418,6 +5418,13 @@ T:	git git://github.com/linux-test-proje
- T:	git git://ltp.git.sourceforge.net/gitroot/ltp/ltp-dev
- S:	Maintained
- 
-+LTTng (Linux Trace Toolkit Next Generation)
-+M:	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
-+L:	lttng-dev@lists.lttng.org (moderated for non-subscribers)
-+W:	http://lttng.org
-+S:	Maintained
-+F:	drivers/staging/lttng/
-+
- M32R ARCHITECTURE
- M:	Hirokazu Takata <takata@linux-m32r.org>
- L:	linux-m32r@ml.linux-m32r.org (moderated for non-subscribers)
---- a/drivers/staging/Kconfig
-+++ b/drivers/staging/Kconfig
-@@ -146,4 +146,6 @@ source "drivers/staging/dgnc/Kconfig"
- 
- source "drivers/staging/dgap/Kconfig"
- 
-+source "drivers/staging/lttng/Kconfig"
-+
- endif # STAGING
---- a/drivers/staging/Makefile
-+++ b/drivers/staging/Makefile
-@@ -65,3 +65,4 @@ obj-$(CONFIG_XILLYBUS)		+= xillybus/
- obj-$(CONFIG_DGNC)			+= dgnc/
- obj-$(CONFIG_DGAP)			+= dgap/
- obj-$(CONFIG_MTD_SPINAND_MT29F)	+= mt29f_spinand/
-+obj-$(CONFIG_LTTNG)		+= lttng/
---- /dev/null
-+++ b/drivers/staging/lttng/Kconfig
-@@ -0,0 +1,35 @@
-+config LTTNG
-+	tristate "LTTng kernel tracer"
-+	depends on TRACEPOINTS
-+	help
-+	  The LTTng 2.0 Tracer Toolchain allows integrated kernel and
-+	  user-space tracing from a single user interface: the "lttng"
-+	  command. See http://lttng.org website for the "lttng-tools"
-+	  user-space tracer control tools package and the "babeltrace"
-+	  package for conversion of trace data to a human-readable
-+	  format.
-+
-+	  LTTng features:
-+	  - System-wide tracing across kernel, libraries and
-+	    applications,
-+	  - Tracepoints, detailed syscall tracing (fast strace replacement),
-+	    Function tracer, CPU Performance Monitoring Unit (PMU) counters
-+	    and kprobes support,
-+	  - Have the ability to attach "context" information to events in the
-+	    trace (e.g. any PMU counter, pid, ppid, tid, comm name, etc). All
-+	    the extra information fields to be collected with events are
-+	    optional, specified on a per-tracing-session basis (except for
-+	    timestamp and event id, which are mandatory).
-+	  - Precise and fast clock sources with near cycle-level
-+	    timestamps,
-+	  - Efficient trace data transport:
-+	    - Compact Binary format with CTF,
-+	    - Per-core buffers ensures scalability,
-+	    - Fast-paths in caller context, amortized synchronization,
-+	    - Zero-copy using splice and mmap system calls, over disk,
-+	      network or consumed in-place,
-+	  - Multiple concurrent tracing sessions are supported,
-+	  - Designed to meet hard real-time constraints,
-+	  - Supports live streaming of the trace data,
-+	  - Produces CTF (Common Trace Format) natively (see
-+	    http://www.efficios.com/ctf).
---- /dev/null
-+++ b/drivers/staging/lttng/LICENSE
-@@ -0,0 +1,27 @@
-+LTTng modules licensing
-+Mathieu Desnoyers
-+June 2, 2011
-+
-+* LGPLv2.1/GPLv2 dual-license
-+
-+The files contained within this package are licensed under
-+LGPLv2.1/GPLv2 dual-license (see lgpl-2.1.txt and gpl-2.0.txt for
-+details), except for files identified by the following sections.
-+
-+* GPLv2 license
-+
-+These files are licensed exclusively under the GPLv2 license. See
-+gpl-2.0.txt for details.
-+
-+lib/ringbuffer/ring_buffer_splice.c
-+lib/ringbuffer/ring_buffer_mmap.c
-+instrumentation/events/mainline/*.h
-+instrumentation/events/lttng-modules/*.h
-+
-+* MIT-style license
-+
-+These files are licensed under an MIT-style license:
-+
-+lib/prio_heap/lttng_prio_heap.h
-+lib/prio_heap/lttng_prio_heap.c
-+lib/bitfield.h
---- /dev/null
-+++ b/drivers/staging/lttng/Makefile
-@@ -0,0 +1,38 @@
-+#
-+# Makefile for the LTTng modules.
-+#
-+
-+obj-m += lttng-ring-buffer-client-discard.o
-+obj-m += lttng-ring-buffer-client-overwrite.o
-+obj-m += lttng-ring-buffer-metadata-client.o
-+obj-m += lttng-ring-buffer-client-mmap-discard.o
-+obj-m += lttng-ring-buffer-client-mmap-overwrite.o
-+obj-m += lttng-ring-buffer-metadata-mmap-client.o
-+
-+obj-m += lttng-tracer.o
-+lttng-tracer-objs :=  lttng-events.o lttng-abi.o \
-+			lttng-probes.o lttng-context.o \
-+			lttng-context-pid.o lttng-context-procname.o \
-+			lttng-context-prio.o lttng-context-nice.o \
-+			lttng-context-vpid.o lttng-context-tid.o \
-+			lttng-context-vtid.o lttng-context-ppid.o \
-+			lttng-context-vppid.o lttng-calibrate.o \
-+			lttng-context-hostname.o wrapper/random.o
-+
-+obj-m += lttng-statedump.o
-+lttng-statedump-objs := lttng-statedump-impl.o wrapper/irqdesc.o \
-+			wrapper/fdtable.o
-+
-+ifneq ($(CONFIG_HAVE_SYSCALL_TRACEPOINTS),)
-+lttng-tracer-objs += lttng-syscalls.o probes/lttng-probe-user.o
-+endif
-+
-+ifneq ($(CONFIG_PERF_EVENTS),)
-+lttng-tracer-objs += $(shell \
-+	if [ $(VERSION) -ge 3 \
-+		-o \( $(VERSION) -eq 2 -a $(PATCHLEVEL) -ge 6 -a $(SUBLEVEL) -ge 33 \) ] ; then \
-+		echo "lttng-context-perf-counters.o" ; fi;)
-+endif
-+
-+obj-m += probes/
-+obj-m += lib/
---- /dev/null
-+++ b/drivers/staging/lttng/README
-@@ -0,0 +1,93 @@
-+LTTng 2.x modules
-+
-+Mathieu Desnoyers
-+March 29, 2013
-+
-+LTTng 2.x kernel modules build against a vanilla or distribution kernel, without
-+need for additional patches. Other features:
-+
-+- Produces CTF (Common Trace Format) natively,
-+  (http://www.efficios.com/ctf)
-+- Tracepoints, Function tracer, CPU Performance Monitoring Unit (PMU)
-+  counters, kprobes, and kretprobes support,
-+- Integrated interface for both kernel and userspace tracing,
-+- Have the ability to attach "context" information to events in the
-+  trace (e.g. any PMU counter, pid, ppid, tid, comm name, etc).
-+  All the extra information fields to be collected with events are
-+  optional, specified on a per-tracing-session basis (except for
-+  timestamp and event id, which are mandatory).
-+
-+To build and install, you will need to have your kernel headers available (or
-+access to your full kernel source tree), and use:
-+
-+% make
-+# make modules_install
-+# depmod -a
-+
-+If you need to specify the target directory to the kernel you want to build
-+against, use:
-+
-+% KERNELDIR=path_to_kernel_dir make
-+# KERNELDIR=path_to_kernel_dir make modules_install
-+# depmod -a kernel_version
-+
-+Use lttng-tools to control the tracer. LTTng tools should automatically load
-+the kernel modules when needed. Use Babeltrace to print traces as a
-+human-readable text log. These tools are available at the following URL:
-+http://lttng.org/lttng2.0
-+
-+So far, it has been tested on vanilla Linux kernels 2.6.38, 2.6.39, 3.0,
-+3.1, 3.2, 3.3 (on x86 32/64-bit, and powerpc 32-bit at the moment, build
-+tested on ARM), 3.4, 3.5, 3.8, 3.9-rc on x86 64-bit. Kernels 2.6.32 to
-+2.6.34 need up to 3 patches applied (refer to linux-patches within the
-+lttng-modules tree). It should work fine with newer kernels and other
-+architectures, but expect build issues with kernels older than 2.6.36.
-+The clock source currently used is the standard gettimeofday (slower,
-+less scalable and less precise than the LTTng 0.x clocks).  Support for
-+LTTng 0.x clocks will be added back soon into LTTng 2.0.
-+
-+
-+* Kernel config options required
-+
-+CONFIG_MODULES: required
-+  * Kernel modules support.
-+CONFIG_KALLSYMS: required
-+  * See wrapper/ files. This is necessary until the few required missing
-+    symbols are exported to GPL modules from mainline.
-+CONFIG_HIGH_RES_TIMERS: required
-+  * Needed for LTTng 2.0 clock source.
-+CONFIG_TRACEPOINTS: required
-+    kernel tracepoint instrumentation
-+    * Enabled as side-effect of any of the perf/ftrace/blktrace
-+      instrumentation features.
-+
-+
-+* Kernel config options supported (optional)
-+
-+The following kernel configuration options will affect the features
-+available from LTTng:
-+
-+
-+CONFIG_HAVE_SYSCALL_TRACEPOINTS:
-+            system call tracing
-+               lttng enable-event -k --syscall
-+               lttng enable-event -k -a
-+CONFIG_PERF_EVENTS:
-+            performance counters
-+               lttng add-context -t perf:*
-+CONFIG_EVENT_TRACING:
-+            needed to allow block layer tracing
-+CONFIG_KPROBES:
-+            Dynamic probe.
-+               lttng enable-event -k --probe ...
-+CONFIG_KRETPROBES:
-+            Dynamic function entry/return probe.
-+               lttng enable-event -k --function ...
-+
-+
-+* Note about Perf PMU counters support
-+
-+Each PMU counter has its zero value set when it is attached to a context with
-+add-context. Therefore, it is normal that the same counters attached to both the
-+stream context and event context show different values for a given event; what
-+matters is that they increment at the same rate.
---- /dev/null
-+++ b/drivers/staging/lttng/TODO
-@@ -0,0 +1,117 @@
-+Please contact Mathieu Desnoyers <mathieu.desnoyers@efficios.com> for
-+questions about this TODO list. The "Cleanup/Testing" section would be
-+good to go through before integration into mainline. The "Features"
-+section is a wish list of features to complete before releasing the
-+"LTTng 2.0" final version, but are not required to have LTTng working.
-+These features are mostly performance enhancements and instrumentation
-+enhancements.
-+
-+TODO:
-+
-+A) Cleanup/Testing
-+
-+	1) Test lib ring buffer snapshot feature.
-+	   When working on the lttngtop project, Julien Desfossez
-+	   reported that he needed to push the consumer position
-+	   forward explicitely with lib_ring_buffer_put_next_subbuf.
-+	   This means that although the usual case of pairs of
-+	   lib_ring_buffer_get_next_subbuf/lib_ring_buffer_put_next_subbuf
-+	   work fine, there is probably a problem that needs to be
-+	   investigated in
-+	   lib_ring_buffer_get_subbuf/lib_ring_buffer_put_subbuf, which
-+	   depend on the producer to push the reader position.
-+	   Contact: Julien Desfossez <julien.desfossez@polymtl.ca>
-+
-+
-+B) Features
-+
-+	1) Integration of the LTTng 0.x trace clocks into
-+	   LTTng 2.0.
-+	     Currently using mainline kernel monotonic clock. NMIs can
-+	     therefore not be traced, and this causes a significant
-+	     performance degradation compared to the LTTng 0.x trace
-+	     clocks. Imply the creation of drivers/staging/lttng/arch to
-+	     contain the arch-specific clock support files.
-+	     * Dependency: addition of clock descriptions to CTF.
-+	   See: http://git.lttng.org/?p=linux-2.6-lttng.git;a=summary
-+	        for the LTTng 0.x git tree.
-+
-+	2) Port OMAP3 LTTng trace clocks to x86 to support systems
-+	   without constant TSC.
-+	    * Dependency: (B.1)
-+	   See: http://git.lttng.org/?p=linux-2.6-lttng.git;a=summary
-+	        for the LTTng 0.x git tree.
-+
-+	3) Implement mmap operation on an anonymous file created by a
-+	   LTTNG_KERNEL_CLOCK ioctl to export data to export
-+	   synchronized kernel and user-level LTTng trace clocks:
-+	   with:
-+	      - shared per-cpu data,
-+	      - read seqlock.
-+	   The content exported by this shared memory area will be
-+	   arch-specific.
-+	   * Dependency: (B.1) && (B.2)
-+	   See: http://git.lttng.org/?p=linux-2.6-lttng.git;a=summary
-+	        for the LTTng 0.x git tree, which has vDSO support for
-+	        LTTng trace clock on the x86 architecture.
-+
-+	3) Integrate the "statedump" module from LTTng 0.x into LTTng
-+	   2.0.
-+	   See: http://git.lttng.org/?p=lttng-modules.git;a=shortlog;h=refs/heads/v0.19-stable
-+	        ltt-statedump.c
-+
-+	4) Generate system call TRACE_EVENT headers for all
-+	   architectures (currently done: x86 32/64).
-+
-+	5) Define "unknown" system calls into instrumentation/syscalls
-+	   override files / or do SYSCALL_DEFINE improvements to
-+	   mainline kernel to allow automatic generation of these
-+	   missing system call descriptions.
-+
-+	6) Create missing tracepoint event headers files into
-+	   instrumentation/events from headers located in
-+	   include/trace/events/. Choice: either do as currently done,
-+	   and copy those headers locally into the lttng driver and
-+	   perform the modifications locally, or push TRACE_EVENT API
-+	   modification into mainline headers, which would require
-+	   collaboration from Ftrace/Perf maintainers.
-+
-+	7) Poll: implement a poll and/or epoll exclusive wakeup scheme,
-+	   which contradicts POSIX, but protect multiple consumer
-+	   threads from thundering herd effect.
-+
-+	8) Re-integrate sample modules from libringbuffer into
-+	   lttng driver. Those modules can be used as example of how to
-+	   use libringbuffer in other contexts than LTTng, and are
-+	   useful to perform benchmarks of the ringbuffer library.
-+	   See: http://www.efficios.com/ringbuffer
-+
-+	9) NOHZ support for lib ring buffer. NOHZ infrastructure in the
-+	   Linux kernel does not support notifiers chains, which does
-+	   not let LTTng play nicely with low power consumption setups
-+	   for flight recorder (overwrite mode) live traces. One way to
-+	   allow integration between NOHZ and LTTng would be to add
-+	   support for such notifiers into NOHZ kernel infrastructure.
-+
-+	10) Turn lttng-probes.c probe_list into a
-+	    hash table. Turns O(n^2) trace systems registration (cost
-+	    for n systems) into O(n). (O(1) per system)
-+
-+	11) drivers/staging/lttng/probes/lttng-ftrace.c:
-+	    LTTng currently uses kretprobes for per-function tracing,
-+	    not the function tracer. So lttng-ftrace.c should be used
-+	    for "all" function tracing.
-+
-+	12) drivers/staging/lttng/probes/lttng-types.c:
-+	    This is a currently unused placeholder to export entire C
-+	    type declarations into the trace metadata, e.g. for support
-+	    of describing the layout of structures/enumeration mapping
-+	    along with syscall entry events.  The design of this support
-+	    will likely change though, and become integrated with the
-+	    TRACE_EVENT support within lttng, by adding new macros, and
-+	    support for generation of metadata from these macros, to
-+	    allow description of those compound types/enumerations.
-+
-+Please send patches
-+To: Greg Kroah-Hartman <greg@kroah.com>
-+To: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/README
-@@ -0,0 +1,27 @@
-+* Workflow for updating patches from newer kernel:
-+
-+Diff mainline/ and lttng-module/ directories.
-+
-+Pull the new headers from mainline kernel to mainline/.
-+Copy them into lttng-modules.
-+Apply diff. Fix conflicts.
-+
-+
-+* Workflow to add new Tracepoint instrumentation to newer kernel,
-+  and add support for it into LTTng:
-+
-+a) instrument the kernel with new trace events headers. If you want that
-+   instrumentation distributed, you will have to push those changes into
-+   the upstream Linux kernel first,
-+b) copy those headers into lttng mainline/ directory,
-+c) look at a diff from other headers between mainline/ and
-+   lttng/, and use that as a recipe to create a new lttng/
-+   header from the mainline/ header,
-+d) create a new file in probes/ for the new trace event header you added,
-+e) add it to probes/Makefile,
-+f) build, make modules_install,
-+g) don't forget to load that new module too.
-+
-+Currently, LTTng policy is to only accept headers derived from trace
-+event headers accepted into the Linux kernel upstream for tracepoints
-+related to upstream kernel instrumentation.
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/arch/x86/kvm/mmutrace.h
-@@ -0,0 +1,285 @@
-+#if !defined(_TRACE_KVMMMU_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_KVMMMU_H
-+
-+#include <linux/tracepoint.h>
-+#include <linux/ftrace_event.h>
-+
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM kvmmmu
-+
-+#define KVM_MMU_PAGE_FIELDS \
-+	__field(__u64, gfn) \
-+	__field(__u32, role) \
-+	__field(__u32, root_count) \
-+	__field(bool, unsync)
-+
-+#define KVM_MMU_PAGE_ASSIGN(sp)			     \
-+	tp_assign(gfn, sp->gfn)			     \
-+	tp_assign(role, sp->role.word)		     \
-+	tp_assign(root_count, sp->root_count)        \
-+	tp_assign(unsync, sp->unsync)
-+
-+#define KVM_MMU_PAGE_PRINTK() ({				        \
-+	const char *ret = p->buffer + p->len;				\
-+	static const char *access_str[] = {			        \
-+		"---", "--x", "w--", "w-x", "-u-", "-ux", "wu-", "wux"  \
-+	};							        \
-+	union kvm_mmu_page_role role;				        \
-+								        \
-+	role.word = __entry->role;					\
-+									\
-+	trace_seq_printf(p, "sp gfn %llx %u%s q%u%s %s%s"		\
-+			 " %snxe root %u %s%c",				\
-+			 __entry->gfn, role.level,			\
-+			 role.cr4_pae ? " pae" : "",			\
-+			 role.quadrant,					\
-+			 role.direct ? " direct" : "",			\
-+			 access_str[role.access],			\
-+			 role.invalid ? " invalid" : "",		\
-+			 role.nxe ? "" : "!",				\
-+			 __entry->root_count,				\
-+			 __entry->unsync ? "unsync" : "sync", 0);	\
-+	ret;								\
-+		})
-+
-+#define kvm_mmu_trace_pferr_flags       \
-+	{ PFERR_PRESENT_MASK, "P" },	\
-+	{ PFERR_WRITE_MASK, "W" },	\
-+	{ PFERR_USER_MASK, "U" },	\
-+	{ PFERR_RSVD_MASK, "RSVD" },	\
-+	{ PFERR_FETCH_MASK, "F" }
-+
-+/*
-+ * A pagetable walk has started
-+ */
-+TRACE_EVENT(
-+	kvm_mmu_pagetable_walk,
-+	TP_PROTO(u64 addr, u32 pferr),
-+	TP_ARGS(addr, pferr),
-+
-+	TP_STRUCT__entry(
-+		__field(__u64, addr)
-+		__field(__u32, pferr)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(addr, addr)
-+		tp_assign(pferr, pferr)
-+	),
-+
-+	TP_printk("addr %llx pferr %x %s", __entry->addr, __entry->pferr,
-+		  __print_flags(__entry->pferr, "|", kvm_mmu_trace_pferr_flags))
-+)
-+
-+
-+/* We just walked a paging element */
-+TRACE_EVENT(
-+	kvm_mmu_paging_element,
-+	TP_PROTO(u64 pte, int level),
-+	TP_ARGS(pte, level),
-+
-+	TP_STRUCT__entry(
-+		__field(__u64, pte)
-+		__field(__u32, level)
-+		),
-+
-+	TP_fast_assign(
-+		tp_assign(pte, pte)
-+		tp_assign(level, level)
-+		),
-+
-+	TP_printk("pte %llx level %u", __entry->pte, __entry->level)
-+)
-+
-+DECLARE_EVENT_CLASS(kvm_mmu_set_bit_class,
-+
-+	TP_PROTO(unsigned long table_gfn, unsigned index, unsigned size),
-+
-+	TP_ARGS(table_gfn, index, size),
-+
-+	TP_STRUCT__entry(
-+		__field(__u64, gpa)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(gpa, ((u64)table_gfn << PAGE_SHIFT)
-+				+ index * size)
-+		),
-+
-+	TP_printk("gpa %llx", __entry->gpa)
-+)
-+
-+/* We set a pte accessed bit */
-+DEFINE_EVENT(kvm_mmu_set_bit_class, kvm_mmu_set_accessed_bit,
-+
-+	TP_PROTO(unsigned long table_gfn, unsigned index, unsigned size),
-+
-+	TP_ARGS(table_gfn, index, size)
-+)
-+
-+/* We set a pte dirty bit */
-+DEFINE_EVENT(kvm_mmu_set_bit_class, kvm_mmu_set_dirty_bit,
-+
-+	TP_PROTO(unsigned long table_gfn, unsigned index, unsigned size),
-+
-+	TP_ARGS(table_gfn, index, size)
-+)
-+
-+TRACE_EVENT(
-+	kvm_mmu_walker_error,
-+	TP_PROTO(u32 pferr),
-+	TP_ARGS(pferr),
-+
-+	TP_STRUCT__entry(
-+		__field(__u32, pferr)
-+		),
-+
-+	TP_fast_assign(
-+		tp_assign(pferr, pferr)
-+		),
-+
-+	TP_printk("pferr %x %s", __entry->pferr,
-+		  __print_flags(__entry->pferr, "|", kvm_mmu_trace_pferr_flags))
-+)
-+
-+TRACE_EVENT(
-+	kvm_mmu_get_page,
-+	TP_PROTO(struct kvm_mmu_page *sp, bool created),
-+	TP_ARGS(sp, created),
-+
-+	TP_STRUCT__entry(
-+		KVM_MMU_PAGE_FIELDS
-+		__field(bool, created)
-+		),
-+
-+	TP_fast_assign(
-+		KVM_MMU_PAGE_ASSIGN(sp)
-+		tp_assign(created, created)
-+		),
-+
-+	TP_printk("%s %s", KVM_MMU_PAGE_PRINTK(),
-+		  __entry->created ? "new" : "existing")
-+)
-+
-+DECLARE_EVENT_CLASS(kvm_mmu_page_class,
-+
-+	TP_PROTO(struct kvm_mmu_page *sp),
-+	TP_ARGS(sp),
-+
-+	TP_STRUCT__entry(
-+		KVM_MMU_PAGE_FIELDS
-+	),
-+
-+	TP_fast_assign(
-+		KVM_MMU_PAGE_ASSIGN(sp)
-+	),
-+
-+	TP_printk("%s", KVM_MMU_PAGE_PRINTK())
-+)
-+
-+DEFINE_EVENT(kvm_mmu_page_class, kvm_mmu_sync_page,
-+	TP_PROTO(struct kvm_mmu_page *sp),
-+
-+	TP_ARGS(sp)
-+)
-+
-+DEFINE_EVENT(kvm_mmu_page_class, kvm_mmu_unsync_page,
-+	TP_PROTO(struct kvm_mmu_page *sp),
-+
-+	TP_ARGS(sp)
-+)
-+
-+DEFINE_EVENT(kvm_mmu_page_class, kvm_mmu_prepare_zap_page,
-+	TP_PROTO(struct kvm_mmu_page *sp),
-+
-+	TP_ARGS(sp)
-+)
-+
-+TRACE_EVENT(
-+	mark_mmio_spte,
-+	TP_PROTO(u64 *sptep, gfn_t gfn, unsigned access),
-+	TP_ARGS(sptep, gfn, access),
-+
-+	TP_STRUCT__entry(
-+		__field(void *, sptep)
-+		__field(gfn_t, gfn)
-+		__field(unsigned, access)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(sptep, sptep)
-+		tp_assign(gfn, gfn)
-+		tp_assign(access, access)
-+	),
-+
-+	TP_printk("sptep:%p gfn %llx access %x", __entry->sptep, __entry->gfn,
-+		  __entry->access)
-+)
-+
-+TRACE_EVENT(
-+	handle_mmio_page_fault,
-+	TP_PROTO(u64 addr, gfn_t gfn, unsigned access),
-+	TP_ARGS(addr, gfn, access),
-+
-+	TP_STRUCT__entry(
-+		__field(u64, addr)
-+		__field(gfn_t, gfn)
-+		__field(unsigned, access)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(addr, addr)
-+		tp_assign(gfn, gfn)
-+		tp_assign(access, access)
-+	),
-+
-+	TP_printk("addr:%llx gfn %llx access %x", __entry->addr, __entry->gfn,
-+		  __entry->access)
-+)
-+
-+#define __spte_satisfied(__spte)				\
-+	(__entry->retry && is_writable_pte(__entry->__spte))
-+
-+TRACE_EVENT(
-+	fast_page_fault,
-+	TP_PROTO(struct kvm_vcpu *vcpu, gva_t gva, u32 error_code,
-+		 u64 *sptep, u64 old_spte, bool retry),
-+	TP_ARGS(vcpu, gva, error_code, sptep, old_spte, retry),
-+
-+	TP_STRUCT__entry(
-+		__field(int, vcpu_id)
-+		__field(gva_t, gva)
-+		__field(u32, error_code)
-+		__field(u64 *, sptep)
-+		__field(u64, old_spte)
-+		__field(u64, new_spte)
-+		__field(bool, retry)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(vcpu_id, vcpu->vcpu_id)
-+		tp_assign(gva, gva)
-+		tp_assign(error_code, error_code)
-+		tp_assign(sptep, sptep)
-+		tp_assign(old_spte, old_spte)
-+		tp_assign(new_spte, *sptep)
-+		tp_assign(retry, retry)
-+	),
-+
-+	TP_printk("vcpu %d gva %lx error_code %s sptep %p old %#llx"
-+		  " new %llx spurious %d fixed %d", __entry->vcpu_id,
-+		  __entry->gva, __print_flags(__entry->error_code, "|",
-+		  kvm_mmu_trace_pferr_flags), __entry->sptep,
-+		  __entry->old_spte, __entry->new_spte,
-+		  __spte_satisfied(old_spte), __spte_satisfied(new_spte)
-+	)
-+)
-+#endif /* _TRACE_KVMMMU_H */
-+
-+#undef TRACE_INCLUDE_PATH
-+#define TRACE_INCLUDE_PATH ../instrumentation/events/lttng-module/arch/x86/kvm
-+#undef TRACE_INCLUDE_FILE
-+#define TRACE_INCLUDE_FILE mmutrace
-+
-+/* This part must be outside protection */
-+#include "../../../../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/arch/x86/kvm/trace.h
-@@ -0,0 +1,833 @@
-+#if !defined(_TRACE_KVM_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_KVM_H
-+
-+#include <linux/tracepoint.h>
-+#include <asm/vmx.h>
-+#include <asm/svm.h>
-+#include <asm/clocksource.h>
-+#include <linux/version.h>
-+#include <../arch/x86/kvm/lapic.h>
-+#include <../arch/x86/kvm/kvm_cache_regs.h>
-+
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM kvm
-+
-+/*
-+ * Tracepoint for guest mode entry.
-+ */
-+TRACE_EVENT(kvm_entry,
-+	TP_PROTO(unsigned int vcpu_id),
-+	TP_ARGS(vcpu_id),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned int,	vcpu_id		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(vcpu_id, vcpu_id)
-+	),
-+
-+	TP_printk("vcpu %u", __entry->vcpu_id)
-+)
-+
-+/*
-+ * Tracepoint for hypercall.
-+ */
-+TRACE_EVENT(kvm_hypercall,
-+	TP_PROTO(unsigned long nr, unsigned long a0, unsigned long a1,
-+		 unsigned long a2, unsigned long a3),
-+	TP_ARGS(nr, a0, a1, a2, a3),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned long, 	nr		)
-+		__field(	unsigned long,	a0		)
-+		__field(	unsigned long,	a1		)
-+		__field(	unsigned long,	a2		)
-+		__field(	unsigned long,	a3		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(nr, nr)
-+		tp_assign(a0, a0)
-+		tp_assign(a1, a1)
-+		tp_assign(a2, a2)
-+		tp_assign(a3, a3)
-+	),
-+
-+	TP_printk("nr 0x%lx a0 0x%lx a1 0x%lx a2 0x%lx a3 0x%lx",
-+		 __entry->nr, __entry->a0, __entry->a1,  __entry->a2,
-+		 __entry->a3)
-+)
-+
-+/*
-+ * Tracepoint for hypercall.
-+ */
-+TRACE_EVENT(kvm_hv_hypercall,
-+	TP_PROTO(__u16 code, bool fast, __u16 rep_cnt, __u16 rep_idx,
-+		 __u64 ingpa, __u64 outgpa),
-+	TP_ARGS(code, fast, rep_cnt, rep_idx, ingpa, outgpa),
-+
-+	TP_STRUCT__entry(
-+		__field(	__u16,		rep_cnt		)
-+		__field(	__u16,		rep_idx		)
-+		__field(	__u64,		ingpa		)
-+		__field(	__u64,		outgpa		)
-+		__field(	__u16, 		code		)
-+		__field(	bool,		fast		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(rep_cnt, rep_cnt)
-+		tp_assign(rep_idx, rep_idx)
-+		tp_assign(ingpa, ingpa)
-+		tp_assign(outgpa, outgpa)
-+		tp_assign(code, code)
-+		tp_assign(fast, fast)
-+	),
-+
-+	TP_printk("code 0x%x %s cnt 0x%x idx 0x%x in 0x%llx out 0x%llx",
-+		  __entry->code, __entry->fast ? "fast" : "slow",
-+		  __entry->rep_cnt, __entry->rep_idx,  __entry->ingpa,
-+		  __entry->outgpa)
-+)
-+
-+/*
-+ * Tracepoint for PIO.
-+ */
-+TRACE_EVENT(kvm_pio,
-+	TP_PROTO(unsigned int rw, unsigned int port, unsigned int size,
-+		 unsigned int count),
-+	TP_ARGS(rw, port, size, count),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned int, 	rw		)
-+		__field(	unsigned int, 	port		)
-+		__field(	unsigned int, 	size		)
-+		__field(	unsigned int,	count		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(rw, rw)
-+		tp_assign(port, port)
-+		tp_assign(size, size)
-+		tp_assign(count, count)
-+	),
-+
-+	TP_printk("pio_%s at 0x%x size %d count %d",
-+		  __entry->rw ? "write" : "read",
-+		  __entry->port, __entry->size, __entry->count)
-+)
-+
-+/*
-+ * Tracepoint for cpuid.
-+ */
-+TRACE_EVENT(kvm_cpuid,
-+	TP_PROTO(unsigned int function, unsigned long rax, unsigned long rbx,
-+		 unsigned long rcx, unsigned long rdx),
-+	TP_ARGS(function, rax, rbx, rcx, rdx),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned int,	function	)
-+		__field(	unsigned long,	rax		)
-+		__field(	unsigned long,	rbx		)
-+		__field(	unsigned long,	rcx		)
-+		__field(	unsigned long,	rdx		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(function, function)
-+		tp_assign(rax, rax)
-+		tp_assign(rbx, rbx)
-+		tp_assign(rcx, rcx)
-+		tp_assign(rdx, rdx)
-+	),
-+
-+	TP_printk("func %x rax %lx rbx %lx rcx %lx rdx %lx",
-+		  __entry->function, __entry->rax,
-+		  __entry->rbx, __entry->rcx, __entry->rdx)
-+)
-+
-+#define AREG(x) { APIC_##x, "APIC_" #x }
-+
-+#define kvm_trace_symbol_apic						    \
-+	AREG(ID), AREG(LVR), AREG(TASKPRI), AREG(ARBPRI), AREG(PROCPRI),    \
-+	AREG(EOI), AREG(RRR), AREG(LDR), AREG(DFR), AREG(SPIV), AREG(ISR),  \
-+	AREG(TMR), AREG(IRR), AREG(ESR), AREG(ICR), AREG(ICR2), AREG(LVTT), \
-+	AREG(LVTTHMR), AREG(LVTPC), AREG(LVT0), AREG(LVT1), AREG(LVTERR),   \
-+	AREG(TMICT), AREG(TMCCT), AREG(TDCR), AREG(SELF_IPI), AREG(EFEAT),  \
-+	AREG(ECTRL)
-+/*
-+ * Tracepoint for apic access.
-+ */
-+TRACE_EVENT(kvm_apic,
-+	TP_PROTO(unsigned int rw, unsigned int reg, unsigned int val),
-+	TP_ARGS(rw, reg, val),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned int,	rw		)
-+		__field(	unsigned int,	reg		)
-+		__field(	unsigned int,	val		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(rw, rw)
-+		tp_assign(reg, reg)
-+		tp_assign(val, val)
-+	),
-+
-+	TP_printk("apic_%s %s = 0x%x",
-+		  __entry->rw ? "write" : "read",
-+		  __print_symbolic(__entry->reg, kvm_trace_symbol_apic),
-+		  __entry->val)
-+)
-+
-+#define trace_kvm_apic_read(reg, val)		trace_kvm_apic(0, reg, val)
-+#define trace_kvm_apic_write(reg, val)		trace_kvm_apic(1, reg, val)
-+
-+#define KVM_ISA_VMX   1
-+#define KVM_ISA_SVM   2
-+
-+/*
-+ * Tracepoint for kvm guest exit:
-+ */
-+TRACE_EVENT(kvm_exit,
-+	TP_PROTO(unsigned int exit_reason, struct kvm_vcpu *vcpu, u32 isa, u64 info1, u64 info2),
-+	TP_ARGS(exit_reason, vcpu, isa, info1, info2),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned int,	exit_reason	)
-+		__field(	unsigned long,	guest_rip	)
-+		__field(	u32,	        isa             )
-+		__field(	u64,	        info1           )
-+		__field(	u64,	        info2           )
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(exit_reason, exit_reason)
-+		tp_assign(guest_rip, kvm_rip_read(vcpu))
-+		tp_assign(isa, isa)
-+    kvm_x86_ops->get_exit_info(vcpu, &info1,
-+              &info2);
-+    tp_assign(info1, info1)
-+    tp_assign(info2, info2)
-+	),
-+
-+	TP_printk("reason %s rip  info %llx %llx",
-+		 (__entry->isa == KVM_ISA_VMX) ?
-+		 __print_symbolic(__entry->exit_reason, VMX_EXIT_REASONS) :
-+		 __print_symbolic(__entry->exit_reason, SVM_EXIT_REASONS),
-+		/* __entry->guest_rip,*/ __entry->info1, __entry->info2)
-+)
-+
-+/*
-+ * Tracepoint for kvm interrupt injection:
-+ */
-+TRACE_EVENT(kvm_inj_virq,
-+	TP_PROTO(unsigned int irq),
-+	TP_ARGS(irq),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned int,	irq		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(irq, irq)
-+	),
-+
-+	TP_printk("irq %u", __entry->irq)
-+)
-+
-+#define EXS(x) { x##_VECTOR, "#" #x }
-+
-+#define kvm_trace_sym_exc						\
-+	EXS(DE), EXS(DB), EXS(BP), EXS(OF), EXS(BR), EXS(UD), EXS(NM),	\
-+	EXS(DF), EXS(TS), EXS(NP), EXS(SS), EXS(GP), EXS(PF),		\
-+	EXS(MF), EXS(MC)
-+
-+/*
-+ * Tracepoint for kvm interrupt injection:
-+ */
-+TRACE_EVENT(kvm_inj_exception,
-+	TP_PROTO(unsigned exception, bool has_error, unsigned error_code),
-+	TP_ARGS(exception, has_error, error_code),
-+
-+	TP_STRUCT__entry(
-+		__field(	u8,	exception	)
-+		__field(	u8,	has_error	)
-+		__field(	u32,	error_code	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(exception, exception)
-+		tp_assign(has_error, has_error)
-+		tp_assign(error_code, error_code)
-+	),
-+
-+	TP_printk("%s (0x%x)",
-+		  __print_symbolic(__entry->exception, kvm_trace_sym_exc),
-+		  /* FIXME: don't print error_code if not present */
-+		  __entry->has_error ? __entry->error_code : 0)
-+)
-+
-+/*
-+ * Tracepoint for page fault.
-+ */
-+TRACE_EVENT(kvm_page_fault,
-+	TP_PROTO(unsigned long fault_address, unsigned int error_code),
-+	TP_ARGS(fault_address, error_code),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned long,	fault_address	)
-+		__field(	unsigned int,	error_code	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(fault_address, fault_address)
-+		tp_assign(error_code, error_code)
-+	),
-+
-+	TP_printk("address %lx error_code %x",
-+		  __entry->fault_address, __entry->error_code)
-+)
-+
-+/*
-+ * Tracepoint for guest MSR access.
-+ */
-+TRACE_EVENT(kvm_msr,
-+	TP_PROTO(unsigned write, u32 ecx, u64 data, bool exception),
-+	TP_ARGS(write, ecx, data, exception),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned,	write		)
-+		__field(	u32,		ecx		)
-+		__field(	u64,		data		)
-+		__field(	u8,		exception	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(write, write)
-+		tp_assign(ecx, ecx)
-+		tp_assign(data, data)
-+		tp_assign(exception, exception)
-+	),
-+
-+	TP_printk("msr_%s %x = 0x%llx%s",
-+		  __entry->write ? "write" : "read",
-+		  __entry->ecx, __entry->data,
-+		  __entry->exception ? " (#GP)" : "")
-+)
-+
-+#define trace_kvm_msr_read(ecx, data)      trace_kvm_msr(0, ecx, data, false)
-+#define trace_kvm_msr_write(ecx, data)     trace_kvm_msr(1, ecx, data, false)
-+#define trace_kvm_msr_read_ex(ecx)         trace_kvm_msr(0, ecx, 0, true)
-+#define trace_kvm_msr_write_ex(ecx, data)  trace_kvm_msr(1, ecx, data, true)
-+
-+/*
-+ * Tracepoint for guest CR access.
-+ */
-+TRACE_EVENT(kvm_cr,
-+	TP_PROTO(unsigned int rw, unsigned int cr, unsigned long val),
-+	TP_ARGS(rw, cr, val),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned int,	rw		)
-+		__field(	unsigned int,	cr		)
-+		__field(	unsigned long,	val		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(rw, rw)
-+		tp_assign(cr, cr)
-+		tp_assign(val, val)
-+	),
-+
-+	TP_printk("cr_%s %x = 0x%lx",
-+		  __entry->rw ? "write" : "read",
-+		  __entry->cr, __entry->val)
-+)
-+
-+#define trace_kvm_cr_read(cr, val)		trace_kvm_cr(0, cr, val)
-+#define trace_kvm_cr_write(cr, val)		trace_kvm_cr(1, cr, val)
-+
-+TRACE_EVENT(kvm_pic_set_irq,
-+	    TP_PROTO(__u8 chip, __u8 pin, __u8 elcr, __u8 imr, bool coalesced),
-+	    TP_ARGS(chip, pin, elcr, imr, coalesced),
-+
-+	TP_STRUCT__entry(
-+		__field(	__u8,		chip		)
-+		__field(	__u8,		pin		)
-+		__field(	__u8,		elcr		)
-+		__field(	__u8,		imr		)
-+		__field(	bool,		coalesced	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(chip, chip)
-+		tp_assign(pin, pin)
-+		tp_assign(elcr, elcr)
-+		tp_assign(imr, imr)
-+		tp_assign(coalesced, coalesced)
-+	),
-+
-+	TP_printk("chip %u pin %u (%s%s)%s",
-+		  __entry->chip, __entry->pin,
-+		  (__entry->elcr & (1 << __entry->pin)) ? "level":"edge",
-+		  (__entry->imr & (1 << __entry->pin)) ? "|masked":"",
-+		  __entry->coalesced ? " (coalesced)" : "")
-+)
-+
-+#define kvm_apic_dst_shorthand		\
-+	{0x0, "dst"},			\
-+	{0x1, "self"},			\
-+	{0x2, "all"},			\
-+	{0x3, "all-but-self"}
-+
-+TRACE_EVENT(kvm_apic_ipi,
-+	    TP_PROTO(__u32 icr_low, __u32 dest_id),
-+	    TP_ARGS(icr_low, dest_id),
-+
-+	TP_STRUCT__entry(
-+		__field(	__u32,		icr_low		)
-+		__field(	__u32,		dest_id		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(icr_low, icr_low)
-+		tp_assign(dest_id, dest_id)
-+	),
-+
-+	TP_printk("dst %x vec %u (%s|%s|%s|%s|%s)",
-+		  __entry->dest_id, (u8)__entry->icr_low,
-+		  __print_symbolic((__entry->icr_low >> 8 & 0x7),
-+				   kvm_deliver_mode),
-+		  (__entry->icr_low & (1<<11)) ? "logical" : "physical",
-+		  (__entry->icr_low & (1<<14)) ? "assert" : "de-assert",
-+		  (__entry->icr_low & (1<<15)) ? "level" : "edge",
-+		  __print_symbolic((__entry->icr_low >> 18 & 0x3),
-+				   kvm_apic_dst_shorthand))
-+)
-+
-+TRACE_EVENT(kvm_apic_accept_irq,
-+	    TP_PROTO(__u32 apicid, __u16 dm, __u8 tm, __u8 vec, bool coalesced),
-+	    TP_ARGS(apicid, dm, tm, vec, coalesced),
-+
-+	TP_STRUCT__entry(
-+		__field(	__u32,		apicid		)
-+		__field(	__u16,		dm		)
-+		__field(	__u8,		tm		)
-+		__field(	__u8,		vec		)
-+		__field(	bool,		coalesced	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(apicid, apicid)
-+		tp_assign(dm, dm)
-+		tp_assign(tm, tm)
-+		tp_assign(vec, vec)
-+		tp_assign(coalesced, coalesced)
-+	),
-+
-+	TP_printk("apicid %x vec %u (%s|%s)%s",
-+		  __entry->apicid, __entry->vec,
-+		  __print_symbolic((__entry->dm >> 8 & 0x7), kvm_deliver_mode),
-+		  __entry->tm ? "level" : "edge",
-+		  __entry->coalesced ? " (coalesced)" : "")
-+)
-+
-+TRACE_EVENT(kvm_eoi,
-+	    TP_PROTO(struct kvm_lapic *apic, int vector),
-+	    TP_ARGS(apic, vector),
-+
-+	TP_STRUCT__entry(
-+		__field(	__u32,		apicid		)
-+		__field(	int,		vector		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(apicid, apic->vcpu->vcpu_id)
-+		tp_assign(vector, vector)
-+	),
-+
-+	TP_printk("apicid %x vector %d", __entry->apicid, __entry->vector)
-+)
-+
-+TRACE_EVENT(kvm_pv_eoi,
-+	    TP_PROTO(struct kvm_lapic *apic, int vector),
-+	    TP_ARGS(apic, vector),
-+
-+	TP_STRUCT__entry(
-+		__field(	__u32,		apicid		)
-+		__field(	int,		vector		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(apicid, apic->vcpu->vcpu_id)
-+		tp_assign(vector, vector)
-+	),
-+
-+	TP_printk("apicid %x vector %d", __entry->apicid, __entry->vector)
-+)
-+
-+/*
-+ * Tracepoint for nested VMRUN
-+ */
-+TRACE_EVENT(kvm_nested_vmrun,
-+	    TP_PROTO(__u64 rip, __u64 vmcb, __u64 nested_rip, __u32 int_ctl,
-+		     __u32 event_inj, bool npt),
-+	    TP_ARGS(rip, vmcb, nested_rip, int_ctl, event_inj, npt),
-+
-+	TP_STRUCT__entry(
-+		__field(	__u64,		rip		)
-+		__field(	__u64,		vmcb		)
-+		__field(	__u64,		nested_rip	)
-+		__field(	__u32,		int_ctl		)
-+		__field(	__u32,		event_inj	)
-+		__field(	bool,		npt		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(rip, rip)
-+		tp_assign(vmcb, vmcb)
-+		tp_assign(nested_rip, nested_rip)
-+		tp_assign(int_ctl, int_ctl)
-+		tp_assign(event_inj, event_inj)
-+		tp_assign(npt, npt)
-+	),
-+
-+	TP_printk("rip: 0x%016llx vmcb: 0x%016llx nrip: 0x%016llx int_ctl: 0x%08x "
-+		  "event_inj: 0x%08x npt: %s",
-+		__entry->rip, __entry->vmcb, __entry->nested_rip,
-+		__entry->int_ctl, __entry->event_inj,
-+		__entry->npt ? "on" : "off")
-+)
-+
-+TRACE_EVENT(kvm_nested_intercepts,
-+	    TP_PROTO(__u16 cr_read, __u16 cr_write, __u32 exceptions, __u64 intercept),
-+	    TP_ARGS(cr_read, cr_write, exceptions, intercept),
-+
-+	TP_STRUCT__entry(
-+		__field(	__u16,		cr_read		)
-+		__field(	__u16,		cr_write	)
-+		__field(	__u32,		exceptions	)
-+		__field(	__u64,		intercept	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(cr_read, cr_read)
-+		tp_assign(cr_write, cr_write)
-+		tp_assign(exceptions, exceptions)
-+		tp_assign(intercept, intercept)
-+	),
-+
-+	TP_printk("cr_read: %04x cr_write: %04x excp: %08x intercept: %016llx",
-+		__entry->cr_read, __entry->cr_write, __entry->exceptions,
-+		__entry->intercept)
-+)
-+/*
-+ * Tracepoint for #VMEXIT while nested
-+ */
-+TRACE_EVENT(kvm_nested_vmexit,
-+	    TP_PROTO(__u64 rip, __u32 exit_code,
-+		     __u64 exit_info1, __u64 exit_info2,
-+		     __u32 exit_int_info, __u32 exit_int_info_err, __u32 isa),
-+	    TP_ARGS(rip, exit_code, exit_info1, exit_info2,
-+		    exit_int_info, exit_int_info_err, isa),
-+
-+	TP_STRUCT__entry(
-+		__field(	__u64,		rip			)
-+		__field(	__u32,		exit_code		)
-+		__field(	__u64,		exit_info1		)
-+		__field(	__u64,		exit_info2		)
-+		__field(	__u32,		exit_int_info		)
-+		__field(	__u32,		exit_int_info_err	)
-+		__field(	__u32,		isa			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(rip, rip)
-+		tp_assign(exit_code, exit_code)
-+		tp_assign(exit_info1, exit_info1)
-+		tp_assign(exit_info2, exit_info2)
-+		tp_assign(exit_int_info, exit_int_info)
-+		tp_assign(exit_int_info_err, exit_int_info_err)
-+		tp_assign(isa, isa)
-+	),
-+	TP_printk("rip: 0x%016llx reason: %s ext_inf1: 0x%016llx "
-+		  "ext_inf2: 0x%016llx ext_int: 0x%08x ext_int_err: 0x%08x",
-+		  __entry->rip,
-+		 (__entry->isa == KVM_ISA_VMX) ?
-+		 __print_symbolic(__entry->exit_code, VMX_EXIT_REASONS) :
-+		 __print_symbolic(__entry->exit_code, SVM_EXIT_REASONS),
-+		  __entry->exit_info1, __entry->exit_info2,
-+		  __entry->exit_int_info, __entry->exit_int_info_err)
-+)
-+
-+/*
-+ * Tracepoint for #VMEXIT reinjected to the guest
-+ */
-+TRACE_EVENT(kvm_nested_vmexit_inject,
-+	    TP_PROTO(__u32 exit_code,
-+		     __u64 exit_info1, __u64 exit_info2,
-+		     __u32 exit_int_info, __u32 exit_int_info_err, __u32 isa),
-+	    TP_ARGS(exit_code, exit_info1, exit_info2,
-+		    exit_int_info, exit_int_info_err, isa),
-+
-+	TP_STRUCT__entry(
-+		__field(	__u32,		exit_code		)
-+		__field(	__u64,		exit_info1		)
-+		__field(	__u64,		exit_info2		)
-+		__field(	__u32,		exit_int_info		)
-+		__field(	__u32,		exit_int_info_err	)
-+		__field(	__u32,		isa			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(exit_code, exit_code)
-+		tp_assign(exit_info1, exit_info1)
-+		tp_assign(exit_info2, exit_info2)
-+		tp_assign(exit_int_info, exit_int_info)
-+		tp_assign(exit_int_info_err, exit_int_info_err)
-+		tp_assign(isa, isa)
-+	),
-+
-+	TP_printk("reason: %s ext_inf1: 0x%016llx "
-+		  "ext_inf2: 0x%016llx ext_int: 0x%08x ext_int_err: 0x%08x",
-+		 (__entry->isa == KVM_ISA_VMX) ?
-+		 __print_symbolic(__entry->exit_code, VMX_EXIT_REASONS) :
-+		 __print_symbolic(__entry->exit_code, SVM_EXIT_REASONS),
-+		__entry->exit_info1, __entry->exit_info2,
-+		__entry->exit_int_info, __entry->exit_int_info_err)
-+)
-+
-+/*
-+ * Tracepoint for nested #vmexit because of interrupt pending
-+ */
-+TRACE_EVENT(kvm_nested_intr_vmexit,
-+	    TP_PROTO(__u64 rip),
-+	    TP_ARGS(rip),
-+
-+	TP_STRUCT__entry(
-+		__field(	__u64,	rip	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(rip,	rip)
-+	),
-+
-+	TP_printk("rip: 0x%016llx", __entry->rip)
-+)
-+
-+/*
-+ * Tracepoint for nested #vmexit because of interrupt pending
-+ */
-+TRACE_EVENT(kvm_invlpga,
-+	    TP_PROTO(__u64 rip, int asid, u64 address),
-+	    TP_ARGS(rip, asid, address),
-+
-+	TP_STRUCT__entry(
-+		__field(	__u64,	rip	)
-+		__field(	int,	asid	)
-+		__field(	__u64,	address	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(rip,	rip)
-+		tp_assign(asid,	asid)
-+		tp_assign(address,	address)
-+	),
-+
-+	TP_printk("rip: 0x%016llx asid: %d address: 0x%016llx",
-+		  __entry->rip, __entry->asid, __entry->address)
-+)
-+
-+/*
-+ * Tracepoint for nested #vmexit because of interrupt pending
-+ */
-+TRACE_EVENT(kvm_skinit,
-+	    TP_PROTO(__u64 rip, __u32 slb),
-+	    TP_ARGS(rip, slb),
-+
-+	TP_STRUCT__entry(
-+		__field(	__u64,	rip	)
-+		__field(	__u32,	slb	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(rip,	rip)
-+		tp_assign(slb,	slb)
-+	),
-+
-+	TP_printk("rip: 0x%016llx slb: 0x%08x",
-+		  __entry->rip, __entry->slb)
-+)
-+
-+#define KVM_EMUL_INSN_F_CR0_PE (1 << 0)
-+#define KVM_EMUL_INSN_F_EFL_VM (1 << 1)
-+#define KVM_EMUL_INSN_F_CS_D   (1 << 2)
-+#define KVM_EMUL_INSN_F_CS_L   (1 << 3)
-+
-+#define kvm_trace_symbol_emul_flags	                  \
-+	{ 0,   			    "real" },		  \
-+	{ KVM_EMUL_INSN_F_CR0_PE			  \
-+	  | KVM_EMUL_INSN_F_EFL_VM, "vm16" },		  \
-+	{ KVM_EMUL_INSN_F_CR0_PE,   "prot16" },		  \
-+	{ KVM_EMUL_INSN_F_CR0_PE			  \
-+	  | KVM_EMUL_INSN_F_CS_D,   "prot32" },		  \
-+	{ KVM_EMUL_INSN_F_CR0_PE			  \
-+	  | KVM_EMUL_INSN_F_CS_L,   "prot64" }
-+
-+#define kei_decode_mode(mode) ({			\
-+	u8 flags = 0xff;				\
-+	switch (mode) {					\
-+	case X86EMUL_MODE_REAL:				\
-+		flags = 0;				\
-+		break;					\
-+	case X86EMUL_MODE_VM86:				\
-+		flags = KVM_EMUL_INSN_F_EFL_VM;		\
-+		break;					\
-+	case X86EMUL_MODE_PROT16:			\
-+		flags = KVM_EMUL_INSN_F_CR0_PE;		\
-+		break;					\
-+	case X86EMUL_MODE_PROT32:			\
-+		flags = KVM_EMUL_INSN_F_CR0_PE		\
-+			| KVM_EMUL_INSN_F_CS_D;		\
-+		break;					\
-+	case X86EMUL_MODE_PROT64:			\
-+		flags = KVM_EMUL_INSN_F_CR0_PE		\
-+			| KVM_EMUL_INSN_F_CS_L;		\
-+		break;					\
-+	}						\
-+	flags;						\
-+	})
-+
-+TRACE_EVENT(kvm_emulate_insn,
-+	TP_PROTO(struct kvm_vcpu *vcpu, __u8 failed),
-+	TP_ARGS(vcpu, failed),
-+
-+	TP_STRUCT__entry(
-+		__field(    __u64, rip                       )
-+		__field(    __u32, csbase                    )
-+		__field(    __u8,  len                       )
-+		__array(    __u8,  insn,    15	             )
-+		__field(    __u8,  flags       	   	     )
-+		__field(    __u8,  failed                    )
-+		),
-+
-+	TP_fast_assign(
-+		tp_assign(rip, vcpu->arch.emulate_ctxt.fetch.start)
-+	  tp_assign(csbase, kvm_x86_ops->get_segment_base(vcpu, VCPU_SREG_CS))
-+		tp_assign(len, vcpu->arch.emulate_ctxt._eip
-+			       - vcpu->arch.emulate_ctxt.fetch.start)
-+		tp_memcpy(insn,
-+		       vcpu->arch.emulate_ctxt.fetch.data,
-+		       15)
-+		tp_assign(flags, kei_decode_mode(vcpu->arch.emulate_ctxt.mode))
-+		tp_assign(failed, failed)
-+		),
-+
-+	TP_printk("%x:%llx:%s (%s)%s",
-+		  __entry->csbase, __entry->rip,
-+		  __print_hex(__entry->insn, __entry->len),
-+		  __print_symbolic(__entry->flags,
-+				   kvm_trace_symbol_emul_flags),
-+		  __entry->failed ? " failed" : ""
-+		)
-+	)
-+
-+#define trace_kvm_emulate_insn_start(vcpu) trace_kvm_emulate_insn(vcpu, 0)
-+#define trace_kvm_emulate_insn_failed(vcpu) trace_kvm_emulate_insn(vcpu, 1)
-+
-+TRACE_EVENT(
-+	vcpu_match_mmio,
-+	TP_PROTO(gva_t gva, gpa_t gpa, bool write, bool gpa_match),
-+	TP_ARGS(gva, gpa, write, gpa_match),
-+
-+	TP_STRUCT__entry(
-+		__field(gva_t, gva)
-+		__field(gpa_t, gpa)
-+		__field(bool, write)
-+		__field(bool, gpa_match)
-+		),
-+
-+	TP_fast_assign(
-+		tp_assign(gva, gva)
-+		tp_assign(gpa, gpa)
-+		tp_assign(write, write)
-+		tp_assign(gpa_match, gpa_match)
-+		),
-+
-+	TP_printk("gva %#lx gpa %#llx %s %s", __entry->gva, __entry->gpa,
-+		  __entry->write ? "Write" : "Read",
-+		  __entry->gpa_match ? "GPA" : "GVA")
-+)
-+
-+#ifdef CONFIG_X86_64
-+
-+#define host_clocks					\
-+	{VCLOCK_NONE, "none"},				\
-+	{VCLOCK_TSC,  "tsc"},				\
-+	{VCLOCK_HPET, "hpet"}				\
-+
-+TRACE_EVENT(kvm_update_master_clock,
-+	TP_PROTO(bool use_master_clock, unsigned int host_clock, bool offset_matched),
-+	TP_ARGS(use_master_clock, host_clock, offset_matched),
-+
-+	TP_STRUCT__entry(
-+		__field(		bool,	use_master_clock	)
-+		__field(	unsigned int,	host_clock		)
-+		__field(		bool,	offset_matched		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(use_master_clock, use_master_clock)
-+		tp_assign(host_clock, host_clock)
-+		tp_assign(offset_matched, offset_matched)
-+	),
-+
-+	TP_printk("masterclock %d hostclock %s offsetmatched %u",
-+		  __entry->use_master_clock,
-+		  __print_symbolic(__entry->host_clock, host_clocks),
-+		  __entry->offset_matched)
-+)
-+
-+TRACE_EVENT(kvm_track_tsc,
-+	TP_PROTO(unsigned int vcpu_id, unsigned int nr_matched,
-+		 unsigned int online_vcpus, bool use_master_clock,
-+		 unsigned int host_clock),
-+	TP_ARGS(vcpu_id, nr_matched, online_vcpus, use_master_clock,
-+		host_clock),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned int,	vcpu_id			)
-+		__field(	unsigned int,	nr_vcpus_matched_tsc	)
-+		__field(	unsigned int,	online_vcpus		)
-+		__field(	bool,		use_master_clock	)
-+		__field(	unsigned int,	host_clock		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(vcpu_id, vcpu_id)
-+		tp_assign(nr_vcpus_matched_tsc, nr_matched)
-+		tp_assign(online_vcpus, online_vcpus)
-+		tp_assign(use_master_clock, use_master_clock)
-+		tp_assign(host_clock, host_clock)
-+	),
-+
-+	TP_printk("vcpu_id %u masterclock %u offsetmatched %u nr_online %u"
-+		  " hostclock %s",
-+		  __entry->vcpu_id, __entry->use_master_clock,
-+		  __entry->nr_vcpus_matched_tsc, __entry->online_vcpus,
-+		  __print_symbolic(__entry->host_clock, host_clocks))
-+)
-+
-+#endif /* CONFIG_X86_64 */
-+
-+#endif /* _TRACE_KVM_H */
-+
-+#undef TRACE_INCLUDE_PATH
-+#define TRACE_INCLUDE_PATH ../instrumentation/events/lttng-module/arch/x86/kvm
-+#undef TRACE_INCLUDE_FILE
-+#define TRACE_INCLUDE_FILE trace
-+
-+/* This part must be outside protection */
-+#include "../../../../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/asoc.h
-@@ -0,0 +1,422 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM asoc
-+
-+#if !defined(_TRACE_ASOC_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_ASOC_H
-+
-+#include <linux/ktime.h>
-+#include <linux/tracepoint.h>
-+#include <linux/version.h>
-+
-+#define DAPM_DIRECT "(direct)"
-+
-+#ifndef _TRACE_ASOC_DEF
-+#define _TRACE_ASOC_DEF
-+struct snd_soc_jack;
-+struct snd_soc_codec;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0))
-+struct snd_soc_platform;
-+#endif
-+struct snd_soc_card;
-+struct snd_soc_dapm_widget;
-+#endif
-+
-+/*
-+ * Log register events
-+ */
-+DECLARE_EVENT_CLASS(snd_soc_reg,
-+
-+	TP_PROTO(struct snd_soc_codec *codec, unsigned int reg,
-+		 unsigned int val),
-+
-+	TP_ARGS(codec, reg, val),
-+
-+	TP_STRUCT__entry(
-+		__string(	name,		codec->name	)
-+		__field(	int,		id		)
-+		__field(	unsigned int,	reg		)
-+		__field(	unsigned int,	val		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(name, codec->name)
-+		tp_assign(id, codec->id)
-+		tp_assign(reg, reg)
-+		tp_assign(val, val)
-+	),
-+
-+	TP_printk("codec=%s.%d reg=%x val=%x", __get_str(name),
-+		  (int)__entry->id, (unsigned int)__entry->reg,
-+		  (unsigned int)__entry->val)
-+)
-+
-+DEFINE_EVENT(snd_soc_reg, snd_soc_reg_write,
-+
-+	TP_PROTO(struct snd_soc_codec *codec, unsigned int reg,
-+		 unsigned int val),
-+
-+	TP_ARGS(codec, reg, val)
-+
-+)
-+
-+DEFINE_EVENT(snd_soc_reg, snd_soc_reg_read,
-+
-+	TP_PROTO(struct snd_soc_codec *codec, unsigned int reg,
-+		 unsigned int val),
-+
-+	TP_ARGS(codec, reg, val)
-+
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0))
-+DECLARE_EVENT_CLASS(snd_soc_preg,
-+
-+	TP_PROTO(struct snd_soc_platform *platform, unsigned int reg,
-+		 unsigned int val),
-+
-+	TP_ARGS(platform, reg, val),
-+
-+	TP_STRUCT__entry(
-+		__string(	name,		platform->name	)
-+		__field(	int,		id		)
-+		__field(	unsigned int,	reg		)
-+		__field(	unsigned int,	val		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(name, platform->name)
-+		tp_assign(id, platform->id)
-+		tp_assign(reg, reg)
-+		tp_assign(val, val)
-+	),
-+
-+	TP_printk("platform=%s.%d reg=%x val=%x", __get_str(name),
-+		  (int)__entry->id, (unsigned int)__entry->reg,
-+		  (unsigned int)__entry->val)
-+)
-+
-+DEFINE_EVENT(snd_soc_preg, snd_soc_preg_write,
-+
-+	TP_PROTO(struct snd_soc_platform *platform, unsigned int reg,
-+		 unsigned int val),
-+
-+	TP_ARGS(platform, reg, val)
-+
-+)
-+
-+DEFINE_EVENT(snd_soc_preg, snd_soc_preg_read,
-+
-+	TP_PROTO(struct snd_soc_platform *platform, unsigned int reg,
-+		 unsigned int val),
-+
-+	TP_ARGS(platform, reg, val)
-+
-+)
-+#endif
-+
-+DECLARE_EVENT_CLASS(snd_soc_card,
-+
-+	TP_PROTO(struct snd_soc_card *card, int val),
-+
-+	TP_ARGS(card, val),
-+
-+	TP_STRUCT__entry(
-+		__string(	name,		card->name	)
-+		__field(	int,		val		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(name, card->name)
-+		tp_assign(val, val)
-+	),
-+
-+	TP_printk("card=%s val=%d", __get_str(name), (int)__entry->val)
-+)
-+
-+DEFINE_EVENT(snd_soc_card, snd_soc_bias_level_start,
-+
-+	TP_PROTO(struct snd_soc_card *card, int val),
-+
-+	TP_ARGS(card, val)
-+
-+)
-+
-+DEFINE_EVENT(snd_soc_card, snd_soc_bias_level_done,
-+
-+	TP_PROTO(struct snd_soc_card *card, int val),
-+
-+	TP_ARGS(card, val)
-+
-+)
-+
-+DECLARE_EVENT_CLASS(snd_soc_dapm_basic,
-+
-+	TP_PROTO(struct snd_soc_card *card),
-+
-+	TP_ARGS(card),
-+
-+	TP_STRUCT__entry(
-+		__string(	name,	card->name	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(name, card->name)
-+	),
-+
-+	TP_printk("card=%s", __get_str(name))
-+)
-+
-+DEFINE_EVENT(snd_soc_dapm_basic, snd_soc_dapm_start,
-+
-+	TP_PROTO(struct snd_soc_card *card),
-+
-+	TP_ARGS(card)
-+
-+)
-+
-+DEFINE_EVENT(snd_soc_dapm_basic, snd_soc_dapm_done,
-+
-+	TP_PROTO(struct snd_soc_card *card),
-+
-+	TP_ARGS(card)
-+
-+)
-+
-+DECLARE_EVENT_CLASS(snd_soc_dapm_widget,
-+
-+	TP_PROTO(struct snd_soc_dapm_widget *w, int val),
-+
-+	TP_ARGS(w, val),
-+
-+	TP_STRUCT__entry(
-+		__string(	name,	w->name		)
-+		__field(	int,	val		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(name, w->name)
-+		tp_assign(val, val)
-+	),
-+
-+	TP_printk("widget=%s val=%d", __get_str(name),
-+		  (int)__entry->val)
-+)
-+
-+DEFINE_EVENT(snd_soc_dapm_widget, snd_soc_dapm_widget_power,
-+
-+	TP_PROTO(struct snd_soc_dapm_widget *w, int val),
-+
-+	TP_ARGS(w, val)
-+
-+)
-+
-+DEFINE_EVENT(snd_soc_dapm_widget, snd_soc_dapm_widget_event_start,
-+
-+	TP_PROTO(struct snd_soc_dapm_widget *w, int val),
-+
-+	TP_ARGS(w, val)
-+
-+)
-+
-+DEFINE_EVENT(snd_soc_dapm_widget, snd_soc_dapm_widget_event_done,
-+
-+	TP_PROTO(struct snd_soc_dapm_widget *w, int val),
-+
-+	TP_ARGS(w, val)
-+
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))
-+TRACE_EVENT(snd_soc_dapm_walk_done,
-+
-+	TP_PROTO(struct snd_soc_card *card),
-+
-+	TP_ARGS(card),
-+
-+	TP_STRUCT__entry(
-+		__string(	name,	card->name		)
-+		__field(	int,	power_checks		)
-+		__field(	int,	path_checks		)
-+		__field(	int,	neighbour_checks	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(name, card->name)
-+		tp_assign(power_checks, card->dapm_stats.power_checks)
-+		tp_assign(path_checks, card->dapm_stats.path_checks)
-+		tp_assign(neighbour_checks, card->dapm_stats.neighbour_checks)
-+	),
-+
-+	TP_printk("%s: checks %d power, %d path, %d neighbour",
-+		  __get_str(name), (int)__entry->power_checks,
-+		  (int)__entry->path_checks, (int)__entry->neighbour_checks)
-+)
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
-+TRACE_EVENT(snd_soc_dapm_output_path,
-+
-+	TP_PROTO(struct snd_soc_dapm_widget *widget,
-+		struct snd_soc_dapm_path *path),
-+
-+	TP_ARGS(widget, path),
-+
-+	TP_STRUCT__entry(
-+		__string(	wname,	widget->name		)
-+		__string(	pname,	path->name ? path->name : DAPM_DIRECT)
-+		__string(	psname,	path->sink->name	)
-+		__field(	int,	path_sink		)
-+		__field(	int,	path_connect		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(wname, widget->name)
-+		tp_strcpy(pname, path->name ? path->name : DAPM_DIRECT)
-+		tp_strcpy(psname, path->sink->name)
-+		tp_assign(path_connect, path->connect)
-+		tp_assign(path_sink, (long)path->sink)
-+	),
-+
-+	TP_printk("%c%s -> %s -> %s\n",
-+		(int) __entry->path_sink &&
-+		(int) __entry->path_connect ? '*' : ' ',
-+		__get_str(wname), __get_str(pname), __get_str(psname))
-+)
-+
-+TRACE_EVENT(snd_soc_dapm_input_path,
-+
-+	TP_PROTO(struct snd_soc_dapm_widget *widget,
-+		struct snd_soc_dapm_path *path),
-+
-+	TP_ARGS(widget, path),
-+
-+	TP_STRUCT__entry(
-+		__string(	wname,	widget->name		)
-+		__string(	pname,	path->name ? path->name : DAPM_DIRECT)
-+		__string(	psname,	path->source->name	)
-+		__field(	int,	path_source		)
-+		__field(	int,	path_connect		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(wname, widget->name)
-+		tp_strcpy(pname, path->name ? path->name : DAPM_DIRECT)
-+		tp_strcpy(psname, path->source->name)
-+		tp_assign(path_connect, path->connect)
-+		tp_assign(path_source, (long)path->source)
-+	),
-+
-+	TP_printk("%c%s <- %s <- %s\n",
-+		(int) __entry->path_source &&
-+		(int) __entry->path_connect ? '*' : ' ',
-+		__get_str(wname), __get_str(pname), __get_str(psname))
-+)
-+
-+TRACE_EVENT(snd_soc_dapm_connected,
-+
-+	TP_PROTO(int paths, int stream),
-+
-+	TP_ARGS(paths, stream),
-+
-+	TP_STRUCT__entry(
-+		__field(	int,	paths		)
-+		__field(	int,	stream		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(paths, paths)
-+		tp_assign(stream, stream)
-+	),
-+
-+	TP_printk("%s: found %d paths\n",
-+		__entry->stream ? "capture" : "playback", __entry->paths)
-+)
-+#endif
-+
-+TRACE_EVENT(snd_soc_jack_irq,
-+
-+	TP_PROTO(const char *name),
-+
-+	TP_ARGS(name),
-+
-+	TP_STRUCT__entry(
-+		__string(	name,	name		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(name, name)
-+	),
-+
-+	TP_printk("%s", __get_str(name))
-+)
-+
-+TRACE_EVENT(snd_soc_jack_report,
-+
-+	TP_PROTO(struct snd_soc_jack *jack, int mask, int val),
-+
-+	TP_ARGS(jack, mask, val),
-+
-+	TP_STRUCT__entry(
-+		__string(	name,		jack->jack->name	)
-+		__field(	int,		mask			)
-+		__field(	int,		val			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(name, jack->jack->name)
-+		tp_assign(mask, mask)
-+		tp_assign(val, val)
-+	),
-+
-+	TP_printk("jack=%s %x/%x", __get_str(name), (int)__entry->val,
-+		  (int)__entry->mask)
-+)
-+
-+TRACE_EVENT(snd_soc_jack_notify,
-+
-+	TP_PROTO(struct snd_soc_jack *jack, int val),
-+
-+	TP_ARGS(jack, val),
-+
-+	TP_STRUCT__entry(
-+		__string(	name,		jack->jack->name	)
-+		__field(	int,		val			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(name, jack->jack->name)
-+		tp_assign(val, val)
-+	),
-+
-+	TP_printk("jack=%s %x", __get_str(name), (int)__entry->val)
-+)
-+
-+TRACE_EVENT(snd_soc_cache_sync,
-+
-+	TP_PROTO(struct snd_soc_codec *codec, const char *type,
-+		 const char *status),
-+
-+	TP_ARGS(codec, type, status),
-+
-+	TP_STRUCT__entry(
-+		__string(	name,		codec->name	)
-+		__string(	status,		status		)
-+		__string(	type,		type		)
-+		__field(	int,		id		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(name, codec->name)
-+		tp_strcpy(status, status)
-+		tp_strcpy(type, type)
-+		tp_assign(id, codec->id)
-+	),
-+
-+	TP_printk("codec=%s.%d type=%s status=%s", __get_str(name),
-+		  (int)__entry->id, __get_str(type), __get_str(status))
-+)
-+
-+#endif /* _TRACE_ASOC_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/block.h
-@@ -0,0 +1,878 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM block
-+
-+#if !defined(_TRACE_BLOCK_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_BLOCK_H
-+
-+#include <linux/blktrace_api.h>
-+#include <linux/blkdev.h>
-+#include <linux/tracepoint.h>
-+#include <linux/trace_seq.h>
-+#include <linux/version.h>
-+
-+#define RWBS_LEN	8
-+
-+#ifndef _TRACE_BLOCK_DEF_
-+#define _TRACE_BLOCK_DEF_
-+
-+#define __blk_dump_cmd(cmd, len)	"<unknown>"
-+
-+enum {
-+	RWBS_FLAG_WRITE		= (1 << 0),
-+	RWBS_FLAG_DISCARD	= (1 << 1),
-+	RWBS_FLAG_READ		= (1 << 2),
-+	RWBS_FLAG_RAHEAD	= (1 << 3),
-+	RWBS_FLAG_BARRIER	= (1 << 4),
-+	RWBS_FLAG_SYNC		= (1 << 5),
-+	RWBS_FLAG_META		= (1 << 6),
-+	RWBS_FLAG_SECURE	= (1 << 7),
-+	RWBS_FLAG_FLUSH		= (1 << 8),
-+	RWBS_FLAG_FUA		= (1 << 9),
-+};
-+
-+#endif /* _TRACE_BLOCK_DEF_ */
-+
-+#define __print_rwbs_flags(rwbs)		\
-+	__print_flags(rwbs, "",			\
-+		{ RWBS_FLAG_FLUSH, "F" },	\
-+		{ RWBS_FLAG_WRITE, "W" },	\
-+		{ RWBS_FLAG_DISCARD, "D" },	\
-+		{ RWBS_FLAG_READ, "R" },	\
-+		{ RWBS_FLAG_FUA, "F" },		\
-+		{ RWBS_FLAG_RAHEAD, "A" },	\
-+		{ RWBS_FLAG_BARRIER, "B" },	\
-+		{ RWBS_FLAG_SYNC, "S" },	\
-+		{ RWBS_FLAG_META, "M" },	\
-+		{ RWBS_FLAG_SECURE, "E" })
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0))
-+
-+#define blk_fill_rwbs(rwbs, rw, bytes)					      \
-+		tp_assign(rwbs, ((rw) & WRITE ? RWBS_FLAG_WRITE :	      \
-+			( (rw) & REQ_DISCARD ? RWBS_FLAG_DISCARD :	      \
-+			( (bytes) ? RWBS_FLAG_READ :			      \
-+			( 0 ))))					      \
-+			| ((rw) & REQ_RAHEAD ? RWBS_FLAG_RAHEAD : 0)	      \
-+			| ((rw) & REQ_SYNC ? RWBS_FLAG_SYNC : 0)	      \
-+			| ((rw) & REQ_META ? RWBS_FLAG_META : 0)	      \
-+			| ((rw) & REQ_SECURE ? RWBS_FLAG_SECURE : 0)	      \
-+			| ((rw) & REQ_FLUSH ? RWBS_FLAG_FLUSH : 0)	      \
-+			| ((rw) & REQ_FUA ? RWBS_FLAG_FUA : 0))
-+
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
-+
-+#define blk_fill_rwbs(rwbs, rw, bytes)					      \
-+		tp_assign(rwbs, ((rw) & WRITE ? RWBS_FLAG_WRITE :	      \
-+			( (rw) & REQ_DISCARD ? RWBS_FLAG_DISCARD :	      \
-+			( (bytes) ? RWBS_FLAG_READ :			      \
-+			( 0 ))))					      \
-+			| ((rw) & REQ_RAHEAD ? RWBS_FLAG_RAHEAD : 0)	      \
-+			| ((rw) & REQ_SYNC ? RWBS_FLAG_SYNC : 0)	      \
-+			| ((rw) & REQ_META ? RWBS_FLAG_META : 0)	      \
-+			| ((rw) & REQ_SECURE ? RWBS_FLAG_SECURE : 0))
-+
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+
-+#define blk_fill_rwbs(rwbs, rw, bytes)					      \
-+		tp_assign(rwbs, ((rw) & WRITE ? RWBS_FLAG_WRITE :	      \
-+			( (rw) & REQ_DISCARD ? RWBS_FLAG_DISCARD :	      \
-+			( (bytes) ? RWBS_FLAG_READ :			      \
-+			( 0 ))))					      \
-+			| ((rw) & REQ_RAHEAD ? RWBS_FLAG_RAHEAD : 0)	      \
-+			| ((rw) & REQ_HARDBARRIER ? RWBS_FLAG_BARRIER : 0)    \
-+			| ((rw) & REQ_SYNC ? RWBS_FLAG_SYNC : 0)	      \
-+			| ((rw) & REQ_META ? RWBS_FLAG_META : 0)	      \
-+			| ((rw) & REQ_SECURE ? RWBS_FLAG_SECURE : 0))
-+
-+#else
-+
-+#define blk_fill_rwbs(rwbs, rw, bytes)					      \
-+		tp_assign(rwbs, ((rw) & WRITE ? RWBS_FLAG_WRITE :	      \
-+			( (rw) & (1 << BIO_RW_DISCARD) ? RWBS_FLAG_DISCARD :  \
-+			( (bytes) ? RWBS_FLAG_READ :			      \
-+			( 0 ))))					      \
-+			| ((rw) & (1 << BIO_RW_AHEAD) ? RWBS_FLAG_RAHEAD : 0) \
-+			| ((rw) & (1 << BIO_RW_SYNCIO) ? RWBS_FLAG_SYNC : 0)  \
-+			| ((rw) & (1 << BIO_RW_META) ? RWBS_FLAG_META : 0)    \
-+			| ((rw) & (1 << BIO_RW_BARRIER) ? RWBS_FLAG_BARRIER : 0))
-+
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0))
-+DECLARE_EVENT_CLASS(block_buffer,
-+
-+	TP_PROTO(struct buffer_head *bh),
-+
-+	TP_ARGS(bh),
-+
-+	TP_STRUCT__entry (
-+		__field(  dev_t,	dev			)
-+		__field(  sector_t,	sector			)
-+		__field(  size_t,	size			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, bh->b_bdev->bd_dev)
-+		tp_assign(sector, bh->b_blocknr)
-+		tp_assign(size, bh->b_size)
-+	),
-+
-+	TP_printk("%d,%d sector=%llu size=%zu",
-+		MAJOR(__entry->dev), MINOR(__entry->dev),
-+		(unsigned long long)__entry->sector, __entry->size
-+	)
-+)
-+
-+/**
-+ * block_touch_buffer - mark a buffer accessed
-+ * @bh: buffer_head being touched
-+ *
-+ * Called from touch_buffer().
-+ */
-+DEFINE_EVENT(block_buffer, block_touch_buffer,
-+
-+	TP_PROTO(struct buffer_head *bh),
-+
-+	TP_ARGS(bh)
-+)
-+
-+/**
-+ * block_dirty_buffer - mark a buffer dirty
-+ * @bh: buffer_head being dirtied
-+ *
-+ * Called from mark_buffer_dirty().
-+ */
-+DEFINE_EVENT(block_buffer, block_dirty_buffer,
-+
-+	TP_PROTO(struct buffer_head *bh),
-+
-+	TP_ARGS(bh)
-+)
-+#endif
-+
-+DECLARE_EVENT_CLASS(block_rq_with_error,
-+
-+	TP_PROTO(struct request_queue *q, struct request *rq),
-+
-+	TP_ARGS(q, rq),
-+
-+	TP_STRUCT__entry(
-+		__field(  dev_t,	dev			)
-+		__field(  sector_t,	sector			)
-+		__field(  unsigned int,	nr_sector		)
-+		__field(  int,		errors			)
-+		__field(  unsigned int,	rwbs			)
-+		__dynamic_array_hex( unsigned char,	cmd,
-+			(rq->cmd_type == REQ_TYPE_BLOCK_PC) ?
-+				rq->cmd_len : 0)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, rq->rq_disk ? disk_devt(rq->rq_disk) : 0)
-+		tp_assign(sector, (rq->cmd_type == REQ_TYPE_BLOCK_PC) ?
-+					0 : blk_rq_pos(rq))
-+		tp_assign(nr_sector, (rq->cmd_type == REQ_TYPE_BLOCK_PC) ?
-+					0 : blk_rq_sectors(rq))
-+		tp_assign(errors, rq->errors)
-+		blk_fill_rwbs(rwbs, rq->cmd_flags, blk_rq_bytes(rq))
-+		tp_memcpy_dyn(cmd, (rq->cmd_type == REQ_TYPE_BLOCK_PC) ?
-+					rq->cmd : NULL)
-+	),
-+
-+	TP_printk("%d,%d %s (%s) %llu + %u [%d]",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __print_rwbs_flags(__entry->rwbs),
-+		  __blk_dump_cmd(__get_dynamic_array(cmd),
-+				 __get_dynamic_array_len(cmd)),
-+		  (unsigned long long)__entry->sector,
-+		  __entry->nr_sector, __entry->errors)
-+)
-+
-+/**
-+ * block_rq_abort - abort block operation request
-+ * @q: queue containing the block operation request
-+ * @rq: block IO operation request
-+ *
-+ * Called immediately after pending block IO operation request @rq in
-+ * queue @q is aborted. The fields in the operation request @rq
-+ * can be examined to determine which device and sectors the pending
-+ * operation would access.
-+ */
-+DEFINE_EVENT(block_rq_with_error, block_rq_abort,
-+
-+	TP_PROTO(struct request_queue *q, struct request *rq),
-+
-+	TP_ARGS(q, rq)
-+)
-+
-+/**
-+ * block_rq_requeue - place block IO request back on a queue
-+ * @q: queue holding operation
-+ * @rq: block IO operation request
-+ *
-+ * The block operation request @rq is being placed back into queue
-+ * @q.  For some reason the request was not completed and needs to be
-+ * put back in the queue.
-+ */
-+DEFINE_EVENT(block_rq_with_error, block_rq_requeue,
-+
-+	TP_PROTO(struct request_queue *q, struct request *rq),
-+
-+	TP_ARGS(q, rq)
-+)
-+
-+/**
-+ * block_rq_complete - block IO operation completed by device driver
-+ * @q: queue containing the block operation request
-+ * @rq: block operations request
-+ *
-+ * The block_rq_complete tracepoint event indicates that some portion
-+ * of operation request has been completed by the device driver.  If
-+ * the @rq->bio is %NULL, then there is absolutely no additional work to
-+ * do for the request. If @rq->bio is non-NULL then there is
-+ * additional work required to complete the request.
-+ */
-+DEFINE_EVENT(block_rq_with_error, block_rq_complete,
-+
-+	TP_PROTO(struct request_queue *q, struct request *rq),
-+
-+	TP_ARGS(q, rq)
-+)
-+
-+DECLARE_EVENT_CLASS(block_rq,
-+
-+	TP_PROTO(struct request_queue *q, struct request *rq),
-+
-+	TP_ARGS(q, rq),
-+
-+	TP_STRUCT__entry(
-+		__field(  dev_t,	dev			)
-+		__field(  sector_t,	sector			)
-+		__field(  unsigned int,	nr_sector		)
-+		__field(  unsigned int,	bytes			)
-+		__field(  unsigned int,	rwbs			)
-+		__array_text(  char,         comm,   TASK_COMM_LEN   )
-+		__dynamic_array_hex( unsigned char,	cmd,
-+			(rq->cmd_type == REQ_TYPE_BLOCK_PC) ?
-+				rq->cmd_len : 0)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, rq->rq_disk ? disk_devt(rq->rq_disk) : 0)
-+		tp_assign(sector, (rq->cmd_type == REQ_TYPE_BLOCK_PC) ?
-+					0 : blk_rq_pos(rq))
-+		tp_assign(nr_sector, (rq->cmd_type == REQ_TYPE_BLOCK_PC) ?
-+					0 : blk_rq_sectors(rq))
-+		tp_assign(bytes, (rq->cmd_type == REQ_TYPE_BLOCK_PC) ?
-+					blk_rq_bytes(rq) : 0)
-+		blk_fill_rwbs(rwbs, rq->cmd_flags, blk_rq_bytes(rq))
-+		tp_memcpy_dyn(cmd, (rq->cmd_type == REQ_TYPE_BLOCK_PC) ?
-+					rq->cmd : NULL)
-+		tp_memcpy(comm, current->comm, TASK_COMM_LEN)
-+	),
-+
-+	TP_printk("%d,%d %s %u (%s) %llu + %u [%s]",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __print_rwbs_flags(__entry->rwbs),
-+		  __entry->bytes,
-+		  __blk_dump_cmd(__get_dynamic_array(cmd),
-+				 __get_dynamic_array_len(cmd)),
-+		  (unsigned long long)__entry->sector,
-+		  __entry->nr_sector, __entry->comm)
-+)
-+
-+/**
-+ * block_rq_insert - insert block operation request into queue
-+ * @q: target queue
-+ * @rq: block IO operation request
-+ *
-+ * Called immediately before block operation request @rq is inserted
-+ * into queue @q.  The fields in the operation request @rq struct can
-+ * be examined to determine which device and sectors the pending
-+ * operation would access.
-+ */
-+DEFINE_EVENT(block_rq, block_rq_insert,
-+
-+	TP_PROTO(struct request_queue *q, struct request *rq),
-+
-+	TP_ARGS(q, rq)
-+)
-+
-+/**
-+ * block_rq_issue - issue pending block IO request operation to device driver
-+ * @q: queue holding operation
-+ * @rq: block IO operation operation request
-+ *
-+ * Called when block operation request @rq from queue @q is sent to a
-+ * device driver for processing.
-+ */
-+DEFINE_EVENT(block_rq, block_rq_issue,
-+
-+	TP_PROTO(struct request_queue *q, struct request *rq),
-+
-+	TP_ARGS(q, rq)
-+)
-+
-+/**
-+ * block_bio_bounce - used bounce buffer when processing block operation
-+ * @q: queue holding the block operation
-+ * @bio: block operation
-+ *
-+ * A bounce buffer was used to handle the block operation @bio in @q.
-+ * This occurs when hardware limitations prevent a direct transfer of
-+ * data between the @bio data memory area and the IO device.  Use of a
-+ * bounce buffer requires extra copying of data and decreases
-+ * performance.
-+ */
-+TRACE_EVENT(block_bio_bounce,
-+
-+	TP_PROTO(struct request_queue *q, struct bio *bio),
-+
-+	TP_ARGS(q, bio),
-+
-+	TP_STRUCT__entry(
-+		__field( dev_t,		dev			)
-+		__field( sector_t,	sector			)
-+		__field( unsigned int,	nr_sector		)
-+		__field( unsigned int,	rwbs			)
-+		__array_text( char,		comm,	TASK_COMM_LEN	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, bio->bi_bdev ?
-+					  bio->bi_bdev->bd_dev : 0)
-+		tp_assign(sector, bio->bi_sector)
-+		tp_assign(nr_sector, bio->bi_size >> 9)
-+		blk_fill_rwbs(rwbs, bio->bi_rw, bio->bi_size)
-+		tp_memcpy(comm, current->comm, TASK_COMM_LEN)
-+	),
-+
-+	TP_printk("%d,%d %s %llu + %u [%s]",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __print_rwbs_flags(__entry->rwbs),
-+		  (unsigned long long)__entry->sector,
-+		  __entry->nr_sector, __entry->comm)
-+)
-+
-+/**
-+ * block_bio_complete - completed all work on the block operation
-+ * @q: queue holding the block operation
-+ * @bio: block operation completed
-+ * @error: io error value
-+ *
-+ * This tracepoint indicates there is no further work to do on this
-+ * block IO operation @bio.
-+ */
-+TRACE_EVENT(block_bio_complete,
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38))
-+	TP_PROTO(struct request_queue *q, struct bio *bio, int error),
-+
-+	TP_ARGS(q, bio, error),
-+#else
-+	TP_PROTO(struct request_queue *q, struct bio *bio),
-+
-+	TP_ARGS(q, bio),
-+#endif
-+
-+	TP_STRUCT__entry(
-+		__field( dev_t,		dev		)
-+		__field( sector_t,	sector		)
-+		__field( unsigned,	nr_sector	)
-+		__field( int,		error		)
-+		__field( unsigned int,	rwbs		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, bio->bi_bdev->bd_dev)
-+		tp_assign(sector, bio->bi_sector)
-+		tp_assign(nr_sector, bio->bi_size >> 9)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38))
-+		tp_assign(error, error)
-+#else
-+		tp_assign(error, 0)
-+#endif
-+		blk_fill_rwbs(rwbs, bio->bi_rw, bio->bi_size)
-+	),
-+
-+	TP_printk("%d,%d %s %llu + %u [%d]",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __print_rwbs_flags(__entry->rwbs),
-+		  (unsigned long long)__entry->sector,
-+		  __entry->nr_sector, __entry->error)
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0))
-+DECLARE_EVENT_CLASS(block_bio_merge,
-+
-+	TP_PROTO(struct request_queue *q, struct request *rq, struct bio *bio),
-+
-+	TP_ARGS(q, rq, bio),
-+
-+	TP_STRUCT__entry(
-+		__field( dev_t,		dev			)
-+		__field( sector_t,	sector			)
-+		__field( unsigned int,	nr_sector		)
-+		__field( unsigned int,	rwbs			)
-+		__array_text( char,		comm,	TASK_COMM_LEN	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, bio->bi_bdev->bd_dev)
-+		tp_assign(sector, bio->bi_sector)
-+		tp_assign(nr_sector, bio->bi_size >> 9)
-+		blk_fill_rwbs(rwbs, bio->bi_rw, bio->bi_size)
-+		tp_memcpy(comm, current->comm, TASK_COMM_LEN)
-+	),
-+
-+	TP_printk("%d,%d %s %llu + %u [%s]",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __print_rwbs_flags(__entry->rwbs),
-+		  (unsigned long long)__entry->sector,
-+		  __entry->nr_sector, __entry->comm)
-+)
-+
-+/**
-+ * block_bio_backmerge - merging block operation to the end of an existing operation
-+ * @q: queue holding operation
-+ * @bio: new block operation to merge
-+ *
-+ * Merging block request @bio to the end of an existing block request
-+ * in queue @q.
-+ */
-+DEFINE_EVENT(block_bio_merge, block_bio_backmerge,
-+
-+	TP_PROTO(struct request_queue *q, struct request *rq, struct bio *bio),
-+
-+	TP_ARGS(q, rq, bio)
-+)
-+
-+/**
-+ * block_bio_frontmerge - merging block operation to the beginning of an existing operation
-+ * @q: queue holding operation
-+ * @bio: new block operation to merge
-+ *
-+ * Merging block IO operation @bio to the beginning of an existing block
-+ * operation in queue @q.
-+ */
-+DEFINE_EVENT(block_bio_merge, block_bio_frontmerge,
-+
-+	TP_PROTO(struct request_queue *q, struct request *rq, struct bio *bio),
-+
-+	TP_ARGS(q, rq, bio)
-+)
-+
-+/**
-+ * block_bio_queue - putting new block IO operation in queue
-+ * @q: queue holding operation
-+ * @bio: new block operation
-+ *
-+ * About to place the block IO operation @bio into queue @q.
-+ */
-+TRACE_EVENT(block_bio_queue,
-+
-+	TP_PROTO(struct request_queue *q, struct bio *bio),
-+
-+	TP_ARGS(q, bio),
-+
-+	TP_STRUCT__entry(
-+		__field( dev_t,		dev			)
-+		__field( sector_t,	sector			)
-+		__field( unsigned int,	nr_sector		)
-+		__array( char,		rwbs,	RWBS_LEN	)
-+		__array( char,		comm,	TASK_COMM_LEN	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, bio->bi_bdev->bd_dev)
-+		tp_assign(sector, bio->bi_sector)
-+		tp_assign(nr_sector, bio->bi_size >> 9)
-+		blk_fill_rwbs(rwbs, bio->bi_rw, bio->bi_size)
-+		tp_memcpy(comm, current->comm, TASK_COMM_LEN)
-+	),
-+
-+	TP_printk("%d,%d %s %llu + %u [%s]",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev), __entry->rwbs,
-+		  (unsigned long long)__entry->sector,
-+		  __entry->nr_sector, __entry->comm)
-+)
-+#else
-+DECLARE_EVENT_CLASS(block_bio,
-+
-+	TP_PROTO(struct request_queue *q, struct bio *bio),
-+
-+	TP_ARGS(q, bio),
-+
-+	TP_STRUCT__entry(
-+		__field( dev_t,		dev			)
-+		__field( sector_t,	sector			)
-+		__field( unsigned int,	nr_sector		)
-+		__field( unsigned int,	rwbs			)
-+		__array_text( char,		comm,	TASK_COMM_LEN	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, bio->bi_bdev ? bio->bi_bdev->bd_dev : 0)
-+		tp_assign(sector, bio->bi_sector)
-+		tp_assign(nr_sector, bio->bi_size >> 9)
-+		blk_fill_rwbs(rwbs, bio->bi_rw, bio->bi_size)
-+		tp_memcpy(comm, current->comm, TASK_COMM_LEN)
-+	),
-+
-+	TP_printk("%d,%d %s %llu + %u [%s]",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __print_rwbs_flags(__entry->rwbs),
-+		  (unsigned long long)__entry->sector,
-+		  __entry->nr_sector, __entry->comm)
-+)
-+
-+/**
-+ * block_bio_backmerge - merging block operation to the end of an existing operation
-+ * @q: queue holding operation
-+ * @bio: new block operation to merge
-+ *
-+ * Merging block request @bio to the end of an existing block request
-+ * in queue @q.
-+ */
-+DEFINE_EVENT(block_bio, block_bio_backmerge,
-+
-+	TP_PROTO(struct request_queue *q, struct bio *bio),
-+
-+	TP_ARGS(q, bio)
-+)
-+
-+/**
-+ * block_bio_frontmerge - merging block operation to the beginning of an existing operation
-+ * @q: queue holding operation
-+ * @bio: new block operation to merge
-+ *
-+ * Merging block IO operation @bio to the beginning of an existing block
-+ * operation in queue @q.
-+ */
-+DEFINE_EVENT(block_bio, block_bio_frontmerge,
-+
-+	TP_PROTO(struct request_queue *q, struct bio *bio),
-+
-+	TP_ARGS(q, bio)
-+)
-+
-+/**
-+ * block_bio_queue - putting new block IO operation in queue
-+ * @q: queue holding operation
-+ * @bio: new block operation
-+ *
-+ * About to place the block IO operation @bio into queue @q.
-+ */
-+DEFINE_EVENT(block_bio, block_bio_queue,
-+
-+	TP_PROTO(struct request_queue *q, struct bio *bio),
-+
-+	TP_ARGS(q, bio)
-+)
-+#endif
-+
-+DECLARE_EVENT_CLASS(block_get_rq,
-+
-+	TP_PROTO(struct request_queue *q, struct bio *bio, int rw),
-+
-+	TP_ARGS(q, bio, rw),
-+
-+	TP_STRUCT__entry(
-+		__field( dev_t,		dev			)
-+		__field( sector_t,	sector			)
-+		__field( unsigned int,	nr_sector		)
-+		__field( unsigned int,	rwbs			)
-+		__array_text( char,		comm,	TASK_COMM_LEN	)
-+        ),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, bio ? bio->bi_bdev->bd_dev : 0)
-+		tp_assign(sector, bio ? bio->bi_sector : 0)
-+		tp_assign(nr_sector, bio ? bio->bi_size >> 9 : 0)
-+		blk_fill_rwbs(rwbs, bio ? bio->bi_rw : 0,
-+			      bio ? bio->bi_size >> 9 : 0)
-+		tp_memcpy(comm, current->comm, TASK_COMM_LEN)
-+        ),
-+
-+	TP_printk("%d,%d %s %llu + %u [%s]",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __print_rwbs_flags(__entry->rwbs),
-+		  (unsigned long long)__entry->sector,
-+		  __entry->nr_sector, __entry->comm)
-+)
-+
-+/**
-+ * block_getrq - get a free request entry in queue for block IO operations
-+ * @q: queue for operations
-+ * @bio: pending block IO operation
-+ * @rw: low bit indicates a read (%0) or a write (%1)
-+ *
-+ * A request struct for queue @q has been allocated to handle the
-+ * block IO operation @bio.
-+ */
-+DEFINE_EVENT(block_get_rq, block_getrq,
-+
-+	TP_PROTO(struct request_queue *q, struct bio *bio, int rw),
-+
-+	TP_ARGS(q, bio, rw)
-+)
-+
-+/**
-+ * block_sleeprq - waiting to get a free request entry in queue for block IO operation
-+ * @q: queue for operation
-+ * @bio: pending block IO operation
-+ * @rw: low bit indicates a read (%0) or a write (%1)
-+ *
-+ * In the case where a request struct cannot be provided for queue @q
-+ * the process needs to wait for an request struct to become
-+ * available.  This tracepoint event is generated each time the
-+ * process goes to sleep waiting for request struct become available.
-+ */
-+DEFINE_EVENT(block_get_rq, block_sleeprq,
-+
-+	TP_PROTO(struct request_queue *q, struct bio *bio, int rw),
-+
-+	TP_ARGS(q, bio, rw)
-+)
-+
-+/**
-+ * block_plug - keep operations requests in request queue
-+ * @q: request queue to plug
-+ *
-+ * Plug the request queue @q.  Do not allow block operation requests
-+ * to be sent to the device driver. Instead, accumulate requests in
-+ * the queue to improve throughput performance of the block device.
-+ */
-+TRACE_EVENT(block_plug,
-+
-+	TP_PROTO(struct request_queue *q),
-+
-+	TP_ARGS(q),
-+
-+	TP_STRUCT__entry(
-+		__array_text( char,		comm,	TASK_COMM_LEN	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_memcpy(comm, current->comm, TASK_COMM_LEN)
-+	),
-+
-+	TP_printk("[%s]", __entry->comm)
-+)
-+
-+DECLARE_EVENT_CLASS(block_unplug,
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+	TP_PROTO(struct request_queue *q, unsigned int depth, bool explicit),
-+
-+	TP_ARGS(q, depth, explicit),
-+#else
-+	TP_PROTO(struct request_queue *q),
-+
-+	TP_ARGS(q),
-+#endif
-+
-+	TP_STRUCT__entry(
-+		__field( int,		nr_rq			)
-+		__array_text( char,		comm,	TASK_COMM_LEN	)
-+	),
-+
-+	TP_fast_assign(
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+		tp_assign(nr_rq, depth)
-+#else
-+		tp_assign(nr_rq, q->rq.count[READ] + q->rq.count[WRITE])
-+#endif
-+		tp_memcpy(comm, current->comm, TASK_COMM_LEN)
-+	),
-+
-+	TP_printk("[%s] %d", __entry->comm, __entry->nr_rq)
-+)
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39))
-+/**
-+ * block_unplug_timer - timed release of operations requests in queue to device driver
-+ * @q: request queue to unplug
-+ *
-+ * Unplug the request queue @q because a timer expired and allow block
-+ * operation requests to be sent to the device driver.
-+ */
-+DEFINE_EVENT(block_unplug, block_unplug_timer,
-+
-+	TP_PROTO(struct request_queue *q),
-+
-+	TP_ARGS(q)
-+)
-+#endif
-+
-+/**
-+ * block_unplug - release of operations requests in request queue
-+ * @q: request queue to unplug
-+ * @depth: number of requests just added to the queue
-+ * @explicit: whether this was an explicit unplug, or one from schedule()
-+ *
-+ * Unplug request queue @q because device driver is scheduled to work
-+ * on elements in the request queue.
-+ */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+DEFINE_EVENT(block_unplug, block_unplug,
-+#else
-+DEFINE_EVENT(block_unplug, block_unplug_io,
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+	TP_PROTO(struct request_queue *q, unsigned int depth, bool explicit),
-+
-+	TP_ARGS(q, depth, explicit)
-+#else
-+	TP_PROTO(struct request_queue *q),
-+
-+	TP_ARGS(q)
-+#endif
-+)
-+
-+/**
-+ * block_split - split a single bio struct into two bio structs
-+ * @q: queue containing the bio
-+ * @bio: block operation being split
-+ * @new_sector: The starting sector for the new bio
-+ *
-+ * The bio request @bio in request queue @q needs to be split into two
-+ * bio requests. The newly created @bio request starts at
-+ * @new_sector. This split may be required due to hardware limitation
-+ * such as operation crossing device boundaries in a RAID system.
-+ */
-+TRACE_EVENT(block_split,
-+
-+	TP_PROTO(struct request_queue *q, struct bio *bio,
-+		 unsigned int new_sector),
-+
-+	TP_ARGS(q, bio, new_sector),
-+
-+	TP_STRUCT__entry(
-+		__field( dev_t,		dev				)
-+		__field( sector_t,	sector				)
-+		__field( sector_t,	new_sector			)
-+		__field( unsigned int,	rwbs		)
-+		__array_text( char,		comm,		TASK_COMM_LEN	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, bio->bi_bdev->bd_dev)
-+		tp_assign(sector, bio->bi_sector)
-+		tp_assign(new_sector, new_sector)
-+		blk_fill_rwbs(rwbs, bio->bi_rw, bio->bi_size)
-+		tp_memcpy(comm, current->comm, TASK_COMM_LEN)
-+	),
-+
-+	TP_printk("%d,%d %s %llu / %llu [%s]",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __print_rwbs_flags(__entry->rwbs),
-+		  (unsigned long long)__entry->sector,
-+		  (unsigned long long)__entry->new_sector,
-+		  __entry->comm)
-+)
-+
-+/**
-+ * block_bio_remap - map request for a logical device to the raw device
-+ * @q: queue holding the operation
-+ * @bio: revised operation
-+ * @dev: device for the operation
-+ * @from: original sector for the operation
-+ *
-+ * An operation for a logical device has been mapped to the
-+ * raw block device.
-+ */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38))
-+TRACE_EVENT(block_bio_remap,
-+#else
-+TRACE_EVENT(block_remap,
-+#endif
-+
-+	TP_PROTO(struct request_queue *q, struct bio *bio, dev_t dev,
-+		 sector_t from),
-+
-+	TP_ARGS(q, bio, dev, from),
-+
-+	TP_STRUCT__entry(
-+		__field( dev_t,		dev		)
-+		__field( sector_t,	sector		)
-+		__field( unsigned int,	nr_sector	)
-+		__field( dev_t,		old_dev		)
-+		__field( sector_t,	old_sector	)
-+		__field( unsigned int,	rwbs		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, bio->bi_bdev->bd_dev)
-+		tp_assign(sector, bio->bi_sector)
-+		tp_assign(nr_sector, bio->bi_size >> 9)
-+		tp_assign(old_dev, dev)
-+		tp_assign(old_sector, from)
-+		blk_fill_rwbs(rwbs, bio->bi_rw, bio->bi_size)
-+	),
-+
-+	TP_printk("%d,%d %s %llu + %u <- (%d,%d) %llu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __print_rwbs_flags(__entry->rwbs),
-+		  (unsigned long long)__entry->sector,
-+		  __entry->nr_sector,
-+		  MAJOR(__entry->old_dev), MINOR(__entry->old_dev),
-+		  (unsigned long long)__entry->old_sector)
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))
-+/**
-+ * block_rq_remap - map request for a block operation request
-+ * @q: queue holding the operation
-+ * @rq: block IO operation request
-+ * @dev: device for the operation
-+ * @from: original sector for the operation
-+ *
-+ * The block operation request @rq in @q has been remapped.  The block
-+ * operation request @rq holds the current information and @from hold
-+ * the original sector.
-+ */
-+TRACE_EVENT(block_rq_remap,
-+
-+	TP_PROTO(struct request_queue *q, struct request *rq, dev_t dev,
-+		 sector_t from),
-+
-+	TP_ARGS(q, rq, dev, from),
-+
-+	TP_STRUCT__entry(
-+		__field( dev_t,		dev		)
-+		__field( sector_t,	sector		)
-+		__field( unsigned int,	nr_sector	)
-+		__field( dev_t,		old_dev		)
-+		__field( sector_t,	old_sector	)
-+		__field( unsigned int,	rwbs		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, disk_devt(rq->rq_disk))
-+		tp_assign(sector, blk_rq_pos(rq))
-+		tp_assign(nr_sector, blk_rq_sectors(rq))
-+		tp_assign(old_dev, dev)
-+		tp_assign(old_sector, from)
-+		blk_fill_rwbs(rwbs, rq->cmd_flags, blk_rq_bytes(rq))
-+	),
-+
-+	TP_printk("%d,%d %s %llu + %u <- (%d,%d) %llu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __print_rwbs_flags(__entry->rwbs),
-+		  (unsigned long long)__entry->sector,
-+		  __entry->nr_sector,
-+		  MAJOR(__entry->old_dev), MINOR(__entry->old_dev),
-+		  (unsigned long long)__entry->old_sector)
-+)
-+#endif
-+
-+#undef __print_rwbs_flags
-+#undef blk_fill_rwbs
-+
-+#endif /* _TRACE_BLOCK_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
-+
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/btrfs.h
-@@ -0,0 +1,1117 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM btrfs
-+
-+#if !defined(_TRACE_BTRFS_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_BTRFS_H
-+
-+#include <linux/writeback.h>
-+#include <linux/tracepoint.h>
-+#include <trace/events/gfpflags.h>
-+#include <linux/version.h>
-+
-+#ifndef _TRACE_BTRFS_DEF_
-+#define _TRACE_BTRFS_DEF_
-+struct btrfs_root;
-+struct btrfs_fs_info;
-+struct btrfs_inode;
-+struct extent_map;
-+struct btrfs_ordered_extent;
-+struct btrfs_delayed_ref_node;
-+struct btrfs_delayed_tree_ref;
-+struct btrfs_delayed_data_ref;
-+struct btrfs_delayed_ref_head;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+struct btrfs_block_group_cache;
-+struct btrfs_free_cluster;
-+#endif
-+struct map_lookup;
-+struct extent_buffer;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
-+struct extent_state;
-+#endif
-+#endif
-+
-+#define show_ref_type(type)						\
-+	__print_symbolic(type,						\
-+		{ BTRFS_TREE_BLOCK_REF_KEY, 	"TREE_BLOCK_REF" },	\
-+		{ BTRFS_EXTENT_DATA_REF_KEY, 	"EXTENT_DATA_REF" },	\
-+		{ BTRFS_EXTENT_REF_V0_KEY, 	"EXTENT_REF_V0" },	\
-+		{ BTRFS_SHARED_BLOCK_REF_KEY, 	"SHARED_BLOCK_REF" },	\
-+		{ BTRFS_SHARED_DATA_REF_KEY, 	"SHARED_DATA_REF" })
-+
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0))
-+#define __show_root_type(obj)						\
-+	__print_symbolic_u64(obj,					\
-+		{ BTRFS_ROOT_TREE_OBJECTID, 	"ROOT_TREE"	},	\
-+		{ BTRFS_EXTENT_TREE_OBJECTID, 	"EXTENT_TREE"	},	\
-+		{ BTRFS_CHUNK_TREE_OBJECTID, 	"CHUNK_TREE"	},	\
-+		{ BTRFS_DEV_TREE_OBJECTID, 	"DEV_TREE"	},	\
-+		{ BTRFS_FS_TREE_OBJECTID, 	"FS_TREE"	},	\
-+		{ BTRFS_ROOT_TREE_DIR_OBJECTID, "ROOT_TREE_DIR"	},	\
-+		{ BTRFS_CSUM_TREE_OBJECTID, 	"CSUM_TREE"	},	\
-+		{ BTRFS_TREE_LOG_OBJECTID,	"TREE_LOG"	},	\
-+		{ BTRFS_QUOTA_TREE_OBJECTID,	"QUOTA_TREE"	},	\
-+		{ BTRFS_TREE_RELOC_OBJECTID,	"TREE_RELOC"	},	\
-+		{ BTRFS_UUID_TREE_OBJECTID,	"UUID_RELOC"	},	\
-+		{ BTRFS_DATA_RELOC_TREE_OBJECTID, "DATA_RELOC_TREE" })
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0))
-+#define __show_root_type(obj)						\
-+	__print_symbolic_u64(obj,					\
-+		{ BTRFS_ROOT_TREE_OBJECTID, 	"ROOT_TREE"	},	\
-+		{ BTRFS_EXTENT_TREE_OBJECTID, 	"EXTENT_TREE"	},	\
-+		{ BTRFS_CHUNK_TREE_OBJECTID, 	"CHUNK_TREE"	},	\
-+		{ BTRFS_DEV_TREE_OBJECTID, 	"DEV_TREE"	},	\
-+		{ BTRFS_FS_TREE_OBJECTID, 	"FS_TREE"	},	\
-+		{ BTRFS_ROOT_TREE_DIR_OBJECTID, "ROOT_TREE_DIR"	},	\
-+		{ BTRFS_CSUM_TREE_OBJECTID, 	"CSUM_TREE"	},	\
-+		{ BTRFS_TREE_LOG_OBJECTID,	"TREE_LOG"	},	\
-+		{ BTRFS_QUOTA_TREE_OBJECTID,	"QUOTA_TREE"	},	\
-+		{ BTRFS_TREE_RELOC_OBJECTID,	"TREE_RELOC"	},	\
-+		{ BTRFS_DATA_RELOC_TREE_OBJECTID, "DATA_RELOC_TREE" })
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,40))
-+#define __show_root_type(obj)						\
-+	__print_symbolic_u64(obj,					\
-+		{ BTRFS_ROOT_TREE_OBJECTID, 	"ROOT_TREE"	},	\
-+		{ BTRFS_EXTENT_TREE_OBJECTID, 	"EXTENT_TREE"	},	\
-+		{ BTRFS_CHUNK_TREE_OBJECTID, 	"CHUNK_TREE"	},	\
-+		{ BTRFS_DEV_TREE_OBJECTID, 	"DEV_TREE"	},	\
-+		{ BTRFS_FS_TREE_OBJECTID, 	"FS_TREE"	},	\
-+		{ BTRFS_ROOT_TREE_DIR_OBJECTID, "ROOT_TREE_DIR"	},	\
-+		{ BTRFS_CSUM_TREE_OBJECTID, 	"CSUM_TREE"	},	\
-+		{ BTRFS_TREE_LOG_OBJECTID,	"TREE_LOG"	},	\
-+		{ BTRFS_TREE_RELOC_OBJECTID,	"TREE_RELOC"	},	\
-+		{ BTRFS_DATA_RELOC_TREE_OBJECTID, "DATA_RELOC_TREE" })
-+#else
-+#define __show_root_type(obj)						\
-+	__print_symbolic(obj,					\
-+		{ BTRFS_ROOT_TREE_OBJECTID, 	"ROOT_TREE"	},	\
-+		{ BTRFS_EXTENT_TREE_OBJECTID, 	"EXTENT_TREE"	},	\
-+		{ BTRFS_CHUNK_TREE_OBJECTID, 	"CHUNK_TREE"	},	\
-+		{ BTRFS_DEV_TREE_OBJECTID, 	"DEV_TREE"	},	\
-+		{ BTRFS_FS_TREE_OBJECTID, 	"FS_TREE"	},	\
-+		{ BTRFS_ROOT_TREE_DIR_OBJECTID, "ROOT_TREE_DIR"	},	\
-+		{ BTRFS_CSUM_TREE_OBJECTID, 	"CSUM_TREE"	},	\
-+		{ BTRFS_TREE_LOG_OBJECTID,	"TREE_LOG"	},	\
-+		{ BTRFS_TREE_RELOC_OBJECTID,	"TREE_RELOC"	},	\
-+		{ BTRFS_DATA_RELOC_TREE_OBJECTID, "DATA_RELOC_TREE" })
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0))
-+#define show_root_type(obj)						\
-+	obj, ((obj >= BTRFS_DATA_RELOC_TREE_OBJECTID) ||		\
-+	      (obj >= BTRFS_ROOT_TREE_OBJECTID &&			\
-+	       obj <= BTRFS_QUOTA_TREE_OBJECTID)) ? __show_root_type(obj) : "-"
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0))
-+#define show_root_type(obj)						\
-+	obj, ((obj >= BTRFS_DATA_RELOC_TREE_OBJECTID) ||		\
-+	      (obj >= BTRFS_ROOT_TREE_OBJECTID &&			\
-+	       obj <= BTRFS_CSUM_TREE_OBJECTID)) ? __show_root_type(obj) : "-"
-+#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) */
-+#define show_root_type(obj)						\
-+	obj, ((obj >= BTRFS_DATA_RELOC_TREE_OBJECTID) ||		\
-+	      (obj <= BTRFS_CSUM_TREE_OBJECTID )) ? __show_root_type(obj) : "-"
-+#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) */
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0))
-+
-+#define BTRFS_GROUP_FLAGS	\
-+	{ BTRFS_BLOCK_GROUP_DATA,	"DATA"},	\
-+	{ BTRFS_BLOCK_GROUP_SYSTEM,	"SYSTEM"},	\
-+	{ BTRFS_BLOCK_GROUP_METADATA,	"METADATA"},	\
-+	{ BTRFS_BLOCK_GROUP_RAID0,	"RAID0"}, 	\
-+	{ BTRFS_BLOCK_GROUP_RAID1,	"RAID1"}, 	\
-+	{ BTRFS_BLOCK_GROUP_DUP,	"DUP"}, 	\
-+	{ BTRFS_BLOCK_GROUP_RAID10,	"RAID10"}, 	\
-+	{ BTRFS_BLOCK_GROUP_RAID5,	"RAID5"},	\
-+	{ BTRFS_BLOCK_GROUP_RAID6,	"RAID6"}
-+
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+
-+#define BTRFS_GROUP_FLAGS	\
-+	{ BTRFS_BLOCK_GROUP_DATA,	"DATA"}, \
-+	{ BTRFS_BLOCK_GROUP_SYSTEM,	"SYSTEM"}, \
-+	{ BTRFS_BLOCK_GROUP_METADATA,	"METADATA"}, \
-+	{ BTRFS_BLOCK_GROUP_RAID0,	"RAID0"}, \
-+	{ BTRFS_BLOCK_GROUP_RAID1,	"RAID1"}, \
-+	{ BTRFS_BLOCK_GROUP_DUP,	"DUP"}, \
-+	{ BTRFS_BLOCK_GROUP_RAID10,	"RAID10"}
-+
-+#define BTRFS_UUID_SIZE 16
-+
-+#endif
-+
-+TRACE_EVENT(btrfs_transaction_commit,
-+
-+	TP_PROTO(struct btrfs_root *root),
-+
-+	TP_ARGS(root),
-+
-+	TP_STRUCT__entry(
-+		__field(	u64,  generation		)
-+		__field(	u64,  root_objectid		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(generation, root->fs_info->generation)
-+		tp_assign(root_objectid, root->root_key.objectid)
-+	),
-+
-+	TP_printk("root = %llu(%s), gen = %llu",
-+		  show_root_type(__entry->root_objectid),
-+		  (unsigned long long)__entry->generation)
-+)
-+
-+DECLARE_EVENT_CLASS(btrfs__inode,
-+
-+	TP_PROTO(struct inode *inode),
-+
-+	TP_ARGS(inode),
-+
-+	TP_STRUCT__entry(
-+		__field(	ino_t,  ino			)
-+		__field(	blkcnt_t,  blocks		)
-+		__field(	u64,  disk_i_size		)
-+		__field(	u64,  generation		)
-+		__field(	u64,  last_trans		)
-+		__field(	u64,  logged_trans		)
-+		__field(	u64,  root_objectid		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(blocks, inode->i_blocks)
-+		tp_assign(disk_i_size, BTRFS_I(inode)->disk_i_size)
-+		tp_assign(generation, BTRFS_I(inode)->generation)
-+		tp_assign(last_trans, BTRFS_I(inode)->last_trans)
-+		tp_assign(logged_trans, BTRFS_I(inode)->logged_trans)
-+		tp_assign(root_objectid,
-+				BTRFS_I(inode)->root->root_key.objectid)
-+	),
-+
-+	TP_printk("root = %llu(%s), gen = %llu, ino = %lu, blocks = %llu, "
-+		  "disk_i_size = %llu, last_trans = %llu, logged_trans = %llu",
-+		  show_root_type(__entry->root_objectid),
-+		  (unsigned long long)__entry->generation,
-+		  (unsigned long)__entry->ino,
-+		  (unsigned long long)__entry->blocks,
-+		  (unsigned long long)__entry->disk_i_size,
-+		  (unsigned long long)__entry->last_trans,
-+		  (unsigned long long)__entry->logged_trans)
-+)
-+
-+DEFINE_EVENT(btrfs__inode, btrfs_inode_new,
-+
-+	TP_PROTO(struct inode *inode),
-+
-+	TP_ARGS(inode)
-+)
-+
-+DEFINE_EVENT(btrfs__inode, btrfs_inode_request,
-+
-+	TP_PROTO(struct inode *inode),
-+
-+	TP_ARGS(inode)
-+)
-+
-+DEFINE_EVENT(btrfs__inode, btrfs_inode_evict,
-+
-+	TP_PROTO(struct inode *inode),
-+
-+	TP_ARGS(inode)
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,40))
-+#define __show_map_type(type)						\
-+	__print_symbolic_u64(type,					\
-+		{ EXTENT_MAP_LAST_BYTE, "LAST_BYTE" 	},		\
-+		{ EXTENT_MAP_HOLE, 	"HOLE" 		},		\
-+		{ EXTENT_MAP_INLINE, 	"INLINE" 	},		\
-+		{ EXTENT_MAP_DELALLOC,	"DELALLOC" 	})
-+#else
-+#define __show_map_type(type)						\
-+	__print_symbolic(type,					\
-+		{ EXTENT_MAP_LAST_BYTE, "LAST_BYTE" 	},		\
-+		{ EXTENT_MAP_HOLE, 	"HOLE" 		},		\
-+		{ EXTENT_MAP_INLINE, 	"INLINE" 	},		\
-+		{ EXTENT_MAP_DELALLOC,	"DELALLOC" 	})
-+#endif
-+
-+#define show_map_type(type)			\
-+	type, (type >= EXTENT_MAP_LAST_BYTE) ? "-" :  __show_map_type(type)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0))
-+
-+#define show_map_flags(flag)						\
-+	__print_flags(flag, "|",					\
-+		{ EXTENT_FLAG_PINNED, 		"PINNED" 	},	\
-+		{ EXTENT_FLAG_COMPRESSED, 	"COMPRESSED" 	},	\
-+		{ EXTENT_FLAG_VACANCY, 		"VACANCY" 	},	\
-+		{ EXTENT_FLAG_PREALLOC, 	"PREALLOC" 	},	\
-+		{ EXTENT_FLAG_LOGGING,	 	"LOGGING" 	},	\
-+		{ EXTENT_FLAG_FILLING,	 	"FILLING" 	})
-+
-+#else
-+
-+#define show_map_flags(flag)						\
-+	__print_flags(flag, "|",					\
-+		{ EXTENT_FLAG_PINNED, 		"PINNED" 	},	\
-+		{ EXTENT_FLAG_COMPRESSED, 	"COMPRESSED" 	},	\
-+		{ EXTENT_FLAG_VACANCY, 		"VACANCY" 	},	\
-+		{ EXTENT_FLAG_PREALLOC, 	"PREALLOC" 	})
-+
-+#endif
-+
-+TRACE_EVENT(btrfs_get_extent,
-+
-+	TP_PROTO(struct btrfs_root *root, struct extent_map *map),
-+
-+	TP_ARGS(root, map),
-+
-+	TP_STRUCT__entry(
-+		__field(	u64,  root_objectid	)
-+		__field(	u64,  start		)
-+		__field(	u64,  len		)
-+		__field(	u64,  orig_start	)
-+		__field(	u64,  block_start	)
-+		__field(	u64,  block_len		)
-+		__field(	unsigned long,  flags	)
-+		__field(	int,  refs		)
-+		__field(	unsigned int,  compress_type	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(root_objectid, root->root_key.objectid)
-+		tp_assign(start, map->start)
-+		tp_assign(len, map->len)
-+		tp_assign(orig_start, map->orig_start)
-+		tp_assign(block_start, map->block_start)
-+		tp_assign(block_len, map->block_len)
-+		tp_assign(flags, map->flags)
-+		tp_assign(refs, atomic_read(&map->refs))
-+		tp_assign(compress_type, map->compress_type)
-+	),
-+
-+	TP_printk("root = %llu(%s), start = %llu, len = %llu, "
-+		  "orig_start = %llu, block_start = %llu(%s), "
-+		  "block_len = %llu, flags = %s, refs = %u, "
-+		  "compress_type = %u",
-+		  show_root_type(__entry->root_objectid),
-+		  (unsigned long long)__entry->start,
-+		  (unsigned long long)__entry->len,
-+		  (unsigned long long)__entry->orig_start,
-+		  show_map_type(__entry->block_start),
-+		  (unsigned long long)__entry->block_len,
-+		  show_map_flags(__entry->flags),
-+		  __entry->refs, __entry->compress_type)
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0))
-+
-+#define show_ordered_flags(flags)					\
-+	__print_symbolic(flags,						\
-+		{ BTRFS_ORDERED_IO_DONE, 	"IO_DONE" 	},	\
-+		{ BTRFS_ORDERED_COMPLETE, 	"COMPLETE" 	},	\
-+		{ BTRFS_ORDERED_NOCOW, 		"NOCOW" 	},	\
-+		{ BTRFS_ORDERED_COMPRESSED, 	"COMPRESSED" 	},	\
-+		{ BTRFS_ORDERED_PREALLOC, 	"PREALLOC" 	},	\
-+		{ BTRFS_ORDERED_DIRECT, 	"DIRECT" 	},	\
-+		{ BTRFS_ORDERED_IOERR, 		"IOERR" 	},	\
-+		{ BTRFS_ORDERED_UPDATED_ISIZE, 	"UPDATED_ISIZE"	},	\
-+		{ BTRFS_ORDERED_LOGGED_CSUM, 	"LOGGED_CSUM"	})
-+
-+#else
-+
-+#define show_ordered_flags(flags)					\
-+	__print_symbolic(flags,					\
-+		{ BTRFS_ORDERED_IO_DONE, 	"IO_DONE" 	},	\
-+		{ BTRFS_ORDERED_COMPLETE, 	"COMPLETE" 	},	\
-+		{ BTRFS_ORDERED_NOCOW, 		"NOCOW" 	},	\
-+		{ BTRFS_ORDERED_COMPRESSED, 	"COMPRESSED" 	},	\
-+		{ BTRFS_ORDERED_PREALLOC, 	"PREALLOC" 	},	\
-+		{ BTRFS_ORDERED_DIRECT, 	"DIRECT" 	})
-+
-+#endif
-+
-+DECLARE_EVENT_CLASS(btrfs__ordered_extent,
-+
-+	TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered),
-+
-+	TP_ARGS(inode, ordered),
-+
-+	TP_STRUCT__entry(
-+		__field(	ino_t,  ino		)
-+		__field(	u64,  file_offset	)
-+		__field(	u64,  start		)
-+		__field(	u64,  len		)
-+		__field(	u64,  disk_len		)
-+		__field(	u64,  bytes_left	)
-+		__field(	unsigned long,  flags	)
-+		__field(	int,  compress_type	)
-+		__field(	int,  refs		)
-+		__field(	u64,  root_objectid	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(file_offset, ordered->file_offset)
-+		tp_assign(start, ordered->start)
-+		tp_assign(len, ordered->len)
-+		tp_assign(disk_len, ordered->disk_len)
-+		tp_assign(bytes_left, ordered->bytes_left)
-+		tp_assign(flags, ordered->flags)
-+		tp_assign(compress_type, ordered->compress_type)
-+		tp_assign(refs, atomic_read(&ordered->refs))
-+		tp_assign(root_objectid,
-+				BTRFS_I(inode)->root->root_key.objectid)
-+	),
-+
-+	TP_printk("root = %llu(%s), ino = %llu, file_offset = %llu, "
-+		  "start = %llu, len = %llu, disk_len = %llu, "
-+		  "bytes_left = %llu, flags = %s, compress_type = %d, "
-+		  "refs = %d",
-+		  show_root_type(__entry->root_objectid),
-+		  (unsigned long long)__entry->ino,
-+		  (unsigned long long)__entry->file_offset,
-+		  (unsigned long long)__entry->start,
-+		  (unsigned long long)__entry->len,
-+		  (unsigned long long)__entry->disk_len,
-+		  (unsigned long long)__entry->bytes_left,
-+		  show_ordered_flags(__entry->flags),
-+		  __entry->compress_type, __entry->refs)
-+)
-+
-+DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_add,
-+
-+	TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered),
-+
-+	TP_ARGS(inode, ordered)
-+)
-+
-+DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_remove,
-+
-+	TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered),
-+
-+	TP_ARGS(inode, ordered)
-+)
-+
-+DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_start,
-+
-+	TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered),
-+
-+	TP_ARGS(inode, ordered)
-+)
-+
-+DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_put,
-+
-+	TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered),
-+
-+	TP_ARGS(inode, ordered)
-+)
-+
-+DECLARE_EVENT_CLASS(btrfs__writepage,
-+
-+	TP_PROTO(struct page *page, struct inode *inode,
-+		 struct writeback_control *wbc),
-+
-+	TP_ARGS(page, inode, wbc),
-+
-+	TP_STRUCT__entry(
-+		__field(	ino_t,  ino			)
-+		__field(	pgoff_t,  index			)
-+		__field(	long,   nr_to_write		)
-+		__field(	long,   pages_skipped		)
-+		__field(	loff_t, range_start		)
-+		__field(	loff_t, range_end		)
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0))
-+		__field(	char,   nonblocking		)
-+#endif
-+		__field(	char,   for_kupdate		)
-+		__field(	char,   for_reclaim		)
-+		__field(	char,   range_cyclic		)
-+		__field(	pgoff_t,  writeback_index	)
-+		__field(	u64,    root_objectid		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(index, page->index)
-+		tp_assign(nr_to_write, wbc->nr_to_write)
-+		tp_assign(pages_skipped, wbc->pages_skipped)
-+		tp_assign(range_start, wbc->range_start)
-+		tp_assign(range_end, wbc->range_end)
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0))
-+		tp_assign(nonblocking, wbc->nonblocking)
-+#endif
-+		tp_assign(for_kupdate, wbc->for_kupdate)
-+		tp_assign(for_reclaim, wbc->for_reclaim)
-+		tp_assign(range_cyclic, wbc->range_cyclic)
-+		tp_assign(writeback_index, inode->i_mapping->writeback_index)
-+		tp_assign(root_objectid,
-+				 BTRFS_I(inode)->root->root_key.objectid)
-+	),
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0))
-+	TP_printk("root = %llu(%s), ino = %lu, page_index = %lu, "
-+		  "nr_to_write = %ld, pages_skipped = %ld, range_start = %llu, "
-+		  "range_end = %llu, nonblocking = %d, for_kupdate = %d, "
-+		  "for_reclaim = %d, range_cyclic = %d, writeback_index = %lu",
-+		  show_root_type(__entry->root_objectid),
-+		  (unsigned long)__entry->ino, __entry->index,
-+		  __entry->nr_to_write, __entry->pages_skipped,
-+		  __entry->range_start, __entry->range_end,
-+		  __entry->nonblocking, __entry->for_kupdate,
-+		  __entry->for_reclaim, __entry->range_cyclic,
-+		  (unsigned long)__entry->writeback_index)
-+#else
-+	TP_printk("root = %llu(%s), ino = %lu, page_index = %lu, "
-+		  "nr_to_write = %ld, pages_skipped = %ld, range_start = %llu, "
-+		  "range_end = %llu, for_kupdate = %d, "
-+		  "for_reclaim = %d, range_cyclic = %d, writeback_index = %lu",
-+		  show_root_type(__entry->root_objectid),
-+		  (unsigned long)__entry->ino, __entry->index,
-+		  __entry->nr_to_write, __entry->pages_skipped,
-+		  __entry->range_start, __entry->range_end,
-+		  __entry->for_kupdate,
-+		  __entry->for_reclaim, __entry->range_cyclic,
-+		  (unsigned long)__entry->writeback_index)
-+#endif
-+)
-+
-+DEFINE_EVENT(btrfs__writepage, __extent_writepage,
-+
-+	TP_PROTO(struct page *page, struct inode *inode,
-+		 struct writeback_control *wbc),
-+
-+	TP_ARGS(page, inode, wbc)
-+)
-+
-+TRACE_EVENT(btrfs_writepage_end_io_hook,
-+
-+	TP_PROTO(struct page *page, u64 start, u64 end, int uptodate),
-+
-+	TP_ARGS(page, start, end, uptodate),
-+
-+	TP_STRUCT__entry(
-+		__field(	ino_t,	 ino		)
-+		__field(	pgoff_t, index		)
-+		__field(	u64,	 start		)
-+		__field(	u64,	 end		)
-+		__field(	int,	 uptodate	)
-+		__field(	u64,    root_objectid	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(ino, page->mapping->host->i_ino)
-+		tp_assign(index, page->index)
-+		tp_assign(start, start)
-+		tp_assign(end, end)
-+		tp_assign(uptodate, uptodate)
-+		tp_assign(root_objectid,
-+			 BTRFS_I(page->mapping->host)->root->root_key.objectid)
-+	),
-+
-+	TP_printk("root = %llu(%s), ino = %lu, page_index = %lu, start = %llu, "
-+		  "end = %llu, uptodate = %d",
-+		  show_root_type(__entry->root_objectid),
-+		  (unsigned long)__entry->ino, (unsigned long)__entry->index,
-+		  (unsigned long long)__entry->start,
-+		  (unsigned long long)__entry->end, __entry->uptodate)
-+)
-+
-+TRACE_EVENT(btrfs_sync_file,
-+
-+	TP_PROTO(struct file *file, int datasync),
-+
-+	TP_ARGS(file, datasync),
-+
-+	TP_STRUCT__entry(
-+		__field(	ino_t,  ino		)
-+		__field(	ino_t,  parent		)
-+		__field(	int,    datasync	)
-+		__field(	u64,    root_objectid	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(ino, file->f_path.dentry->d_inode->i_ino)
-+		tp_assign(parent, file->f_path.dentry->d_parent->d_inode->i_ino)
-+		tp_assign(datasync, datasync)
-+		tp_assign(root_objectid,
-+			BTRFS_I(file->f_path.dentry->d_inode)->root->root_key.objectid)
-+	),
-+
-+	TP_printk("root = %llu(%s), ino = %ld, parent = %ld, datasync = %d",
-+		  show_root_type(__entry->root_objectid),
-+		  (unsigned long)__entry->ino, (unsigned long)__entry->parent,
-+		  __entry->datasync)
-+)
-+
-+TRACE_EVENT(btrfs_sync_fs,
-+
-+	TP_PROTO(int wait),
-+
-+	TP_ARGS(wait),
-+
-+	TP_STRUCT__entry(
-+		__field(	int,  wait		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(wait, wait)
-+	),
-+
-+	TP_printk("wait = %d", __entry->wait)
-+)
-+
-+#define show_ref_action(action)						\
-+	__print_symbolic(action,					\
-+		{ BTRFS_ADD_DELAYED_REF,    "ADD_DELAYED_REF" },	\
-+		{ BTRFS_DROP_DELAYED_REF,   "DROP_DELAYED_REF" },	\
-+		{ BTRFS_ADD_DELAYED_EXTENT, "ADD_DELAYED_EXTENT" }, 	\
-+		{ BTRFS_UPDATE_DELAYED_HEAD, "UPDATE_DELAYED_HEAD" })
-+
-+
-+TRACE_EVENT(btrfs_delayed_tree_ref,
-+
-+	TP_PROTO(struct btrfs_delayed_ref_node *ref,
-+		 struct btrfs_delayed_tree_ref *full_ref,
-+		 int action),
-+
-+	TP_ARGS(ref, full_ref, action),
-+
-+	TP_STRUCT__entry(
-+		__field(	u64,  bytenr		)
-+		__field(	u64,  num_bytes		)
-+		__field(	int,  action		)
-+		__field(	u64,  parent		)
-+		__field(	u64,  ref_root		)
-+		__field(	int,  level		)
-+		__field(	int,  type		)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0))
-+		__field(	u64,  seq		)
-+#endif
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(bytenr, ref->bytenr)
-+		tp_assign(num_bytes, ref->num_bytes)
-+		tp_assign(action, action)
-+		tp_assign(parent, full_ref->parent)
-+		tp_assign(ref_root, full_ref->root)
-+		tp_assign(level, full_ref->level)
-+		tp_assign(type, ref->type)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0))
-+		tp_assign(seq, ref->seq)
-+#endif
-+	),
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0))
-+	TP_printk("bytenr = %llu, num_bytes = %llu, action = %s, "
-+		  "parent = %llu(%s), ref_root = %llu(%s), level = %d, "
-+		  "type = %s, seq = %llu",
-+#else
-+	TP_printk("bytenr = %llu, num_bytes = %llu, action = %s, "
-+		  "parent = %llu(%s), ref_root = %llu(%s), level = %d, "
-+		  "type = %s",
-+#endif
-+		  (unsigned long long)__entry->bytenr,
-+		  (unsigned long long)__entry->num_bytes,
-+		  show_ref_action(__entry->action),
-+		  show_root_type(__entry->parent),
-+		  show_root_type(__entry->ref_root),
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0))
-+		  __entry->level, show_ref_type(__entry->type),
-+		  (unsigned long long)__entry->seq)
-+#else
-+		  __entry->level, show_ref_type(__entry->type))
-+#endif
-+)
-+
-+TRACE_EVENT(btrfs_delayed_data_ref,
-+
-+	TP_PROTO(struct btrfs_delayed_ref_node *ref,
-+		 struct btrfs_delayed_data_ref *full_ref,
-+		 int action),
-+
-+	TP_ARGS(ref, full_ref, action),
-+
-+	TP_STRUCT__entry(
-+		__field(	u64,  bytenr		)
-+		__field(	u64,  num_bytes		)
-+		__field(	int,  action		)
-+		__field(	u64,  parent		)
-+		__field(	u64,  ref_root		)
-+		__field(	u64,  owner		)
-+		__field(	u64,  offset		)
-+		__field(	int,  type		)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0))
-+		__field(	u64,  seq		)
-+#endif
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(bytenr, ref->bytenr)
-+		tp_assign(num_bytes, ref->num_bytes)
-+		tp_assign(action, action)
-+		tp_assign(parent, full_ref->parent)
-+		tp_assign(ref_root, full_ref->root)
-+		tp_assign(owner, full_ref->objectid)
-+		tp_assign(offset, full_ref->offset)
-+		tp_assign(type, ref->type)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0))
-+		tp_assign(seq, ref->seq)
-+#endif
-+	),
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0))
-+	TP_printk("bytenr = %llu, num_bytes = %llu, action = %s, "
-+		  "parent = %llu(%s), ref_root = %llu(%s), owner = %llu, "
-+		  "offset = %llu, type = %s, seq = %llu",
-+#else
-+	TP_printk("bytenr = %llu, num_bytes = %llu, action = %s, "
-+		  "parent = %llu(%s), ref_root = %llu(%s), owner = %llu, "
-+		  "offset = %llu, type = %s",
-+#endif
-+		  (unsigned long long)__entry->bytenr,
-+		  (unsigned long long)__entry->num_bytes,
-+		  show_ref_action(__entry->action),
-+		  show_root_type(__entry->parent),
-+		  show_root_type(__entry->ref_root),
-+		  (unsigned long long)__entry->owner,
-+		  (unsigned long long)__entry->offset,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0))
-+		  show_ref_type(__entry->type),
-+		  (unsigned long long)__entry->seq)
-+#else
-+		  show_ref_type(__entry->type))
-+#endif
-+)
-+
-+TRACE_EVENT(btrfs_delayed_ref_head,
-+
-+	TP_PROTO(struct btrfs_delayed_ref_node *ref,
-+		 struct btrfs_delayed_ref_head *head_ref,
-+		 int action),
-+
-+	TP_ARGS(ref, head_ref, action),
-+
-+	TP_STRUCT__entry(
-+		__field(	u64,  bytenr		)
-+		__field(	u64,  num_bytes		)
-+		__field(	int,  action		)
-+		__field(	int,  is_data		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(bytenr, ref->bytenr)
-+		tp_assign(num_bytes, ref->num_bytes)
-+		tp_assign(action, action)
-+		tp_assign(is_data, head_ref->is_data)
-+	),
-+
-+	TP_printk("bytenr = %llu, num_bytes = %llu, action = %s, is_data = %d",
-+		  (unsigned long long)__entry->bytenr,
-+		  (unsigned long long)__entry->num_bytes,
-+		  show_ref_action(__entry->action),
-+		  __entry->is_data)
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0))
-+
-+#define show_chunk_type(type)					\
-+	__print_flags(type, "|",				\
-+		{ BTRFS_BLOCK_GROUP_DATA, 	"DATA"	},	\
-+		{ BTRFS_BLOCK_GROUP_SYSTEM, 	"SYSTEM"},	\
-+		{ BTRFS_BLOCK_GROUP_METADATA, 	"METADATA"},	\
-+		{ BTRFS_BLOCK_GROUP_RAID0, 	"RAID0" },	\
-+		{ BTRFS_BLOCK_GROUP_RAID1, 	"RAID1" },	\
-+		{ BTRFS_BLOCK_GROUP_DUP, 	"DUP"	},	\
-+		{ BTRFS_BLOCK_GROUP_RAID10, 	"RAID10"},	\
-+		{ BTRFS_BLOCK_GROUP_RAID5, 	"RAID5"	},	\
-+		{ BTRFS_BLOCK_GROUP_RAID6, 	"RAID6"	})
-+
-+#else
-+
-+#define show_chunk_type(type)					\
-+	__print_flags(type, "|",				\
-+		{ BTRFS_BLOCK_GROUP_DATA, 	"DATA"	},	\
-+		{ BTRFS_BLOCK_GROUP_SYSTEM, 	"SYSTEM"},	\
-+		{ BTRFS_BLOCK_GROUP_METADATA, 	"METADATA"},	\
-+		{ BTRFS_BLOCK_GROUP_RAID0, 	"RAID0" },	\
-+		{ BTRFS_BLOCK_GROUP_RAID1, 	"RAID1" },	\
-+		{ BTRFS_BLOCK_GROUP_DUP, 	"DUP"	},	\
-+		{ BTRFS_BLOCK_GROUP_RAID10, 	"RAID10"})
-+
-+#endif
-+
-+DECLARE_EVENT_CLASS(btrfs__chunk,
-+
-+	TP_PROTO(struct btrfs_root *root, struct map_lookup *map,
-+		 u64 offset, u64 size),
-+
-+	TP_ARGS(root, map, offset, size),
-+
-+	TP_STRUCT__entry(
-+		__field(	int,  num_stripes		)
-+		__field(	u64,  type			)
-+		__field(	int,  sub_stripes		)
-+		__field(	u64,  offset			)
-+		__field(	u64,  size			)
-+		__field(	u64,  root_objectid		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(num_stripes, map->num_stripes)
-+		tp_assign(type, map->type)
-+		tp_assign(sub_stripes, map->sub_stripes)
-+		tp_assign(offset, offset)
-+		tp_assign(size, size)
-+		tp_assign(root_objectid, root->root_key.objectid)
-+	),
-+
-+	TP_printk("root = %llu(%s), offset = %llu, size = %llu, "
-+		  "num_stripes = %d, sub_stripes = %d, type = %s",
-+		  show_root_type(__entry->root_objectid),
-+		  (unsigned long long)__entry->offset,
-+		  (unsigned long long)__entry->size,
-+		  __entry->num_stripes, __entry->sub_stripes,
-+		  show_chunk_type(__entry->type))
-+)
-+
-+DEFINE_EVENT(btrfs__chunk,  btrfs_chunk_alloc,
-+
-+	TP_PROTO(struct btrfs_root *root, struct map_lookup *map,
-+		 u64 offset, u64 size),
-+
-+	TP_ARGS(root, map, offset, size)
-+)
-+
-+DEFINE_EVENT(btrfs__chunk,  btrfs_chunk_free,
-+
-+	TP_PROTO(struct btrfs_root *root, struct map_lookup *map,
-+		 u64 offset, u64 size),
-+
-+	TP_ARGS(root, map, offset, size)
-+)
-+
-+TRACE_EVENT(btrfs_cow_block,
-+
-+	TP_PROTO(struct btrfs_root *root, struct extent_buffer *buf,
-+		 struct extent_buffer *cow),
-+
-+	TP_ARGS(root, buf, cow),
-+
-+	TP_STRUCT__entry(
-+		__field(	u64,  root_objectid		)
-+		__field(	u64,  buf_start			)
-+		__field(	int,  refs			)
-+		__field(	u64,  cow_start			)
-+		__field(	int,  buf_level			)
-+		__field(	int,  cow_level			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(root_objectid, root->root_key.objectid)
-+		tp_assign(buf_start, buf->start)
-+		tp_assign(refs, atomic_read(&buf->refs))
-+		tp_assign(cow_start, cow->start)
-+		tp_assign(buf_level, btrfs_header_level(buf))
-+		tp_assign(cow_level, btrfs_header_level(cow))
-+	),
-+
-+	TP_printk("root = %llu(%s), refs = %d, orig_buf = %llu "
-+		  "(orig_level = %d), cow_buf = %llu (cow_level = %d)",
-+		  show_root_type(__entry->root_objectid),
-+		  __entry->refs,
-+		  (unsigned long long)__entry->buf_start,
-+		  __entry->buf_level,
-+		  (unsigned long long)__entry->cow_start,
-+		  __entry->cow_level)
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+TRACE_EVENT(btrfs_space_reservation,
-+
-+	TP_PROTO(struct btrfs_fs_info *fs_info, char *type, u64 val,
-+		 u64 bytes, int reserve),
-+
-+	TP_ARGS(fs_info, type, val, bytes, reserve),
-+
-+	TP_STRUCT__entry(
-+		__array(	u8,	fsid,	BTRFS_UUID_SIZE	)
-+		__string(	type,	type			)
-+		__field(	u64,	val			)
-+		__field(	u64,	bytes			)
-+		__field(	int,	reserve			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_memcpy(fsid, fs_info->fsid, BTRFS_UUID_SIZE)
-+		tp_strcpy(type, type)
-+		tp_assign(val, val)
-+		tp_assign(bytes, bytes)
-+		tp_assign(reserve, reserve)
-+	),
-+
-+	TP_printk("%pU: %s: %Lu %s %Lu", __entry->fsid, __get_str(type),
-+		  __entry->val, __entry->reserve ? "reserve" : "release",
-+		  __entry->bytes)
-+)
-+#endif
-+
-+DECLARE_EVENT_CLASS(btrfs__reserved_extent,
-+
-+	TP_PROTO(struct btrfs_root *root, u64 start, u64 len),
-+
-+	TP_ARGS(root, start, len),
-+
-+	TP_STRUCT__entry(
-+		__field(	u64,  root_objectid		)
-+		__field(	u64,  start			)
-+		__field(	u64,  len			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(root_objectid, root->root_key.objectid)
-+		tp_assign(start, start)
-+		tp_assign(len, len)
-+	),
-+
-+	TP_printk("root = %llu(%s), start = %llu, len = %llu",
-+		  show_root_type(__entry->root_objectid),
-+		  (unsigned long long)__entry->start,
-+		  (unsigned long long)__entry->len)
-+)
-+
-+DEFINE_EVENT(btrfs__reserved_extent,  btrfs_reserved_extent_alloc,
-+
-+	TP_PROTO(struct btrfs_root *root, u64 start, u64 len),
-+
-+	TP_ARGS(root, start, len)
-+)
-+
-+DEFINE_EVENT(btrfs__reserved_extent,  btrfs_reserved_extent_free,
-+
-+	TP_PROTO(struct btrfs_root *root, u64 start, u64 len),
-+
-+	TP_ARGS(root, start, len)
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+TRACE_EVENT_MAP(find_free_extent,
-+
-+	btrfs_find_free_extent,
-+
-+	TP_PROTO(struct btrfs_root *root, u64 num_bytes, u64 empty_size,
-+		 u64 data),
-+
-+	TP_ARGS(root, num_bytes, empty_size, data),
-+
-+	TP_STRUCT__entry(
-+		__field(	u64,	root_objectid		)
-+		__field(	u64,	num_bytes		)
-+		__field(	u64,	empty_size		)
-+		__field(	u64,	data			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(root_objectid, root->root_key.objectid)
-+		tp_assign(num_bytes, num_bytes)
-+		tp_assign(empty_size, empty_size)
-+		tp_assign(data, data)
-+	),
-+
-+	TP_printk("root = %Lu(%s), len = %Lu, empty_size = %Lu, "
-+		  "flags = %Lu(%s)", show_root_type(__entry->root_objectid),
-+		  __entry->num_bytes, __entry->empty_size, __entry->data,
-+		  __print_flags((unsigned long)__entry->data, "|",
-+				 BTRFS_GROUP_FLAGS))
-+)
-+
-+DECLARE_EVENT_CLASS(btrfs__reserve_extent,
-+
-+	TP_PROTO(struct btrfs_root *root,
-+		 struct btrfs_block_group_cache *block_group, u64 start,
-+		 u64 len),
-+
-+	TP_ARGS(root, block_group, start, len),
-+
-+	TP_STRUCT__entry(
-+		__field(	u64,	root_objectid		)
-+		__field(	u64,	bg_objectid		)
-+		__field(	u64,	flags			)
-+		__field(	u64,	start			)
-+		__field(	u64,	len			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(root_objectid, root->root_key.objectid)
-+		tp_assign(bg_objectid, block_group->key.objectid)
-+		tp_assign(flags, block_group->flags)
-+		tp_assign(start, start)
-+		tp_assign(len, len)
-+	),
-+
-+	TP_printk("root = %Lu(%s), block_group = %Lu, flags = %Lu(%s), "
-+		  "start = %Lu, len = %Lu",
-+		  show_root_type(__entry->root_objectid), __entry->bg_objectid,
-+		  __entry->flags, __print_flags((unsigned long)__entry->flags,
-+						"|", BTRFS_GROUP_FLAGS),
-+		  __entry->start, __entry->len)
-+)
-+
-+DEFINE_EVENT(btrfs__reserve_extent, btrfs_reserve_extent,
-+
-+	TP_PROTO(struct btrfs_root *root,
-+		 struct btrfs_block_group_cache *block_group, u64 start,
-+		 u64 len),
-+
-+	TP_ARGS(root, block_group, start, len)
-+)
-+
-+DEFINE_EVENT(btrfs__reserve_extent, btrfs_reserve_extent_cluster,
-+
-+	TP_PROTO(struct btrfs_root *root,
-+		 struct btrfs_block_group_cache *block_group, u64 start,
-+		 u64 len),
-+
-+	TP_ARGS(root, block_group, start, len)
-+)
-+
-+TRACE_EVENT(btrfs_find_cluster,
-+
-+	TP_PROTO(struct btrfs_block_group_cache *block_group, u64 start,
-+		 u64 bytes, u64 empty_size, u64 min_bytes),
-+
-+	TP_ARGS(block_group, start, bytes, empty_size, min_bytes),
-+
-+	TP_STRUCT__entry(
-+		__field(	u64,	bg_objectid		)
-+		__field(	u64,	flags			)
-+		__field(	u64,	start			)
-+		__field(	u64,	bytes			)
-+		__field(	u64,	empty_size		)
-+		__field(	u64,	min_bytes		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(bg_objectid, block_group->key.objectid)
-+		tp_assign(flags, block_group->flags)
-+		tp_assign(start, start)
-+		tp_assign(bytes, bytes)
-+		tp_assign(empty_size, empty_size)
-+		tp_assign(min_bytes, min_bytes)
-+	),
-+
-+	TP_printk("block_group = %Lu, flags = %Lu(%s), start = %Lu, len = %Lu,"
-+		  " empty_size = %Lu, min_bytes = %Lu", __entry->bg_objectid,
-+		  __entry->flags,
-+		  __print_flags((unsigned long)__entry->flags, "|",
-+				BTRFS_GROUP_FLAGS), __entry->start,
-+		  __entry->bytes, __entry->empty_size,  __entry->min_bytes)
-+)
-+
-+TRACE_EVENT(btrfs_failed_cluster_setup,
-+
-+	TP_PROTO(struct btrfs_block_group_cache *block_group),
-+
-+	TP_ARGS(block_group),
-+
-+	TP_STRUCT__entry(
-+		__field(	u64,	bg_objectid		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(bg_objectid, block_group->key.objectid)
-+	),
-+
-+	TP_printk("block_group = %Lu", __entry->bg_objectid)
-+)
-+
-+TRACE_EVENT(btrfs_setup_cluster,
-+
-+	TP_PROTO(struct btrfs_block_group_cache *block_group,
-+		 struct btrfs_free_cluster *cluster, u64 size, int bitmap),
-+
-+	TP_ARGS(block_group, cluster, size, bitmap),
-+
-+	TP_STRUCT__entry(
-+		__field(	u64,	bg_objectid		)
-+		__field(	u64,	flags			)
-+		__field(	u64,	start			)
-+		__field(	u64,	max_size		)
-+		__field(	u64,	size			)
-+		__field(	int,	bitmap			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(bg_objectid, block_group->key.objectid)
-+		tp_assign(flags, block_group->flags)
-+		tp_assign(start, cluster->window_start)
-+		tp_assign(max_size, cluster->max_size)
-+		tp_assign(size, size)
-+		tp_assign(bitmap, bitmap)
-+	),
-+
-+	TP_printk("block_group = %Lu, flags = %Lu(%s), window_start = %Lu, "
-+		  "size = %Lu, max_size = %Lu, bitmap = %d",
-+		  __entry->bg_objectid,
-+		  __entry->flags,
-+		  __print_flags((unsigned long)__entry->flags, "|",
-+				BTRFS_GROUP_FLAGS), __entry->start,
-+		  __entry->size, __entry->max_size, __entry->bitmap)
-+)
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
-+TRACE_EVENT_MAP(alloc_extent_state,
-+
-+	btrfs_alloc_extent_state,
-+
-+	TP_PROTO(struct extent_state *state, gfp_t mask, unsigned long IP),
-+
-+	TP_ARGS(state, mask, IP),
-+
-+	TP_STRUCT__entry(
-+		__field(struct extent_state *, state)
-+		__field(gfp_t, mask)
-+		__field(unsigned long, ip)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(state, state)
-+		tp_assign(mask, mask)
-+		tp_assign(ip, IP)
-+	),
-+
-+	TP_printk("state=%p; mask = %s; caller = %pF", __entry->state,
-+		  show_gfp_flags(__entry->mask), (void *)__entry->ip)
-+)
-+
-+TRACE_EVENT_MAP(free_extent_state,
-+
-+	btrfs_free_extent_state,
-+
-+	TP_PROTO(struct extent_state *state, unsigned long IP),
-+
-+	TP_ARGS(state, IP),
-+
-+	TP_STRUCT__entry(
-+		__field(struct extent_state *, state)
-+		__field(unsigned long, ip)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(state, state)
-+		tp_assign(ip, IP)
-+	),
-+
-+	TP_printk(" state=%p; caller = %pF", __entry->state,
-+		  (void *)__entry->ip)
-+)
-+#endif
-+
-+#endif /* _TRACE_BTRFS_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/compaction.h
-@@ -0,0 +1,74 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM compaction
-+
-+#if !defined(_TRACE_COMPACTION_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_COMPACTION_H
-+
-+#include <linux/types.h>
-+#include <linux/tracepoint.h>
-+#include <trace/events/gfpflags.h>
-+
-+DECLARE_EVENT_CLASS(mm_compaction_isolate_template,
-+
-+	TP_PROTO(unsigned long nr_scanned,
-+		unsigned long nr_taken),
-+
-+	TP_ARGS(nr_scanned, nr_taken),
-+
-+	TP_STRUCT__entry(
-+		__field(unsigned long, nr_scanned)
-+		__field(unsigned long, nr_taken)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(nr_scanned, nr_scanned)
-+		tp_assign(nr_taken, nr_taken)
-+	),
-+
-+	TP_printk("nr_scanned=%lu nr_taken=%lu",
-+		__entry->nr_scanned,
-+		__entry->nr_taken)
-+)
-+
-+DEFINE_EVENT(mm_compaction_isolate_template, mm_compaction_isolate_migratepages,
-+
-+	TP_PROTO(unsigned long nr_scanned,
-+		unsigned long nr_taken),
-+
-+	TP_ARGS(nr_scanned, nr_taken)
-+)
-+
-+DEFINE_EVENT(mm_compaction_isolate_template, mm_compaction_isolate_freepages,
-+	TP_PROTO(unsigned long nr_scanned,
-+		unsigned long nr_taken),
-+
-+	TP_ARGS(nr_scanned, nr_taken)
-+)
-+
-+TRACE_EVENT(mm_compaction_migratepages,
-+
-+	TP_PROTO(unsigned long nr_migrated,
-+		unsigned long nr_failed),
-+
-+	TP_ARGS(nr_migrated, nr_failed),
-+
-+	TP_STRUCT__entry(
-+		__field(unsigned long, nr_migrated)
-+		__field(unsigned long, nr_failed)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(nr_migrated, nr_migrated)
-+		tp_assign(nr_failed, nr_failed)
-+	),
-+
-+	TP_printk("nr_migrated=%lu nr_failed=%lu",
-+		__entry->nr_migrated,
-+		__entry->nr_failed)
-+)
-+
-+
-+#endif /* _TRACE_COMPACTION_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/ext3.h
-@@ -0,0 +1,902 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM ext3
-+
-+#if !defined(_TRACE_EXT3_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_EXT3_H
-+
-+#include <linux/tracepoint.h>
-+#include <linux/version.h>
-+
-+TRACE_EVENT(ext3_free_inode,
-+	TP_PROTO(struct inode *inode),
-+
-+	TP_ARGS(inode),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	umode_t, mode			)
-+		__field(	uid_t,	uid			)
-+		__field(	gid_t,	gid			)
-+		__field(	blkcnt_t, blocks		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(mode, inode->i_mode)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
-+		tp_assign(uid, i_uid_read(inode))
-+		tp_assign(gid, i_gid_read(inode))
-+#else
-+		tp_assign(uid, inode->i_uid)
-+		tp_assign(gid, inode->i_gid)
-+#endif
-+		tp_assign(blocks, inode->i_blocks)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu mode 0%o uid %u gid %u blocks %lu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->mode, __entry->uid, __entry->gid,
-+		  (unsigned long) __entry->blocks)
-+)
-+
-+TRACE_EVENT(ext3_request_inode,
-+	TP_PROTO(struct inode *dir, int mode),
-+
-+	TP_ARGS(dir, mode),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	dir			)
-+		__field(	umode_t, mode			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, dir->i_sb->s_dev)
-+		tp_assign(dir, dir->i_ino)
-+		tp_assign(mode, mode)
-+	),
-+
-+	TP_printk("dev %d,%d dir %lu mode 0%o",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->dir, __entry->mode)
-+)
-+
-+TRACE_EVENT(ext3_allocate_inode,
-+	TP_PROTO(struct inode *inode, struct inode *dir, int mode),
-+
-+	TP_ARGS(inode, dir, mode),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	ino_t,	dir			)
-+		__field(	umode_t, mode			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(dir, dir->i_ino)
-+		tp_assign(mode, mode)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu dir %lu mode 0%o",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  (unsigned long) __entry->dir, __entry->mode)
-+)
-+
-+TRACE_EVENT(ext3_evict_inode,
-+	TP_PROTO(struct inode *inode),
-+
-+	TP_ARGS(inode),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	int,	nlink			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(nlink, inode->i_nlink)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu nlink %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino, __entry->nlink)
-+)
-+
-+TRACE_EVENT(ext3_drop_inode,
-+	TP_PROTO(struct inode *inode, int drop),
-+
-+	TP_ARGS(inode, drop),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	int,	drop			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(drop, drop)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu drop %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino, __entry->drop)
-+)
-+
-+TRACE_EVENT(ext3_mark_inode_dirty,
-+	TP_PROTO(struct inode *inode, unsigned long IP),
-+
-+	TP_ARGS(inode, IP),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(unsigned long,	ip			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(ip, IP)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu caller %pF",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino, (void *)__entry->ip)
-+)
-+
-+TRACE_EVENT(ext3_write_begin,
-+	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
-+		 unsigned int flags),
-+
-+	TP_ARGS(inode, pos, len, flags),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	loff_t,	pos			)
-+		__field(	unsigned int, len		)
-+		__field(	unsigned int, flags		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(pos, pos)
-+		tp_assign(len, len)
-+		tp_assign(flags, flags)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu pos %llu len %u flags %u",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  (unsigned long long) __entry->pos, __entry->len,
-+		  __entry->flags)
-+)
-+
-+DECLARE_EVENT_CLASS(ext3__write_end,
-+	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
-+			unsigned int copied),
-+
-+	TP_ARGS(inode, pos, len, copied),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	loff_t,	pos			)
-+		__field(	unsigned int, len		)
-+		__field(	unsigned int, copied		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(pos, pos)
-+		tp_assign(len, len)
-+		tp_assign(copied, copied)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu pos %llu len %u copied %u",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  (unsigned long long) __entry->pos, __entry->len,
-+		  __entry->copied)
-+)
-+
-+DEFINE_EVENT(ext3__write_end, ext3_ordered_write_end,
-+
-+	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
-+		 unsigned int copied),
-+
-+	TP_ARGS(inode, pos, len, copied)
-+)
-+
-+DEFINE_EVENT(ext3__write_end, ext3_writeback_write_end,
-+
-+	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
-+		 unsigned int copied),
-+
-+	TP_ARGS(inode, pos, len, copied)
-+)
-+
-+DEFINE_EVENT(ext3__write_end, ext3_journalled_write_end,
-+
-+	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
-+		 unsigned int copied),
-+
-+	TP_ARGS(inode, pos, len, copied)
-+)
-+
-+DECLARE_EVENT_CLASS(ext3__page_op,
-+	TP_PROTO(struct page *page),
-+
-+	TP_ARGS(page),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	pgoff_t, index			)
-+
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(index, page->index)
-+		tp_assign(ino, page->mapping->host->i_ino)
-+		tp_assign(dev, page->mapping->host->i_sb->s_dev)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu page_index %lu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino, __entry->index)
-+)
-+
-+DEFINE_EVENT(ext3__page_op, ext3_ordered_writepage,
-+
-+	TP_PROTO(struct page *page),
-+
-+	TP_ARGS(page)
-+)
-+
-+DEFINE_EVENT(ext3__page_op, ext3_writeback_writepage,
-+
-+	TP_PROTO(struct page *page),
-+
-+	TP_ARGS(page)
-+)
-+
-+DEFINE_EVENT(ext3__page_op, ext3_journalled_writepage,
-+
-+	TP_PROTO(struct page *page),
-+
-+	TP_ARGS(page)
-+)
-+
-+DEFINE_EVENT(ext3__page_op, ext3_readpage,
-+
-+	TP_PROTO(struct page *page),
-+
-+	TP_ARGS(page)
-+)
-+
-+DEFINE_EVENT(ext3__page_op, ext3_releasepage,
-+
-+	TP_PROTO(struct page *page),
-+
-+	TP_ARGS(page)
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0))
-+
-+TRACE_EVENT(ext3_invalidatepage,
-+	TP_PROTO(struct page *page, unsigned int offset, unsigned int length),
-+
-+	TP_ARGS(page, offset, length),
-+
-+	TP_STRUCT__entry(
-+		__field(	pgoff_t, index			)
-+		__field(	unsigned int, offset		)
-+		__field(	unsigned int, length		)
-+		__field(	ino_t,	ino			)
-+		__field(	dev_t,	dev			)
-+
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(index, page->index)
-+		tp_assign(offset, offset)
-+		tp_assign(length, length)
-+		tp_assign(ino, page->mapping->host->i_ino)
-+		tp_assign(dev, page->mapping->host->i_sb->s_dev)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu page_index %lu offset %u length %u",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->index, __entry->offset, __entry->length)
-+)
-+
-+#else
-+
-+TRACE_EVENT(ext3_invalidatepage,
-+	TP_PROTO(struct page *page, unsigned long offset),
-+
-+	TP_ARGS(page, offset),
-+
-+	TP_STRUCT__entry(
-+		__field(	pgoff_t, index			)
-+		__field(	unsigned long, offset		)
-+		__field(	ino_t,	ino			)
-+		__field(	dev_t,	dev			)
-+
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(index, page->index)
-+		tp_assign(offset, offset)
-+		tp_assign(ino, page->mapping->host->i_ino)
-+		tp_assign(dev, page->mapping->host->i_sb->s_dev)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu page_index %lu offset %lu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->index, __entry->offset)
-+)
-+
-+#endif
-+
-+TRACE_EVENT(ext3_discard_blocks,
-+	TP_PROTO(struct super_block *sb, unsigned long blk,
-+			unsigned long count),
-+
-+	TP_ARGS(sb, blk, count),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev		)
-+		__field(	unsigned long,	blk		)
-+		__field(	unsigned long,	count		)
-+
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, sb->s_dev)
-+		tp_assign(blk, blk)
-+		tp_assign(count, count)
-+	),
-+
-+	TP_printk("dev %d,%d blk %lu count %lu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __entry->blk, __entry->count)
-+)
-+
-+TRACE_EVENT(ext3_request_blocks,
-+	TP_PROTO(struct inode *inode, unsigned long goal,
-+		 unsigned long count),
-+
-+	TP_ARGS(inode, goal, count),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	unsigned long, count		)
-+		__field(	unsigned long,	goal		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(count, count)
-+		tp_assign(goal, goal)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu count %lu goal %lu ",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->count, __entry->goal)
-+)
-+
-+TRACE_EVENT(ext3_allocate_blocks,
-+	TP_PROTO(struct inode *inode, unsigned long goal,
-+		 unsigned long count, unsigned long block),
-+
-+	TP_ARGS(inode, goal, count, block),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	unsigned long,	block		)
-+		__field(	unsigned long, count		)
-+		__field(	unsigned long,	goal		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(block, block)
-+		tp_assign(count, count)
-+		tp_assign(goal, goal)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu count %lu block %lu goal %lu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		   __entry->count, __entry->block,
-+		  __entry->goal)
-+)
-+
-+TRACE_EVENT(ext3_free_blocks,
-+	TP_PROTO(struct inode *inode, unsigned long block,
-+		 unsigned long count),
-+
-+	TP_ARGS(inode, block, count),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	umode_t, mode			)
-+		__field(	unsigned long,	block		)
-+		__field(	unsigned long,	count		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(mode, inode->i_mode)
-+		tp_assign(block, block)
-+		tp_assign(count, count)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu mode 0%o block %lu count %lu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->mode, __entry->block, __entry->count)
-+)
-+
-+TRACE_EVENT(ext3_sync_file_enter,
-+	TP_PROTO(struct file *file, int datasync),
-+
-+	TP_ARGS(file, datasync),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	ino_t,	parent			)
-+		__field(	int,	datasync		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, file->f_path.dentry->d_inode->i_sb->s_dev)
-+		tp_assign(ino, file->f_path.dentry->d_inode->i_ino)
-+		tp_assign(datasync, datasync)
-+		tp_assign(parent, file->f_path.dentry->d_parent->d_inode->i_ino)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu parent %ld datasync %d ",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  (unsigned long) __entry->parent, __entry->datasync)
-+)
-+
-+TRACE_EVENT(ext3_sync_file_exit,
-+	TP_PROTO(struct inode *inode, int ret),
-+
-+	TP_ARGS(inode, ret),
-+
-+	TP_STRUCT__entry(
-+		__field(	int,	ret			)
-+		__field(	ino_t,	ino			)
-+		__field(	dev_t,	dev			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(ret, ret)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(dev, inode->i_sb->s_dev)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu ret %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->ret)
-+)
-+
-+TRACE_EVENT(ext3_sync_fs,
-+	TP_PROTO(struct super_block *sb, int wait),
-+
-+	TP_ARGS(sb, wait),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	int,	wait			)
-+
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, sb->s_dev)
-+		tp_assign(wait, wait)
-+	),
-+
-+	TP_printk("dev %d,%d wait %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __entry->wait)
-+)
-+
-+TRACE_EVENT(ext3_rsv_window_add,
-+	TP_PROTO(struct super_block *sb,
-+		 struct ext3_reserve_window_node *rsv_node),
-+
-+	TP_ARGS(sb, rsv_node),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned long,	start		)
-+		__field(	unsigned long,	end		)
-+		__field(	dev_t,	dev			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, sb->s_dev)
-+		tp_assign(start, rsv_node->rsv_window._rsv_start)
-+		tp_assign(end, rsv_node->rsv_window._rsv_end)
-+	),
-+
-+	TP_printk("dev %d,%d start %lu end %lu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __entry->start, __entry->end)
-+)
-+
-+TRACE_EVENT(ext3_discard_reservation,
-+	TP_PROTO(struct inode *inode,
-+		 struct ext3_reserve_window_node *rsv_node),
-+
-+	TP_ARGS(inode, rsv_node),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned long,	start		)
-+		__field(	unsigned long,	end		)
-+		__field(	ino_t,	ino			)
-+		__field(	dev_t,	dev			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(start, rsv_node->rsv_window._rsv_start)
-+		tp_assign(end, rsv_node->rsv_window._rsv_end)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(dev, inode->i_sb->s_dev)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu start %lu end %lu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long)__entry->ino, __entry->start,
-+		  __entry->end)
-+)
-+
-+TRACE_EVENT(ext3_alloc_new_reservation,
-+	TP_PROTO(struct super_block *sb, unsigned long goal),
-+
-+	TP_ARGS(sb, goal),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	unsigned long,	goal		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, sb->s_dev)
-+		tp_assign(goal, goal)
-+	),
-+
-+	TP_printk("dev %d,%d goal %lu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __entry->goal)
-+)
-+
-+TRACE_EVENT(ext3_reserved,
-+	TP_PROTO(struct super_block *sb, unsigned long block,
-+		 struct ext3_reserve_window_node *rsv_node),
-+
-+	TP_ARGS(sb, block, rsv_node),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned long,	block		)
-+		__field(	unsigned long,	start		)
-+		__field(	unsigned long,	end		)
-+		__field(	dev_t,	dev			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(block, block)
-+		tp_assign(start, rsv_node->rsv_window._rsv_start)
-+		tp_assign(end, rsv_node->rsv_window._rsv_end)
-+		tp_assign(dev, sb->s_dev)
-+	),
-+
-+	TP_printk("dev %d,%d block %lu, start %lu end %lu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __entry->block, __entry->start, __entry->end)
-+)
-+
-+TRACE_EVENT(ext3_forget,
-+	TP_PROTO(struct inode *inode, int is_metadata, unsigned long block),
-+
-+	TP_ARGS(inode, is_metadata, block),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	umode_t, mode			)
-+		__field(	int,	is_metadata		)
-+		__field(	unsigned long,	block		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(mode, inode->i_mode)
-+		tp_assign(is_metadata, is_metadata)
-+		tp_assign(block, block)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu mode 0%o is_metadata %d block %lu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->mode, __entry->is_metadata, __entry->block)
-+)
-+
-+TRACE_EVENT(ext3_read_block_bitmap,
-+	TP_PROTO(struct super_block *sb, unsigned int group),
-+
-+	TP_ARGS(sb, group),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	__u32,	group			)
-+
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, sb->s_dev)
-+		tp_assign(group, group)
-+	),
-+
-+	TP_printk("dev %d,%d group %u",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __entry->group)
-+)
-+
-+TRACE_EVENT(ext3_direct_IO_enter,
-+	TP_PROTO(struct inode *inode, loff_t offset, unsigned long len, int rw),
-+
-+	TP_ARGS(inode, offset, len, rw),
-+
-+	TP_STRUCT__entry(
-+		__field(	ino_t,	ino			)
-+		__field(	dev_t,	dev			)
-+		__field(	loff_t,	pos			)
-+		__field(	unsigned long,	len		)
-+		__field(	int,	rw			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(pos, offset)
-+		tp_assign(len, len)
-+		tp_assign(rw, rw)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu pos %llu len %lu rw %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  (unsigned long long) __entry->pos, __entry->len,
-+		  __entry->rw)
-+)
-+
-+TRACE_EVENT(ext3_direct_IO_exit,
-+	TP_PROTO(struct inode *inode, loff_t offset, unsigned long len,
-+		 int rw, int ret),
-+
-+	TP_ARGS(inode, offset, len, rw, ret),
-+
-+	TP_STRUCT__entry(
-+		__field(	ino_t,	ino			)
-+		__field(	dev_t,	dev			)
-+		__field(	loff_t,	pos			)
-+		__field(	unsigned long,	len		)
-+		__field(	int,	rw			)
-+		__field(	int,	ret			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(pos, offset)
-+		tp_assign(len, len)
-+		tp_assign(rw, rw)
-+		tp_assign(ret, ret)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu pos %llu len %lu rw %d ret %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  (unsigned long long) __entry->pos, __entry->len,
-+		  __entry->rw, __entry->ret)
-+)
-+
-+TRACE_EVENT(ext3_unlink_enter,
-+	TP_PROTO(struct inode *parent, struct dentry *dentry),
-+
-+	TP_ARGS(parent, dentry),
-+
-+	TP_STRUCT__entry(
-+		__field(	ino_t,	parent			)
-+		__field(	ino_t,	ino			)
-+		__field(	loff_t,	size			)
-+		__field(	dev_t,	dev			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(parent, parent->i_ino)
-+		tp_assign(ino, dentry->d_inode->i_ino)
-+		tp_assign(size, dentry->d_inode->i_size)
-+		tp_assign(dev, dentry->d_inode->i_sb->s_dev)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu size %lld parent %ld",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  (unsigned long long)__entry->size,
-+		  (unsigned long) __entry->parent)
-+)
-+
-+TRACE_EVENT(ext3_unlink_exit,
-+	TP_PROTO(struct dentry *dentry, int ret),
-+
-+	TP_ARGS(dentry, ret),
-+
-+	TP_STRUCT__entry(
-+		__field(	ino_t,	ino			)
-+		__field(	dev_t,	dev			)
-+		__field(	int,	ret			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(ino, dentry->d_inode->i_ino)
-+		tp_assign(dev, dentry->d_inode->i_sb->s_dev)
-+		tp_assign(ret, ret)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu ret %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->ret)
-+)
-+
-+DECLARE_EVENT_CLASS(ext3__truncate,
-+	TP_PROTO(struct inode *inode),
-+
-+	TP_ARGS(inode),
-+
-+	TP_STRUCT__entry(
-+		__field(	ino_t,		ino		)
-+		__field(	dev_t,		dev		)
-+		__field(	blkcnt_t,	blocks		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(blocks, inode->i_blocks)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu blocks %lu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino, (unsigned long) __entry->blocks)
-+)
-+
-+DEFINE_EVENT(ext3__truncate, ext3_truncate_enter,
-+
-+	TP_PROTO(struct inode *inode),
-+
-+	TP_ARGS(inode)
-+)
-+
-+DEFINE_EVENT(ext3__truncate, ext3_truncate_exit,
-+
-+	TP_PROTO(struct inode *inode),
-+
-+	TP_ARGS(inode)
-+)
-+
-+TRACE_EVENT(ext3_get_blocks_enter,
-+	TP_PROTO(struct inode *inode, unsigned long lblk,
-+		 unsigned long len, int create),
-+
-+	TP_ARGS(inode, lblk, len, create),
-+
-+	TP_STRUCT__entry(
-+		__field(	ino_t,		ino		)
-+		__field(	dev_t,		dev		)
-+		__field(	unsigned long,	lblk		)
-+		__field(	unsigned long,	len		)
-+		__field(	int,		create		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(lblk, lblk)
-+		tp_assign(len, len)
-+		tp_assign(create, create)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu lblk %lu len %lu create %u",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->lblk, __entry->len, __entry->create)
-+)
-+
-+TRACE_EVENT(ext3_get_blocks_exit,
-+	TP_PROTO(struct inode *inode, unsigned long lblk,
-+		 unsigned long pblk, unsigned long len, int ret),
-+
-+	TP_ARGS(inode, lblk, pblk, len, ret),
-+
-+	TP_STRUCT__entry(
-+		__field(	ino_t,		ino		)
-+		__field(	dev_t,		dev		)
-+		__field(	unsigned long,	lblk		)
-+		__field(	unsigned long,	pblk		)
-+		__field(	unsigned long,	len		)
-+		__field(	int,		ret		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(lblk, lblk)
-+		tp_assign(pblk, pblk)
-+		tp_assign(len, len)
-+		tp_assign(ret, ret)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu lblk %lu pblk %lu len %lu ret %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		   __entry->lblk, __entry->pblk,
-+		  __entry->len, __entry->ret)
-+)
-+
-+TRACE_EVENT(ext3_load_inode,
-+	TP_PROTO(struct inode *inode),
-+
-+	TP_ARGS(inode),
-+
-+	TP_STRUCT__entry(
-+		__field(	ino_t,	ino		)
-+		__field(	dev_t,	dev		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(dev, inode->i_sb->s_dev)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino)
-+)
-+
-+#endif /* _TRACE_EXT3_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/ext4.h
-@@ -0,0 +1,3130 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM ext4
-+
-+#if !defined(_TRACE_EXT4_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_EXT4_H
-+
-+#include <linux/writeback.h>
-+#include <linux/tracepoint.h>
-+#include <linux/version.h>
-+
-+#ifndef _TRACE_EXT4_DEF_
-+#define _TRACE_EXT4_DEF_
-+struct ext4_allocation_context;
-+struct ext4_allocation_request;
-+struct ext4_prealloc_space;
-+struct ext4_inode_info;
-+struct mpage_da_data;
-+struct ext4_map_blocks;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))
-+struct ext4_extent;
-+#endif
-+#endif
-+
-+#define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode))
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0))
-+#define TP_MODE_T	__u16
-+#else
-+#define TP_MODE_T	umode_t
-+#endif
-+
-+TRACE_EVENT(ext4_free_inode,
-+	TP_PROTO(struct inode *inode),
-+
-+	TP_ARGS(inode),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	uid_t,	uid			)
-+		__field(	gid_t,	gid			)
-+		__field(	__u64, blocks			)
-+		__field(	TP_MODE_T, mode			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
-+		tp_assign(uid, i_uid_read(inode))
-+		tp_assign(gid, i_gid_read(inode))
-+#else
-+		tp_assign(uid, inode->i_uid)
-+		tp_assign(gid, inode->i_gid)
-+#endif
-+		tp_assign(blocks, inode->i_blocks)
-+		tp_assign(mode, inode->i_mode)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu mode 0%o uid %u gid %u blocks %llu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino, __entry->mode,
-+		  __entry->uid, __entry->gid, __entry->blocks)
-+)
-+
-+TRACE_EVENT(ext4_request_inode,
-+	TP_PROTO(struct inode *dir, int mode),
-+
-+	TP_ARGS(dir, mode),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	dir			)
-+		__field(	TP_MODE_T, mode			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, dir->i_sb->s_dev)
-+		tp_assign(dir, dir->i_ino)
-+		tp_assign(mode, mode)
-+	),
-+
-+	TP_printk("dev %d,%d dir %lu mode 0%o",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->dir, __entry->mode)
-+)
-+
-+TRACE_EVENT(ext4_allocate_inode,
-+	TP_PROTO(struct inode *inode, struct inode *dir, int mode),
-+
-+	TP_ARGS(inode, dir, mode),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	ino_t,	dir			)
-+		__field(	TP_MODE_T, mode			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(dir, dir->i_ino)
-+		tp_assign(mode, mode)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu dir %lu mode 0%o",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  (unsigned long) __entry->dir, __entry->mode)
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
-+TRACE_EVENT(ext4_evict_inode,
-+	TP_PROTO(struct inode *inode),
-+
-+	TP_ARGS(inode),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	int,	nlink			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(nlink, inode->i_nlink)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu nlink %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino, __entry->nlink)
-+)
-+
-+TRACE_EVENT(ext4_drop_inode,
-+	TP_PROTO(struct inode *inode, int drop),
-+
-+	TP_ARGS(inode, drop),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	int,	drop			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(drop, drop)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu drop %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino, __entry->drop)
-+)
-+
-+TRACE_EVENT(ext4_mark_inode_dirty,
-+	TP_PROTO(struct inode *inode, unsigned long IP),
-+
-+	TP_ARGS(inode, IP),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(unsigned long,	ip			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(ip, IP)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu caller %pF",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino, (void *)__entry->ip)
-+)
-+
-+TRACE_EVENT(ext4_begin_ordered_truncate,
-+	TP_PROTO(struct inode *inode, loff_t new_size),
-+
-+	TP_ARGS(inode, new_size),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	loff_t,	new_size		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(new_size, new_size)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu new_size %lld",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->new_size)
-+)
-+#endif
-+
-+DECLARE_EVENT_CLASS(ext4__write_begin,
-+
-+	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
-+		 unsigned int flags),
-+
-+	TP_ARGS(inode, pos, len, flags),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	loff_t,	pos			)
-+		__field(	unsigned int, len		)
-+		__field(	unsigned int, flags		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(pos, pos)
-+		tp_assign(len, len)
-+		tp_assign(flags, flags)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu pos %lld len %u flags %u",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->pos, __entry->len, __entry->flags)
-+)
-+
-+DEFINE_EVENT(ext4__write_begin, ext4_write_begin,
-+
-+	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
-+		 unsigned int flags),
-+
-+	TP_ARGS(inode, pos, len, flags)
-+)
-+
-+DEFINE_EVENT(ext4__write_begin, ext4_da_write_begin,
-+
-+	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
-+		 unsigned int flags),
-+
-+	TP_ARGS(inode, pos, len, flags)
-+)
-+
-+DECLARE_EVENT_CLASS(ext4__write_end,
-+	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
-+			unsigned int copied),
-+
-+	TP_ARGS(inode, pos, len, copied),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	loff_t,	pos			)
-+		__field(	unsigned int, len		)
-+		__field(	unsigned int, copied		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(pos, pos)
-+		tp_assign(len, len)
-+		tp_assign(copied, copied)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu pos %lld len %u copied %u",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->pos, __entry->len, __entry->copied)
-+)
-+
-+DEFINE_EVENT(ext4__write_end, ext4_ordered_write_end,
-+
-+	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
-+		 unsigned int copied),
-+
-+	TP_ARGS(inode, pos, len, copied)
-+)
-+
-+DEFINE_EVENT(ext4__write_end, ext4_writeback_write_end,
-+
-+	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
-+		 unsigned int copied),
-+
-+	TP_ARGS(inode, pos, len, copied)
-+)
-+
-+DEFINE_EVENT(ext4__write_end, ext4_journalled_write_end,
-+
-+	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
-+		 unsigned int copied),
-+
-+	TP_ARGS(inode, pos, len, copied)
-+)
-+
-+DEFINE_EVENT(ext4__write_end, ext4_da_write_end,
-+
-+	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
-+		 unsigned int copied),
-+
-+	TP_ARGS(inode, pos, len, copied)
-+)
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,40))
-+TRACE_EVENT(ext4_writepage,
-+	TP_PROTO(struct inode *inode, struct page *page),
-+
-+	TP_ARGS(inode, page),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	pgoff_t, index			)
-+
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(index, page->index)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu page_index %lu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino, __entry->index)
-+)
-+#endif
-+
-+TRACE_EVENT(ext4_da_writepages,
-+	TP_PROTO(struct inode *inode, struct writeback_control *wbc),
-+
-+	TP_ARGS(inode, wbc),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	long,	nr_to_write		)
-+		__field(	long,	pages_skipped		)
-+		__field(	loff_t,	range_start		)
-+		__field(	loff_t,	range_end		)
-+		__field(       pgoff_t,	writeback_index		)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+		__field(	int,	sync_mode		)
-+#endif
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,37))
-+		__field(	char,	nonblocking		)
-+#endif
-+		__field(	char,	for_kupdate		)
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39))
-+		__field(	char,	for_reclaim		)
-+#endif
-+		__field(	char,	range_cyclic		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(nr_to_write, wbc->nr_to_write)
-+		tp_assign(pages_skipped, wbc->pages_skipped)
-+		tp_assign(range_start, wbc->range_start)
-+		tp_assign(range_end, wbc->range_end)
-+		tp_assign(writeback_index, inode->i_mapping->writeback_index)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+		tp_assign(sync_mode, wbc->sync_mode)
-+#endif
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,37))
-+		tp_assign(nonblocking, wbc->nonblocking)
-+#endif
-+		tp_assign(for_kupdate, wbc->for_kupdate)
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39))
-+		tp_assign(for_reclaim, wbc->for_reclaim)
-+#endif
-+		tp_assign(range_cyclic, wbc->range_cyclic)
-+	),
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+	TP_printk("dev %d,%d ino %lu nr_to_write %ld pages_skipped %ld "
-+		  "range_start %lld range_end %lld sync_mode %d "
-+		  "for_kupdate %d range_cyclic %d writeback_index %lu",
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
-+	TP_printk("dev %d,%d ino %lu nr_to_write %ld pages_skipped %ld "
-+		  "range_start %llu range_end %llu "
-+		  "for_kupdate %d for_reclaim %d "
-+		  "range_cyclic %d writeback_index %lu",
-+#else
-+	TP_printk("dev %d,%d ino %lu nr_to_write %ld pages_skipped %ld "
-+		  "range_start %llu range_end %llu "
-+		  "nonblocking %d for_kupdate %d for_reclaim %d "
-+		  "range_cyclic %d writeback_index %lu",
-+#endif
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino, __entry->nr_to_write,
-+		  __entry->pages_skipped, __entry->range_start,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+		  __entry->range_end, __entry->sync_mode,
-+		  __entry->for_kupdate, __entry->range_cyclic,
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
-+		  __entry->range_end,
-+		  __entry->for_kupdate, __entry->for_reclaim,
-+		  __entry->range_cyclic,
-+#else
-+		  __entry->range_end, __entry->nonblocking,
-+		  __entry->for_kupdate, __entry->for_reclaim,
-+		  __entry->range_cyclic,
-+#endif
-+		  (unsigned long) __entry->writeback_index)
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0))
-+
-+TRACE_EVENT(ext4_da_write_pages,
-+	TP_PROTO(struct inode *inode, pgoff_t first_page,
-+		 struct writeback_control *wbc),
-+
-+	TP_ARGS(inode, first_page, wbc),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(      pgoff_t,	first_page		)
-+		__field(	 long,	nr_to_write		)
-+		__field(	  int,	sync_mode		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(first_page, first_page)
-+		tp_assign(nr_to_write, wbc->nr_to_write)
-+		tp_assign(sync_mode, wbc->sync_mode)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu first_page %lu nr_to_write %ld "
-+		  "sync_mode %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino, __entry->first_page,
-+		  __entry->nr_to_write, __entry->sync_mode)
-+)
-+
-+#else
-+
-+TRACE_EVENT(ext4_da_write_pages,
-+	TP_PROTO(struct inode *inode, struct mpage_da_data *mpd),
-+
-+	TP_ARGS(inode, mpd),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	__u64,	b_blocknr		)
-+		__field(	__u32,	b_size			)
-+		__field(	__u32,	b_state			)
-+		__field(	unsigned long,	first_page	)
-+		__field(	int,	io_done			)
-+		__field(	int,	pages_written		)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+		__field(	int,	sync_mode		)
-+#endif
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(b_blocknr, mpd->b_blocknr)
-+		tp_assign(b_size, mpd->b_size)
-+		tp_assign(b_state, mpd->b_state)
-+		tp_assign(first_page, mpd->first_page)
-+		tp_assign(io_done, mpd->io_done)
-+		tp_assign(pages_written, mpd->pages_written)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+		tp_assign(sync_mode, mpd->wbc->sync_mode)
-+#endif
-+	),
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+	TP_printk("dev %d,%d ino %lu b_blocknr %llu b_size %u b_state 0x%04x "
-+		  "first_page %lu io_done %d pages_written %d sync_mode %d",
-+#else
-+	TP_printk("dev %d,%d ino %lu b_blocknr %llu b_size %u b_state 0x%04x "
-+		  "first_page %lu io_done %d pages_written %d",
-+#endif
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->b_blocknr, __entry->b_size,
-+		  __entry->b_state, __entry->first_page,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+		  __entry->io_done, __entry->pages_written,
-+		  __entry->sync_mode
-+#else
-+		  __entry->io_done, __entry->pages_written
-+#endif
-+                  )
-+)
-+
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0))
-+
-+TRACE_EVENT(ext4_da_write_pages_extent,
-+	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map),
-+
-+	TP_ARGS(inode, map),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	__u64,	lblk			)
-+		__field(	__u32,	len			)
-+		__field(	__u32,	flags			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(lblk, map->m_lblk)
-+		tp_assign(len, map->m_len)
-+		tp_assign(flags, map->m_flags)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu lblk %llu len %u flags %s",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino, __entry->lblk, __entry->len,
-+		  show_mflags(__entry->flags))
-+)
-+
-+#endif
-+
-+TRACE_EVENT(ext4_da_writepages_result,
-+	TP_PROTO(struct inode *inode, struct writeback_control *wbc,
-+			int ret, int pages_written),
-+
-+	TP_ARGS(inode, wbc, ret, pages_written),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	int,	ret			)
-+		__field(	int,	pages_written		)
-+		__field(	long,	pages_skipped		)
-+		__field(       pgoff_t,	writeback_index		)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+		__field(	int,	sync_mode		)
-+#endif
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33))
-+		__field(	char,	encountered_congestion	)
-+#endif
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0))
-+		__field(	char,	more_io			)
-+#endif
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
-+		__field(	char,	no_nrwrite_index_update	)
-+#endif
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(ret, ret)
-+		tp_assign(pages_written, pages_written)
-+		tp_assign(pages_skipped, wbc->pages_skipped)
-+		tp_assign(writeback_index, inode->i_mapping->writeback_index)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+		tp_assign(sync_mode, wbc->sync_mode)
-+#endif
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33))
-+		tp_assign(encountered_congestion, wbc->encountered_congestion)
-+#endif
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0))
-+		tp_assign(more_io, wbc->more_io)
-+#endif
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
-+		tp_assign(no_nrwrite_index_update, wbc->no_nrwrite_index_update)
-+#endif
-+	),
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0))
-+	TP_printk("dev %d,%d ino %lu ret %d pages_written %d pages_skipped %ld "
-+		  "sync_mode %d writeback_index %lu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino, __entry->ret,
-+		  __entry->pages_written, __entry->pages_skipped,
-+		  __entry->sync_mode,
-+		  (unsigned long) __entry->writeback_index)
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+	TP_printk("dev %d,%d ino %lu ret %d pages_written %d pages_skipped %ld "
-+		  " more_io %d sync_mode %d writeback_index %lu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino, __entry->ret,
-+		  __entry->pages_written, __entry->pages_skipped,
-+		  __entry->more_io, __entry->sync_mode,
-+		  (unsigned long) __entry->writeback_index)
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
-+	TP_printk("dev %d,%d ino %lu ret %d pages_written %d pages_skipped %ld "
-+		  " more_io %d writeback_index %lu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino, __entry->ret,
-+		  __entry->pages_written, __entry->pages_skipped,
-+		  __entry->more_io,
-+		  (unsigned long) __entry->writeback_index)
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33))
-+	TP_printk("dev %d,%d ino %lu ret %d pages_written %d pages_skipped %ld "
-+		  " more_io %d no_nrwrite_index_update %d writeback_index %lu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino, __entry->ret,
-+		  __entry->pages_written, __entry->pages_skipped,
-+		  __entry->more_io, __entry->no_nrwrite_index_update,
-+		  (unsigned long) __entry->writeback_index)
-+#else
-+	TP_printk("dev %d,%d ino %lu ret %d pages_written %d pages_skipped %ld "
-+		  " congestion %d"
-+		  " more_io %d no_nrwrite_index_update %d writeback_index %lu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino, __entry->ret,
-+		  __entry->pages_written, __entry->pages_skipped,
-+		  __entry->encountered_congestion,
-+		  __entry->more_io, __entry->no_nrwrite_index_update,
-+		  (unsigned long) __entry->writeback_index)
-+#endif
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+DECLARE_EVENT_CLASS(ext4__page_op,
-+	TP_PROTO(struct page *page),
-+
-+	TP_ARGS(page),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	pgoff_t, index			)
-+
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, page->mapping->host->i_sb->s_dev)
-+		tp_assign(ino, page->mapping->host->i_ino)
-+		tp_assign(index, page->index)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu page_index %lu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  (unsigned long) __entry->index)
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,40))
-+DEFINE_EVENT(ext4__page_op, ext4_writepage,
-+
-+	TP_PROTO(struct page *page),
-+
-+	TP_ARGS(page)
-+)
-+#endif
-+
-+DEFINE_EVENT(ext4__page_op, ext4_readpage,
-+
-+	TP_PROTO(struct page *page),
-+
-+	TP_ARGS(page)
-+)
-+
-+DEFINE_EVENT(ext4__page_op, ext4_releasepage,
-+
-+	TP_PROTO(struct page *page),
-+
-+	TP_ARGS(page)
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0))
-+
-+DECLARE_EVENT_CLASS(ext4_invalidatepage_op,
-+	TP_PROTO(struct page *page, unsigned int offset, unsigned int length),
-+
-+	TP_ARGS(page, offset, length),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	pgoff_t, index			)
-+		__field(	unsigned int, offset		)
-+		__field(	unsigned int, length		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, page->mapping->host->i_sb->s_dev)
-+		tp_assign(ino, page->mapping->host->i_ino)
-+		tp_assign(index, page->index)
-+		tp_assign(offset, offset)
-+		tp_assign(length, length)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu page_index %lu offset %u length %u",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  (unsigned long) __entry->index,
-+		  __entry->offset, __entry->length)
-+)
-+
-+DEFINE_EVENT(ext4_invalidatepage_op, ext4_invalidatepage,
-+	TP_PROTO(struct page *page, unsigned int offset, unsigned int length),
-+
-+	TP_ARGS(page, offset, length)
-+)
-+
-+DEFINE_EVENT(ext4_invalidatepage_op, ext4_journalled_invalidatepage,
-+	TP_PROTO(struct page *page, unsigned int offset, unsigned int length),
-+
-+	TP_ARGS(page, offset, length)
-+)
-+
-+#else
-+
-+TRACE_EVENT(ext4_invalidatepage,
-+	TP_PROTO(struct page *page, unsigned long offset),
-+
-+	TP_ARGS(page, offset),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	pgoff_t, index			)
-+		__field(	unsigned long, offset		)
-+
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, page->mapping->host->i_sb->s_dev)
-+		tp_assign(ino, page->mapping->host->i_ino)
-+		tp_assign(index, page->index)
-+		tp_assign(offset, offset)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu page_index %lu offset %lu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  (unsigned long) __entry->index, __entry->offset)
-+)
-+
-+#endif
-+
-+#endif
-+
-+TRACE_EVENT(ext4_discard_blocks,
-+	TP_PROTO(struct super_block *sb, unsigned long long blk,
-+			unsigned long long count),
-+
-+	TP_ARGS(sb, blk, count),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	__u64,	blk			)
-+		__field(	__u64,	count			)
-+
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, sb->s_dev)
-+		tp_assign(blk, blk)
-+		tp_assign(count, count)
-+	),
-+
-+	TP_printk("dev %d,%d blk %llu count %llu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __entry->blk, __entry->count)
-+)
-+
-+DECLARE_EVENT_CLASS(ext4__mb_new_pa,
-+	TP_PROTO(struct ext4_allocation_context *ac,
-+		 struct ext4_prealloc_space *pa),
-+
-+	TP_ARGS(ac, pa),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	__u64,	pa_pstart		)
-+		__field(	__u64,	pa_lstart		)
-+		__field(	__u32,	pa_len			)
-+
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, ac->ac_sb->s_dev)
-+		tp_assign(ino, ac->ac_inode->i_ino)
-+		tp_assign(pa_pstart, pa->pa_pstart)
-+		tp_assign(pa_lstart, pa->pa_lstart)
-+		tp_assign(pa_len, pa->pa_len)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu pstart %llu len %u lstart %llu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->pa_pstart, __entry->pa_len, __entry->pa_lstart)
-+)
-+
-+DEFINE_EVENT(ext4__mb_new_pa, ext4_mb_new_inode_pa,
-+
-+	TP_PROTO(struct ext4_allocation_context *ac,
-+		 struct ext4_prealloc_space *pa),
-+
-+	TP_ARGS(ac, pa)
-+)
-+
-+DEFINE_EVENT(ext4__mb_new_pa, ext4_mb_new_group_pa,
-+
-+	TP_PROTO(struct ext4_allocation_context *ac,
-+		 struct ext4_prealloc_space *pa),
-+
-+	TP_ARGS(ac, pa)
-+)
-+
-+TRACE_EVENT(ext4_mb_release_inode_pa,
-+	TP_PROTO(
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,40))
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
-+		 struct super_block *sb,
-+		 struct inode *inode,
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+		 struct super_block *sb,
-+		 struct ext4_allocation_context *ac,
-+#else
-+		 struct ext4_allocation_context *ac,
-+#endif
-+#endif
-+		 struct ext4_prealloc_space *pa,
-+		 unsigned long long block, unsigned int count),
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,40))
-+	TP_ARGS(pa, block, count),
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
-+	TP_ARGS(sb, inode, pa, block, count),
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+	TP_ARGS(sb, ac, pa, block, count),
-+#else
-+	TP_ARGS(ac, pa, block, count),
-+#endif
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	__u64,	block			)
-+		__field(	__u32,	count			)
-+
-+	),
-+
-+	TP_fast_assign(
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,40))
-+		tp_assign(dev, pa->pa_inode->i_sb->s_dev)
-+		tp_assign(ino, pa->pa_inode->i_ino)
-+#else
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+		tp_assign(dev, sb->s_dev)
-+#else
-+		tp_assign(dev, ac->ac_sb->s_dev)
-+#endif
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
-+		tp_assign(ino, inode->i_ino)
-+#else
-+		tp_assign(ino, (ac && ac->ac_inode) ? ac->ac_inode->i_ino : 0)
-+#endif
-+#endif
-+		tp_assign(block, block)
-+		tp_assign(count, count)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu block %llu count %u",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->block, __entry->count)
-+)
-+
-+TRACE_EVENT(ext4_mb_release_group_pa,
-+
-+#if (LTTNG_KERNEL_RANGE(2,6,40, 3,3,0))
-+	TP_PROTO(struct ext4_prealloc_space *pa),
-+
-+	TP_ARGS(pa),
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
-+	TP_PROTO(struct super_block *sb, struct ext4_prealloc_space *pa),
-+
-+	TP_ARGS(sb, pa),
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+	TP_PROTO(struct super_block *sb,
-+		 struct ext4_allocation_context *ac,
-+		 struct ext4_prealloc_space *pa),
-+
-+	TP_ARGS(sb, ac, pa),
-+#else
-+	TP_PROTO(struct ext4_allocation_context *ac,
-+		 struct ext4_prealloc_space *pa),
-+
-+	TP_ARGS(ac, pa),
-+#endif
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,37))
-+		__field(	ino_t,	ino			)
-+#endif
-+		__field(	__u64,	pa_pstart		)
-+		__field(	__u32,	pa_len			)
-+
-+	),
-+
-+	TP_fast_assign(
-+#if (LTTNG_KERNEL_RANGE(2,6,40, 3,3,0))
-+		tp_assign(dev, pa->pa_inode->i_sb->s_dev)
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+		tp_assign(dev, sb->s_dev)
-+#else
-+		tp_assign(dev, ac->ac_sb->s_dev)
-+#endif
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,37))
-+		tp_assign(ino, (ac && ac->ac_inode) ? ac->ac_inode->i_ino : 0)
-+#endif
-+		tp_assign(pa_pstart, pa->pa_pstart)
-+		tp_assign(pa_len, pa->pa_len)
-+	),
-+
-+	TP_printk("dev %d,%d pstart %llu len %u",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __entry->pa_pstart, __entry->pa_len)
-+)
-+
-+TRACE_EVENT(ext4_discard_preallocations,
-+	TP_PROTO(struct inode *inode),
-+
-+	TP_ARGS(inode),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino)
-+)
-+
-+TRACE_EVENT(ext4_mb_discard_preallocations,
-+	TP_PROTO(struct super_block *sb, int needed),
-+
-+	TP_ARGS(sb, needed),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	int,	needed			)
-+
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, sb->s_dev)
-+		tp_assign(needed, needed)
-+	),
-+
-+	TP_printk("dev %d,%d needed %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __entry->needed)
-+)
-+
-+TRACE_EVENT(ext4_request_blocks,
-+	TP_PROTO(struct ext4_allocation_request *ar),
-+
-+	TP_ARGS(ar),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	unsigned int, len		)
-+		__field(	__u32,  logical			)
-+		__field(	__u32,	lleft			)
-+		__field(	__u32,	lright			)
-+		__field(	__u64,	goal			)
-+		__field(	__u64,	pleft			)
-+		__field(	__u64,	pright			)
-+		__field(	unsigned int, flags		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, ar->inode->i_sb->s_dev)
-+		tp_assign(ino, ar->inode->i_ino)
-+		tp_assign(len, ar->len)
-+		tp_assign(logical, ar->logical)
-+		tp_assign(goal, ar->goal)
-+		tp_assign(lleft, ar->lleft)
-+		tp_assign(lright, ar->lright)
-+		tp_assign(pleft, ar->pleft)
-+		tp_assign(pright, ar->pright)
-+		tp_assign(flags, ar->flags)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu flags %u len %u lblk %u goal %llu "
-+		  "lleft %u lright %u pleft %llu pright %llu ",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino, __entry->flags,
-+		  __entry->len, __entry->logical, __entry->goal,
-+		  __entry->lleft, __entry->lright, __entry->pleft,
-+		  __entry->pright)
-+)
-+
-+TRACE_EVENT(ext4_allocate_blocks,
-+	TP_PROTO(struct ext4_allocation_request *ar, unsigned long long block),
-+
-+	TP_ARGS(ar, block),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	__u64,	block			)
-+		__field(	unsigned int, len		)
-+		__field(	__u32,  logical			)
-+		__field(	__u32,	lleft			)
-+		__field(	__u32,	lright			)
-+		__field(	__u64,	goal			)
-+		__field(	__u64,	pleft			)
-+		__field(	__u64,	pright			)
-+		__field(	unsigned int, flags		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, ar->inode->i_sb->s_dev)
-+		tp_assign(ino, ar->inode->i_ino)
-+		tp_assign(block, block)
-+		tp_assign(len, ar->len)
-+		tp_assign(logical, ar->logical)
-+		tp_assign(goal, ar->goal)
-+		tp_assign(lleft, ar->lleft)
-+		tp_assign(lright, ar->lright)
-+		tp_assign(pleft, ar->pleft)
-+		tp_assign(pright, ar->pright)
-+		tp_assign(flags, ar->flags)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu flags %u len %u block %llu lblk %u "
-+		  "goal %llu lleft %u lright %u pleft %llu pright %llu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino, __entry->flags,
-+		  __entry->len, __entry->block, __entry->logical,
-+		  __entry->goal,  __entry->lleft, __entry->lright,
-+		  __entry->pleft, __entry->pright)
-+)
-+
-+TRACE_EVENT(ext4_free_blocks,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33))
-+	TP_PROTO(struct inode *inode, __u64 block, unsigned long count,
-+		 int flags),
-+
-+	TP_ARGS(inode, block, count, flags),
-+#else
-+	TP_PROTO(struct inode *inode, __u64 block, unsigned long count,
-+		 int metadata),
-+
-+	TP_ARGS(inode, block, count, metadata),
-+#endif
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	__u64,	block			)
-+		__field(	unsigned long,	count		)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33))
-+		__field(	int,	flags			)
-+		__field(	TP_MODE_T, mode			)
-+#else
-+		__field(	int,	metadata		)
-+#endif
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(block, block)
-+		tp_assign(count, count)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33))
-+		tp_assign(flags, flags)
-+		tp_assign(mode, inode->i_mode)
-+#else
-+		tp_assign(metadata, metadata)
-+#endif
-+	),
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33))
-+	TP_printk("dev %d,%d ino %lu mode 0%o block %llu count %lu flags %d",
-+#else
-+	TP_printk("dev %d,%d ino %lu block %llu count %lu metadata %d",
-+#endif
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33))
-+		  __entry->mode, __entry->block, __entry->count,
-+		  __entry->flags)
-+#else
-+		  __entry->block, __entry->count, __entry->metadata)
-+#endif
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+TRACE_EVENT(ext4_sync_file_enter,
-+#else
-+TRACE_EVENT(ext4_sync_file,
-+#endif
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
-+	TP_PROTO(struct file *file, int datasync),
-+
-+	TP_ARGS(file, datasync),
-+#else
-+	TP_PROTO(struct file *file, struct dentry *dentry, int datasync),
-+
-+	TP_ARGS(file, dentry, datasync),
-+#endif
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	ino_t,	parent			)
-+		__field(	int,	datasync		)
-+	),
-+
-+	TP_fast_assign(
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
-+		tp_assign(dev, file->f_path.dentry->d_inode->i_sb->s_dev)
-+		tp_assign(ino, file->f_path.dentry->d_inode->i_ino)
-+		tp_assign(datasync, datasync)
-+		tp_assign(parent, file->f_path.dentry->d_parent->d_inode->i_ino)
-+#else
-+		tp_assign(dev, dentry->d_inode->i_sb->s_dev)
-+		tp_assign(ino, dentry->d_inode->i_ino)
-+		tp_assign(datasync, datasync)
-+		tp_assign(parent, dentry->d_parent->d_inode->i_ino)
-+#endif
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu parent %lu datasync %d ",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  (unsigned long) __entry->parent, __entry->datasync)
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+TRACE_EVENT(ext4_sync_file_exit,
-+	TP_PROTO(struct inode *inode, int ret),
-+
-+	TP_ARGS(inode, ret),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	int,	ret			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(ret, ret)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu ret %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->ret)
-+)
-+#endif
-+
-+TRACE_EVENT(ext4_sync_fs,
-+	TP_PROTO(struct super_block *sb, int wait),
-+
-+	TP_ARGS(sb, wait),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	int,	wait			)
-+
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, sb->s_dev)
-+		tp_assign(wait, wait)
-+	),
-+
-+	TP_printk("dev %d,%d wait %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __entry->wait)
-+)
-+
-+TRACE_EVENT(ext4_alloc_da_blocks,
-+	TP_PROTO(struct inode *inode),
-+
-+	TP_ARGS(inode),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field( unsigned int,	data_blocks	)
-+		__field( unsigned int,	meta_blocks	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(data_blocks, EXT4_I(inode)->i_reserved_data_blocks)
-+		tp_assign(meta_blocks, EXT4_I(inode)->i_reserved_meta_blocks)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu data_blocks %u meta_blocks %u",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->data_blocks, __entry->meta_blocks)
-+)
-+
-+TRACE_EVENT(ext4_mballoc_alloc,
-+	TP_PROTO(struct ext4_allocation_context *ac),
-+
-+	TP_ARGS(ac),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	__u32, 	orig_logical		)
-+		__field(	  int,	orig_start		)
-+		__field(	__u32, 	orig_group		)
-+		__field(	  int,	orig_len		)
-+		__field(	__u32, 	goal_logical		)
-+		__field(	  int,	goal_start		)
-+		__field(	__u32, 	goal_group		)
-+		__field(	  int,	goal_len		)
-+		__field(	__u32, 	result_logical		)
-+		__field(	  int,	result_start		)
-+		__field(	__u32, 	result_group		)
-+		__field(	  int,	result_len		)
-+		__field(	__u16,	found			)
-+		__field(	__u16,	groups			)
-+		__field(	__u16,	buddy			)
-+		__field(	__u16,	flags			)
-+		__field(	__u16,	tail			)
-+		__field(	__u8,	cr			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, ac->ac_inode->i_sb->s_dev)
-+		tp_assign(ino, ac->ac_inode->i_ino)
-+		tp_assign(orig_logical, ac->ac_o_ex.fe_logical)
-+		tp_assign(orig_start, ac->ac_o_ex.fe_start)
-+		tp_assign(orig_group, ac->ac_o_ex.fe_group)
-+		tp_assign(orig_len, ac->ac_o_ex.fe_len)
-+		tp_assign(goal_logical, ac->ac_g_ex.fe_logical)
-+		tp_assign(goal_start, ac->ac_g_ex.fe_start)
-+		tp_assign(goal_group, ac->ac_g_ex.fe_group)
-+		tp_assign(goal_len, ac->ac_g_ex.fe_len)
-+		tp_assign(result_logical, ac->ac_f_ex.fe_logical)
-+		tp_assign(result_start, ac->ac_f_ex.fe_start)
-+		tp_assign(result_group, ac->ac_f_ex.fe_group)
-+		tp_assign(result_len, ac->ac_f_ex.fe_len)
-+		tp_assign(found, ac->ac_found)
-+		tp_assign(flags, ac->ac_flags)
-+		tp_assign(groups, ac->ac_groups_scanned)
-+		tp_assign(buddy, ac->ac_buddy)
-+		tp_assign(tail, ac->ac_tail)
-+		tp_assign(cr, ac->ac_criteria)
-+	),
-+
-+	TP_printk("dev %d,%d inode %lu orig %u/%d/%u@%u goal %u/%d/%u@%u "
-+		  "result %u/%d/%u@%u blks %u grps %u cr %u flags 0x%04x "
-+		  "tail %u broken %u",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->orig_group, __entry->orig_start,
-+		  __entry->orig_len, __entry->orig_logical,
-+		  __entry->goal_group, __entry->goal_start,
-+		  __entry->goal_len, __entry->goal_logical,
-+		  __entry->result_group, __entry->result_start,
-+		  __entry->result_len, __entry->result_logical,
-+		  __entry->found, __entry->groups, __entry->cr,
-+		  __entry->flags, __entry->tail,
-+		  __entry->buddy ? 1 << __entry->buddy : 0)
-+)
-+
-+TRACE_EVENT(ext4_mballoc_prealloc,
-+	TP_PROTO(struct ext4_allocation_context *ac),
-+
-+	TP_ARGS(ac),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	__u32, 	orig_logical		)
-+		__field(	  int,	orig_start		)
-+		__field(	__u32, 	orig_group		)
-+		__field(	  int,	orig_len		)
-+		__field(	__u32, 	result_logical		)
-+		__field(	  int,	result_start		)
-+		__field(	__u32, 	result_group		)
-+		__field(	  int,	result_len		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, ac->ac_inode->i_sb->s_dev)
-+		tp_assign(ino, ac->ac_inode->i_ino)
-+		tp_assign(orig_logical, ac->ac_o_ex.fe_logical)
-+		tp_assign(orig_start, ac->ac_o_ex.fe_start)
-+		tp_assign(orig_group, ac->ac_o_ex.fe_group)
-+		tp_assign(orig_len, ac->ac_o_ex.fe_len)
-+		tp_assign(result_logical, ac->ac_b_ex.fe_logical)
-+		tp_assign(result_start, ac->ac_b_ex.fe_start)
-+		tp_assign(result_group, ac->ac_b_ex.fe_group)
-+		tp_assign(result_len, ac->ac_b_ex.fe_len)
-+	),
-+
-+	TP_printk("dev %d,%d inode %lu orig %u/%d/%u@%u result %u/%d/%u@%u",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->orig_group, __entry->orig_start,
-+		  __entry->orig_len, __entry->orig_logical,
-+		  __entry->result_group, __entry->result_start,
-+		  __entry->result_len, __entry->result_logical)
-+)
-+
-+DECLARE_EVENT_CLASS(ext4__mballoc,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
-+	TP_PROTO(struct super_block *sb,
-+		 struct inode *inode,
-+		 ext4_group_t group,
-+		 ext4_grpblk_t start,
-+		 ext4_grpblk_t len),
-+
-+	TP_ARGS(sb, inode, group, start, len),
-+#else
-+	TP_PROTO(struct ext4_allocation_context *ac),
-+
-+	TP_ARGS(ac),
-+#endif
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,37))
-+		__field(	__u32, 	result_logical		)
-+#endif
-+		__field(	  int,	result_start		)
-+		__field(	__u32, 	result_group		)
-+		__field(	  int,	result_len		)
-+	),
-+
-+	TP_fast_assign(
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
-+		tp_assign(dev, sb->s_dev)
-+		tp_assign(ino, inode ? inode->i_ino : 0)
-+		tp_assign(result_start, start)
-+		tp_assign(result_group, group)
-+		tp_assign(result_len, len)
-+#else
-+		tp_assign(dev, ac->ac_sb->s_dev)
-+		tp_assign(ino, ac->ac_inode ? ac->ac_inode->i_ino : 0)
-+		tp_assign(result_logical, ac->ac_b_ex.fe_logical)
-+		tp_assign(result_start, ac->ac_b_ex.fe_start)
-+		tp_assign(result_group, ac->ac_b_ex.fe_group)
-+		tp_assign(result_len, ac->ac_b_ex.fe_len)
-+#endif
-+	),
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
-+	TP_printk("dev %d,%d inode %lu extent %u/%d/%d ",
-+#else
-+	TP_printk("dev %d,%d inode %lu extent %u/%d/%u@%u ",
-+#endif
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->result_group, __entry->result_start,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
-+		  __entry->result_len
-+#else
-+		  __entry->result_len, __entry->result_logical
-+#endif
-+	)
-+)
-+
-+DEFINE_EVENT(ext4__mballoc, ext4_mballoc_discard,
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
-+	TP_PROTO(struct super_block *sb,
-+		 struct inode *inode,
-+		 ext4_group_t group,
-+		 ext4_grpblk_t start,
-+		 ext4_grpblk_t len),
-+
-+	TP_ARGS(sb, inode, group, start, len)
-+#else
-+	TP_PROTO(struct ext4_allocation_context *ac),
-+
-+	TP_ARGS(ac)
-+#endif
-+)
-+
-+DEFINE_EVENT(ext4__mballoc, ext4_mballoc_free,
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
-+	TP_PROTO(struct super_block *sb,
-+		 struct inode *inode,
-+		 ext4_group_t group,
-+		 ext4_grpblk_t start,
-+		 ext4_grpblk_t len),
-+
-+	TP_ARGS(sb, inode, group, start, len)
-+#else
-+	TP_PROTO(struct ext4_allocation_context *ac),
-+
-+	TP_ARGS(ac)
-+#endif
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33))
-+TRACE_EVENT(ext4_forget,
-+	TP_PROTO(struct inode *inode, int is_metadata, __u64 block),
-+
-+	TP_ARGS(inode, is_metadata, block),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	__u64,	block			)
-+		__field(	int,	is_metadata		)
-+		__field(	TP_MODE_T, mode			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(block, block)
-+		tp_assign(is_metadata, is_metadata)
-+		tp_assign(mode, inode->i_mode)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu mode 0%o is_metadata %d block %llu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->mode, __entry->is_metadata, __entry->block)
-+)
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
-+TRACE_EVENT(ext4_da_update_reserve_space,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))
-+	TP_PROTO(struct inode *inode, int used_blocks, int quota_claim),
-+
-+	TP_ARGS(inode, used_blocks, quota_claim),
-+#else
-+	TP_PROTO(struct inode *inode, int used_blocks),
-+
-+	TP_ARGS(inode, used_blocks),
-+#endif
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	__u64,	i_blocks		)
-+		__field(	int,	used_blocks		)
-+		__field(	int,	reserved_data_blocks	)
-+		__field(	int,	reserved_meta_blocks	)
-+		__field(	int,	allocated_meta_blocks	)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))
-+		__field(	int,	quota_claim		)
-+#endif
-+		__field(	TP_MODE_T, mode			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(i_blocks, inode->i_blocks)
-+		tp_assign(used_blocks, used_blocks)
-+		tp_assign(reserved_data_blocks,
-+				EXT4_I(inode)->i_reserved_data_blocks)
-+		tp_assign(reserved_meta_blocks,
-+				EXT4_I(inode)->i_reserved_meta_blocks)
-+		tp_assign(allocated_meta_blocks,
-+				EXT4_I(inode)->i_allocated_meta_blocks)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))
-+		tp_assign(quota_claim, quota_claim)
-+#endif
-+		tp_assign(mode, inode->i_mode)
-+	),
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))
-+	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu used_blocks %d "
-+		  "reserved_data_blocks %d reserved_meta_blocks %d "
-+		  "allocated_meta_blocks %d quota_claim %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->mode, __entry->i_blocks,
-+		  __entry->used_blocks, __entry->reserved_data_blocks,
-+		  __entry->reserved_meta_blocks, __entry->allocated_meta_blocks,
-+		  __entry->quota_claim)
-+#else
-+	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu used_blocks %d "
-+		  "reserved_data_blocks %d reserved_meta_blocks %d "
-+		  "allocated_meta_blocks %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->mode, __entry->i_blocks,
-+		  __entry->used_blocks, __entry->reserved_data_blocks,
-+		  __entry->reserved_meta_blocks, __entry->allocated_meta_blocks)
-+#endif
-+)
-+
-+TRACE_EVENT(ext4_da_reserve_space,
-+	TP_PROTO(struct inode *inode, int md_needed),
-+
-+	TP_ARGS(inode, md_needed),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	__u64,	i_blocks		)
-+		__field(	int,	md_needed		)
-+		__field(	int,	reserved_data_blocks	)
-+		__field(	int,	reserved_meta_blocks	)
-+		__field(	TP_MODE_T, mode			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(i_blocks, inode->i_blocks)
-+		tp_assign(md_needed, md_needed)
-+		tp_assign(reserved_data_blocks,
-+				EXT4_I(inode)->i_reserved_data_blocks)
-+		tp_assign(reserved_meta_blocks,
-+				EXT4_I(inode)->i_reserved_meta_blocks)
-+		tp_assign(mode, inode->i_mode)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu md_needed %d "
-+		  "reserved_data_blocks %d reserved_meta_blocks %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->mode, __entry->i_blocks,
-+		  __entry->md_needed, __entry->reserved_data_blocks,
-+		  __entry->reserved_meta_blocks)
-+)
-+
-+TRACE_EVENT(ext4_da_release_space,
-+	TP_PROTO(struct inode *inode, int freed_blocks),
-+
-+	TP_ARGS(inode, freed_blocks),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	__u64,	i_blocks		)
-+		__field(	int,	freed_blocks		)
-+		__field(	int,	reserved_data_blocks	)
-+		__field(	int,	reserved_meta_blocks	)
-+		__field(	int,	allocated_meta_blocks	)
-+		__field(	TP_MODE_T, mode			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(i_blocks, inode->i_blocks)
-+		tp_assign(freed_blocks, freed_blocks)
-+		tp_assign(reserved_data_blocks,
-+				EXT4_I(inode)->i_reserved_data_blocks)
-+		tp_assign(reserved_meta_blocks,
-+				EXT4_I(inode)->i_reserved_meta_blocks)
-+		tp_assign(allocated_meta_blocks,
-+				EXT4_I(inode)->i_allocated_meta_blocks)
-+		tp_assign(mode, inode->i_mode)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu freed_blocks %d "
-+		  "reserved_data_blocks %d reserved_meta_blocks %d "
-+		  "allocated_meta_blocks %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->mode, __entry->i_blocks,
-+		  __entry->freed_blocks, __entry->reserved_data_blocks,
-+		  __entry->reserved_meta_blocks, __entry->allocated_meta_blocks)
-+)
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
-+DECLARE_EVENT_CLASS(ext4__bitmap_load,
-+	TP_PROTO(struct super_block *sb, unsigned long group),
-+
-+	TP_ARGS(sb, group),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	__u32,	group			)
-+
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, sb->s_dev)
-+		tp_assign(group, group)
-+	),
-+
-+	TP_printk("dev %d,%d group %u",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __entry->group)
-+)
-+
-+DEFINE_EVENT(ext4__bitmap_load, ext4_mb_bitmap_load,
-+
-+	TP_PROTO(struct super_block *sb, unsigned long group),
-+
-+	TP_ARGS(sb, group)
-+)
-+
-+DEFINE_EVENT(ext4__bitmap_load, ext4_mb_buddy_bitmap_load,
-+
-+	TP_PROTO(struct super_block *sb, unsigned long group),
-+
-+	TP_ARGS(sb, group)
-+)
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+DEFINE_EVENT(ext4__bitmap_load, ext4_read_block_bitmap_load,
-+
-+	TP_PROTO(struct super_block *sb, unsigned long group),
-+
-+	TP_ARGS(sb, group)
-+)
-+
-+DEFINE_EVENT(ext4__bitmap_load, ext4_load_inode_bitmap,
-+
-+	TP_PROTO(struct super_block *sb, unsigned long group),
-+
-+	TP_ARGS(sb, group)
-+)
-+
-+TRACE_EVENT(ext4_direct_IO_enter,
-+	TP_PROTO(struct inode *inode, loff_t offset, unsigned long len, int rw),
-+
-+	TP_ARGS(inode, offset, len, rw),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	loff_t,	pos			)
-+		__field(	unsigned long,	len		)
-+		__field(	int,	rw			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(pos, offset)
-+		tp_assign(len, len)
-+		tp_assign(rw, rw)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu pos %lld len %lu rw %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->pos, __entry->len, __entry->rw)
-+)
-+
-+TRACE_EVENT(ext4_direct_IO_exit,
-+	TP_PROTO(struct inode *inode, loff_t offset, unsigned long len,
-+		 int rw, int ret),
-+
-+	TP_ARGS(inode, offset, len, rw, ret),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	loff_t,	pos			)
-+		__field(	unsigned long,	len		)
-+		__field(	int,	rw			)
-+		__field(	int,	ret			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(pos, offset)
-+		tp_assign(len, len)
-+		tp_assign(rw, rw)
-+		tp_assign(ret, ret)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu pos %lld len %lu rw %d ret %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->pos, __entry->len,
-+		  __entry->rw, __entry->ret)
-+)
-+
-+TRACE_EVENT(ext4_fallocate_enter,
-+	TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode),
-+
-+	TP_ARGS(inode, offset, len, mode),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	loff_t,	pos			)
-+		__field(	loff_t,	len			)
-+		__field(	int,	mode			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(pos, offset)
-+		tp_assign(len, len)
-+		tp_assign(mode, mode)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu pos %lld len %lld mode %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino, __entry->pos,
-+		  __entry->len, __entry->mode)
-+)
-+
-+TRACE_EVENT(ext4_fallocate_exit,
-+	TP_PROTO(struct inode *inode, loff_t offset,
-+		 unsigned int max_blocks, int ret),
-+
-+	TP_ARGS(inode, offset, max_blocks, ret),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	loff_t,	pos			)
-+		__field(	unsigned int,	blocks		)
-+		__field(	int, 	ret			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(pos, offset)
-+		tp_assign(blocks, max_blocks)
-+		tp_assign(ret, ret)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu pos %lld blocks %u ret %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->pos, __entry->blocks,
-+		  __entry->ret)
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0))
-+
-+TRACE_EVENT(ext4_punch_hole,
-+	TP_PROTO(struct inode *inode, loff_t offset, loff_t len),
-+
-+	TP_ARGS(inode, offset, len),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	loff_t,	offset			)
-+		__field(	loff_t, len			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(offset, offset)
-+		tp_assign(len, len)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu offset %lld len %lld",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->offset, __entry->len)
-+)
-+
-+#endif
-+
-+TRACE_EVENT(ext4_unlink_enter,
-+	TP_PROTO(struct inode *parent, struct dentry *dentry),
-+
-+	TP_ARGS(parent, dentry),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	ino_t,	parent			)
-+		__field(	loff_t,	size			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, dentry->d_inode->i_sb->s_dev)
-+		tp_assign(ino, dentry->d_inode->i_ino)
-+		tp_assign(parent, parent->i_ino)
-+		tp_assign(size, dentry->d_inode->i_size)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu size %lld parent %lu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino, __entry->size,
-+		  (unsigned long) __entry->parent)
-+)
-+
-+TRACE_EVENT(ext4_unlink_exit,
-+	TP_PROTO(struct dentry *dentry, int ret),
-+
-+	TP_ARGS(dentry, ret),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	int,	ret			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, dentry->d_inode->i_sb->s_dev)
-+		tp_assign(ino, dentry->d_inode->i_ino)
-+		tp_assign(ret, ret)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu ret %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->ret)
-+)
-+
-+DECLARE_EVENT_CLASS(ext4__truncate,
-+	TP_PROTO(struct inode *inode),
-+
-+	TP_ARGS(inode),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev		)
-+		__field(	ino_t,		ino		)
-+		__field(	__u64,		blocks		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(blocks, inode->i_blocks)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu blocks %llu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino, __entry->blocks)
-+)
-+
-+DEFINE_EVENT(ext4__truncate, ext4_truncate_enter,
-+
-+	TP_PROTO(struct inode *inode),
-+
-+	TP_ARGS(inode)
-+)
-+
-+DEFINE_EVENT(ext4__truncate, ext4_truncate_exit,
-+
-+	TP_PROTO(struct inode *inode),
-+
-+	TP_ARGS(inode)
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))
-+/* 'ux' is the uninitialized extent. */
-+TRACE_EVENT(ext4_ext_convert_to_initialized_enter,
-+	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map,
-+		 struct ext4_extent *ux),
-+
-+	TP_ARGS(inode, map, ux),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev	)
-+		__field(	ino_t,		ino	)
-+		__field(	ext4_lblk_t,	m_lblk	)
-+		__field(	unsigned,	m_len	)
-+		__field(	ext4_lblk_t,	u_lblk	)
-+		__field(	unsigned,	u_len	)
-+		__field(	ext4_fsblk_t,	u_pblk	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(m_lblk, map->m_lblk)
-+		tp_assign(m_len, map->m_len)
-+		tp_assign(u_lblk, le32_to_cpu(ux->ee_block))
-+		tp_assign(u_len, ext4_ext_get_actual_len(ux))
-+		tp_assign(u_pblk, ext4_ext_pblock(ux))
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu m_lblk %u m_len %u u_lblk %u u_len %u "
-+		  "u_pblk %llu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->m_lblk, __entry->m_len,
-+		  __entry->u_lblk, __entry->u_len, __entry->u_pblk)
-+)
-+
-+/*
-+ * 'ux' is the uninitialized extent.
-+ * 'ix' is the initialized extent to which blocks are transferred.
-+ */
-+TRACE_EVENT(ext4_ext_convert_to_initialized_fastpath,
-+	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map,
-+		 struct ext4_extent *ux, struct ext4_extent *ix),
-+
-+	TP_ARGS(inode, map, ux, ix),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev	)
-+		__field(	ino_t,		ino	)
-+		__field(	ext4_lblk_t,	m_lblk	)
-+		__field(	unsigned,	m_len	)
-+		__field(	ext4_lblk_t,	u_lblk	)
-+		__field(	unsigned,	u_len	)
-+		__field(	ext4_fsblk_t,	u_pblk	)
-+		__field(	ext4_lblk_t,	i_lblk	)
-+		__field(	unsigned,	i_len	)
-+		__field(	ext4_fsblk_t,	i_pblk	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(m_lblk, map->m_lblk)
-+		tp_assign(m_len, map->m_len)
-+		tp_assign(u_lblk, le32_to_cpu(ux->ee_block))
-+		tp_assign(u_len, ext4_ext_get_actual_len(ux))
-+		tp_assign(u_pblk, ext4_ext_pblock(ux))
-+		tp_assign(i_lblk, le32_to_cpu(ix->ee_block))
-+		tp_assign(i_len, ext4_ext_get_actual_len(ix))
-+		tp_assign(i_pblk, ext4_ext_pblock(ix))
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu m_lblk %u m_len %u "
-+		  "u_lblk %u u_len %u u_pblk %llu "
-+		  "i_lblk %u i_len %u i_pblk %llu ",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->m_lblk, __entry->m_len,
-+		  __entry->u_lblk, __entry->u_len, __entry->u_pblk,
-+		  __entry->i_lblk, __entry->i_len, __entry->i_pblk)
-+)
-+#endif
-+
-+DECLARE_EVENT_CLASS(ext4__map_blocks_enter,
-+	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
-+		 unsigned int len, unsigned int flags),
-+
-+	TP_ARGS(inode, lblk, len, flags),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev		)
-+		__field(	ino_t,		ino		)
-+		__field(	ext4_lblk_t,	lblk		)
-+		__field(	unsigned int,	len		)
-+		__field(	unsigned int,	flags		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(lblk, lblk)
-+		tp_assign(len, len)
-+		tp_assign(flags, flags)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu lblk %u len %u flags %u",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->lblk, __entry->len, __entry->flags)
-+)
-+
-+DEFINE_EVENT(ext4__map_blocks_enter, ext4_ext_map_blocks_enter,
-+	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
-+		 unsigned len, unsigned flags),
-+
-+	TP_ARGS(inode, lblk, len, flags)
-+)
-+
-+DEFINE_EVENT(ext4__map_blocks_enter, ext4_ind_map_blocks_enter,
-+	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
-+		 unsigned len, unsigned flags),
-+
-+	TP_ARGS(inode, lblk, len, flags)
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0))
-+
-+DECLARE_EVENT_CLASS(ext4__map_blocks_exit,
-+	TP_PROTO(struct inode *inode, unsigned flags, struct ext4_map_blocks *map,
-+		 int ret),
-+
-+	TP_ARGS(inode, flags, map, ret),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev		)
-+		__field(	ino_t,		ino		)
-+		__field(	unsigned int,	flags		)
-+		__field(	ext4_fsblk_t,	pblk		)
-+		__field(	ext4_lblk_t,	lblk		)
-+		__field(	unsigned int,	len		)
-+		__field(	unsigned int,	mflags		)
-+		__field(	int,		ret		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(flags, flags)
-+		tp_assign(pblk, map->m_pblk)
-+		tp_assign(lblk, map->m_lblk)
-+		tp_assign(len, map->m_len)
-+		tp_assign(mflags, map->m_flags)
-+		tp_assign(ret, ret)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu flags %s lblk %u pblk %llu len %u "
-+		  "mflags %s ret %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  show_map_flags(__entry->flags), __entry->lblk, __entry->pblk,
-+		  __entry->len, show_mflags(__entry->mflags), __entry->ret)
-+)
-+
-+DEFINE_EVENT(ext4__map_blocks_exit, ext4_ext_map_blocks_exit,
-+	TP_PROTO(struct inode *inode, unsigned flags,
-+		 struct ext4_map_blocks *map, int ret),
-+
-+	TP_ARGS(inode, flags, map, ret)
-+)
-+
-+DEFINE_EVENT(ext4__map_blocks_exit, ext4_ind_map_blocks_exit,
-+	TP_PROTO(struct inode *inode, unsigned flags,
-+		 struct ext4_map_blocks *map, int ret),
-+
-+	TP_ARGS(inode, flags, map, ret)
-+)
-+
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0))
-+
-+DECLARE_EVENT_CLASS(ext4__map_blocks_exit,
-+	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, int ret),
-+
-+	TP_ARGS(inode, map, ret),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev		)
-+		__field(	ino_t,		ino		)
-+		__field(	ext4_fsblk_t,	pblk		)
-+		__field(	ext4_lblk_t,	lblk		)
-+		__field(	unsigned int,	len		)
-+		__field(	unsigned int,	flags		)
-+		__field(	int,		ret		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(pblk, map->m_pblk)
-+		tp_assign(lblk, map->m_lblk)
-+		tp_assign(len, map->m_len)
-+		tp_assign(flags, map->m_flags)
-+		tp_assign(ret, ret)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu lblk %u pblk %llu len %u flags %x ret %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->lblk, __entry->pblk,
-+		  __entry->len, __entry->flags, __entry->ret)
-+)
-+
-+DEFINE_EVENT(ext4__map_blocks_exit, ext4_ext_map_blocks_exit,
-+	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, int ret),
-+
-+	TP_ARGS(inode, map, ret)
-+)
-+
-+DEFINE_EVENT(ext4__map_blocks_exit, ext4_ind_map_blocks_exit,
-+	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, int ret),
-+
-+	TP_ARGS(inode, map, ret)
-+)
-+
-+#else	/* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) */
-+
-+DECLARE_EVENT_CLASS(ext4__map_blocks_exit,
-+	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
-+		 ext4_fsblk_t pblk, unsigned int len, int ret),
-+
-+	TP_ARGS(inode, lblk, pblk, len, ret),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev		)
-+		__field(	ino_t,		ino		)
-+		__field(	ext4_fsblk_t,	pblk		)
-+		__field(	ext4_lblk_t,	lblk		)
-+		__field(	unsigned int,	len		)
-+		__field(	int,		ret		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(pblk, pblk)
-+		tp_assign(lblk, lblk)
-+		tp_assign(len, len)
-+		tp_assign(ret, ret)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu lblk %u pblk %llu len %u ret %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->lblk, __entry->pblk,
-+		  __entry->len, __entry->ret)
-+)
-+
-+DEFINE_EVENT(ext4__map_blocks_exit, ext4_ext_map_blocks_exit,
-+	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
-+		 ext4_fsblk_t pblk, unsigned len, int ret),
-+
-+	TP_ARGS(inode, lblk, pblk, len, ret)
-+)
-+
-+DEFINE_EVENT(ext4__map_blocks_exit, ext4_ind_map_blocks_exit,
-+	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
-+		 ext4_fsblk_t pblk, unsigned len, int ret),
-+
-+	TP_ARGS(inode, lblk, pblk, len, ret)
-+)
-+
-+#endif	/* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) */
-+
-+TRACE_EVENT(ext4_ext_load_extent,
-+	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_fsblk_t pblk),
-+
-+	TP_ARGS(inode, lblk, pblk),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev		)
-+		__field(	ino_t,		ino		)
-+		__field(	ext4_fsblk_t,	pblk		)
-+		__field(	ext4_lblk_t,	lblk		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(pblk, pblk)
-+		tp_assign(lblk, lblk)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu lblk %u pblk %llu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->lblk, __entry->pblk)
-+)
-+
-+TRACE_EVENT(ext4_load_inode,
-+	TP_PROTO(struct inode *inode),
-+
-+	TP_ARGS(inode),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev		)
-+		__field(	ino_t,	ino		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+	),
-+
-+	TP_printk("dev %d,%d ino %ld",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino)
-+)
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0))
-+
-+TRACE_EVENT(ext4_journal_start,
-+	TP_PROTO(struct super_block *sb, int blocks, int rsv_blocks,
-+		 unsigned long IP),
-+
-+	TP_ARGS(sb, blocks, rsv_blocks, IP),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(unsigned long,	ip			)
-+		__field(	  int,	blocks			)
-+		__field(	  int,	rsv_blocks		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, sb->s_dev)
-+		tp_assign(ip, IP)
-+		tp_assign(blocks, blocks)
-+		tp_assign(rsv_blocks, rsv_blocks)
-+	),
-+
-+	TP_printk("dev %d,%d blocks, %d rsv_blocks, %d caller %pF",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __entry->blocks, __entry->rsv_blocks, (void *)__entry->ip)
-+)
-+
-+TRACE_EVENT(ext4_journal_start_reserved,
-+	TP_PROTO(struct super_block *sb, int blocks, unsigned long IP),
-+
-+	TP_ARGS(sb, blocks, IP),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(unsigned long,	ip			)
-+		__field(	  int,	blocks			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, sb->s_dev)
-+		tp_assign(ip, IP)
-+		tp_assign(blocks, blocks)
-+	),
-+
-+	TP_printk("dev %d,%d blocks, %d caller %pF",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __entry->blocks, (void *)__entry->ip)
-+)
-+
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0))
-+
-+TRACE_EVENT(ext4_journal_start,
-+	TP_PROTO(struct super_block *sb, int nblocks, unsigned long IP),
-+
-+	TP_ARGS(sb, nblocks, IP),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(unsigned long,	ip			)
-+		__field(	  int, 	nblocks			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, sb->s_dev)
-+		tp_assign(ip, IP)
-+		tp_assign(nblocks, nblocks)
-+	),
-+
-+	TP_printk("dev %d,%d nblocks %d caller %pF",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __entry->nblocks, (void *)__entry->ip)
-+)
-+
-+DECLARE_EVENT_CLASS(ext4__trim,
-+	TP_PROTO(struct super_block *sb,
-+		 ext4_group_t group,
-+		 ext4_grpblk_t start,
-+		 ext4_grpblk_t len),
-+
-+	TP_ARGS(sb, group, start, len),
-+
-+	TP_STRUCT__entry(
-+		__field(	int,	dev_major		)
-+		__field(	int,	dev_minor		)
-+		__field(	__u32, 	group			)
-+		__field(	int,	start			)
-+		__field(	int,	len			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev_major, MAJOR(sb->s_dev))
-+		tp_assign(dev_minor, MINOR(sb->s_dev))
-+		tp_assign(group, group)
-+		tp_assign(start, start)
-+		tp_assign(len, len)
-+	),
-+
-+	TP_printk("dev %d,%d group %u, start %d, len %d",
-+		  __entry->dev_major, __entry->dev_minor,
-+		  __entry->group, __entry->start, __entry->len)
-+)
-+
-+DEFINE_EVENT(ext4__trim, ext4_trim_extent,
-+
-+	TP_PROTO(struct super_block *sb,
-+		 ext4_group_t group,
-+		 ext4_grpblk_t start,
-+		 ext4_grpblk_t len),
-+
-+	TP_ARGS(sb, group, start, len)
-+)
-+
-+DEFINE_EVENT(ext4__trim, ext4_trim_all_free,
-+
-+	TP_PROTO(struct super_block *sb,
-+		 ext4_group_t group,
-+		 ext4_grpblk_t start,
-+		 ext4_grpblk_t len),
-+
-+	TP_ARGS(sb, group, start, len)
-+)
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))
-+
-+TRACE_EVENT(ext4_ext_handle_uninitialized_extents,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0))
-+	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, int flags,
-+		 unsigned int allocated, ext4_fsblk_t newblock),
-+
-+	TP_ARGS(inode, map, flags, allocated, newblock),
-+#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) */
-+	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map,
-+		 unsigned int allocated, ext4_fsblk_t newblock),
-+
-+	TP_ARGS(inode, map, allocated, newblock),
-+#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) */
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev		)
-+		__field(	ino_t,		ino		)
-+		__field(	int,		flags		)
-+		__field(	ext4_lblk_t,	lblk		)
-+		__field(	ext4_fsblk_t,	pblk		)
-+		__field(	unsigned int,	len		)
-+		__field(	unsigned int,	allocated	)
-+		__field(	ext4_fsblk_t,	newblk		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0))
-+		tp_assign(flags, flags)
-+#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) */
-+		tp_assign(flags, map->m_flags)
-+#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) */
-+		tp_assign(lblk, map->m_lblk)
-+		tp_assign(pblk, map->m_pblk)
-+		tp_assign(len, map->m_len)
-+		tp_assign(allocated, allocated)
-+		tp_assign(newblk, newblock)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu m_lblk %u m_pblk %llu m_len %u flags %d"
-+		  "allocated %d newblock %llu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  (unsigned) __entry->lblk, (unsigned long long) __entry->pblk,
-+		  __entry->len, __entry->flags,
-+		  (unsigned int) __entry->allocated,
-+		  (unsigned long long) __entry->newblk)
-+)
-+
-+TRACE_EVENT(ext4_get_implied_cluster_alloc_exit,
-+	TP_PROTO(struct super_block *sb, struct ext4_map_blocks *map, int ret),
-+
-+	TP_ARGS(sb, map, ret),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev	)
-+		__field(	unsigned int,	flags	)
-+		__field(	ext4_lblk_t,	lblk	)
-+		__field(	ext4_fsblk_t,	pblk	)
-+		__field(	unsigned int,	len	)
-+		__field(	int,		ret	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, sb->s_dev)
-+		tp_assign(flags, map->m_flags)
-+		tp_assign(lblk, map->m_lblk)
-+		tp_assign(pblk, map->m_pblk)
-+		tp_assign(len, map->m_len)
-+		tp_assign(ret, ret)
-+	),
-+
-+	TP_printk("dev %d,%d m_lblk %u m_pblk %llu m_len %u m_flags %u ret %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __entry->lblk, (unsigned long long) __entry->pblk,
-+		  __entry->len, __entry->flags, __entry->ret)
-+)
-+
-+TRACE_EVENT(ext4_ext_put_in_cache,
-+	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, unsigned int len,
-+		 ext4_fsblk_t start),
-+
-+	TP_ARGS(inode, lblk, len, start),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev	)
-+		__field(	ino_t,		ino	)
-+		__field(	ext4_lblk_t,	lblk	)
-+		__field(	unsigned int,	len	)
-+		__field(	ext4_fsblk_t,	start	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(lblk, lblk)
-+		tp_assign(len, len)
-+		tp_assign(start, start)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu lblk %u len %u start %llu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  (unsigned) __entry->lblk,
-+		  __entry->len,
-+		  (unsigned long long) __entry->start)
-+)
-+
-+TRACE_EVENT(ext4_ext_in_cache,
-+	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, int ret),
-+
-+	TP_ARGS(inode, lblk, ret),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev	)
-+		__field(	ino_t,		ino	)
-+		__field(	ext4_lblk_t,	lblk	)
-+		__field(	int,		ret	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(lblk, lblk)
-+		tp_assign(ret, ret)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu lblk %u ret %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  (unsigned) __entry->lblk,
-+		  __entry->ret)
-+
-+)
-+
-+TRACE_EVENT(ext4_find_delalloc_range,
-+	TP_PROTO(struct inode *inode, ext4_lblk_t from, ext4_lblk_t to,
-+		int reverse, int found, ext4_lblk_t found_blk),
-+
-+	TP_ARGS(inode, from, to, reverse, found, found_blk),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev		)
-+		__field(	ino_t,		ino		)
-+		__field(	ext4_lblk_t,	from		)
-+		__field(	ext4_lblk_t,	to		)
-+		__field(	int,		reverse		)
-+		__field(	int,		found		)
-+		__field(	ext4_lblk_t,	found_blk	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(from, from)
-+		tp_assign(to, to)
-+		tp_assign(reverse, reverse)
-+		tp_assign(found, found)
-+		tp_assign(found_blk, found_blk)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu from %u to %u reverse %d found %d "
-+		  "(blk = %u)",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  (unsigned) __entry->from, (unsigned) __entry->to,
-+		  __entry->reverse, __entry->found,
-+		  (unsigned) __entry->found_blk)
-+)
-+
-+TRACE_EVENT(ext4_get_reserved_cluster_alloc,
-+	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, unsigned int len),
-+
-+	TP_ARGS(inode, lblk, len),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev	)
-+		__field(	ino_t,		ino	)
-+		__field(	ext4_lblk_t,	lblk	)
-+		__field(	unsigned int,	len	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(lblk, lblk)
-+		tp_assign(len, len)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu lblk %u len %u",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  (unsigned) __entry->lblk,
-+		  __entry->len)
-+)
-+
-+TRACE_EVENT(ext4_ext_show_extent,
-+	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_fsblk_t pblk,
-+		 unsigned short len),
-+
-+	TP_ARGS(inode, lblk, pblk, len),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev	)
-+		__field(	ino_t,		ino	)
-+		__field(	ext4_fsblk_t,	pblk	)
-+		__field(	ext4_lblk_t,	lblk	)
-+		__field(	unsigned short,	len	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(pblk, pblk)
-+		tp_assign(lblk, lblk)
-+		tp_assign(len, len)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu lblk %u pblk %llu len %u",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  (unsigned) __entry->lblk,
-+		  (unsigned long long) __entry->pblk,
-+		  (unsigned short) __entry->len)
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0))
-+
-+TRACE_EVENT(ext4_remove_blocks,
-+	    TP_PROTO(struct inode *inode, struct ext4_extent *ex,
-+		ext4_lblk_t from, ext4_fsblk_t to,
-+		long long partial_cluster),
-+
-+	TP_ARGS(inode, ex, from, to, partial_cluster),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev	)
-+		__field(	ino_t,		ino	)
-+		__field(	ext4_lblk_t,	from	)
-+		__field(	ext4_lblk_t,	to	)
-+		__field(	long long,	partial	)
-+		__field(	ext4_fsblk_t,	ee_pblk	)
-+		__field(	ext4_lblk_t,	ee_lblk	)
-+		__field(	unsigned short,	ee_len	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(from, from)
-+		tp_assign(to, to)
-+		tp_assign(partial, partial_cluster)
-+		tp_assign(ee_pblk, ext4_ext_pblock(ex))
-+		tp_assign(ee_lblk, le32_to_cpu(ex->ee_block))
-+		tp_assign(ee_len, ext4_ext_get_actual_len(ex))
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu extent [%u(%llu), %u]"
-+		  "from %u to %u partial_cluster %lld",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  (unsigned) __entry->ee_lblk,
-+		  (unsigned long long) __entry->ee_pblk,
-+		  (unsigned short) __entry->ee_len,
-+		  (unsigned) __entry->from,
-+		  (unsigned) __entry->to,
-+		  (long long) __entry->partial)
-+)
-+
-+#else
-+
-+TRACE_EVENT(ext4_remove_blocks,
-+	    TP_PROTO(struct inode *inode, struct ext4_extent *ex,
-+		ext4_lblk_t from, ext4_fsblk_t to,
-+		ext4_fsblk_t partial_cluster),
-+
-+	TP_ARGS(inode, ex, from, to, partial_cluster),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev	)
-+		__field(	ino_t,		ino	)
-+		__field(	ext4_lblk_t,	from	)
-+		__field(	ext4_lblk_t,	to	)
-+		__field(	ext4_fsblk_t,	partial	)
-+		__field(	ext4_fsblk_t,	ee_pblk	)
-+		__field(	ext4_lblk_t,	ee_lblk	)
-+		__field(	unsigned short,	ee_len	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(from, from)
-+		tp_assign(to, to)
-+		tp_assign(partial, partial_cluster)
-+		tp_assign(ee_pblk, ext4_ext_pblock(ex))
-+		tp_assign(ee_lblk, cpu_to_le32(ex->ee_block))
-+		tp_assign(ee_len, ext4_ext_get_actual_len(ex))
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu extent [%u(%llu), %u]"
-+		  "from %u to %u partial_cluster %u",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  (unsigned) __entry->ee_lblk,
-+		  (unsigned long long) __entry->ee_pblk,
-+		  (unsigned short) __entry->ee_len,
-+		  (unsigned) __entry->from,
-+		  (unsigned) __entry->to,
-+		  (unsigned) __entry->partial)
-+)
-+
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0))
-+
-+TRACE_EVENT(ext4_ext_rm_leaf,
-+	TP_PROTO(struct inode *inode, ext4_lblk_t start,
-+		 struct ext4_extent *ex,
-+		 long long partial_cluster),
-+
-+	TP_ARGS(inode, start, ex, partial_cluster),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev	)
-+		__field(	ino_t,		ino	)
-+		__field(	long long,	partial	)
-+		__field(	ext4_lblk_t,	start	)
-+		__field(	ext4_lblk_t,	ee_lblk	)
-+		__field(	ext4_fsblk_t,	ee_pblk	)
-+		__field(	short,		ee_len	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(partial, partial_cluster)
-+		tp_assign(start, start)
-+		tp_assign(ee_lblk, le32_to_cpu(ex->ee_block))
-+		tp_assign(ee_pblk, ext4_ext_pblock(ex))
-+		tp_assign(ee_len, ext4_ext_get_actual_len(ex))
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu start_lblk %u last_extent [%u(%llu), %u]"
-+		  "partial_cluster %lld",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  (unsigned) __entry->start,
-+		  (unsigned) __entry->ee_lblk,
-+		  (unsigned long long) __entry->ee_pblk,
-+		  (unsigned short) __entry->ee_len,
-+		  (long long) __entry->partial)
-+)
-+
-+#else
-+
-+TRACE_EVENT(ext4_ext_rm_leaf,
-+	TP_PROTO(struct inode *inode, ext4_lblk_t start,
-+		 struct ext4_extent *ex, ext4_fsblk_t partial_cluster),
-+
-+	TP_ARGS(inode, start, ex, partial_cluster),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev	)
-+		__field(	ino_t,		ino	)
-+		__field(	ext4_fsblk_t,	partial	)
-+		__field(	ext4_lblk_t,	start	)
-+		__field(	ext4_lblk_t,	ee_lblk	)
-+		__field(	ext4_fsblk_t,	ee_pblk	)
-+		__field(	short,		ee_len	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(partial, partial_cluster)
-+		tp_assign(start, start)
-+		tp_assign(ee_lblk, le32_to_cpu(ex->ee_block))
-+		tp_assign(ee_pblk, ext4_ext_pblock(ex))
-+		tp_assign(ee_len, ext4_ext_get_actual_len(ex))
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu start_lblk %u last_extent [%u(%llu), %u]"
-+		  "partial_cluster %u",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  (unsigned) __entry->start,
-+		  (unsigned) __entry->ee_lblk,
-+		  (unsigned long long) __entry->ee_pblk,
-+		  (unsigned short) __entry->ee_len,
-+		  (unsigned) __entry->partial)
-+)
-+
-+#endif
-+
-+TRACE_EVENT(ext4_ext_rm_idx,
-+	TP_PROTO(struct inode *inode, ext4_fsblk_t pblk),
-+
-+	TP_ARGS(inode, pblk),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev	)
-+		__field(	ino_t,		ino	)
-+		__field(	ext4_fsblk_t,	pblk	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(pblk, pblk)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu index_pblk %llu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  (unsigned long long) __entry->pblk)
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0))
-+
-+TRACE_EVENT(ext4_ext_remove_space,
-+	TP_PROTO(struct inode *inode, ext4_lblk_t start,
-+		 ext4_lblk_t end, int depth),
-+
-+	TP_ARGS(inode, start, end, depth),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev	)
-+		__field(	ino_t,		ino	)
-+		__field(	ext4_lblk_t,	start	)
-+		__field(	ext4_lblk_t,	end	)
-+		__field(	int,		depth	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(start, start)
-+		tp_assign(end, end)
-+		tp_assign(depth, depth)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu since %u end %u depth %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  (unsigned) __entry->start,
-+		  (unsigned) __entry->end,
-+		  __entry->depth)
-+)
-+
-+#else
-+
-+TRACE_EVENT(ext4_ext_remove_space,
-+	TP_PROTO(struct inode *inode, ext4_lblk_t start, int depth),
-+
-+	TP_ARGS(inode, start, depth),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev	)
-+		__field(	ino_t,		ino	)
-+		__field(	ext4_lblk_t,	start	)
-+		__field(	int,		depth	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(start, start)
-+		tp_assign(depth, depth)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu since %u depth %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  (unsigned) __entry->start,
-+		  __entry->depth)
-+)
-+
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0))
-+
-+TRACE_EVENT(ext4_ext_remove_space_done,
-+	TP_PROTO(struct inode *inode, ext4_lblk_t start, ext4_lblk_t end,
-+		 int depth, long long partial, __le16 eh_entries),
-+
-+	TP_ARGS(inode, start, end, depth, partial, eh_entries),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev		)
-+		__field(	ino_t,		ino		)
-+		__field(	ext4_lblk_t,	start		)
-+		__field(	ext4_lblk_t,	end		)
-+		__field(	int,		depth		)
-+		__field(	long long,	partial		)
-+		__field(	unsigned short,	eh_entries	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(start, start)
-+		tp_assign(end, end)
-+		tp_assign(depth, depth)
-+		tp_assign(partial, partial)
-+		tp_assign(eh_entries, le16_to_cpu(eh_entries))
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu since %u end %u depth %d partial %lld "
-+		  "remaining_entries %u",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  (unsigned) __entry->start,
-+		  (unsigned) __entry->end,
-+		  __entry->depth,
-+		  (long long) __entry->partial,
-+		  (unsigned short) __entry->eh_entries)
-+)
-+
-+#else
-+
-+TRACE_EVENT(ext4_ext_remove_space_done,
-+	TP_PROTO(struct inode *inode, ext4_lblk_t start, int depth,
-+		ext4_lblk_t partial, unsigned short eh_entries),
-+
-+	TP_ARGS(inode, start, depth, partial, eh_entries),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev		)
-+		__field(	ino_t,		ino		)
-+		__field(	ext4_lblk_t,	start		)
-+		__field(	int,		depth		)
-+		__field(	ext4_lblk_t,	partial		)
-+		__field(	unsigned short,	eh_entries	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(start, start)
-+		tp_assign(depth, depth)
-+		tp_assign(partial, partial)
-+		tp_assign(eh_entries, eh_entries)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu since %u depth %d partial %u "
-+		  "remaining_entries %u",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  (unsigned) __entry->start,
-+		  __entry->depth,
-+		  (unsigned) __entry->partial,
-+		  (unsigned short) __entry->eh_entries)
-+)
-+
-+#endif
-+
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0))
-+
-+DECLARE_EVENT_CLASS(ext4__es_extent,
-+	TP_PROTO(struct inode *inode, struct extent_status *es),
-+
-+	TP_ARGS(inode, es),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev		)
-+		__field(	ino_t,		ino		)
-+		__field(	ext4_lblk_t,	lblk		)
-+		__field(	ext4_lblk_t,	len		)
-+		__field(	ext4_fsblk_t,	pblk		)
-+		__field(	char, status	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(lblk, es->es_lblk)
-+		tp_assign(len, es->es_len)
-+		tp_assign(pblk, ext4_es_pblock(es))
-+		tp_assign(status, ext4_es_status(es))
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu es [%u/%u) mapped %llu status %s",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->lblk, __entry->len,
-+		  __entry->pblk, show_extent_status(__entry->status))
-+)
-+
-+DEFINE_EVENT(ext4__es_extent, ext4_es_insert_extent,
-+	TP_PROTO(struct inode *inode, struct extent_status *es),
-+
-+	TP_ARGS(inode, es)
-+)
-+
-+DEFINE_EVENT(ext4__es_extent, ext4_es_cache_extent,
-+	TP_PROTO(struct inode *inode, struct extent_status *es),
-+
-+	TP_ARGS(inode, es)
-+)
-+
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0))
-+
-+TRACE_EVENT(ext4_es_insert_extent,
-+	TP_PROTO(struct inode *inode, struct extent_status *es),
-+
-+	TP_ARGS(inode, es),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev		)
-+		__field(	ino_t,		ino		)
-+		__field(	ext4_lblk_t,	lblk		)
-+		__field(	ext4_lblk_t,	len		)
-+		__field(	ext4_fsblk_t,	pblk		)
-+		__field(	char, status	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(lblk, es->es_lblk)
-+		tp_assign(len, es->es_len)
-+		tp_assign(pblk, ext4_es_pblock(es))
-+		tp_assign(status, ext4_es_status(es) >> 60)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu es [%u/%u) mapped %llu status %s",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->lblk, __entry->len,
-+		  __entry->pblk, show_extent_status(__entry->status))
-+)
-+
-+TRACE_EVENT(ext4_es_remove_extent,
-+	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_lblk_t len),
-+
-+	TP_ARGS(inode, lblk, len),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+		__field(	loff_t,	lblk			)
-+		__field(	loff_t,	len			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(lblk, lblk)
-+		tp_assign(len, len)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu es [%lld/%lld)",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->lblk, __entry->len)
-+)
-+
-+TRACE_EVENT(ext4_es_find_delayed_extent_range_enter,
-+	TP_PROTO(struct inode *inode, ext4_lblk_t lblk),
-+
-+	TP_ARGS(inode, lblk),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev		)
-+		__field(	ino_t,		ino		)
-+		__field(	ext4_lblk_t,	lblk		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(lblk, lblk)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu lblk %u",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino, __entry->lblk)
-+)
-+
-+TRACE_EVENT(ext4_es_find_delayed_extent_range_exit,
-+	TP_PROTO(struct inode *inode, struct extent_status *es),
-+
-+	TP_ARGS(inode, es),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev		)
-+		__field(	ino_t,		ino		)
-+		__field(	ext4_lblk_t,	lblk		)
-+		__field(	ext4_lblk_t,	len		)
-+		__field(	ext4_fsblk_t,	pblk		)
-+		__field(	char, status	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(lblk, es->es_lblk)
-+		tp_assign(len, es->es_len)
-+		tp_assign(pblk, ext4_es_pblock(es))
-+		tp_assign(status, ext4_es_status(es) >> 60)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu es [%u/%u) mapped %llu status %s",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino,
-+		  __entry->lblk, __entry->len,
-+		  __entry->pblk, show_extent_status(__entry->status))
-+)
-+
-+TRACE_EVENT(ext4_es_lookup_extent_enter,
-+	TP_PROTO(struct inode *inode, ext4_lblk_t lblk),
-+
-+	TP_ARGS(inode, lblk),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev		)
-+		__field(	ino_t,		ino		)
-+		__field(	ext4_lblk_t,	lblk		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(lblk, lblk)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu lblk %u",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino, __entry->lblk)
-+)
-+
-+TRACE_EVENT(ext4_es_lookup_extent_exit,
-+	TP_PROTO(struct inode *inode, struct extent_status *es,
-+		 int found),
-+
-+	TP_ARGS(inode, es, found),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,		dev		)
-+		__field(	ino_t,		ino		)
-+		__field(	ext4_lblk_t,	lblk		)
-+		__field(	ext4_lblk_t,	len		)
-+		__field(	ext4_fsblk_t,	pblk		)
-+		__field(	char,		status		)
-+		__field(	int,		found		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(lblk, es->es_lblk)
-+		tp_assign(len, es->es_len)
-+		tp_assign(pblk, ext4_es_pblock(es))
-+		tp_assign(status, ext4_es_status(es) >> 60)
-+		tp_assign(found, found)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu found %d [%u/%u) %llu %s",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino, __entry->found,
-+		  __entry->lblk, __entry->len,
-+		  __entry->found ? __entry->pblk : 0,
-+		  show_extent_status(__entry->found ? __entry->status : 0))
-+)
-+
-+TRACE_EVENT(ext4_es_shrink_enter,
-+	TP_PROTO(struct super_block *sb, int nr_to_scan, int cache_cnt),
-+
-+	TP_ARGS(sb, nr_to_scan, cache_cnt),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	int,	nr_to_scan		)
-+		__field(	int,	cache_cnt		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, sb->s_dev)
-+		tp_assign(nr_to_scan, nr_to_scan)
-+		tp_assign(cache_cnt, cache_cnt)
-+	),
-+
-+	TP_printk("dev %d,%d nr_to_scan %d cache_cnt %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __entry->nr_to_scan, __entry->cache_cnt)
-+)
-+
-+TRACE_EVENT(ext4_es_shrink_exit,
-+	TP_PROTO(struct super_block *sb, int shrunk_nr, int cache_cnt),
-+
-+	TP_ARGS(sb, shrunk_nr, cache_cnt),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	int,	shrunk_nr		)
-+		__field(	int,	cache_cnt		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, sb->s_dev)
-+		tp_assign(shrunk_nr, shrunk_nr)
-+		tp_assign(cache_cnt, cache_cnt)
-+	),
-+
-+	TP_printk("dev %d,%d shrunk_nr %d cache_cnt %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __entry->shrunk_nr, __entry->cache_cnt)
-+)
-+
-+#endif
-+
-+#endif /* _TRACE_EXT4_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/gpio.h
-@@ -0,0 +1,56 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM gpio
-+
-+#if !defined(_TRACE_GPIO_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_GPIO_H
-+
-+#include <linux/tracepoint.h>
-+
-+TRACE_EVENT(gpio_direction,
-+
-+	TP_PROTO(unsigned gpio, int in, int err),
-+
-+	TP_ARGS(gpio, in, err),
-+
-+	TP_STRUCT__entry(
-+		__field(unsigned, gpio)
-+		__field(int, in)
-+		__field(int, err)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(gpio, gpio)
-+		tp_assign(in, in)
-+		tp_assign(err, err)
-+	),
-+
-+	TP_printk("%u %3s (%d)", __entry->gpio,
-+		__entry->in ? "in" : "out", __entry->err)
-+)
-+
-+TRACE_EVENT(gpio_value,
-+
-+	TP_PROTO(unsigned gpio, int get, int value),
-+
-+	TP_ARGS(gpio, get, value),
-+
-+	TP_STRUCT__entry(
-+		__field(unsigned, gpio)
-+		__field(int, get)
-+		__field(int, value)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(gpio, gpio)
-+		tp_assign(get, get)
-+		tp_assign(value, value)
-+	),
-+
-+	TP_printk("%u %3s %d", __entry->gpio,
-+		__entry->get ? "get" : "set", __entry->value)
-+)
-+
-+#endif /* if !defined(_TRACE_GPIO_H) || defined(TRACE_HEADER_MULTI_READ) */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/irq.h
-@@ -0,0 +1,220 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM irq
-+
-+#if !defined(_TRACE_IRQ_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_IRQ_H
-+
-+#include <linux/tracepoint.h>
-+
-+#ifndef _TRACE_IRQ_DEF_
-+#define _TRACE_IRQ_DEF_
-+
-+struct irqaction;
-+struct softirq_action;
-+
-+#define softirq_name(sirq) { sirq##_SOFTIRQ, #sirq }
-+#define show_softirq_name(val)				\
-+	__print_symbolic(val,				\
-+			 softirq_name(HI),		\
-+			 softirq_name(TIMER),		\
-+			 softirq_name(NET_TX),		\
-+			 softirq_name(NET_RX),		\
-+			 softirq_name(BLOCK),		\
-+			 softirq_name(BLOCK_IOPOLL),	\
-+			 softirq_name(TASKLET),		\
-+			 softirq_name(SCHED),		\
-+			 softirq_name(HRTIMER),		\
-+			 softirq_name(RCU))
-+
-+#endif /* _TRACE_IRQ_DEF_ */
-+
-+/**
-+ * irq_handler_entry - called immediately before the irq action handler
-+ * @irq: irq number
-+ * @action: pointer to struct irqaction
-+ *
-+ * The struct irqaction pointed to by @action contains various
-+ * information about the handler, including the device name,
-+ * @action->name, and the device id, @action->dev_id. When used in
-+ * conjunction with the irq_handler_exit tracepoint, we can figure
-+ * out irq handler latencies.
-+ */
-+TRACE_EVENT(irq_handler_entry,
-+
-+	TP_PROTO(int irq, struct irqaction *action),
-+
-+	TP_ARGS(irq, action),
-+
-+	TP_STRUCT__entry(
-+		__field(	int,	irq		)
-+		__string(	name,	action->name	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(irq, irq)
-+		tp_strcpy(name, action->name)
-+	),
-+
-+	TP_printk("irq=%d name=%s", __entry->irq, __get_str(name))
-+)
-+
-+/**
-+ * irq_handler_exit - called immediately after the irq action handler returns
-+ * @irq: irq number
-+ * @action: pointer to struct irqaction
-+ * @ret: return value
-+ *
-+ * If the @ret value is set to IRQ_HANDLED, then we know that the corresponding
-+ * @action->handler scuccessully handled this irq. Otherwise, the irq might be
-+ * a shared irq line, or the irq was not handled successfully. Can be used in
-+ * conjunction with the irq_handler_entry to understand irq handler latencies.
-+ */
-+TRACE_EVENT(irq_handler_exit,
-+
-+	TP_PROTO(int irq, struct irqaction *action, int ret),
-+
-+	TP_ARGS(irq, action, ret),
-+
-+	TP_STRUCT__entry(
-+		__field(	int,	irq	)
-+		__field(	int,	ret	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(irq, irq)
-+		tp_assign(ret, ret)
-+	),
-+
-+	TP_printk("irq=%d ret=%s",
-+		  __entry->irq, __entry->ret ? "handled" : "unhandled")
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
-+DECLARE_EVENT_CLASS(softirq,
-+
-+	TP_PROTO(unsigned int vec_nr),
-+
-+	TP_ARGS(vec_nr),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned int,	vec	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(vec, vec_nr)
-+	),
-+
-+	TP_printk("vec=%u [action=%s]", __entry->vec,
-+		  show_softirq_name(__entry->vec))
-+)
-+
-+/**
-+ * softirq_entry - called immediately before the softirq handler
-+ * @vec_nr:  softirq vector number
-+ *
-+ * When used in combination with the softirq_exit tracepoint
-+ * we can determine the softirq handler runtine.
-+ */
-+DEFINE_EVENT(softirq, softirq_entry,
-+
-+	TP_PROTO(unsigned int vec_nr),
-+
-+	TP_ARGS(vec_nr)
-+)
-+
-+/**
-+ * softirq_exit - called immediately after the softirq handler returns
-+ * @vec_nr:  softirq vector number
-+ *
-+ * When used in combination with the softirq_entry tracepoint
-+ * we can determine the softirq handler runtine.
-+ */
-+DEFINE_EVENT(softirq, softirq_exit,
-+
-+	TP_PROTO(unsigned int vec_nr),
-+
-+	TP_ARGS(vec_nr)
-+)
-+
-+/**
-+ * softirq_raise - called immediately when a softirq is raised
-+ * @vec_nr:  softirq vector number
-+ *
-+ * When used in combination with the softirq_entry tracepoint
-+ * we can determine the softirq raise to run latency.
-+ */
-+DEFINE_EVENT(softirq, softirq_raise,
-+
-+	TP_PROTO(unsigned int vec_nr),
-+
-+	TP_ARGS(vec_nr)
-+)
-+#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) */
-+DECLARE_EVENT_CLASS(softirq,
-+
-+	TP_PROTO(struct softirq_action *h, struct softirq_action *vec),
-+
-+	TP_ARGS(h, vec),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned int,	vec	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(vec, (int)(h - vec))
-+	),
-+
-+	TP_printk("vec=%u [action=%s]", __entry->vec,
-+		  show_softirq_name(__entry->vec))
-+)
-+
-+/**
-+ * softirq_entry - called immediately before the softirq handler
-+ * @h: pointer to struct softirq_action
-+ * @vec: pointer to first struct softirq_action in softirq_vec array
-+ *
-+ * When used in combination with the softirq_exit tracepoint
-+ * we can determine the softirq handler runtine.
-+ */
-+DEFINE_EVENT(softirq, softirq_entry,
-+
-+	TP_PROTO(struct softirq_action *h, struct softirq_action *vec),
-+
-+	TP_ARGS(h, vec)
-+)
-+
-+/**
-+ * softirq_exit - called immediately after the softirq handler returns
-+ * @h: pointer to struct softirq_action
-+ * @vec: pointer to first struct softirq_action in softirq_vec array
-+ *
-+ * When used in combination with the softirq_entry tracepoint
-+ * we can determine the softirq handler runtine.
-+ */
-+DEFINE_EVENT(softirq, softirq_exit,
-+
-+	TP_PROTO(struct softirq_action *h, struct softirq_action *vec),
-+
-+	TP_ARGS(h, vec)
-+)
-+
-+/**
-+ * softirq_raise - called immediately when a softirq is raised
-+ * @h: pointer to struct softirq_action
-+ * @vec: pointer to first struct softirq_action in softirq_vec array
-+ *
-+ * When used in combination with the softirq_entry tracepoint
-+ * we can determine the softirq raise to run latency.
-+ */
-+DEFINE_EVENT(softirq, softirq_raise,
-+
-+	TP_PROTO(struct softirq_action *h, struct softirq_action *vec),
-+
-+	TP_ARGS(h, vec)
-+)
-+#endif /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) */
-+
-+#endif /*  _TRACE_IRQ_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/jbd.h
-@@ -0,0 +1,268 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM jbd
-+
-+#if !defined(_TRACE_JBD_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_JBD_H
-+
-+#include <linux/jbd.h>
-+#include <linux/tracepoint.h>
-+#include <linux/version.h>
-+
-+TRACE_EVENT(jbd_checkpoint,
-+
-+	TP_PROTO(journal_t *journal, int result),
-+
-+	TP_ARGS(journal, result),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	int,	result			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, journal->j_fs_dev->bd_dev)
-+		tp_assign(result, result)
-+	),
-+
-+	TP_printk("dev %d,%d result %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __entry->result)
-+)
-+
-+DECLARE_EVENT_CLASS(jbd_commit,
-+
-+	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
-+
-+	TP_ARGS(journal, commit_transaction),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0))
-+		__field(	char,	sync_commit		)
-+#endif
-+		__field(	int,	transaction		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, journal->j_fs_dev->bd_dev)
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0))
-+		tp_assign(sync_commit, commit_transaction->t_synchronous_commit)
-+#endif
-+		tp_assign(transaction, commit_transaction->t_tid)
-+	),
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0))
-+	TP_printk("dev %d,%d transaction %d sync %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __entry->transaction, __entry->sync_commit)
-+#else
-+	TP_printk("dev %d,%d transaction %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __entry->transaction)
-+#endif
-+)
-+
-+DEFINE_EVENT(jbd_commit, jbd_start_commit,
-+
-+	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
-+
-+	TP_ARGS(journal, commit_transaction)
-+)
-+
-+DEFINE_EVENT(jbd_commit, jbd_commit_locking,
-+
-+	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
-+
-+	TP_ARGS(journal, commit_transaction)
-+)
-+
-+DEFINE_EVENT(jbd_commit, jbd_commit_flushing,
-+
-+	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
-+
-+	TP_ARGS(journal, commit_transaction)
-+)
-+
-+DEFINE_EVENT(jbd_commit, jbd_commit_logging,
-+
-+	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
-+
-+	TP_ARGS(journal, commit_transaction)
-+)
-+
-+TRACE_EVENT(jbd_drop_transaction,
-+
-+	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
-+
-+	TP_ARGS(journal, commit_transaction),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0))
-+		__field(	char,	sync_commit		)
-+#endif
-+		__field(	int,	transaction		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, journal->j_fs_dev->bd_dev)
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0))
-+		tp_assign(sync_commit, commit_transaction->t_synchronous_commit)
-+#endif
-+		tp_assign(transaction, commit_transaction->t_tid)
-+	),
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0))
-+	TP_printk("dev %d,%d transaction %d sync %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __entry->transaction, __entry->sync_commit)
-+#else
-+	TP_printk("dev %d,%d transaction %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __entry->transaction)
-+#endif
-+)
-+
-+TRACE_EVENT(jbd_end_commit,
-+	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
-+
-+	TP_ARGS(journal, commit_transaction),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0))
-+		__field(	char,	sync_commit		)
-+#endif
-+		__field(	int,	transaction		)
-+		__field(	int,	head			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, journal->j_fs_dev->bd_dev)
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0))
-+		tp_assign(sync_commit, commit_transaction->t_synchronous_commit)
-+#endif
-+		tp_assign(transaction, commit_transaction->t_tid)
-+		tp_assign(head, journal->j_tail_sequence)
-+	),
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0))
-+	TP_printk("dev %d,%d transaction %d sync %d head %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __entry->transaction, __entry->sync_commit, __entry->head)
-+#else
-+	TP_printk("dev %d,%d transaction %d head %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __entry->transaction, __entry->head)
-+#endif
-+)
-+
-+TRACE_EVENT(jbd_do_submit_data,
-+	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
-+
-+	TP_ARGS(journal, commit_transaction),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0))
-+		__field(	char,	sync_commit		)
-+#endif
-+		__field(	int,	transaction		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, journal->j_fs_dev->bd_dev)
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0))
-+		tp_assign(sync_commit, commit_transaction->t_synchronous_commit)
-+#endif
-+		tp_assign(transaction, commit_transaction->t_tid)
-+	),
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0))
-+	TP_printk("dev %d,%d transaction %d sync %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		   __entry->transaction, __entry->sync_commit)
-+#else
-+	TP_printk("dev %d,%d transaction %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		   __entry->transaction)
-+#endif
-+)
-+
-+TRACE_EVENT(jbd_cleanup_journal_tail,
-+
-+	TP_PROTO(journal_t *journal, tid_t first_tid,
-+		 unsigned long block_nr, unsigned long freed),
-+
-+	TP_ARGS(journal, first_tid, block_nr, freed),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	tid_t,	tail_sequence		)
-+		__field(	tid_t,	first_tid		)
-+		__field(unsigned long,	block_nr		)
-+		__field(unsigned long,	freed			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, journal->j_fs_dev->bd_dev)
-+		tp_assign(tail_sequence, journal->j_tail_sequence)
-+		tp_assign(first_tid, first_tid)
-+		tp_assign(block_nr, block_nr)
-+		tp_assign(freed, freed)
-+	),
-+
-+	TP_printk("dev %d,%d from %u to %u offset %lu freed %lu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __entry->tail_sequence, __entry->first_tid,
-+		  __entry->block_nr, __entry->freed)
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
-+TRACE_EVENT_MAP(journal_write_superblock,
-+
-+	jbd_journal_write_superblock,
-+
-+	TP_PROTO(journal_t *journal, int write_op),
-+
-+	TP_ARGS(journal, write_op),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	int,	write_op		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, journal->j_fs_dev->bd_dev)
-+		tp_assign(write_op, write_op)
-+	),
-+
-+	TP_printk("dev %d,%d write_op %x", MAJOR(__entry->dev),
-+		  MINOR(__entry->dev), __entry->write_op)
-+)
-+#else
-+TRACE_EVENT(jbd_update_superblock_end,
-+	TP_PROTO(journal_t *journal, int wait),
-+
-+	TP_ARGS(journal, wait),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	int,	wait			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, journal->j_fs_dev->bd_dev)
-+		tp_assign(wait, wait)
-+	),
-+
-+	TP_printk("dev %d,%d wait %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		   __entry->wait)
-+)
-+#endif
-+
-+#endif /* _TRACE_JBD_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/jbd2.h
-@@ -0,0 +1,280 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM jbd2
-+
-+#if !defined(_TRACE_JBD2_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_JBD2_H
-+
-+#include <linux/jbd2.h>
-+#include <linux/tracepoint.h>
-+#include <linux/version.h>
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))
-+#ifndef _TRACE_JBD2_DEF
-+#define _TRACE_JBD2_DEF
-+struct transaction_chp_stats_s;
-+struct transaction_run_stats_s;
-+#endif
-+#endif
-+
-+TRACE_EVENT(jbd2_checkpoint,
-+
-+	TP_PROTO(journal_t *journal, int result),
-+
-+	TP_ARGS(journal, result),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	int,	result			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, journal->j_fs_dev->bd_dev)
-+		tp_assign(result, result)
-+	),
-+
-+	TP_printk("dev %d,%d result %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev), __entry->result)
-+)
-+
-+DECLARE_EVENT_CLASS(jbd2_commit,
-+
-+	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
-+
-+	TP_ARGS(journal, commit_transaction),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	char,	sync_commit		  )
-+		__field(	int,	transaction		  )
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, journal->j_fs_dev->bd_dev)
-+		tp_assign(sync_commit, commit_transaction->t_synchronous_commit)
-+		tp_assign(transaction, commit_transaction->t_tid)
-+	),
-+
-+	TP_printk("dev %d,%d transaction %d sync %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __entry->transaction, __entry->sync_commit)
-+)
-+
-+DEFINE_EVENT(jbd2_commit, jbd2_start_commit,
-+
-+	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
-+
-+	TP_ARGS(journal, commit_transaction)
-+)
-+
-+DEFINE_EVENT(jbd2_commit, jbd2_commit_locking,
-+
-+	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
-+
-+	TP_ARGS(journal, commit_transaction)
-+)
-+
-+DEFINE_EVENT(jbd2_commit, jbd2_commit_flushing,
-+
-+	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
-+
-+	TP_ARGS(journal, commit_transaction)
-+)
-+
-+DEFINE_EVENT(jbd2_commit, jbd2_commit_logging,
-+
-+	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
-+
-+	TP_ARGS(journal, commit_transaction)
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
-+DEFINE_EVENT(jbd2_commit, jbd2_drop_transaction,
-+
-+	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
-+
-+	TP_ARGS(journal, commit_transaction)
-+)
-+#endif
-+
-+TRACE_EVENT(jbd2_end_commit,
-+	TP_PROTO(journal_t *journal, transaction_t *commit_transaction),
-+
-+	TP_ARGS(journal, commit_transaction),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	char,	sync_commit		  )
-+		__field(	int,	transaction		  )
-+		__field(	int,	head		  	  )
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, journal->j_fs_dev->bd_dev)
-+		tp_assign(sync_commit, commit_transaction->t_synchronous_commit)
-+		tp_assign(transaction, commit_transaction->t_tid)
-+		tp_assign(head, journal->j_tail_sequence)
-+	),
-+
-+	TP_printk("dev %d,%d transaction %d sync %d head %d",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __entry->transaction, __entry->sync_commit, __entry->head)
-+)
-+
-+TRACE_EVENT(jbd2_submit_inode_data,
-+	TP_PROTO(struct inode *inode),
-+
-+	TP_ARGS(inode),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	ino_t,	ino			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, inode->i_sb->s_dev)
-+		tp_assign(ino, inode->i_ino)
-+	),
-+
-+	TP_printk("dev %d,%d ino %lu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  (unsigned long) __entry->ino)
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))
-+TRACE_EVENT(jbd2_run_stats,
-+	TP_PROTO(dev_t dev, unsigned long tid,
-+		 struct transaction_run_stats_s *stats),
-+
-+	TP_ARGS(dev, tid, stats),
-+
-+	TP_STRUCT__entry(
-+		__field(		dev_t,	dev		)
-+		__field(	unsigned long,	tid		)
-+		__field(	unsigned long,	wait		)
-+		__field(	unsigned long,	running		)
-+		__field(	unsigned long,	locked		)
-+		__field(	unsigned long,	flushing	)
-+		__field(	unsigned long,	logging		)
-+		__field(		__u32,	handle_count	)
-+		__field(		__u32,	blocks		)
-+		__field(		__u32,	blocks_logged	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, dev)
-+		tp_assign(tid, tid)
-+		tp_assign(wait, stats->rs_wait)
-+		tp_assign(running, stats->rs_running)
-+		tp_assign(locked, stats->rs_locked)
-+		tp_assign(flushing, stats->rs_flushing)
-+		tp_assign(logging, stats->rs_logging)
-+		tp_assign(handle_count, stats->rs_handle_count)
-+		tp_assign(blocks, stats->rs_blocks)
-+		tp_assign(blocks_logged, stats->rs_blocks_logged)
-+	),
-+
-+	TP_printk("dev %d,%d tid %lu wait %u running %u locked %u flushing %u "
-+		  "logging %u handle_count %u blocks %u blocks_logged %u",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid,
-+		  jiffies_to_msecs(__entry->wait),
-+		  jiffies_to_msecs(__entry->running),
-+		  jiffies_to_msecs(__entry->locked),
-+		  jiffies_to_msecs(__entry->flushing),
-+		  jiffies_to_msecs(__entry->logging),
-+		  __entry->handle_count, __entry->blocks,
-+		  __entry->blocks_logged)
-+)
-+
-+TRACE_EVENT(jbd2_checkpoint_stats,
-+	TP_PROTO(dev_t dev, unsigned long tid,
-+		 struct transaction_chp_stats_s *stats),
-+
-+	TP_ARGS(dev, tid, stats),
-+
-+	TP_STRUCT__entry(
-+		__field(		dev_t,	dev		)
-+		__field(	unsigned long,	tid		)
-+		__field(	unsigned long,	chp_time	)
-+		__field(		__u32,	forced_to_close	)
-+		__field(		__u32,	written		)
-+		__field(		__u32,	dropped		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, dev)
-+		tp_assign(tid, tid)
-+		tp_assign(chp_time, stats->cs_chp_time)
-+		tp_assign(forced_to_close, stats->cs_forced_to_close)
-+		tp_assign(written, stats->cs_written)
-+		tp_assign(dropped, stats->cs_dropped)
-+	),
-+
-+	TP_printk("dev %d,%d tid %lu chp_time %u forced_to_close %u "
-+		  "written %u dropped %u",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid,
-+		  jiffies_to_msecs(__entry->chp_time),
-+		  __entry->forced_to_close, __entry->written, __entry->dropped)
-+)
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
-+TRACE_EVENT(jbd2_update_log_tail,
-+#else
-+TRACE_EVENT(jbd2_cleanup_journal_tail,
-+#endif
-+
-+	TP_PROTO(journal_t *journal, tid_t first_tid,
-+		 unsigned long block_nr, unsigned long freed),
-+
-+	TP_ARGS(journal, first_tid, block_nr, freed),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,	dev			)
-+		__field(	tid_t,	tail_sequence		)
-+		__field(	tid_t,	first_tid		)
-+		__field(unsigned long,	block_nr		)
-+		__field(unsigned long,	freed			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, journal->j_fs_dev->bd_dev)
-+		tp_assign(tail_sequence, journal->j_tail_sequence)
-+		tp_assign(first_tid, first_tid)
-+		tp_assign(block_nr, block_nr)
-+		tp_assign(freed, freed)
-+	),
-+
-+	TP_printk("dev %d,%d from %u to %u offset %lu freed %lu",
-+		  MAJOR(__entry->dev), MINOR(__entry->dev),
-+		  __entry->tail_sequence, __entry->first_tid,
-+		  __entry->block_nr, __entry->freed)
-+)
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
-+TRACE_EVENT(jbd2_write_superblock,
-+
-+	TP_PROTO(journal_t *journal, int write_op),
-+
-+	TP_ARGS(journal, write_op),
-+
-+	TP_STRUCT__entry(
-+		__field(	dev_t,  dev			)
-+		__field(	  int,  write_op		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(dev, journal->j_fs_dev->bd_dev)
-+		tp_assign(write_op, write_op)
-+	),
-+
-+	TP_printk("dev %d,%d write_op %x", MAJOR(__entry->dev),
-+		  MINOR(__entry->dev), __entry->write_op)
-+)
-+#endif
-+
-+#endif /* _TRACE_JBD2_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/kmem.h
-@@ -0,0 +1,380 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM kmem
-+
-+#if !defined(_TRACE_KMEM_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_KMEM_H
-+
-+#include <linux/types.h>
-+#include <linux/tracepoint.h>
-+#include <linux/version.h>
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+#include <trace/events/gfpflags.h>
-+#endif
-+
-+DECLARE_EVENT_CLASS(kmem_alloc,
-+
-+	TP_PROTO(unsigned long call_site,
-+		 const void *ptr,
-+		 size_t bytes_req,
-+		 size_t bytes_alloc,
-+		 gfp_t gfp_flags),
-+
-+	TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags),
-+
-+	TP_STRUCT__entry(
-+		__field_hex(	unsigned long,	call_site	)
-+		__field_hex(	const void *,	ptr		)
-+		__field(	size_t,		bytes_req	)
-+		__field(	size_t,		bytes_alloc	)
-+		__field(	gfp_t,		gfp_flags	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(call_site, call_site)
-+		tp_assign(ptr, ptr)
-+		tp_assign(bytes_req, bytes_req)
-+		tp_assign(bytes_alloc, bytes_alloc)
-+		tp_assign(gfp_flags, gfp_flags)
-+	),
-+
-+	TP_printk("call_site=%lx ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%s",
-+		__entry->call_site,
-+		__entry->ptr,
-+		__entry->bytes_req,
-+		__entry->bytes_alloc,
-+		show_gfp_flags(__entry->gfp_flags))
-+)
-+
-+DEFINE_EVENT_MAP(kmem_alloc, kmalloc,
-+
-+	kmem_kmalloc,
-+
-+	TP_PROTO(unsigned long call_site, const void *ptr,
-+		 size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags),
-+
-+	TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags)
-+)
-+
-+DEFINE_EVENT(kmem_alloc, kmem_cache_alloc,
-+
-+	TP_PROTO(unsigned long call_site, const void *ptr,
-+		 size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags),
-+
-+	TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags)
-+)
-+
-+DECLARE_EVENT_CLASS(kmem_alloc_node,
-+
-+	TP_PROTO(unsigned long call_site,
-+		 const void *ptr,
-+		 size_t bytes_req,
-+		 size_t bytes_alloc,
-+		 gfp_t gfp_flags,
-+		 int node),
-+
-+	TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags, node),
-+
-+	TP_STRUCT__entry(
-+		__field_hex(	unsigned long,	call_site	)
-+		__field_hex(	const void *,	ptr		)
-+		__field(	size_t,		bytes_req	)
-+		__field(	size_t,		bytes_alloc	)
-+		__field(	gfp_t,		gfp_flags	)
-+		__field(	int,		node		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(call_site, call_site)
-+		tp_assign(ptr, ptr)
-+		tp_assign(bytes_req, bytes_req)
-+		tp_assign(bytes_alloc, bytes_alloc)
-+		tp_assign(gfp_flags, gfp_flags)
-+		tp_assign(node, node)
-+	),
-+
-+	TP_printk("call_site=%lx ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%s node=%d",
-+		__entry->call_site,
-+		__entry->ptr,
-+		__entry->bytes_req,
-+		__entry->bytes_alloc,
-+		show_gfp_flags(__entry->gfp_flags),
-+		__entry->node)
-+)
-+
-+DEFINE_EVENT_MAP(kmem_alloc_node, kmalloc_node,
-+
-+	kmem_kmalloc_node,
-+
-+	TP_PROTO(unsigned long call_site, const void *ptr,
-+		 size_t bytes_req, size_t bytes_alloc,
-+		 gfp_t gfp_flags, int node),
-+
-+	TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags, node)
-+)
-+
-+DEFINE_EVENT(kmem_alloc_node, kmem_cache_alloc_node,
-+
-+	TP_PROTO(unsigned long call_site, const void *ptr,
-+		 size_t bytes_req, size_t bytes_alloc,
-+		 gfp_t gfp_flags, int node),
-+
-+	TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags, node)
-+)
-+
-+DECLARE_EVENT_CLASS(kmem_free,
-+
-+	TP_PROTO(unsigned long call_site, const void *ptr),
-+
-+	TP_ARGS(call_site, ptr),
-+
-+	TP_STRUCT__entry(
-+		__field_hex(	unsigned long,	call_site	)
-+		__field_hex(	const void *,	ptr		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(call_site, call_site)
-+		tp_assign(ptr, ptr)
-+	),
-+
-+	TP_printk("call_site=%lx ptr=%p", __entry->call_site, __entry->ptr)
-+)
-+
-+DEFINE_EVENT_MAP(kmem_free, kfree,
-+
-+	kmem_kfree,
-+
-+	TP_PROTO(unsigned long call_site, const void *ptr),
-+
-+	TP_ARGS(call_site, ptr)
-+)
-+
-+DEFINE_EVENT(kmem_free, kmem_cache_free,
-+
-+	TP_PROTO(unsigned long call_site, const void *ptr),
-+
-+	TP_ARGS(call_site, ptr)
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+TRACE_EVENT(mm_page_free,
-+#else
-+TRACE_EVENT(mm_page_free_direct,
-+#endif
-+
-+	TP_PROTO(struct page *page, unsigned int order),
-+
-+	TP_ARGS(page, order),
-+
-+	TP_STRUCT__entry(
-+		__field_hex(	struct page *,	page		)
-+		__field(	unsigned int,	order		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(page, page)
-+		tp_assign(order, order)
-+	),
-+
-+	TP_printk("page=%p pfn=%lu order=%d",
-+			__entry->page,
-+			page_to_pfn(__entry->page),
-+			__entry->order)
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+TRACE_EVENT(mm_page_free_batched,
-+#else
-+TRACE_EVENT(mm_pagevec_free,
-+#endif
-+
-+	TP_PROTO(struct page *page, int cold),
-+
-+	TP_ARGS(page, cold),
-+
-+	TP_STRUCT__entry(
-+		__field_hex(	struct page *,	page		)
-+		__field(	int,		cold		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(page, page)
-+		tp_assign(cold, cold)
-+	),
-+
-+	TP_printk("page=%p pfn=%lu order=0 cold=%d",
-+			__entry->page,
-+			page_to_pfn(__entry->page),
-+			__entry->cold)
-+)
-+
-+TRACE_EVENT(mm_page_alloc,
-+
-+	TP_PROTO(struct page *page, unsigned int order,
-+			gfp_t gfp_flags, int migratetype),
-+
-+	TP_ARGS(page, order, gfp_flags, migratetype),
-+
-+	TP_STRUCT__entry(
-+		__field_hex(	struct page *,	page		)
-+		__field(	unsigned int,	order		)
-+		__field(	gfp_t,		gfp_flags	)
-+		__field(	int,		migratetype	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(page, page)
-+		tp_assign(order, order)
-+		tp_assign(gfp_flags, gfp_flags)
-+		tp_assign(migratetype, migratetype)
-+	),
-+
-+	TP_printk("page=%p pfn=%lu order=%d migratetype=%d gfp_flags=%s",
-+		__entry->page,
-+		__entry->page ? page_to_pfn(__entry->page) : 0,
-+		__entry->order,
-+		__entry->migratetype,
-+		show_gfp_flags(__entry->gfp_flags))
-+)
-+
-+DECLARE_EVENT_CLASS(mm_page,
-+
-+	TP_PROTO(struct page *page, unsigned int order, int migratetype),
-+
-+	TP_ARGS(page, order, migratetype),
-+
-+	TP_STRUCT__entry(
-+		__field_hex(	struct page *,	page		)
-+		__field(	unsigned int,	order		)
-+		__field(	int,		migratetype	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(page, page)
-+		tp_assign(order, order)
-+		tp_assign(migratetype, migratetype)
-+	),
-+
-+	TP_printk("page=%p pfn=%lu order=%u migratetype=%d percpu_refill=%d",
-+		__entry->page,
-+		__entry->page ? page_to_pfn(__entry->page) : 0,
-+		__entry->order,
-+		__entry->migratetype,
-+		__entry->order == 0)
-+)
-+
-+DEFINE_EVENT(mm_page, mm_page_alloc_zone_locked,
-+
-+	TP_PROTO(struct page *page, unsigned int order, int migratetype),
-+
-+	TP_ARGS(page, order, migratetype)
-+)
-+
-+DEFINE_EVENT_PRINT(mm_page, mm_page_pcpu_drain,
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33))
-+	TP_PROTO(struct page *page, unsigned int order, int migratetype),
-+#else
-+	TP_PROTO(struct page *page, int order, int migratetype),
-+#endif
-+
-+	TP_ARGS(page, order, migratetype),
-+
-+	TP_printk("page=%p pfn=%lu order=%d migratetype=%d",
-+		__entry->page, page_to_pfn(__entry->page),
-+		__entry->order, __entry->migratetype)
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0))
-+
-+TRACE_EVENT(mm_page_alloc_extfrag,
-+
-+	TP_PROTO(struct page *page,
-+			int alloc_order, int fallback_order,
-+			int alloc_migratetype, int fallback_migratetype,
-+			int change_ownership),
-+
-+	TP_ARGS(page,
-+		alloc_order, fallback_order,
-+		alloc_migratetype, fallback_migratetype,
-+		change_ownership),
-+
-+	TP_STRUCT__entry(
-+		__field_hex(	struct page *,	page			)
-+		__field(	int,		alloc_order		)
-+		__field(	int,		fallback_order		)
-+		__field(	int,		alloc_migratetype	)
-+		__field(	int,		fallback_migratetype	)
-+		__field(	int,		change_ownership	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(page, page)
-+		tp_assign(alloc_order, alloc_order)
-+		tp_assign(fallback_order, fallback_order)
-+		tp_assign(alloc_migratetype, alloc_migratetype)
-+		tp_assign(fallback_migratetype, fallback_migratetype)
-+		tp_assign(change_ownership, change_ownership)
-+	),
-+
-+	TP_printk("page=%p pfn=%lu alloc_order=%d fallback_order=%d pageblock_order=%d alloc_migratetype=%d fallback_migratetype=%d fragmenting=%d change_ownership=%d",
-+		__entry->page,
-+		page_to_pfn(__entry->page),
-+		__entry->alloc_order,
-+		__entry->fallback_order,
-+		pageblock_order,
-+		__entry->alloc_migratetype,
-+		__entry->fallback_migratetype,
-+		__entry->fallback_order < pageblock_order,
-+		__entry->change_ownership)
-+)
-+
-+#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) */
-+
-+TRACE_EVENT(mm_page_alloc_extfrag,
-+
-+	TP_PROTO(struct page *page,
-+			int alloc_order, int fallback_order,
-+			int alloc_migratetype, int fallback_migratetype),
-+
-+	TP_ARGS(page,
-+		alloc_order, fallback_order,
-+		alloc_migratetype, fallback_migratetype),
-+
-+	TP_STRUCT__entry(
-+		__field_hex(	struct page *,	page			)
-+		__field(	int,		alloc_order		)
-+		__field(	int,		fallback_order		)
-+		__field(	int,		alloc_migratetype	)
-+		__field(	int,		fallback_migratetype	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(page, page)
-+		tp_assign(alloc_order, alloc_order)
-+		tp_assign(fallback_order, fallback_order)
-+		tp_assign(alloc_migratetype, alloc_migratetype)
-+		tp_assign(fallback_migratetype, fallback_migratetype)
-+	),
-+
-+	TP_printk("page=%p pfn=%lu alloc_order=%d fallback_order=%d pageblock_order=%d alloc_migratetype=%d fallback_migratetype=%d fragmenting=%d change_ownership=%d",
-+		__entry->page,
-+		page_to_pfn(__entry->page),
-+		__entry->alloc_order,
-+		__entry->fallback_order,
-+		pageblock_order,
-+		__entry->alloc_migratetype,
-+		__entry->fallback_migratetype,
-+		__entry->fallback_order < pageblock_order,
-+		__entry->alloc_migratetype == __entry->fallback_migratetype)
-+)
-+
-+#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) */
-+
-+#endif
-+
-+#endif /* _TRACE_KMEM_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/kvm.h
-@@ -0,0 +1,356 @@
-+#if !defined(_TRACE_KVM_MAIN_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_KVM_MAIN_H
-+
-+#include <linux/tracepoint.h>
-+#include <linux/version.h>
-+
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM kvm
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38))
-+
-+#define ERSN(x) { KVM_EXIT_##x, "KVM_EXIT_" #x }
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0))
-+
-+#define kvm_trace_exit_reason						\
-+	ERSN(UNKNOWN), ERSN(EXCEPTION), ERSN(IO), ERSN(HYPERCALL),	\
-+	ERSN(DEBUG), ERSN(HLT), ERSN(MMIO), ERSN(IRQ_WINDOW_OPEN),	\
-+	ERSN(SHUTDOWN), ERSN(FAIL_ENTRY), ERSN(INTR), ERSN(SET_TPR),	\
-+	ERSN(TPR_ACCESS), ERSN(S390_SIEIC), ERSN(S390_RESET), ERSN(DCR),\
-+	ERSN(NMI), ERSN(INTERNAL_ERROR), ERSN(OSI), ERSN(PAPR_HCALL),	\
-+	ERSN(S390_UCONTROL), ERSN(WATCHDOG), ERSN(S390_TSCH)
-+
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
-+
-+#define kvm_trace_exit_reason						\
-+	ERSN(UNKNOWN), ERSN(EXCEPTION), ERSN(IO), ERSN(HYPERCALL),	\
-+	ERSN(DEBUG), ERSN(HLT), ERSN(MMIO), ERSN(IRQ_WINDOW_OPEN),	\
-+	ERSN(SHUTDOWN), ERSN(FAIL_ENTRY), ERSN(INTR), ERSN(SET_TPR),	\
-+	ERSN(TPR_ACCESS), ERSN(S390_SIEIC), ERSN(S390_RESET), ERSN(DCR),\
-+	ERSN(NMI), ERSN(INTERNAL_ERROR), ERSN(OSI), ERSN(PAPR_HCALL),	\
-+	ERSN(S390_UCONTROL)
-+
-+#else
-+
-+#define kvm_trace_exit_reason						\
-+	ERSN(UNKNOWN), ERSN(EXCEPTION), ERSN(IO), ERSN(HYPERCALL),	\
-+	ERSN(DEBUG), ERSN(HLT), ERSN(MMIO), ERSN(IRQ_WINDOW_OPEN),	\
-+	ERSN(SHUTDOWN), ERSN(FAIL_ENTRY), ERSN(INTR), ERSN(SET_TPR),	\
-+	ERSN(TPR_ACCESS), ERSN(S390_SIEIC), ERSN(S390_RESET), ERSN(DCR),\
-+	ERSN(NMI), ERSN(INTERNAL_ERROR), ERSN(OSI)
-+
-+#endif
-+
-+TRACE_EVENT(kvm_userspace_exit,
-+	    TP_PROTO(__u32 reason, int errno),
-+	    TP_ARGS(reason, errno),
-+
-+	TP_STRUCT__entry(
-+		__field(	__u32,		reason		)
-+		__field(	int,		errno		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(reason, reason)
-+		tp_assign(errno, errno)
-+	),
-+
-+	TP_printk("reason %s (%d)",
-+		  __entry->errno < 0 ?
-+		  (__entry->errno == -EINTR ? "restart" : "error") :
-+		  __print_symbolic(__entry->reason, kvm_trace_exit_reason),
-+		  __entry->errno < 0 ? -__entry->errno : __entry->reason)
-+)
-+#endif
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,6,0))
-+#if defined(__KVM_HAVE_IOAPIC)
-+#undef __KVM_HAVE_IRQ_LINE
-+#define __KVM_HAVE_IRQ_LINE
-+#endif
-+#endif
-+
-+#if defined(__KVM_HAVE_IRQ_LINE)
-+TRACE_EVENT(kvm_set_irq,
-+	TP_PROTO(unsigned int gsi, int level, int irq_source_id),
-+	TP_ARGS(gsi, level, irq_source_id),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned int,	gsi		)
-+		__field(	int,		level		)
-+		__field(	int,		irq_source_id	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(gsi, gsi)
-+		tp_assign(level, level)
-+		tp_assign(irq_source_id, irq_source_id)
-+	),
-+
-+	TP_printk("gsi %u level %d source %d",
-+		  __entry->gsi, __entry->level, __entry->irq_source_id)
-+)
-+#endif
-+
-+#if defined(__KVM_HAVE_IOAPIC)
-+#define kvm_deliver_mode		\
-+	{0x0, "Fixed"},			\
-+	{0x1, "LowPrio"},		\
-+	{0x2, "SMI"},			\
-+	{0x3, "Res3"},			\
-+	{0x4, "NMI"},			\
-+	{0x5, "INIT"},			\
-+	{0x6, "SIPI"},			\
-+	{0x7, "ExtINT"}
-+
-+TRACE_EVENT(kvm_ioapic_set_irq,
-+	    TP_PROTO(__u64 e, int pin, bool coalesced),
-+	    TP_ARGS(e, pin, coalesced),
-+
-+	TP_STRUCT__entry(
-+		__field(	__u64,		e		)
-+		__field(	int,		pin		)
-+		__field(	bool,		coalesced	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(e, e)
-+		tp_assign(pin, pin)
-+		tp_assign(coalesced, coalesced)
-+	),
-+
-+	TP_printk("pin %u dst %x vec=%u (%s|%s|%s%s)%s",
-+		  __entry->pin, (u8)(__entry->e >> 56), (u8)__entry->e,
-+		  __print_symbolic((__entry->e >> 8 & 0x7), kvm_deliver_mode),
-+		  (__entry->e & (1<<11)) ? "logical" : "physical",
-+		  (__entry->e & (1<<15)) ? "level" : "edge",
-+		  (__entry->e & (1<<16)) ? "|masked" : "",
-+		  __entry->coalesced ? " (coalesced)" : "")
-+)
-+
-+TRACE_EVENT(kvm_msi_set_irq,
-+	    TP_PROTO(__u64 address, __u64 data),
-+	    TP_ARGS(address, data),
-+
-+	TP_STRUCT__entry(
-+		__field(	__u64,		address		)
-+		__field(	__u64,		data		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(address, address)
-+		tp_assign(data, data)
-+	),
-+
-+	TP_printk("dst %u vec %x (%s|%s|%s%s)",
-+		  (u8)(__entry->address >> 12), (u8)__entry->data,
-+		  __print_symbolic((__entry->data >> 8 & 0x7), kvm_deliver_mode),
-+		  (__entry->address & (1<<2)) ? "logical" : "physical",
-+		  (__entry->data & (1<<15)) ? "level" : "edge",
-+		  (__entry->address & (1<<3)) ? "|rh" : "")
-+)
-+
-+#define kvm_irqchips						\
-+	{KVM_IRQCHIP_PIC_MASTER,	"PIC master"},		\
-+	{KVM_IRQCHIP_PIC_SLAVE,		"PIC slave"},		\
-+	{KVM_IRQCHIP_IOAPIC,		"IOAPIC"}
-+
-+TRACE_EVENT(kvm_ack_irq,
-+	TP_PROTO(unsigned int irqchip, unsigned int pin),
-+	TP_ARGS(irqchip, pin),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned int,	irqchip		)
-+		__field(	unsigned int,	pin		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(irqchip, irqchip)
-+		tp_assign(pin, pin)
-+	),
-+
-+	TP_printk("irqchip %s pin %u",
-+		  __print_symbolic(__entry->irqchip, kvm_irqchips),
-+		 __entry->pin)
-+)
-+
-+
-+
-+#endif /* defined(__KVM_HAVE_IOAPIC) */
-+
-+#define KVM_TRACE_MMIO_READ_UNSATISFIED 0
-+#define KVM_TRACE_MMIO_READ 1
-+#define KVM_TRACE_MMIO_WRITE 2
-+
-+#define kvm_trace_symbol_mmio \
-+	{ KVM_TRACE_MMIO_READ_UNSATISFIED, "unsatisfied-read" }, \
-+	{ KVM_TRACE_MMIO_READ, "read" }, \
-+	{ KVM_TRACE_MMIO_WRITE, "write" }
-+
-+TRACE_EVENT(kvm_mmio,
-+	TP_PROTO(int type, int len, u64 gpa, u64 val),
-+	TP_ARGS(type, len, gpa, val),
-+
-+	TP_STRUCT__entry(
-+		__field(	u32,	type		)
-+		__field(	u32,	len		)
-+		__field(	u64,	gpa		)
-+		__field(	u64,	val		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(type, type)
-+		tp_assign(len, len)
-+		tp_assign(gpa, gpa)
-+		tp_assign(val, val)
-+	),
-+
-+	TP_printk("mmio %s len %u gpa 0x%llx val 0x%llx",
-+		  __print_symbolic(__entry->type, kvm_trace_symbol_mmio),
-+		  __entry->len, __entry->gpa, __entry->val)
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
-+
-+#define kvm_fpu_load_symbol	\
-+	{0, "unload"},		\
-+	{1, "load"}
-+
-+TRACE_EVENT(kvm_fpu,
-+	TP_PROTO(int load),
-+	TP_ARGS(load),
-+
-+	TP_STRUCT__entry(
-+		__field(	u32,	        load		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(load, load)
-+	),
-+
-+	TP_printk("%s", __print_symbolic(__entry->load, kvm_fpu_load_symbol))
-+)
-+
-+TRACE_EVENT(kvm_age_page,
-+	TP_PROTO(ulong hva, struct kvm_memory_slot *slot, int ref),
-+	TP_ARGS(hva, slot, ref),
-+
-+	TP_STRUCT__entry(
-+		__field(	u64,	hva		)
-+		__field(	u64,	gfn		)
-+		__field(	u8,	referenced	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(hva, hva)
-+		tp_assign(gfn,
-+		  slot->base_gfn + ((hva - slot->userspace_addr) >> PAGE_SHIFT))
-+		tp_assign(referenced, ref)
-+	),
-+
-+	TP_printk("hva %llx gfn %llx %s",
-+		  __entry->hva, __entry->gfn,
-+		  __entry->referenced ? "YOUNG" : "OLD")
-+)
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38))
-+
-+#ifdef CONFIG_KVM_ASYNC_PF
-+DECLARE_EVENT_CLASS(kvm_async_get_page_class,
-+
-+	TP_PROTO(u64 gva, u64 gfn),
-+
-+	TP_ARGS(gva, gfn),
-+
-+	TP_STRUCT__entry(
-+		__field(__u64, gva)
-+		__field(u64, gfn)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(gva, gva)
-+		tp_assign(gfn, gfn)
-+	),
-+
-+	TP_printk("gva = %#llx, gfn = %#llx", __entry->gva, __entry->gfn)
-+)
-+
-+DEFINE_EVENT(kvm_async_get_page_class, kvm_try_async_get_page,
-+
-+	TP_PROTO(u64 gva, u64 gfn),
-+
-+	TP_ARGS(gva, gfn)
-+)
-+
-+DEFINE_EVENT(kvm_async_get_page_class, kvm_async_pf_doublefault,
-+
-+	TP_PROTO(u64 gva, u64 gfn),
-+
-+	TP_ARGS(gva, gfn)
-+)
-+
-+DECLARE_EVENT_CLASS(kvm_async_pf_nopresent_ready,
-+
-+	TP_PROTO(u64 token, u64 gva),
-+
-+	TP_ARGS(token, gva),
-+
-+	TP_STRUCT__entry(
-+		__field(__u64, token)
-+		__field(__u64, gva)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(token, token)
-+		tp_assign(gva, gva)
-+	),
-+
-+	TP_printk("token %#llx gva %#llx", __entry->token, __entry->gva)
-+
-+)
-+
-+DEFINE_EVENT(kvm_async_pf_nopresent_ready, kvm_async_pf_not_present,
-+
-+	TP_PROTO(u64 token, u64 gva),
-+
-+	TP_ARGS(token, gva)
-+)
-+
-+DEFINE_EVENT(kvm_async_pf_nopresent_ready, kvm_async_pf_ready,
-+
-+	TP_PROTO(u64 token, u64 gva),
-+
-+	TP_ARGS(token, gva)
-+)
-+
-+TRACE_EVENT(
-+	kvm_async_pf_completed,
-+	TP_PROTO(unsigned long address, struct page *page, u64 gva),
-+	TP_ARGS(address, page, gva),
-+
-+	TP_STRUCT__entry(
-+		__field(unsigned long, address)
-+		__field(pfn_t, pfn)
-+		__field(u64, gva)
-+		),
-+
-+	TP_fast_assign(
-+		tp_assign(address, address)
-+		tp_assign(pfn, page ? page_to_pfn(page) : 0)
-+		tp_assign(gva, gva)
-+		),
-+
-+	TP_printk("gva %#llx address %#lx pfn %#llx",  __entry->gva,
-+		  __entry->address, __entry->pfn)
-+)
-+
-+#endif
-+
-+#endif
-+
-+#endif /* _TRACE_KVM_MAIN_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/lock.h
-@@ -0,0 +1,207 @@
-+#include <linux/version.h>
-+
-+#undef TRACE_SYSTEM
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33))
-+#define TRACE_SYSTEM lock
-+#else
-+#define TRACE_SYSTEM lockdep
-+#define TRACE_INCLUDE_FILE lock
-+#if defined(_TRACE_LOCKDEP_H)
-+#define _TRACE_LOCK_H
-+#endif
-+#endif
-+
-+#if !defined(_TRACE_LOCK_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_LOCK_H
-+
-+#include <linux/lockdep.h>
-+#include <linux/tracepoint.h>
-+
-+#ifdef CONFIG_LOCKDEP
-+
-+TRACE_EVENT(lock_acquire,
-+
-+	TP_PROTO(struct lockdep_map *lock, unsigned int subclass,
-+		int trylock, int read, int check,
-+		struct lockdep_map *next_lock, unsigned long ip),
-+
-+	TP_ARGS(lock, subclass, trylock, read, check, next_lock, ip),
-+
-+	TP_STRUCT__entry(
-+		__field(unsigned int, flags)
-+		__string(name, lock->name)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
-+		__field(void *, lockdep_addr)
-+#endif
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(flags, (trylock ? 1 : 0) | (read ? 2 : 0))
-+		tp_strcpy(name, lock->name)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
-+		tp_assign(lockdep_addr, lock)
-+#endif
-+	),
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
-+	TP_printk("%p %s%s%s", __entry->lockdep_addr,
-+#else
-+	TP_printk("%s%s%s",
-+#endif
-+		  (__entry->flags & 1) ? "try " : "",
-+		  (__entry->flags & 2) ? "read " : "",
-+		  __get_str(name))
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
-+
-+DECLARE_EVENT_CLASS(lock,
-+
-+	TP_PROTO(struct lockdep_map *lock, unsigned long ip),
-+
-+	TP_ARGS(lock, ip),
-+
-+	TP_STRUCT__entry(
-+		__string(	name, 	lock->name	)
-+		__field(	void *, lockdep_addr	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(name, lock->name)
-+		tp_assign(lockdep_addr, lock)
-+	),
-+
-+	TP_printk("%p %s",  __entry->lockdep_addr, __get_str(name))
-+)
-+
-+DEFINE_EVENT(lock, lock_release,
-+
-+	TP_PROTO(struct lockdep_map *lock, unsigned long ip),
-+
-+	TP_ARGS(lock, ip)
-+)
-+
-+#ifdef CONFIG_LOCK_STAT
-+
-+DEFINE_EVENT(lock, lock_contended,
-+
-+	TP_PROTO(struct lockdep_map *lock, unsigned long ip),
-+
-+	TP_ARGS(lock, ip)
-+)
-+
-+DEFINE_EVENT(lock, lock_acquired,
-+
-+	TP_PROTO(struct lockdep_map *lock, unsigned long ip),
-+
-+	TP_ARGS(lock, ip)
-+)
-+
-+#endif
-+
-+#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) */
-+
-+TRACE_EVENT(lock_release,
-+
-+	TP_PROTO(struct lockdep_map *lock, int nested, unsigned long ip),
-+
-+	TP_ARGS(lock, nested, ip),
-+
-+	TP_STRUCT__entry(
-+		__string(	name, 	lock->name	)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
-+		__field(	void *, lockdep_addr	)
-+#endif
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(name, lock->name)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
-+		tp_assign(lockdep_addr, lock)
-+#endif
-+	),
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
-+	TP_printk("%p %s",  __entry->lockdep_addr, __get_str(name))
-+#else
-+	TP_printk("%s",  __get_str(name))
-+#endif
-+)
-+
-+#ifdef CONFIG_LOCK_STAT
-+
-+TRACE_EVENT(lock_contended,
-+
-+	TP_PROTO(struct lockdep_map *lock, unsigned long ip),
-+
-+	TP_ARGS(lock, ip),
-+
-+	TP_STRUCT__entry(
-+		__string(	name, 	lock->name	)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
-+		__field(	void *, lockdep_addr	)
-+#endif
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(name, lock->name)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
-+		tp_assign(lockdep_addr, lock)
-+#endif
-+	),
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
-+	TP_printk("%p %s",  __entry->lockdep_addr, __get_str(name))
-+#else
-+	TP_printk("%s",  __get_str(name))
-+#endif
-+)
-+
-+TRACE_EVENT(lock_acquired,
-+
-+	TP_PROTO(struct lockdep_map *lock, unsigned long ip, s64 waittime),
-+
-+	TP_ARGS(lock, ip, waittime),
-+
-+	TP_STRUCT__entry(
-+		__string(	name, 	lock->name	)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
-+		__field(	s64,    wait_nsec	)
-+		__field(	void *, lockdep_addr	)
-+#else
-+		__field(unsigned long, wait_usec)
-+		__field(unsigned long, wait_nsec_rem)
-+#endif
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(name, lock->name)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
-+		tp_assign(wait_nsec, waittime)
-+		tp_assign(lockdep_addr, lock)
-+#else
-+		tp_assign(wait_usec, (unsigned long)waittime)
-+		tp_assign(wait_nsec_rem, do_div(waittime, NSEC_PER_USEC))
-+#endif
-+	),
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
-+	TP_printk("%p %s (%llu ns)",  __entry->lockdep_addr,
-+		  __get_str(name), __entry->wait_nsec)
-+#else
-+	TP_printk("%s (%lu.%03lu us)",
-+		  __get_str(name),
-+		  __entry->wait_usec, __entry->wait_nsec_rem)
-+#endif
-+)
-+
-+#endif
-+
-+#endif /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) */
-+
-+#endif
-+
-+#endif /* _TRACE_LOCK_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/lttng-statedump.h
-@@ -0,0 +1,166 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM lttng_statedump
-+
-+#if !defined(_TRACE_LTTNG_STATEDUMP_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_LTTNG_STATEDUMP_H
-+
-+#include <linux/tracepoint.h>
-+#include <linux/nsproxy.h>
-+#include <linux/pid_namespace.h>
-+
-+TRACE_EVENT(lttng_statedump_start,
-+	TP_PROTO(struct lttng_session *session),
-+	TP_ARGS(session),
-+	TP_STRUCT__entry(
-+	),
-+	TP_fast_assign(
-+	),
-+	TP_printk("")
-+)
-+
-+TRACE_EVENT(lttng_statedump_end,
-+	TP_PROTO(struct lttng_session *session),
-+	TP_ARGS(session),
-+	TP_STRUCT__entry(
-+	),
-+	TP_fast_assign(
-+	),
-+	TP_printk("")
-+)
-+
-+TRACE_EVENT(lttng_statedump_process_state,
-+	TP_PROTO(struct lttng_session *session,
-+		struct task_struct *p,
-+		int type, int mode, int submode, int status,
-+		struct pid_namespace *pid_ns),
-+	TP_ARGS(session, p, type, mode, submode, status, pid_ns),
-+	TP_STRUCT__entry(
-+		__field(pid_t, tid)
-+		__field(pid_t, vtid)
-+		__field(pid_t, pid)
-+		__field(pid_t, vpid)
-+		__field(pid_t, ppid)
-+		__field(pid_t, vppid)
-+		__array_text(char, name, TASK_COMM_LEN)
-+		__field(int, type)
-+		__field(int, mode)
-+		__field(int, submode)
-+		__field(int, status)
-+		__field(int, ns_level)
-+	),
-+	TP_fast_assign(
-+		tp_assign(tid, p->pid)
-+		tp_assign(vtid, pid_ns ? task_pid_nr_ns(p, pid_ns) : 0)
-+		tp_assign(pid, p->tgid)
-+		tp_assign(vpid, pid_ns ? task_tgid_nr_ns(p, pid_ns) : 0)
-+		tp_assign(ppid,
-+			({
-+				pid_t ret;
-+
-+				rcu_read_lock();
-+				ret = task_tgid_nr(p->real_parent);
-+				rcu_read_unlock();
-+				ret;
-+			}))
-+		tp_assign(vppid,
-+			({
-+				struct task_struct *parent;
-+				pid_t ret = 0;
-+
-+				if (pid_ns) {
-+					rcu_read_lock();
-+					parent = rcu_dereference(p->real_parent);
-+					ret = task_tgid_nr_ns(parent, pid_ns);
-+					rcu_read_unlock();
-+				}
-+				ret;
-+			}))
-+		tp_memcpy(name, p->comm, TASK_COMM_LEN)
-+		tp_assign(type, type)
-+		tp_assign(mode, mode)
-+		tp_assign(submode, submode)
-+		tp_assign(status, status)
-+		tp_assign(ns_level, pid_ns ? pid_ns->level : 0)
-+	),
-+	TP_printk("")
-+)
-+
-+TRACE_EVENT(lttng_statedump_file_descriptor,
-+	TP_PROTO(struct lttng_session *session,
-+		struct task_struct *p, int fd, const char *filename),
-+	TP_ARGS(session, p, fd, filename),
-+	TP_STRUCT__entry(
-+		__field(pid_t, pid)
-+		__field(int, fd)
-+		__string(filename, filename)
-+	),
-+	TP_fast_assign(
-+		tp_assign(pid, p->tgid)
-+		tp_assign(fd, fd)
-+		tp_strcpy(filename, filename)
-+	),
-+	TP_printk("")
-+)
-+
-+TRACE_EVENT(lttng_statedump_vm_map,
-+	TP_PROTO(struct lttng_session *session,
-+		struct task_struct *p, struct vm_area_struct *map,
-+		unsigned long inode),
-+	TP_ARGS(session, p, map, inode),
-+	TP_STRUCT__entry(
-+		__field(pid_t, pid)
-+		__field_hex(unsigned long, start)
-+		__field_hex(unsigned long, end)
-+		__field_hex(unsigned long, flags)
-+		__field(unsigned long, inode)
-+		__field(unsigned long, pgoff)
-+	),
-+	TP_fast_assign(
-+		tp_assign(pid, p->tgid)
-+		tp_assign(start, map->vm_start)
-+		tp_assign(end, map->vm_end)
-+		tp_assign(flags, map->vm_flags)
-+		tp_assign(inode, inode)
-+		tp_assign(pgoff, map->vm_pgoff << PAGE_SHIFT)
-+	),
-+	TP_printk("")
-+)
-+
-+TRACE_EVENT(lttng_statedump_network_interface,
-+	TP_PROTO(struct lttng_session *session,
-+		struct net_device *dev, struct in_ifaddr *ifa),
-+	TP_ARGS(session, dev, ifa),
-+	TP_STRUCT__entry(
-+		__string(name, dev->name)
-+		__field_network_hex(uint32_t, address_ipv4)
-+	),
-+	TP_fast_assign(
-+		tp_strcpy(name, dev->name)
-+		tp_assign(address_ipv4, ifa ? ifa->ifa_address : 0U)
-+	),
-+	TP_printk("")
-+)
-+
-+/* Called with desc->lock held */
-+TRACE_EVENT(lttng_statedump_interrupt,
-+	TP_PROTO(struct lttng_session *session,
-+		unsigned int irq, const char *chip_name,
-+		struct irqaction *action),
-+	TP_ARGS(session, irq, chip_name, action),
-+	TP_STRUCT__entry(
-+		__field(unsigned int, irq)
-+		__string(name, chip_name)
-+		__string(action, action->name ? : "")
-+	),
-+	TP_fast_assign(
-+		tp_assign(irq, irq)
-+		tp_strcpy(name, chip_name)
-+		tp_strcpy(action, action->name ? : "")
-+	),
-+	TP_printk("")
-+)
-+
-+#endif /*  _TRACE_LTTNG_STATEDUMP_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/module.h
-@@ -0,0 +1,157 @@
-+/*
-+ * Because linux/module.h has tracepoints in the header, and ftrace.h
-+ * eventually includes this file, define_trace.h includes linux/module.h
-+ * But we do not want the module.h to override the TRACE_SYSTEM macro
-+ * variable that define_trace.h is processing, so we only set it
-+ * when module events are being processed, which would happen when
-+ * CREATE_TRACE_POINTS is defined.
-+ */
-+#ifdef CREATE_TRACE_POINTS
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM module
-+#endif
-+
-+#if !defined(_TRACE_MODULE_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_MODULE_H
-+
-+#include <linux/tracepoint.h>
-+#include <linux/version.h>
-+
-+#ifdef CONFIG_MODULES
-+
-+#ifndef _TRACE_MODULE_DEF
-+#define _TRACE_MODULE_DEF
-+struct module;
-+
-+#define show_module_flags(flags) __print_flags(flags, "",	\
-+	{ (1UL << TAINT_PROPRIETARY_MODULE),	"P" },		\
-+	{ (1UL << TAINT_FORCED_MODULE),		"F" },		\
-+	{ (1UL << TAINT_CRAP),			"C" })
-+#endif
-+
-+TRACE_EVENT(module_load,
-+
-+	TP_PROTO(struct module *mod),
-+
-+	TP_ARGS(mod),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned int,	taints		)
-+		__string(	name,		mod->name	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(taints, mod->taints)
-+		tp_strcpy(name, mod->name)
-+	),
-+
-+	TP_printk("%s %s", __get_str(name), show_module_flags(__entry->taints))
-+)
-+
-+TRACE_EVENT(module_free,
-+
-+	TP_PROTO(struct module *mod),
-+
-+	TP_ARGS(mod),
-+
-+	TP_STRUCT__entry(
-+		__string(	name,		mod->name	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(name, mod->name)
-+	),
-+
-+	TP_printk("%s", __get_str(name))
-+)
-+
-+#ifdef CONFIG_MODULE_UNLOAD
-+/* trace_module_get/put are only used if CONFIG_MODULE_UNLOAD is defined */
-+
-+DECLARE_EVENT_CLASS(module_refcnt,
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
-+	TP_PROTO(struct module *mod, unsigned long ip),
-+
-+	TP_ARGS(mod, ip),
-+#else
-+	TP_PROTO(struct module *mod, unsigned long ip, int refcnt),
-+
-+	TP_ARGS(mod, ip, refcnt),
-+#endif
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned long,	ip		)
-+		__field(	int,		refcnt		)
-+		__string(	name,		mod->name	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(ip, ip)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
-+		tp_assign(refcnt, __this_cpu_read(mod->refptr->incs) + __this_cpu_read(mod->refptr->decs))
-+#else
-+		tp_assign(refcnt, refcnt)
-+#endif
-+		tp_strcpy(name, mod->name)
-+	),
-+
-+	TP_printk("%s call_site=%pf refcnt=%d",
-+		  __get_str(name), (void *)__entry->ip, __entry->refcnt)
-+)
-+
-+DEFINE_EVENT(module_refcnt, module_get,
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
-+	TP_PROTO(struct module *mod, unsigned long ip),
-+
-+	TP_ARGS(mod, ip)
-+#else
-+	TP_PROTO(struct module *mod, unsigned long ip, int refcnt),
-+
-+	TP_ARGS(mod, ip, refcnt)
-+#endif
-+)
-+
-+DEFINE_EVENT(module_refcnt, module_put,
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
-+	TP_PROTO(struct module *mod, unsigned long ip),
-+
-+	TP_ARGS(mod, ip)
-+#else
-+	TP_PROTO(struct module *mod, unsigned long ip, int refcnt),
-+
-+	TP_ARGS(mod, ip, refcnt)
-+#endif
-+)
-+#endif /* CONFIG_MODULE_UNLOAD */
-+
-+TRACE_EVENT(module_request,
-+
-+	TP_PROTO(char *name, bool wait, unsigned long ip),
-+
-+	TP_ARGS(name, wait, ip),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned long,	ip		)
-+		__field(	bool,		wait		)
-+		__string(	name,		name		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(ip, ip)
-+		tp_assign(wait, wait)
-+		tp_strcpy(name, name)
-+	),
-+
-+	TP_printk("%s wait=%d call_site=%pf",
-+		  __get_str(name), (int)__entry->wait, (void *)__entry->ip)
-+)
-+
-+#endif /* CONFIG_MODULES */
-+
-+#endif /* _TRACE_MODULE_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/napi.h
-@@ -0,0 +1,38 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM napi
-+
-+#if !defined(_TRACE_NAPI_H_) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_NAPI_H_
-+
-+#include <linux/netdevice.h>
-+#include <linux/tracepoint.h>
-+#include <linux/ftrace.h>
-+
-+#define NO_DEV "(no_device)"
-+
-+TRACE_EVENT(napi_poll,
-+
-+	TP_PROTO(struct napi_struct *napi),
-+
-+	TP_ARGS(napi),
-+
-+	TP_STRUCT__entry(
-+		__field(	struct napi_struct *,	napi)
-+		__string(	dev_name, napi->dev ? napi->dev->name : NO_DEV)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(napi, napi)
-+		tp_strcpy(dev_name, napi->dev ? napi->dev->name : NO_DEV)
-+	),
-+
-+	TP_printk("napi poll on napi struct %p for device %s",
-+		__entry->napi, __get_str(dev_name))
-+)
-+
-+#undef NO_DEV
-+
-+#endif /* _TRACE_NAPI_H_ */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/net.h
-@@ -0,0 +1,105 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM net
-+
-+#if !defined(_TRACE_NET_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_NET_H
-+
-+#include <linux/skbuff.h>
-+#include <linux/netdevice.h>
-+#include <linux/ip.h>
-+#include <linux/tracepoint.h>
-+#include <linux/version.h>
-+
-+TRACE_EVENT(net_dev_xmit,
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,40))
-+	TP_PROTO(struct sk_buff *skb,
-+		 int rc,
-+		 struct net_device *dev,
-+		 unsigned int skb_len),
-+
-+	TP_ARGS(skb, rc, dev, skb_len),
-+#else
-+	TP_PROTO(struct sk_buff *skb,
-+		 int rc),
-+
-+	TP_ARGS(skb, rc),
-+#endif
-+
-+	TP_STRUCT__entry(
-+		__field(	void *,		skbaddr		)
-+		__field(	unsigned int,	len		)
-+		__field(	int,		rc		)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,40))
-+		__string(	name,		dev->name	)
-+#else
-+		__string(	name,		skb->dev->name	)
-+#endif
-+	),
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,40))
-+	TP_fast_assign(
-+		tp_assign(skbaddr, skb)
-+		tp_assign(len, skb_len)
-+		tp_assign(rc, rc)
-+		tp_strcpy(name, dev->name)
-+	),
-+#else
-+	TP_fast_assign(
-+		tp_assign(skbaddr, skb)
-+		tp_assign(len, skb->len)
-+		tp_assign(rc, rc)
-+		tp_strcpy(name, skb->dev->name)
-+	),
-+#endif
-+
-+	TP_printk("dev=%s skbaddr=%p len=%u rc=%d",
-+		__get_str(name), __entry->skbaddr, __entry->len, __entry->rc)
-+)
-+
-+DECLARE_EVENT_CLASS(net_dev_template,
-+
-+	TP_PROTO(struct sk_buff *skb),
-+
-+	TP_ARGS(skb),
-+
-+	TP_STRUCT__entry(
-+		__field(	void *,		skbaddr		)
-+		__field(	unsigned int,	len		)
-+		__string(	name,		skb->dev->name	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(skbaddr, skb)
-+		tp_assign(len, skb->len)
-+		tp_strcpy(name, skb->dev->name)
-+	),
-+
-+	TP_printk("dev=%s skbaddr=%p len=%u",
-+		__get_str(name), __entry->skbaddr, __entry->len)
-+)
-+
-+DEFINE_EVENT(net_dev_template, net_dev_queue,
-+
-+	TP_PROTO(struct sk_buff *skb),
-+
-+	TP_ARGS(skb)
-+)
-+
-+DEFINE_EVENT(net_dev_template, netif_receive_skb,
-+
-+	TP_PROTO(struct sk_buff *skb),
-+
-+	TP_ARGS(skb)
-+)
-+
-+DEFINE_EVENT(net_dev_template, netif_rx,
-+
-+	TP_PROTO(struct sk_buff *skb),
-+
-+	TP_ARGS(skb)
-+)
-+#endif /* _TRACE_NET_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/power.h
-@@ -0,0 +1,351 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM power
-+
-+#if !defined(_TRACE_POWER_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_POWER_H
-+
-+#include <linux/ktime.h>
-+#include <linux/tracepoint.h>
-+#include <linux/version.h>
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38))
-+DECLARE_EVENT_CLASS(power_cpu,
-+
-+	TP_PROTO(unsigned int state, unsigned int cpu_id),
-+
-+	TP_ARGS(state, cpu_id),
-+
-+	TP_STRUCT__entry(
-+		__field(	u32,		state		)
-+		__field(	u32,		cpu_id		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(state, state)
-+		tp_assign(cpu_id, cpu_id)
-+	),
-+
-+	TP_printk("state=%lu cpu_id=%lu", (unsigned long)__entry->state,
-+		  (unsigned long)__entry->cpu_id)
-+)
-+
-+DEFINE_EVENT_MAP(power_cpu, cpu_idle,
-+
-+	power_cpu_idle,
-+
-+	TP_PROTO(unsigned int state, unsigned int cpu_id),
-+
-+	TP_ARGS(state, cpu_id)
-+)
-+
-+/* This file can get included multiple times, TRACE_HEADER_MULTI_READ at top */
-+#ifndef _PWR_EVENT_AVOID_DOUBLE_DEFINING
-+#define _PWR_EVENT_AVOID_DOUBLE_DEFINING
-+
-+#define PWR_EVENT_EXIT -1
-+#endif
-+
-+DEFINE_EVENT_MAP(power_cpu, cpu_frequency,
-+
-+	power_cpu_frequency,
-+
-+	TP_PROTO(unsigned int frequency, unsigned int cpu_id),
-+
-+	TP_ARGS(frequency, cpu_id)
-+)
-+
-+TRACE_EVENT_MAP(machine_suspend,
-+
-+	power_machine_suspend,
-+
-+	TP_PROTO(unsigned int state),
-+
-+	TP_ARGS(state),
-+
-+	TP_STRUCT__entry(
-+		__field(	u32,		state		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(state, state)
-+	),
-+
-+	TP_printk("state=%lu", (unsigned long)__entry->state)
-+)
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
-+DECLARE_EVENT_CLASS(power_wakeup_source,
-+
-+	TP_PROTO(const char *name, unsigned int state),
-+
-+	TP_ARGS(name, state),
-+
-+	TP_STRUCT__entry(
-+		__string(       name,           name            )
-+		__field(        u64,            state           )
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(name, name)
-+		tp_assign(state, state)
-+	),
-+
-+	TP_printk("%s state=0x%lx", __get_str(name),
-+		(unsigned long)__entry->state)
-+)
-+
-+DEFINE_EVENT_MAP(power_wakeup_source, wakeup_source_activate,
-+
-+	power_wakeup_source_activate,
-+
-+	TP_PROTO(const char *name, unsigned int state),
-+
-+	TP_ARGS(name, state)
-+)
-+
-+DEFINE_EVENT_MAP(power_wakeup_source, wakeup_source_deactivate,
-+
-+	power_wakeup_source_deactivate,
-+
-+	TP_PROTO(const char *name, unsigned int state),
-+
-+	TP_ARGS(name, state)
-+)
-+#endif
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38))
-+#undef CONFIG_EVENT_POWER_TRACING_DEPRECATED
-+#define CONFIG_EVENT_POWER_TRACING_DEPRECATED
-+#define _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED
-+#endif
-+
-+#ifdef CONFIG_EVENT_POWER_TRACING_DEPRECATED
-+
-+/*
-+ * The power events are used for cpuidle & suspend (power_start, power_end)
-+ *  and for cpufreq (power_frequency)
-+ */
-+DECLARE_EVENT_CLASS(power,
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+	TP_PROTO(unsigned int type, unsigned int state, unsigned int cpu_id),
-+
-+	TP_ARGS(type, state, cpu_id),
-+#else
-+	TP_PROTO(unsigned int type, unsigned int state),
-+
-+	TP_ARGS(type, state),
-+#endif
-+
-+	TP_STRUCT__entry(
-+		__field(	u64,		type		)
-+		__field(	u64,		state		)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+		__field(	u64,		cpu_id		)
-+#endif
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(type, type)
-+		tp_assign(state, state)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+		tp_assign(cpu_id, cpu_id)
-+#endif
-+	),
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+	TP_printk("type=%lu state=%lu cpu_id=%lu", (unsigned long)__entry->type,
-+		(unsigned long)__entry->state, (unsigned long)__entry->cpu_id)
-+#else
-+	TP_printk("type=%lu state=%lu", (unsigned long)__entry->type,
-+		(unsigned long)__entry->state)
-+#endif
-+)
-+
-+DEFINE_EVENT(power, power_start,
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+	TP_PROTO(unsigned int type, unsigned int state, unsigned int cpu_id),
-+
-+	TP_ARGS(type, state, cpu_id)
-+#else
-+	TP_PROTO(unsigned int type, unsigned int state),
-+
-+	TP_ARGS(type, state)
-+#endif
-+)
-+
-+DEFINE_EVENT(power, power_frequency,
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+	TP_PROTO(unsigned int type, unsigned int state, unsigned int cpu_id),
-+
-+	TP_ARGS(type, state, cpu_id)
-+#else
-+	TP_PROTO(unsigned int type, unsigned int state),
-+
-+	TP_ARGS(type, state)
-+#endif
-+)
-+
-+TRACE_EVENT(power_end,
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+	TP_PROTO(unsigned int cpu_id),
-+
-+	TP_ARGS(cpu_id),
-+#else
-+	TP_PROTO(int dummy),
-+
-+	TP_ARGS(dummy),
-+#endif
-+
-+	TP_STRUCT__entry(
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+		__field(	u64,		cpu_id		)
-+#else
-+		__field(	u64,		dummy		)
-+#endif
-+	),
-+
-+	TP_fast_assign(
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+		tp_assign(cpu_id, cpu_id)
-+#else
-+		tp_assign(dummy, 0xffff)
-+#endif
-+	),
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+	TP_printk("cpu_id=%lu", (unsigned long)__entry->cpu_id)
-+#else
-+	TP_printk("dummy=%lu", (unsigned long)__entry->dummy)
-+#endif
-+)
-+
-+/* Deprecated dummy functions must be protected against multi-declartion */
-+#ifndef _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED
-+#define _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED
-+
-+enum {
-+	POWER_NONE = 0,
-+	POWER_CSTATE = 1,
-+	POWER_PSTATE = 2,
-+};
-+#endif /* _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED */
-+
-+#else /* CONFIG_EVENT_POWER_TRACING_DEPRECATED */
-+
-+#ifndef _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED
-+#define _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED
-+enum {
-+       POWER_NONE = 0,
-+       POWER_CSTATE = 1,
-+       POWER_PSTATE = 2,
-+};
-+
-+/* These dummy declaration have to be ripped out when the deprecated
-+   events get removed */
-+static inline void trace_power_start(u64 type, u64 state, u64 cpuid) {};
-+static inline void trace_power_end(u64 cpuid) {};
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
-+static inline void trace_power_start_rcuidle(u64 type, u64 state, u64 cpuid) {};
-+static inline void trace_power_end_rcuidle(u64 cpuid) {};
-+#endif
-+static inline void trace_power_frequency(u64 type, u64 state, u64 cpuid) {};
-+#endif /* _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED */
-+
-+#endif /* CONFIG_EVENT_POWER_TRACING_DEPRECATED */
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
-+/*
-+ * The clock events are used for clock enable/disable and for
-+ *  clock rate change
-+ */
-+DECLARE_EVENT_CLASS(power_clock,
-+
-+	TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
-+
-+	TP_ARGS(name, state, cpu_id),
-+
-+	TP_STRUCT__entry(
-+		__string(       name,           name            )
-+		__field(        u64,            state           )
-+		__field(        u64,            cpu_id          )
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(name, name)
-+		tp_assign(state, state)
-+		tp_assign(cpu_id, cpu_id)
-+	),
-+
-+	TP_printk("%s state=%lu cpu_id=%lu", __get_str(name),
-+		(unsigned long)__entry->state, (unsigned long)__entry->cpu_id)
-+)
-+
-+DEFINE_EVENT_MAP(power_clock, clock_enable,
-+
-+	power_clock_enable,
-+
-+	TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
-+
-+	TP_ARGS(name, state, cpu_id)
-+)
-+
-+DEFINE_EVENT_MAP(power_clock, clock_disable,
-+
-+	power_clock_disable,
-+
-+	TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
-+
-+	TP_ARGS(name, state, cpu_id)
-+)
-+
-+DEFINE_EVENT_MAP(power_clock, clock_set_rate,
-+
-+	power_clock_set_rate,
-+
-+	TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
-+
-+	TP_ARGS(name, state, cpu_id)
-+)
-+
-+/*
-+ * The power domain events are used for power domains transitions
-+ */
-+DECLARE_EVENT_CLASS(power_domain,
-+
-+	TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
-+
-+	TP_ARGS(name, state, cpu_id),
-+
-+	TP_STRUCT__entry(
-+		__string(       name,           name            )
-+		__field(        u64,            state           )
-+		__field(        u64,            cpu_id          )
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(name, name)
-+		tp_assign(state, state)
-+		tp_assign(cpu_id, cpu_id)
-+),
-+
-+	TP_printk("%s state=%lu cpu_id=%lu", __get_str(name),
-+		(unsigned long)__entry->state, (unsigned long)__entry->cpu_id)
-+)
-+
-+DEFINE_EVENT(power_domain, power_domain_target,
-+
-+	TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
-+
-+	TP_ARGS(name, state, cpu_id)
-+)
-+#endif
-+
-+#endif /* _TRACE_POWER_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/printk.h
-@@ -0,0 +1,83 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM printk
-+
-+#if !defined(_TRACE_PRINTK_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_PRINTK_H
-+
-+#include <linux/tracepoint.h>
-+#include <linux/version.h>
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0))
-+
-+TRACE_EVENT(console,
-+	TP_PROTO(const char *text, size_t len),
-+
-+	TP_ARGS(text, len),
-+
-+	TP_STRUCT__entry(
-+		__dynamic_array_text(char, msg, len)
-+	),
-+
-+	TP_fast_assign(
-+		tp_memcpy_dyn(msg, text)
-+	),
-+
-+	TP_printk("%s", __get_str(msg))
-+)
-+
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
-+
-+TRACE_EVENT_CONDITION(console,
-+	TP_PROTO(const char *log_buf, unsigned start, unsigned end,
-+		 unsigned log_buf_len),
-+
-+	TP_ARGS(log_buf, start, end, log_buf_len),
-+
-+	TP_CONDITION(start != end),
-+
-+	TP_STRUCT__entry(
-+		__dynamic_array_text(char, msg, end - start)
-+	),
-+
-+	TP_fast_assign(
-+		tp_memcpy_dyn(msg, log_buf + start)
-+	),
-+
-+	TP_printk("%s", __get_str(msg))
-+)
-+
-+#else /* (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0)) */
-+
-+TRACE_EVENT_CONDITION(console,
-+	TP_PROTO(const char *log_buf, unsigned start, unsigned end,
-+		 unsigned log_buf_len),
-+
-+	TP_ARGS(log_buf, start, end, log_buf_len),
-+
-+	TP_CONDITION(start != end),
-+
-+	TP_STRUCT__entry(
-+		__dynamic_array_text_2(char, msg,
-+			(start & (log_buf_len - 1)) > (end & (log_buf_len - 1))
-+				? log_buf_len - (start & (log_buf_len - 1))
-+				: end - start,
-+			(start & (log_buf_len - 1)) > (end & (log_buf_len - 1))
-+				? end & (log_buf_len - 1)
-+				: 0)
-+	),
-+
-+	TP_fast_assign(
-+		tp_memcpy_dyn_2(msg,
-+			log_buf + (start & (log_buf_len - 1)),
-+			log_buf)
-+	),
-+
-+	TP_printk("%s", __get_str(msg))
-+)
-+
-+#endif
-+
-+#endif /* _TRACE_PRINTK_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/random.h
-@@ -0,0 +1,152 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM random
-+
-+#if !defined(_TRACE_RANDOM_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_RANDOM_H
-+
-+#include <linux/writeback.h>
-+#include <linux/tracepoint.h>
-+
-+DECLARE_EVENT_CLASS(random__mix_pool_bytes,
-+	TP_PROTO(const char *pool_name, int bytes, unsigned long IP),
-+
-+	TP_ARGS(pool_name, bytes, IP),
-+
-+	TP_STRUCT__entry(
-+		__string(   pool_name,	pool_name		)
-+		__field(	  int,	bytes			)
-+		__field(unsigned long,	IP			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(pool_name, pool_name)
-+		tp_assign(bytes, bytes)
-+		tp_assign(IP, IP)
-+	),
-+
-+	TP_printk("%s pool: bytes %d caller %pF",
-+		  __get_str(pool_name), __entry->bytes, (void *)__entry->IP)
-+)
-+
-+DEFINE_EVENT_MAP(random__mix_pool_bytes, mix_pool_bytes,
-+
-+	random_mix_pool_bytes,
-+
-+	TP_PROTO(const char *pool_name, int bytes, unsigned long IP),
-+
-+	TP_ARGS(pool_name, bytes, IP)
-+)
-+
-+DEFINE_EVENT_MAP(random__mix_pool_bytes, mix_pool_bytes_nolock,
-+
-+	random_mix_pool_bytes_nolock,
-+
-+	TP_PROTO(const char *pool_name, int bytes, unsigned long IP),
-+
-+	TP_ARGS(pool_name, bytes, IP)
-+)
-+
-+TRACE_EVENT_MAP(credit_entropy_bits,
-+
-+	random_credit_entropy_bits,
-+
-+	TP_PROTO(const char *pool_name, int bits, int entropy_count,
-+		 int entropy_total, unsigned long IP),
-+
-+	TP_ARGS(pool_name, bits, entropy_count, entropy_total, IP),
-+
-+	TP_STRUCT__entry(
-+		__string(   pool_name,	pool_name		)
-+		__field(	  int,	bits			)
-+		__field(	  int,	entropy_count		)
-+		__field(	  int,	entropy_total		)
-+		__field(unsigned long,	IP			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(pool_name, pool_name)
-+		tp_assign(bits, bits)
-+		tp_assign(entropy_count, entropy_count)
-+		tp_assign(entropy_total, entropy_total)
-+		tp_assign(IP, IP)
-+	),
-+
-+	TP_printk("%s pool: bits %d entropy_count %d entropy_total %d "
-+		  "caller %pF", __get_str(pool_name), __entry->bits,
-+		  __entry->entropy_count, __entry->entropy_total,
-+		  (void *)__entry->IP)
-+)
-+
-+TRACE_EVENT_MAP(get_random_bytes,
-+
-+	random_get_random_bytes,
-+
-+	TP_PROTO(int nbytes, unsigned long IP),
-+
-+	TP_ARGS(nbytes, IP),
-+
-+	TP_STRUCT__entry(
-+		__field(	  int,	nbytes			)
-+		__field(unsigned long,	IP			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(nbytes, nbytes)
-+		tp_assign(IP, IP)
-+	),
-+
-+	TP_printk("nbytes %d caller %pF", __entry->nbytes, (void *)__entry->IP)
-+)
-+
-+DECLARE_EVENT_CLASS(random__extract_entropy,
-+	TP_PROTO(const char *pool_name, int nbytes, int entropy_count,
-+		 unsigned long IP),
-+
-+	TP_ARGS(pool_name, nbytes, entropy_count, IP),
-+
-+	TP_STRUCT__entry(
-+		__string(   pool_name,	pool_name		)
-+		__field(	  int,	nbytes			)
-+		__field(	  int,	entropy_count		)
-+		__field(unsigned long,	IP			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(pool_name, pool_name)
-+		tp_assign(nbytes, nbytes)
-+		tp_assign(entropy_count, entropy_count)
-+		tp_assign(IP, IP)
-+	),
-+
-+	TP_printk("%s pool: nbytes %d entropy_count %d caller %pF",
-+		  __get_str(pool_name), __entry->nbytes, __entry->entropy_count,
-+		  (void *)__entry->IP)
-+)
-+
-+
-+DEFINE_EVENT_MAP(random__extract_entropy, extract_entropy,
-+
-+	random_extract_entropy,
-+
-+	TP_PROTO(const char *pool_name, int nbytes, int entropy_count,
-+		 unsigned long IP),
-+
-+	TP_ARGS(pool_name, nbytes, entropy_count, IP)
-+)
-+
-+DEFINE_EVENT_MAP(random__extract_entropy, extract_entropy_user,
-+
-+	random_extract_entropy_user,
-+
-+	TP_PROTO(const char *pool_name, int nbytes, int entropy_count,
-+		 unsigned long IP),
-+
-+	TP_ARGS(pool_name, nbytes, entropy_count, IP)
-+)
-+
-+
-+
-+#endif /* _TRACE_RANDOM_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/rcu.h
-@@ -0,0 +1,763 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM rcu
-+
-+#if !defined(_TRACE_RCU_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_RCU_H
-+
-+#include <linux/tracepoint.h>
-+#include <linux/version.h>
-+
-+/*
-+ * Tracepoint for start/end markers used for utilization calculations.
-+ * By convention, the string is of the following forms:
-+ *
-+ * "Start <activity>" -- Mark the start of the specified activity,
-+ *			 such as "context switch".  Nesting is permitted.
-+ * "End <activity>" -- Mark the end of the specified activity.
-+ *
-+ * An "@" character within "<activity>" is a comment character: Data
-+ * reduction scripts will ignore the "@" and the remainder of the line.
-+ */
-+TRACE_EVENT(rcu_utilization,
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0))
-+	TP_PROTO(const char *s),
-+#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) */
-+	TP_PROTO(char *s),
-+#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) */
-+
-+	TP_ARGS(s),
-+
-+	TP_STRUCT__entry(
-+		__string(s, s)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(s, s)
-+	),
-+
-+	TP_printk("%s", __get_str(s))
-+)
-+
-+#ifdef CONFIG_RCU_TRACE
-+
-+#if defined(CONFIG_TREE_RCU) || defined(CONFIG_TREE_PREEMPT_RCU)
-+
-+/*
-+ * Tracepoint for grace-period events: starting and ending a grace
-+ * period ("start" and "end", respectively), a CPU noting the start
-+ * of a new grace period or the end of an old grace period ("cpustart"
-+ * and "cpuend", respectively), a CPU passing through a quiescent
-+ * state ("cpuqs"), a CPU coming online or going offline ("cpuonl"
-+ * and "cpuofl", respectively), and a CPU being kicked for being too
-+ * long in dyntick-idle mode ("kick").
-+ */
-+TRACE_EVENT(rcu_grace_period,
-+
-+	TP_PROTO(char *rcuname, unsigned long gpnum, char *gpevent),
-+
-+	TP_ARGS(rcuname, gpnum, gpevent),
-+
-+	TP_STRUCT__entry(
-+		__string(rcuname, rcuname)
-+		__field(unsigned long, gpnum)
-+		__string(gpevent, gpevent)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(rcuname, rcuname)
-+		tp_assign(gpnum, gpnum)
-+		tp_strcpy(gpevent, gpevent)
-+	),
-+
-+	TP_printk("%s %lu %s",
-+		  __get_str(rcuname), __entry->gpnum, __get_str(gpevent))
-+)
-+
-+/*
-+ * Tracepoint for grace-period-initialization events.  These are
-+ * distinguished by the type of RCU, the new grace-period number, the
-+ * rcu_node structure level, the starting and ending CPU covered by the
-+ * rcu_node structure, and the mask of CPUs that will be waited for.
-+ * All but the type of RCU are extracted from the rcu_node structure.
-+ */
-+TRACE_EVENT(rcu_grace_period_init,
-+
-+	TP_PROTO(char *rcuname, unsigned long gpnum, u8 level,
-+		 int grplo, int grphi, unsigned long qsmask),
-+
-+	TP_ARGS(rcuname, gpnum, level, grplo, grphi, qsmask),
-+
-+	TP_STRUCT__entry(
-+		__string(rcuname, rcuname)
-+		__field(unsigned long, gpnum)
-+		__field(u8, level)
-+		__field(int, grplo)
-+		__field(int, grphi)
-+		__field(unsigned long, qsmask)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(rcuname, rcuname)
-+		tp_assign(gpnum, gpnum)
-+		tp_assign(level, level)
-+		tp_assign(grplo, grplo)
-+		tp_assign(grphi, grphi)
-+		tp_assign(qsmask, qsmask)
-+	),
-+
-+	TP_printk("%s %lu %u %d %d %lx",
-+		  __get_str(rcuname), __entry->gpnum, __entry->level,
-+		  __entry->grplo, __entry->grphi, __entry->qsmask)
-+)
-+
-+/*
-+ * Tracepoint for tasks blocking within preemptible-RCU read-side
-+ * critical sections.  Track the type of RCU (which one day might
-+ * include SRCU), the grace-period number that the task is blocking
-+ * (the current or the next), and the task's PID.
-+ */
-+TRACE_EVENT(rcu_preempt_task,
-+
-+	TP_PROTO(char *rcuname, int pid, unsigned long gpnum),
-+
-+	TP_ARGS(rcuname, pid, gpnum),
-+
-+	TP_STRUCT__entry(
-+		__string(rcuname, rcuname)
-+		__field(unsigned long, gpnum)
-+		__field(int, pid)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(rcuname, rcuname)
-+		tp_assign(gpnum, gpnum)
-+		tp_assign(pid, pid)
-+	),
-+
-+	TP_printk("%s %lu %d",
-+		  __get_str(rcuname), __entry->gpnum, __entry->pid)
-+)
-+
-+/*
-+ * Tracepoint for tasks that blocked within a given preemptible-RCU
-+ * read-side critical section exiting that critical section.  Track the
-+ * type of RCU (which one day might include SRCU) and the task's PID.
-+ */
-+TRACE_EVENT(rcu_unlock_preempted_task,
-+
-+	TP_PROTO(char *rcuname, unsigned long gpnum, int pid),
-+
-+	TP_ARGS(rcuname, gpnum, pid),
-+
-+	TP_STRUCT__entry(
-+		__string(rcuname, rcuname)
-+		__field(unsigned long, gpnum)
-+		__field(int, pid)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(rcuname, rcuname)
-+		tp_assign(gpnum, gpnum)
-+		tp_assign(pid, pid)
-+	),
-+
-+	TP_printk("%s %lu %d", __get_str(rcuname), __entry->gpnum, __entry->pid)
-+)
-+
-+/*
-+ * Tracepoint for quiescent-state-reporting events.  These are
-+ * distinguished by the type of RCU, the grace-period number, the
-+ * mask of quiescent lower-level entities, the rcu_node structure level,
-+ * the starting and ending CPU covered by the rcu_node structure, and
-+ * whether there are any blocked tasks blocking the current grace period.
-+ * All but the type of RCU are extracted from the rcu_node structure.
-+ */
-+TRACE_EVENT(rcu_quiescent_state_report,
-+
-+	TP_PROTO(char *rcuname, unsigned long gpnum,
-+		 unsigned long mask, unsigned long qsmask,
-+		 u8 level, int grplo, int grphi, int gp_tasks),
-+
-+	TP_ARGS(rcuname, gpnum, mask, qsmask, level, grplo, grphi, gp_tasks),
-+
-+	TP_STRUCT__entry(
-+		__string(rcuname, rcuname)
-+		__field(unsigned long, gpnum)
-+		__field(unsigned long, mask)
-+		__field(unsigned long, qsmask)
-+		__field(u8, level)
-+		__field(int, grplo)
-+		__field(int, grphi)
-+		__field(u8, gp_tasks)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(rcuname, rcuname)
-+		tp_assign(gpnum, gpnum)
-+		tp_assign(mask, mask)
-+		tp_assign(qsmask, qsmask)
-+		tp_assign(level, level)
-+		tp_assign(grplo, grplo)
-+		tp_assign(grphi, grphi)
-+		tp_assign(gp_tasks, gp_tasks)
-+	),
-+
-+	TP_printk("%s %lu %lx>%lx %u %d %d %u",
-+		  __get_str(rcuname), __entry->gpnum,
-+		  __entry->mask, __entry->qsmask, __entry->level,
-+		  __entry->grplo, __entry->grphi, __entry->gp_tasks)
-+)
-+
-+/*
-+ * Tracepoint for quiescent states detected by force_quiescent_state().
-+ * These trace events include the type of RCU, the grace-period number
-+ * that was blocked by the CPU, the CPU itself, and the type of quiescent
-+ * state, which can be "dti" for dyntick-idle mode, "ofl" for CPU offline,
-+ * or "kick" when kicking a CPU that has been in dyntick-idle mode for
-+ * too long.
-+ */
-+TRACE_EVENT(rcu_fqs,
-+
-+	TP_PROTO(char *rcuname, unsigned long gpnum, int cpu, char *qsevent),
-+
-+	TP_ARGS(rcuname, gpnum, cpu, qsevent),
-+
-+	TP_STRUCT__entry(
-+		__string(rcuname, rcuname)
-+		__field(unsigned long, gpnum)
-+		__field(int, cpu)
-+		__string(qsevent, qsevent)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(rcuname, rcuname)
-+		tp_assign(gpnum, gpnum)
-+		tp_assign(cpu, cpu)
-+		tp_strcpy(qsevent, qsevent)
-+	),
-+
-+	TP_printk("%s %lu %d %s",
-+		  __get_str(rcuname), __entry->gpnum,
-+		  __entry->cpu, __get_str(qsevent))
-+)
-+
-+#endif /* #if defined(CONFIG_TREE_RCU) || defined(CONFIG_TREE_PREEMPT_RCU) */
-+
-+/*
-+ * Tracepoint for dyntick-idle entry/exit events.  These take a string
-+ * as argument: "Start" for entering dyntick-idle mode, "End" for
-+ * leaving it, "--=" for events moving towards idle, and "++=" for events
-+ * moving away from idle.  "Error on entry: not idle task" and "Error on
-+ * exit: not idle task" indicate that a non-idle task is erroneously
-+ * toying with the idle loop.
-+ *
-+ * These events also take a pair of numbers, which indicate the nesting
-+ * depth before and after the event of interest.  Note that task-related
-+ * events use the upper bits of each number, while interrupt-related
-+ * events use the lower bits.
-+ */
-+TRACE_EVENT(rcu_dyntick,
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+	TP_PROTO(char *polarity, long long oldnesting, long long newnesting),
-+
-+	TP_ARGS(polarity, oldnesting, newnesting),
-+#else
-+	TP_PROTO(char *polarity),
-+
-+	TP_ARGS(polarity),
-+#endif
-+
-+	TP_STRUCT__entry(
-+		__string(polarity, polarity)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+		__field(long long, oldnesting)
-+		__field(long long, newnesting)
-+#endif
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(polarity, polarity)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+		tp_assign(oldnesting, oldnesting)
-+		tp_assign(newnesting, newnesting)
-+#endif
-+	),
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+	TP_printk("%s %llx %llx", __get_str(polarity),
-+		  __entry->oldnesting, __entry->newnesting)
-+#else
-+	TP_printk("%s", __get_str(polarity))
-+#endif
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+/*
-+ * Tracepoint for RCU preparation for idle, the goal being to get RCU
-+ * processing done so that the current CPU can shut off its scheduling
-+ * clock and enter dyntick-idle mode.  One way to accomplish this is
-+ * to drain all RCU callbacks from this CPU, and the other is to have
-+ * done everything RCU requires for the current grace period.  In this
-+ * latter case, the CPU will be awakened at the end of the current grace
-+ * period in order to process the remainder of its callbacks.
-+ *
-+ * These tracepoints take a string as argument:
-+ *
-+ *	"No callbacks": Nothing to do, no callbacks on this CPU.
-+ *	"In holdoff": Nothing to do, holding off after unsuccessful attempt.
-+ *	"Begin holdoff": Attempt failed, don't retry until next jiffy.
-+ *	"Dyntick with callbacks": Entering dyntick-idle despite callbacks.
-+ *	"Dyntick with lazy callbacks": Entering dyntick-idle w/lazy callbacks.
-+ *	"More callbacks": Still more callbacks, try again to clear them out.
-+ *	"Callbacks drained": All callbacks processed, off to dyntick idle!
-+ *	"Timer": Timer fired to cause CPU to continue processing callbacks.
-+ *	"Demigrate": Timer fired on wrong CPU, woke up correct CPU.
-+ *	"Cleanup after idle": Idle exited, timer canceled.
-+ */
-+TRACE_EVENT(rcu_prep_idle,
-+
-+	TP_PROTO(char *reason),
-+
-+	TP_ARGS(reason),
-+
-+	TP_STRUCT__entry(
-+		__string(reason, reason)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(reason, reason)
-+	),
-+
-+	TP_printk("%s", __get_str(reason))
-+)
-+#endif
-+
-+/*
-+ * Tracepoint for the registration of a single RCU callback function.
-+ * The first argument is the type of RCU, the second argument is
-+ * a pointer to the RCU callback itself, the third element is the
-+ * number of lazy callbacks queued, and the fourth element is the
-+ * total number of callbacks queued.
-+ */
-+TRACE_EVENT(rcu_callback,
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
-+	TP_PROTO(char *rcuname, struct rcu_head *rhp, long qlen_lazy,
-+		 long qlen),
-+
-+	TP_ARGS(rcuname, rhp, qlen_lazy, qlen),
-+#else
-+	TP_PROTO(char *rcuname, struct rcu_head *rhp, long qlen),
-+
-+	TP_ARGS(rcuname, rhp, qlen),
-+#endif
-+
-+	TP_STRUCT__entry(
-+		__string(rcuname, rcuname)
-+		__field(void *, rhp)
-+		__field(void *, func)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
-+		__field(long, qlen_lazy)
-+#endif
-+		__field(long, qlen)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(rcuname, rcuname)
-+		tp_assign(rhp, rhp)
-+		tp_assign(func, rhp->func)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
-+		tp_assign(qlen_lazy, qlen_lazy)
-+#endif
-+		tp_assign(qlen, qlen)
-+	),
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
-+	TP_printk("%s rhp=%p func=%pf %ld/%ld",
-+		  __get_str(rcuname), __entry->rhp, __entry->func,
-+		  __entry->qlen_lazy, __entry->qlen)
-+#else
-+	TP_printk("%s rhp=%p func=%pf %ld",
-+		  __get_str(rcuname), __entry->rhp, __entry->func,
-+		  __entry->qlen)
-+#endif
-+)
-+
-+/*
-+ * Tracepoint for the registration of a single RCU callback of the special
-+ * kfree() form.  The first argument is the RCU type, the second argument
-+ * is a pointer to the RCU callback, the third argument is the offset
-+ * of the callback within the enclosing RCU-protected data structure,
-+ * the fourth argument is the number of lazy callbacks queued, and the
-+ * fifth argument is the total number of callbacks queued.
-+ */
-+TRACE_EVENT(rcu_kfree_callback,
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
-+	TP_PROTO(char *rcuname, struct rcu_head *rhp, unsigned long offset,
-+		 long qlen_lazy, long qlen),
-+
-+	TP_ARGS(rcuname, rhp, offset, qlen_lazy, qlen),
-+#else
-+	TP_PROTO(char *rcuname, struct rcu_head *rhp, unsigned long offset,
-+		 long qlen),
-+
-+	TP_ARGS(rcuname, rhp, offset, qlen),
-+#endif
-+
-+	TP_STRUCT__entry(
-+		__string(rcuname, rcuname)
-+		__field(void *, rhp)
-+		__field(unsigned long, offset)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
-+		__field(long, qlen_lazy)
-+#endif
-+		__field(long, qlen)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(rcuname, rcuname)
-+		tp_assign(rhp, rhp)
-+		tp_assign(offset, offset)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
-+		tp_assign(qlen_lazy, qlen_lazy)
-+#endif
-+		tp_assign(qlen, qlen)
-+	),
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
-+	TP_printk("%s rhp=%p func=%ld %ld/%ld",
-+		  __get_str(rcuname), __entry->rhp, __entry->offset,
-+		  __entry->qlen_lazy, __entry->qlen)
-+#else
-+	TP_printk("%s rhp=%p func=%ld %ld",
-+		  __get_str(rcuname), __entry->rhp, __entry->offset,
-+		  __entry->qlen)
-+#endif
-+)
-+
-+/*
-+ * Tracepoint for marking the beginning rcu_do_batch, performed to start
-+ * RCU callback invocation.  The first argument is the RCU flavor,
-+ * the second is the number of lazy callbacks queued, the third is
-+ * the total number of callbacks queued, and the fourth argument is
-+ * the current RCU-callback batch limit.
-+ */
-+TRACE_EVENT(rcu_batch_start,
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0))
-+	TP_PROTO(char *rcuname, long qlen_lazy, long qlen, long blimit),
-+
-+	TP_ARGS(rcuname, qlen_lazy, qlen, blimit),
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
-+	TP_PROTO(char *rcuname, long qlen_lazy, long qlen, int blimit),
-+
-+	TP_ARGS(rcuname, qlen_lazy, qlen, blimit),
-+#else
-+	TP_PROTO(char *rcuname, long qlen, int blimit),
-+
-+	TP_ARGS(rcuname, qlen, blimit),
-+#endif
-+
-+	TP_STRUCT__entry(
-+		__string(rcuname, rcuname)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
-+		__field(long, qlen_lazy)
-+#endif
-+		__field(long, qlen)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0))
-+		__field(long, blimit)
-+#else
-+		__field(int, blimit)
-+#endif
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(rcuname, rcuname)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
-+		tp_assign(qlen_lazy, qlen_lazy)
-+#endif
-+		tp_assign(qlen, qlen)
-+		tp_assign(blimit, blimit)
-+	),
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0))
-+	TP_printk("%s CBs=%ld/%ld bl=%ld",
-+		  __get_str(rcuname), __entry->qlen_lazy, __entry->qlen,
-+		  __entry->blimit)
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
-+	TP_printk("%s CBs=%ld/%ld bl=%d",
-+		  __get_str(rcuname), __entry->qlen_lazy, __entry->qlen,
-+		  __entry->blimit)
-+#else
-+	TP_printk("%s CBs=%ld bl=%d",
-+		  __get_str(rcuname), __entry->qlen, __entry->blimit)
-+#endif
-+)
-+
-+/*
-+ * Tracepoint for the invocation of a single RCU callback function.
-+ * The first argument is the type of RCU, and the second argument is
-+ * a pointer to the RCU callback itself.
-+ */
-+TRACE_EVENT(rcu_invoke_callback,
-+
-+	TP_PROTO(char *rcuname, struct rcu_head *rhp),
-+
-+	TP_ARGS(rcuname, rhp),
-+
-+	TP_STRUCT__entry(
-+		__string(rcuname, rcuname)
-+		__field(void *, rhp)
-+		__field(void *, func)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(rcuname, rcuname)
-+		tp_assign(rhp, rhp)
-+		tp_assign(func, rhp->func)
-+	),
-+
-+	TP_printk("%s rhp=%p func=%pf",
-+		  __get_str(rcuname), __entry->rhp, __entry->func)
-+)
-+
-+/*
-+ * Tracepoint for the invocation of a single RCU callback of the special
-+ * kfree() form.  The first argument is the RCU flavor, the second
-+ * argument is a pointer to the RCU callback, and the third argument
-+ * is the offset of the callback within the enclosing RCU-protected
-+ * data structure.
-+ */
-+TRACE_EVENT(rcu_invoke_kfree_callback,
-+
-+	TP_PROTO(char *rcuname, struct rcu_head *rhp, unsigned long offset),
-+
-+	TP_ARGS(rcuname, rhp, offset),
-+
-+	TP_STRUCT__entry(
-+		__string(rcuname, rcuname)
-+		__field(void *, rhp)
-+		__field(unsigned long, offset)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(rcuname, rcuname)
-+		tp_assign(rhp, rhp)
-+		tp_assign(offset, offset)
-+	),
-+
-+	TP_printk("%s rhp=%p func=%ld",
-+		  __get_str(rcuname), __entry->rhp, __entry->offset)
-+)
-+
-+/*
-+ * Tracepoint for exiting rcu_do_batch after RCU callbacks have been
-+ * invoked.  The first argument is the name of the RCU flavor,
-+ * the second argument is number of callbacks actually invoked,
-+ * the third argument (cb) is whether or not any of the callbacks that
-+ * were ready to invoke at the beginning of this batch are still
-+ * queued, the fourth argument (nr) is the return value of need_resched(),
-+ * the fifth argument (iit) is 1 if the current task is the idle task,
-+ * and the sixth argument (risk) is the return value from
-+ * rcu_is_callbacks_kthread().
-+ */
-+TRACE_EVENT(rcu_batch_end,
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+	TP_PROTO(char *rcuname, int callbacks_invoked,
-+		 bool cb, bool nr, bool iit, bool risk),
-+
-+	TP_ARGS(rcuname, callbacks_invoked, cb, nr, iit, risk),
-+#else
-+	TP_PROTO(char *rcuname, int callbacks_invoked),
-+
-+	TP_ARGS(rcuname, callbacks_invoked),
-+#endif
-+
-+	TP_STRUCT__entry(
-+		__string(rcuname, rcuname)
-+		__field(int, callbacks_invoked)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+		__field(bool, cb)
-+		__field(bool, nr)
-+		__field(bool, iit)
-+		__field(bool, risk)
-+#endif
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(rcuname, rcuname)
-+		tp_assign(callbacks_invoked, callbacks_invoked)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+		tp_assign(cb, cb)
-+		tp_assign(nr, nr)
-+		tp_assign(iit, iit)
-+		tp_assign(risk, risk)
-+#endif
-+	),
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+	TP_printk("%s CBs-invoked=%d idle=%c%c%c%c",
-+		  __get_str(rcuname), __entry->callbacks_invoked,
-+		  __entry->cb ? 'C' : '.',
-+		  __entry->nr ? 'S' : '.',
-+		  __entry->iit ? 'I' : '.',
-+		  __entry->risk ? 'R' : '.')
-+#else
-+	TP_printk("%s CBs-invoked=%d",
-+		  __get_str(rcuname), __entry->callbacks_invoked)
-+#endif
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+/*
-+ * Tracepoint for rcutorture readers.  The first argument is the name
-+ * of the RCU flavor from rcutorture's viewpoint and the second argument
-+ * is the callback address.
-+ */
-+TRACE_EVENT(rcu_torture_read,
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0))
-+	TP_PROTO(char *rcutorturename, struct rcu_head *rhp,
-+		 unsigned long secs, unsigned long c_old, unsigned long c),
-+
-+	TP_ARGS(rcutorturename, rhp, secs, c_old, c),
-+#else
-+	TP_PROTO(char *rcutorturename, struct rcu_head *rhp),
-+
-+	TP_ARGS(rcutorturename, rhp),
-+#endif
-+
-+	TP_STRUCT__entry(
-+		__string(rcutorturename, rcutorturename)
-+		__field(struct rcu_head *, rhp)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0))
-+		__field(unsigned long, secs)
-+		__field(unsigned long, c_old)
-+		__field(unsigned long, c)
-+#endif
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(rcutorturename, rcutorturename)
-+		tp_assign(rhp, rhp)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0))
-+		tp_assign(secs, secs)
-+		tp_assign(c_old, c_old)
-+		tp_assign(c, c)
-+#endif
-+	),
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0))
-+	TP_printk("%s torture read %p %luus c: %lu %lu",
-+		  __entry->rcutorturename, __entry->rhp,
-+		  __entry->secs, __entry->c_old, __entry->c)
-+#else
-+	TP_printk("%s torture read %p",
-+		  __get_str(rcutorturename), __entry->rhp)
-+#endif
-+)
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
-+/*
-+ * Tracepoint for _rcu_barrier() execution.  The string "s" describes
-+ * the _rcu_barrier phase:
-+ *	"Begin": rcu_barrier_callback() started.
-+ *	"Check": rcu_barrier_callback() checking for piggybacking.
-+ *	"EarlyExit": rcu_barrier_callback() piggybacked, thus early exit.
-+ *	"Inc1": rcu_barrier_callback() piggyback check counter incremented.
-+ *	"Offline": rcu_barrier_callback() found offline CPU
-+ *	"OnlineQ": rcu_barrier_callback() found online CPU with callbacks.
-+ *	"OnlineNQ": rcu_barrier_callback() found online CPU, no callbacks.
-+ *	"IRQ": An rcu_barrier_callback() callback posted on remote CPU.
-+ *	"CB": An rcu_barrier_callback() invoked a callback, not the last.
-+ *	"LastCB": An rcu_barrier_callback() invoked the last callback.
-+ *	"Inc2": rcu_barrier_callback() piggyback check counter incremented.
-+ * The "cpu" argument is the CPU or -1 if meaningless, the "cnt" argument
-+ * is the count of remaining callbacks, and "done" is the piggybacking count.
-+ */
-+TRACE_EVENT(rcu_barrier,
-+
-+	TP_PROTO(char *rcuname, char *s, int cpu, int cnt, unsigned long done),
-+
-+	TP_ARGS(rcuname, s, cpu, cnt, done),
-+
-+	TP_STRUCT__entry(
-+		__string(rcuname, rcuname)
-+		__string(s, s)
-+		__field(int, cpu)
-+		__field(int, cnt)
-+		__field(unsigned long, done)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(rcuname, rcuname)
-+		tp_strcpy(s, s)
-+		tp_assign(cpu, cpu)
-+		tp_assign(cnt, cnt)
-+		tp_assign(done, done)
-+	),
-+
-+	TP_printk("%s %s cpu %d remaining %d # %lu",
-+		  __get_str(rcuname), __get_str(s), __entry->cpu, __entry->cnt,
-+		  __entry->done)
-+)
-+#endif
-+
-+#else /* #ifdef CONFIG_RCU_TRACE */
-+
-+#define trace_rcu_grace_period(rcuname, gpnum, gpevent) do { } while (0)
-+#define trace_rcu_grace_period_init(rcuname, gpnum, level, grplo, grphi, \
-+				    qsmask) do { } while (0)
-+#define trace_rcu_preempt_task(rcuname, pid, gpnum) do { } while (0)
-+#define trace_rcu_unlock_preempted_task(rcuname, gpnum, pid) do { } while (0)
-+#define trace_rcu_quiescent_state_report(rcuname, gpnum, mask, qsmask, level, \
-+					 grplo, grphi, gp_tasks) do { } \
-+	while (0)
-+#define trace_rcu_fqs(rcuname, gpnum, cpu, qsevent) do { } while (0)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+#define trace_rcu_dyntick(polarity, oldnesting, newnesting) do { } while (0)
-+#else
-+#define trace_rcu_dyntick(polarity) do { } while (0)
-+#endif
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+#define trace_rcu_prep_idle(reason) do { } while (0)
-+#endif
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
-+#define trace_rcu_callback(rcuname, rhp, qlen_lazy, qlen) do { } while (0)
-+#define trace_rcu_kfree_callback(rcuname, rhp, offset, qlen_lazy, qlen) \
-+	do { } while (0)
-+#define trace_rcu_batch_start(rcuname, qlen_lazy, qlen, blimit) \
-+	do { } while (0)
-+#else
-+#define trace_rcu_callback(rcuname, rhp, qlen) do { } while (0)
-+#define trace_rcu_kfree_callback(rcuname, rhp, offset, qlen) do { } while (0)
-+#define trace_rcu_batch_start(rcuname, qlen, blimit) do { } while (0)
-+#endif
-+#define trace_rcu_invoke_callback(rcuname, rhp) do { } while (0)
-+#define trace_rcu_invoke_kfree_callback(rcuname, rhp, offset) do { } while (0)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+#define trace_rcu_batch_end(rcuname, callbacks_invoked, cb, nr, iit, risk) \
-+	do { } while (0)
-+#else
-+#define trace_rcu_batch_end(rcuname, callbacks_invoked) do { } while (0)
-+#endif
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0))
-+#define trace_rcu_torture_read(rcutorturename, rhp, secs, c_old, c) \
-+	do { } while (0)
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+#define trace_rcu_torture_read(rcutorturename, rhp) do { } while (0)
-+#endif
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
-+#define trace_rcu_barrier(name, s, cpu, cnt, done) do { } while (0)
-+#endif
-+#endif /* #else #ifdef CONFIG_RCU_TRACE */
-+
-+#endif /* _TRACE_RCU_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/regmap.h
-@@ -0,0 +1,188 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM regmap
-+
-+#if !defined(_TRACE_REGMAP_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_REGMAP_H
-+
-+#include <linux/ktime.h>
-+#include <linux/tracepoint.h>
-+#include <linux/version.h>
-+
-+#ifndef _TRACE_REGMAP_DEF_
-+#define _TRACE_REGMAP_DEF_
-+struct device;
-+struct regmap;
-+#endif
-+
-+/*
-+ * Log register events
-+ */
-+DECLARE_EVENT_CLASS(regmap_reg,
-+
-+	TP_PROTO(struct device *dev, unsigned int reg,
-+		 unsigned int val),
-+
-+	TP_ARGS(dev, reg, val),
-+
-+	TP_STRUCT__entry(
-+		__string(	name,		dev_name(dev)	)
-+		__field(	unsigned int,	reg		)
-+		__field(	unsigned int,	val		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(name, dev_name(dev))
-+		tp_assign(reg, reg)
-+		tp_assign(val, val)
-+	),
-+
-+	TP_printk("%s reg=%x val=%x", __get_str(name),
-+		  (unsigned int)__entry->reg,
-+		  (unsigned int)__entry->val)
-+)
-+
-+DEFINE_EVENT(regmap_reg, regmap_reg_write,
-+
-+	TP_PROTO(struct device *dev, unsigned int reg,
-+		 unsigned int val),
-+
-+	TP_ARGS(dev, reg, val)
-+
-+)
-+
-+DEFINE_EVENT(regmap_reg, regmap_reg_read,
-+
-+	TP_PROTO(struct device *dev, unsigned int reg,
-+		 unsigned int val),
-+
-+	TP_ARGS(dev, reg, val)
-+
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+DEFINE_EVENT(regmap_reg, regmap_reg_read_cache,
-+
-+	TP_PROTO(struct device *dev, unsigned int reg,
-+		 unsigned int val),
-+
-+	TP_ARGS(dev, reg, val)
-+
-+)
-+#endif
-+
-+DECLARE_EVENT_CLASS(regmap_block,
-+
-+	TP_PROTO(struct device *dev, unsigned int reg, int count),
-+
-+	TP_ARGS(dev, reg, count),
-+
-+	TP_STRUCT__entry(
-+		__string(	name,		dev_name(dev)	)
-+		__field(	unsigned int,	reg		)
-+		__field(	int,		count		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(name, dev_name(dev))
-+		tp_assign(reg, reg)
-+		tp_assign(count, count)
-+	),
-+
-+	TP_printk("%s reg=%x count=%d", __get_str(name),
-+		  (unsigned int)__entry->reg,
-+		  (int)__entry->count)
-+)
-+
-+DEFINE_EVENT(regmap_block, regmap_hw_read_start,
-+
-+	TP_PROTO(struct device *dev, unsigned int reg, int count),
-+
-+	TP_ARGS(dev, reg, count)
-+)
-+
-+DEFINE_EVENT(regmap_block, regmap_hw_read_done,
-+
-+	TP_PROTO(struct device *dev, unsigned int reg, int count),
-+
-+	TP_ARGS(dev, reg, count)
-+)
-+
-+DEFINE_EVENT(regmap_block, regmap_hw_write_start,
-+
-+	TP_PROTO(struct device *dev, unsigned int reg, int count),
-+
-+	TP_ARGS(dev, reg, count)
-+)
-+
-+DEFINE_EVENT(regmap_block, regmap_hw_write_done,
-+
-+	TP_PROTO(struct device *dev, unsigned int reg, int count),
-+
-+	TP_ARGS(dev, reg, count)
-+)
-+
-+TRACE_EVENT(regcache_sync,
-+
-+	TP_PROTO(struct device *dev, const char *type,
-+		 const char *status),
-+
-+	TP_ARGS(dev, type, status),
-+
-+	TP_STRUCT__entry(
-+		__string(       name,           dev_name(dev)   )
-+		__string(	status,		status		)
-+		__string(	type,		type		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(name, dev_name(dev))
-+		tp_strcpy(status, status)
-+		tp_strcpy(type, type)
-+	),
-+
-+	TP_printk("%s type=%s status=%s", __get_str(name),
-+		  __get_str(type), __get_str(status))
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
-+DECLARE_EVENT_CLASS(regmap_bool,
-+
-+	TP_PROTO(struct device *dev, bool flag),
-+
-+	TP_ARGS(dev, flag),
-+
-+	TP_STRUCT__entry(
-+		__string(	name,		dev_name(dev)	)
-+		__field(	int,		flag		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(name, dev_name(dev))
-+		tp_assign(flag, flag)
-+	),
-+
-+	TP_printk("%s flag=%d", __get_str(name),
-+		  (int)__entry->flag)
-+)
-+
-+DEFINE_EVENT(regmap_bool, regmap_cache_only,
-+
-+	TP_PROTO(struct device *dev, bool flag),
-+
-+	TP_ARGS(dev, flag)
-+
-+)
-+
-+DEFINE_EVENT(regmap_bool, regmap_cache_bypass,
-+
-+	TP_PROTO(struct device *dev, bool flag),
-+
-+	TP_ARGS(dev, flag)
-+
-+)
-+#endif
-+
-+#endif /* _TRACE_REGMAP_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/regulator.h
-@@ -0,0 +1,141 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM regulator
-+
-+#if !defined(_TRACE_REGULATOR_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_REGULATOR_H
-+
-+#include <linux/ktime.h>
-+#include <linux/tracepoint.h>
-+
-+/*
-+ * Events which just log themselves and the regulator name for enable/disable
-+ * type tracking.
-+ */
-+DECLARE_EVENT_CLASS(regulator_basic,
-+
-+	TP_PROTO(const char *name),
-+
-+	TP_ARGS(name),
-+
-+	TP_STRUCT__entry(
-+		__string(	name,	name	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(name, name)
-+	),
-+
-+	TP_printk("name=%s", __get_str(name))
-+
-+)
-+
-+DEFINE_EVENT(regulator_basic, regulator_enable,
-+
-+	TP_PROTO(const char *name),
-+
-+	TP_ARGS(name)
-+
-+)
-+
-+DEFINE_EVENT(regulator_basic, regulator_enable_delay,
-+
-+	TP_PROTO(const char *name),
-+
-+	TP_ARGS(name)
-+
-+)
-+
-+DEFINE_EVENT(regulator_basic, regulator_enable_complete,
-+
-+	TP_PROTO(const char *name),
-+
-+	TP_ARGS(name)
-+
-+)
-+
-+DEFINE_EVENT(regulator_basic, regulator_disable,
-+
-+	TP_PROTO(const char *name),
-+
-+	TP_ARGS(name)
-+
-+)
-+
-+DEFINE_EVENT(regulator_basic, regulator_disable_complete,
-+
-+	TP_PROTO(const char *name),
-+
-+	TP_ARGS(name)
-+
-+)
-+
-+/*
-+ * Events that take a range of numerical values, mostly for voltages
-+ * and so on.
-+ */
-+DECLARE_EVENT_CLASS(regulator_range,
-+
-+	TP_PROTO(const char *name, int min, int max),
-+
-+	TP_ARGS(name, min, max),
-+
-+	TP_STRUCT__entry(
-+		__string(	name,		name		)
-+		__field(        int,            min             )
-+		__field(        int,            max             )
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(name, name)
-+		tp_assign(min, min)
-+		tp_assign(max, max)
-+	),
-+
-+	TP_printk("name=%s (%d-%d)", __get_str(name),
-+		  (int)__entry->min, (int)__entry->max)
-+)
-+
-+DEFINE_EVENT(regulator_range, regulator_set_voltage,
-+
-+	TP_PROTO(const char *name, int min, int max),
-+
-+	TP_ARGS(name, min, max)
-+
-+)
-+
-+
-+/*
-+ * Events that take a single value, mostly for readback and refcounts.
-+ */
-+DECLARE_EVENT_CLASS(regulator_value,
-+
-+	TP_PROTO(const char *name, unsigned int val),
-+
-+	TP_ARGS(name, val),
-+
-+	TP_STRUCT__entry(
-+		__string(	name,		name		)
-+		__field(        unsigned int,   val             )
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(name, name)
-+		tp_assign(val, val)
-+	),
-+
-+	TP_printk("name=%s, val=%u", __get_str(name),
-+		  (int)__entry->val)
-+)
-+
-+DEFINE_EVENT(regulator_value, regulator_set_voltage_complete,
-+
-+	TP_PROTO(const char *name, unsigned int value),
-+
-+	TP_ARGS(name, value)
-+
-+)
-+
-+#endif /* _TRACE_POWER_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/rpm.h
-@@ -0,0 +1,101 @@
-+
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM rpm
-+
-+#if !defined(_TRACE_RUNTIME_POWER_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_RUNTIME_POWER_H
-+
-+#include <linux/ktime.h>
-+#include <linux/tracepoint.h>
-+
-+#ifndef _TRACE_RPM_DEF_
-+#define _TRACE_RPM_DEF_
-+struct device;
-+#endif
-+
-+/*
-+ * The rpm_internal events are used for tracing some important
-+ * runtime pm internal functions.
-+ */
-+DECLARE_EVENT_CLASS(rpm_internal,
-+
-+	TP_PROTO(struct device *dev, int flags),
-+
-+	TP_ARGS(dev, flags),
-+
-+	TP_STRUCT__entry(
-+		__string(       name,		dev_name(dev)	)
-+		__field(        int,            flags           )
-+		__field(        int ,   	usage_count	)
-+		__field(        int ,   	disable_depth   )
-+		__field(        int ,   	runtime_auto	)
-+		__field(        int ,   	request_pending	)
-+		__field(        int ,   	irq_safe	)
-+		__field(        int ,   	child_count 	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(name, dev_name(dev))
-+		tp_assign(flags, flags)
-+		tp_assign(usage_count, atomic_read(&dev->power.usage_count))
-+		tp_assign(disable_depth, dev->power.disable_depth)
-+		tp_assign(runtime_auto, dev->power.runtime_auto)
-+		tp_assign(request_pending, dev->power.request_pending)
-+		tp_assign(irq_safe, dev->power.irq_safe)
-+		tp_assign(child_count, atomic_read(&dev->power.child_count))
-+	),
-+
-+	TP_printk("%s flags-%x cnt-%-2d dep-%-2d auto-%-1d p-%-1d"
-+			" irq-%-1d child-%d",
-+			__get_str(name), __entry->flags,
-+			__entry->usage_count,
-+			__entry->disable_depth,
-+			__entry->runtime_auto,
-+			__entry->request_pending,
-+			__entry->irq_safe,
-+			__entry->child_count
-+		 )
-+)
-+DEFINE_EVENT(rpm_internal, rpm_suspend,
-+
-+	TP_PROTO(struct device *dev, int flags),
-+
-+	TP_ARGS(dev, flags)
-+)
-+DEFINE_EVENT(rpm_internal, rpm_resume,
-+
-+	TP_PROTO(struct device *dev, int flags),
-+
-+	TP_ARGS(dev, flags)
-+)
-+DEFINE_EVENT(rpm_internal, rpm_idle,
-+
-+	TP_PROTO(struct device *dev, int flags),
-+
-+	TP_ARGS(dev, flags)
-+)
-+
-+TRACE_EVENT(rpm_return_int,
-+	TP_PROTO(struct device *dev, unsigned long ip, int ret),
-+	TP_ARGS(dev, ip, ret),
-+
-+	TP_STRUCT__entry(
-+		__string(       name,		dev_name(dev))
-+		__field(	unsigned long,		ip	)
-+		__field(	int,			ret	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(name, dev_name(dev))
-+		tp_assign(ip, ip)
-+		tp_assign(ret, ret)
-+	),
-+
-+	TP_printk("%pS:%s ret=%d", (void *)__entry->ip, __get_str(name),
-+		__entry->ret)
-+)
-+
-+#endif /* _TRACE_RUNTIME_POWER_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/sched.h
-@@ -0,0 +1,560 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM sched
-+
-+#if !defined(_TRACE_SCHED_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_SCHED_H
-+
-+#include <linux/sched.h>
-+#include <linux/tracepoint.h>
-+#include <linux/binfmts.h>
-+#include <linux/version.h>
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0))
-+#include <linux/sched/rt.h>
-+#endif
-+
-+#ifndef _TRACE_SCHED_DEF_
-+#define _TRACE_SCHED_DEF_
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
-+
-+static inline long __trace_sched_switch_state(struct task_struct *p)
-+{
-+	long state = p->state;
-+
-+#ifdef CONFIG_PREEMPT
-+	/*
-+	 * For all intents and purposes a preempted task is a running task.
-+	 */
-+	if (task_thread_info(p)->preempt_count & PREEMPT_ACTIVE)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))
-+		state = TASK_RUNNING | TASK_STATE_MAX;
-+#else
-+		state = TASK_RUNNING;
-+#endif
-+#endif
-+
-+	return state;
-+}
-+
-+#endif
-+
-+#endif /* _TRACE_SCHED_DEF_ */
-+
-+/*
-+ * Tracepoint for calling kthread_stop, performed to end a kthread:
-+ */
-+TRACE_EVENT(sched_kthread_stop,
-+
-+	TP_PROTO(struct task_struct *t),
-+
-+	TP_ARGS(t),
-+
-+	TP_STRUCT__entry(
-+		__array_text(	char,	comm,	TASK_COMM_LEN	)
-+		__field(	pid_t,	tid			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_memcpy(comm, t->comm, TASK_COMM_LEN)
-+		tp_assign(tid, t->pid)
-+	),
-+
-+	TP_printk("comm=%s tid=%d", __entry->comm, __entry->tid)
-+)
-+
-+/*
-+ * Tracepoint for the return value of the kthread stopping:
-+ */
-+TRACE_EVENT(sched_kthread_stop_ret,
-+
-+	TP_PROTO(int ret),
-+
-+	TP_ARGS(ret),
-+
-+	TP_STRUCT__entry(
-+		__field(	int,	ret	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(ret, ret)
-+	),
-+
-+	TP_printk("ret=%d", __entry->ret)
-+)
-+
-+/*
-+ * Tracepoint for waking up a task:
-+ */
-+DECLARE_EVENT_CLASS(sched_wakeup_template,
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
-+	TP_PROTO(struct task_struct *p, int success),
-+
-+	TP_ARGS(p, success),
-+#else
-+	TP_PROTO(struct rq *rq, struct task_struct *p, int success),
-+
-+	TP_ARGS(rq, p, success),
-+#endif
-+
-+	TP_STRUCT__entry(
-+		__array_text(	char,	comm,	TASK_COMM_LEN	)
-+		__field(	pid_t,	tid			)
-+		__field(	int,	prio			)
-+		__field(	int,	success			)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))
-+		__field(	int,	target_cpu		)
-+#endif
-+	),
-+
-+	TP_fast_assign(
-+		tp_memcpy(comm, p->comm, TASK_COMM_LEN)
-+		tp_assign(tid, p->pid)
-+		tp_assign(prio, p->prio)
-+		tp_assign(success, success)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))
-+		tp_assign(target_cpu, task_cpu(p))
-+#endif
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
-+	)
-+	TP_perf_assign(
-+		__perf_task(p)
-+#endif
-+	),
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))
-+	TP_printk("comm=%s tid=%d prio=%d success=%d target_cpu=%03d",
-+		  __entry->comm, __entry->tid, __entry->prio,
-+		  __entry->success, __entry->target_cpu)
-+#else
-+	TP_printk("comm=%s tid=%d prio=%d success=%d",
-+		  __entry->comm, __entry->tid, __entry->prio,
-+		  __entry->success)
-+#endif
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
-+
-+DEFINE_EVENT(sched_wakeup_template, sched_wakeup,
-+	     TP_PROTO(struct task_struct *p, int success),
-+	     TP_ARGS(p, success))
-+
-+/*
-+ * Tracepoint for waking up a new task:
-+ */
-+DEFINE_EVENT(sched_wakeup_template, sched_wakeup_new,
-+	     TP_PROTO(struct task_struct *p, int success),
-+	     TP_ARGS(p, success))
-+
-+#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) */
-+
-+DEFINE_EVENT(sched_wakeup_template, sched_wakeup,
-+	     TP_PROTO(struct rq *rq, struct task_struct *p, int success),
-+	     TP_ARGS(rq, p, success))
-+
-+/*
-+ * Tracepoint for waking up a new task:
-+ */
-+DEFINE_EVENT(sched_wakeup_template, sched_wakeup_new,
-+	     TP_PROTO(struct rq *rq, struct task_struct *p, int success),
-+	     TP_ARGS(rq, p, success))
-+
-+#endif /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) */
-+
-+/*
-+ * Tracepoint for task switches, performed by the scheduler:
-+ */
-+TRACE_EVENT(sched_switch,
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
-+	TP_PROTO(struct task_struct *prev,
-+		 struct task_struct *next),
-+
-+	TP_ARGS(prev, next),
-+#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) */
-+	TP_PROTO(struct rq *rq, struct task_struct *prev,
-+		 struct task_struct *next),
-+
-+	TP_ARGS(rq, prev, next),
-+#endif /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) */
-+
-+	TP_STRUCT__entry(
-+		__array_text(	char,	prev_comm,	TASK_COMM_LEN	)
-+		__field(	pid_t,	prev_tid			)
-+		__field(	int,	prev_prio			)
-+		__field(	long,	prev_state			)
-+		__array_text(	char,	next_comm,	TASK_COMM_LEN	)
-+		__field(	pid_t,	next_tid			)
-+		__field(	int,	next_prio			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_memcpy(next_comm, next->comm, TASK_COMM_LEN)
-+		tp_assign(prev_tid, prev->pid)
-+		tp_assign(prev_prio, prev->prio - MAX_RT_PRIO)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
-+		tp_assign(prev_state, __trace_sched_switch_state(prev))
-+#else
-+		tp_assign(prev_state, prev->state)
-+#endif
-+		tp_memcpy(prev_comm, prev->comm, TASK_COMM_LEN)
-+		tp_assign(next_tid, next->pid)
-+		tp_assign(next_prio, next->prio - MAX_RT_PRIO)
-+	),
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))
-+	TP_printk("prev_comm=%s prev_tid=%d prev_prio=%d prev_state=%s%s ==> next_comm=%s next_tid=%d next_prio=%d",
-+		__entry->prev_comm, __entry->prev_tid, __entry->prev_prio,
-+		__entry->prev_state & (TASK_STATE_MAX-1) ?
-+		  __print_flags(__entry->prev_state & (TASK_STATE_MAX-1), "|",
-+				{ 1, "S"} , { 2, "D" }, { 4, "T" }, { 8, "t" },
-+				{ 16, "Z" }, { 32, "X" }, { 64, "x" },
-+				{ 128, "W" }) : "R",
-+		__entry->prev_state & TASK_STATE_MAX ? "+" : "",
-+		__entry->next_comm, __entry->next_tid, __entry->next_prio)
-+#else
-+	TP_printk("prev_comm=%s prev_tid=%d prev_prio=%d prev_state=%s ==> next_comm=%s next_tid=%d next_prio=%d",
-+		__entry->prev_comm, __entry->prev_tid, __entry->prev_prio,
-+		__entry->prev_state ?
-+		  __print_flags(__entry->prev_state, "|",
-+				{ 1, "S"} , { 2, "D" }, { 4, "T" }, { 8, "t" },
-+				{ 16, "Z" }, { 32, "X" }, { 64, "x" },
-+				{ 128, "W" }) : "R",
-+		__entry->next_comm, __entry->next_tid, __entry->next_prio)
-+#endif
-+)
-+
-+/*
-+ * Tracepoint for a task being migrated:
-+ */
-+TRACE_EVENT(sched_migrate_task,
-+
-+	TP_PROTO(struct task_struct *p, int dest_cpu),
-+
-+	TP_ARGS(p, dest_cpu),
-+
-+	TP_STRUCT__entry(
-+		__array_text(	char,	comm,	TASK_COMM_LEN	)
-+		__field(	pid_t,	tid			)
-+		__field(	int,	prio			)
-+		__field(	int,	orig_cpu		)
-+		__field(	int,	dest_cpu		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_memcpy(comm, p->comm, TASK_COMM_LEN)
-+		tp_assign(tid, p->pid)
-+		tp_assign(prio, p->prio - MAX_RT_PRIO)
-+		tp_assign(orig_cpu, task_cpu(p))
-+		tp_assign(dest_cpu, dest_cpu)
-+	),
-+
-+	TP_printk("comm=%s tid=%d prio=%d orig_cpu=%d dest_cpu=%d",
-+		  __entry->comm, __entry->tid, __entry->prio,
-+		  __entry->orig_cpu, __entry->dest_cpu)
-+)
-+
-+DECLARE_EVENT_CLASS(sched_process_template,
-+
-+	TP_PROTO(struct task_struct *p),
-+
-+	TP_ARGS(p),
-+
-+	TP_STRUCT__entry(
-+		__array_text(	char,	comm,	TASK_COMM_LEN	)
-+		__field(	pid_t,	tid			)
-+		__field(	int,	prio			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_memcpy(comm, p->comm, TASK_COMM_LEN)
-+		tp_assign(tid, p->pid)
-+		tp_assign(prio, p->prio - MAX_RT_PRIO)
-+	),
-+
-+	TP_printk("comm=%s tid=%d prio=%d",
-+		  __entry->comm, __entry->tid, __entry->prio)
-+)
-+
-+/*
-+ * Tracepoint for freeing a task:
-+ */
-+DEFINE_EVENT(sched_process_template, sched_process_free,
-+	     TP_PROTO(struct task_struct *p),
-+	     TP_ARGS(p))
-+
-+
-+/*
-+ * Tracepoint for a task exiting:
-+ */
-+DEFINE_EVENT(sched_process_template, sched_process_exit,
-+	     TP_PROTO(struct task_struct *p),
-+	     TP_ARGS(p))
-+
-+/*
-+ * Tracepoint for waiting on task to unschedule:
-+ */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
-+DEFINE_EVENT(sched_process_template, sched_wait_task,
-+	TP_PROTO(struct task_struct *p),
-+	TP_ARGS(p))
-+#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) */
-+DEFINE_EVENT(sched_process_template, sched_wait_task,
-+	TP_PROTO(struct rq *rq, struct task_struct *p),
-+	TP_ARGS(rq, p))
-+#endif /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) */
-+
-+/*
-+ * Tracepoint for a waiting task:
-+ */
-+TRACE_EVENT(sched_process_wait,
-+
-+	TP_PROTO(struct pid *pid),
-+
-+	TP_ARGS(pid),
-+
-+	TP_STRUCT__entry(
-+		__array_text(	char,	comm,	TASK_COMM_LEN	)
-+		__field(	pid_t,	tid			)
-+		__field(	int,	prio			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_memcpy(comm, current->comm, TASK_COMM_LEN)
-+		tp_assign(tid, pid_nr(pid))
-+		tp_assign(prio, current->prio - MAX_RT_PRIO)
-+	),
-+
-+	TP_printk("comm=%s tid=%d prio=%d",
-+		  __entry->comm, __entry->tid, __entry->prio)
-+)
-+
-+/*
-+ * Tracepoint for do_fork.
-+ * Saving both TID and PID information, especially for the child, allows
-+ * trace analyzers to distinguish between creation of a new process and
-+ * creation of a new thread. Newly created processes will have child_tid
-+ * == child_pid, while creation of a thread yields to child_tid !=
-+ * child_pid.
-+ */
-+TRACE_EVENT(sched_process_fork,
-+
-+	TP_PROTO(struct task_struct *parent, struct task_struct *child),
-+
-+	TP_ARGS(parent, child),
-+
-+	TP_STRUCT__entry(
-+		__array_text(	char,	parent_comm,	TASK_COMM_LEN	)
-+		__field(	pid_t,	parent_tid			)
-+		__field(	pid_t,	parent_pid			)
-+		__array_text(	char,	child_comm,	TASK_COMM_LEN	)
-+		__field(	pid_t,	child_tid			)
-+		__field(	pid_t,	child_pid			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_memcpy(parent_comm, parent->comm, TASK_COMM_LEN)
-+		tp_assign(parent_tid, parent->pid)
-+		tp_assign(parent_pid, parent->tgid)
-+		tp_memcpy(child_comm, child->comm, TASK_COMM_LEN)
-+		tp_assign(child_tid, child->pid)
-+		tp_assign(child_pid, child->tgid)
-+	),
-+
-+	TP_printk("comm=%s tid=%d child_comm=%s child_tid=%d",
-+		__entry->parent_comm, __entry->parent_tid,
-+		__entry->child_comm, __entry->child_tid)
-+)
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33))
-+/*
-+ * Tracepoint for sending a signal:
-+ */
-+TRACE_EVENT(sched_signal_send,
-+
-+	TP_PROTO(int sig, struct task_struct *p),
-+
-+	TP_ARGS(sig, p),
-+
-+	TP_STRUCT__entry(
-+		__field(	int,	sig			)
-+		__array(	char,	comm,	TASK_COMM_LEN	)
-+		__field(	pid_t,	pid			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_memcpy(comm, p->comm, TASK_COMM_LEN)
-+		tp_assign(pid, p->pid)
-+		tp_assign(sig, sig)
-+	),
-+
-+	TP_printk("sig=%d comm=%s pid=%d",
-+		__entry->sig, __entry->comm, __entry->pid)
-+)
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
-+/*
-+ * Tracepoint for exec:
-+ */
-+TRACE_EVENT(sched_process_exec,
-+
-+	TP_PROTO(struct task_struct *p, pid_t old_pid,
-+		 struct linux_binprm *bprm),
-+
-+	TP_ARGS(p, old_pid, bprm),
-+
-+	TP_STRUCT__entry(
-+		__string(	filename,	bprm->filename	)
-+		__field(	pid_t,		tid		)
-+		__field(	pid_t,		old_tid		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(filename, bprm->filename)
-+		tp_assign(tid, p->pid)
-+		tp_assign(old_tid, old_pid)
-+	),
-+
-+	TP_printk("filename=%s tid=%d old_tid=%d", __get_str(filename),
-+		  __entry->tid, __entry->old_tid)
-+)
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))
-+/*
-+ * XXX the below sched_stat tracepoints only apply to SCHED_OTHER/BATCH/IDLE
-+ *     adding sched_stat support to SCHED_FIFO/RR would be welcome.
-+ */
-+DECLARE_EVENT_CLASS(sched_stat_template,
-+
-+	TP_PROTO(struct task_struct *tsk, u64 delay),
-+
-+	TP_ARGS(tsk, delay),
-+
-+	TP_STRUCT__entry(
-+		__array_text( char,	comm,	TASK_COMM_LEN	)
-+		__field( pid_t,	tid			)
-+		__field( u64,	delay			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_memcpy(comm, tsk->comm, TASK_COMM_LEN)
-+		tp_assign(tid,  tsk->pid)
-+		tp_assign(delay, delay)
-+	)
-+	TP_perf_assign(
-+		__perf_count(delay)
-+	),
-+
-+	TP_printk("comm=%s tid=%d delay=%Lu [ns]",
-+			__entry->comm, __entry->tid,
-+			(unsigned long long)__entry->delay)
-+)
-+
-+
-+/*
-+ * Tracepoint for accounting wait time (time the task is runnable
-+ * but not actually running due to scheduler contention).
-+ */
-+DEFINE_EVENT(sched_stat_template, sched_stat_wait,
-+	     TP_PROTO(struct task_struct *tsk, u64 delay),
-+	     TP_ARGS(tsk, delay))
-+
-+/*
-+ * Tracepoint for accounting sleep time (time the task is not runnable,
-+ * including iowait, see below).
-+ */
-+DEFINE_EVENT(sched_stat_template, sched_stat_sleep,
-+	     TP_PROTO(struct task_struct *tsk, u64 delay),
-+	     TP_ARGS(tsk, delay))
-+
-+/*
-+ * Tracepoint for accounting iowait time (time the task is not runnable
-+ * due to waiting on IO to complete).
-+ */
-+DEFINE_EVENT(sched_stat_template, sched_stat_iowait,
-+	     TP_PROTO(struct task_struct *tsk, u64 delay),
-+	     TP_ARGS(tsk, delay))
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+/*
-+ * Tracepoint for accounting blocked time (time the task is in uninterruptible).
-+ */
-+DEFINE_EVENT(sched_stat_template, sched_stat_blocked,
-+	     TP_PROTO(struct task_struct *tsk, u64 delay),
-+	     TP_ARGS(tsk, delay))
-+#endif
-+
-+/*
-+ * Tracepoint for accounting runtime (time the task is executing
-+ * on a CPU).
-+ */
-+TRACE_EVENT(sched_stat_runtime,
-+
-+	TP_PROTO(struct task_struct *tsk, u64 runtime, u64 vruntime),
-+
-+	TP_ARGS(tsk, runtime, vruntime),
-+
-+	TP_STRUCT__entry(
-+		__array_text( char,	comm,	TASK_COMM_LEN	)
-+		__field( pid_t,	tid			)
-+		__field( u64,	runtime			)
-+		__field( u64,	vruntime			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_memcpy(comm, tsk->comm, TASK_COMM_LEN)
-+		tp_assign(tid, tsk->pid)
-+		tp_assign(runtime, runtime)
-+		tp_assign(vruntime, vruntime)
-+	)
-+	TP_perf_assign(
-+		__perf_count(runtime)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
-+		__perf_task(tsk)
-+#endif
-+	),
-+
-+	TP_printk("comm=%s tid=%d runtime=%Lu [ns] vruntime=%Lu [ns]",
-+			__entry->comm, __entry->tid,
-+			(unsigned long long)__entry->runtime,
-+			(unsigned long long)__entry->vruntime)
-+)
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
-+/*
-+ * Tracepoint for showing priority inheritance modifying a tasks
-+ * priority.
-+ */
-+TRACE_EVENT(sched_pi_setprio,
-+
-+	TP_PROTO(struct task_struct *tsk, int newprio),
-+
-+	TP_ARGS(tsk, newprio),
-+
-+	TP_STRUCT__entry(
-+		__array_text( char,	comm,	TASK_COMM_LEN	)
-+		__field( pid_t,	tid			)
-+		__field( int,	oldprio			)
-+		__field( int,	newprio			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_memcpy(comm, tsk->comm, TASK_COMM_LEN)
-+		tp_assign(tid, tsk->pid)
-+		tp_assign(oldprio, tsk->prio - MAX_RT_PRIO)
-+		tp_assign(newprio, newprio - MAX_RT_PRIO)
-+	),
-+
-+	TP_printk("comm=%s tid=%d oldprio=%d newprio=%d",
-+			__entry->comm, __entry->tid,
-+			__entry->oldprio, __entry->newprio)
-+)
-+#endif
-+
-+#endif /* _TRACE_SCHED_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/scsi.h
-@@ -0,0 +1,406 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM scsi
-+
-+#if !defined(_TRACE_SCSI_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_SCSI_H
-+
-+#include <scsi/scsi_cmnd.h>
-+#include <scsi/scsi_host.h>
-+#include <linux/tracepoint.h>
-+#include <linux/trace_seq.h>
-+#include <linux/version.h>
-+
-+#ifndef _TRACE_SCSI_DEF
-+#define _TRACE_SCSI_DEF
-+
-+#define scsi_opcode_name(opcode)	{ opcode, #opcode }
-+#define show_opcode_name(val)					\
-+	__print_symbolic(val,					\
-+		scsi_opcode_name(TEST_UNIT_READY),		\
-+		scsi_opcode_name(REZERO_UNIT),			\
-+		scsi_opcode_name(REQUEST_SENSE),		\
-+		scsi_opcode_name(FORMAT_UNIT),			\
-+		scsi_opcode_name(READ_BLOCK_LIMITS),		\
-+		scsi_opcode_name(REASSIGN_BLOCKS),		\
-+		scsi_opcode_name(INITIALIZE_ELEMENT_STATUS),	\
-+		scsi_opcode_name(READ_6),			\
-+		scsi_opcode_name(WRITE_6),			\
-+		scsi_opcode_name(SEEK_6),			\
-+		scsi_opcode_name(READ_REVERSE),			\
-+		scsi_opcode_name(WRITE_FILEMARKS),		\
-+		scsi_opcode_name(SPACE),			\
-+		scsi_opcode_name(INQUIRY),			\
-+		scsi_opcode_name(RECOVER_BUFFERED_DATA),	\
-+		scsi_opcode_name(MODE_SELECT),			\
-+		scsi_opcode_name(RESERVE),			\
-+		scsi_opcode_name(RELEASE),			\
-+		scsi_opcode_name(COPY),				\
-+		scsi_opcode_name(ERASE),			\
-+		scsi_opcode_name(MODE_SENSE),			\
-+		scsi_opcode_name(START_STOP),			\
-+		scsi_opcode_name(RECEIVE_DIAGNOSTIC),		\
-+		scsi_opcode_name(SEND_DIAGNOSTIC),		\
-+		scsi_opcode_name(ALLOW_MEDIUM_REMOVAL),		\
-+		scsi_opcode_name(SET_WINDOW),			\
-+		scsi_opcode_name(READ_CAPACITY),		\
-+		scsi_opcode_name(READ_10),			\
-+		scsi_opcode_name(WRITE_10),			\
-+		scsi_opcode_name(SEEK_10),			\
-+		scsi_opcode_name(POSITION_TO_ELEMENT),		\
-+		scsi_opcode_name(WRITE_VERIFY),			\
-+		scsi_opcode_name(VERIFY),			\
-+		scsi_opcode_name(SEARCH_HIGH),			\
-+		scsi_opcode_name(SEARCH_EQUAL),			\
-+		scsi_opcode_name(SEARCH_LOW),			\
-+		scsi_opcode_name(SET_LIMITS),			\
-+		scsi_opcode_name(PRE_FETCH),			\
-+		scsi_opcode_name(READ_POSITION),		\
-+		scsi_opcode_name(SYNCHRONIZE_CACHE),		\
-+		scsi_opcode_name(LOCK_UNLOCK_CACHE),		\
-+		scsi_opcode_name(READ_DEFECT_DATA),		\
-+		scsi_opcode_name(MEDIUM_SCAN),			\
-+		scsi_opcode_name(COMPARE),			\
-+		scsi_opcode_name(COPY_VERIFY),			\
-+		scsi_opcode_name(WRITE_BUFFER),			\
-+		scsi_opcode_name(READ_BUFFER),			\
-+		scsi_opcode_name(UPDATE_BLOCK),			\
-+		scsi_opcode_name(READ_LONG),			\
-+		scsi_opcode_name(WRITE_LONG),			\
-+		scsi_opcode_name(CHANGE_DEFINITION),		\
-+		scsi_opcode_name(WRITE_SAME),			\
-+		scsi_opcode_name(UNMAP),			\
-+		scsi_opcode_name(READ_TOC),			\
-+		scsi_opcode_name(LOG_SELECT),			\
-+		scsi_opcode_name(LOG_SENSE),			\
-+		scsi_opcode_name(XDWRITEREAD_10),		\
-+		scsi_opcode_name(MODE_SELECT_10),		\
-+		scsi_opcode_name(RESERVE_10),			\
-+		scsi_opcode_name(RELEASE_10),			\
-+		scsi_opcode_name(MODE_SENSE_10),		\
-+		scsi_opcode_name(PERSISTENT_RESERVE_IN),	\
-+		scsi_opcode_name(PERSISTENT_RESERVE_OUT),	\
-+		scsi_opcode_name(VARIABLE_LENGTH_CMD),		\
-+		scsi_opcode_name(REPORT_LUNS),			\
-+		scsi_opcode_name(MAINTENANCE_IN),		\
-+		scsi_opcode_name(MAINTENANCE_OUT),		\
-+		scsi_opcode_name(MOVE_MEDIUM),			\
-+		scsi_opcode_name(EXCHANGE_MEDIUM),		\
-+		scsi_opcode_name(READ_12),			\
-+		scsi_opcode_name(WRITE_12),			\
-+		scsi_opcode_name(WRITE_VERIFY_12),		\
-+		scsi_opcode_name(SEARCH_HIGH_12),		\
-+		scsi_opcode_name(SEARCH_EQUAL_12),		\
-+		scsi_opcode_name(SEARCH_LOW_12),		\
-+		scsi_opcode_name(READ_ELEMENT_STATUS),		\
-+		scsi_opcode_name(SEND_VOLUME_TAG),		\
-+		scsi_opcode_name(WRITE_LONG_2),			\
-+		scsi_opcode_name(READ_16),			\
-+		scsi_opcode_name(WRITE_16),			\
-+		scsi_opcode_name(VERIFY_16),			\
-+		scsi_opcode_name(WRITE_SAME_16),		\
-+		scsi_opcode_name(SERVICE_ACTION_IN),		\
-+		scsi_opcode_name(SAI_READ_CAPACITY_16),		\
-+		scsi_opcode_name(SAI_GET_LBA_STATUS),		\
-+		scsi_opcode_name(MI_REPORT_TARGET_PGS),		\
-+		scsi_opcode_name(MO_SET_TARGET_PGS),		\
-+		scsi_opcode_name(READ_32),			\
-+		scsi_opcode_name(WRITE_32),			\
-+		scsi_opcode_name(WRITE_SAME_32),		\
-+		scsi_opcode_name(ATA_16),			\
-+		scsi_opcode_name(ATA_12))
-+
-+#define scsi_hostbyte_name(result)	{ result, #result }
-+#define show_hostbyte_name(val)					\
-+	__print_symbolic(val,					\
-+		scsi_hostbyte_name(DID_OK),			\
-+		scsi_hostbyte_name(DID_NO_CONNECT),		\
-+		scsi_hostbyte_name(DID_BUS_BUSY),		\
-+		scsi_hostbyte_name(DID_TIME_OUT),		\
-+		scsi_hostbyte_name(DID_BAD_TARGET),		\
-+		scsi_hostbyte_name(DID_ABORT),			\
-+		scsi_hostbyte_name(DID_PARITY),			\
-+		scsi_hostbyte_name(DID_ERROR),			\
-+		scsi_hostbyte_name(DID_RESET),			\
-+		scsi_hostbyte_name(DID_BAD_INTR),		\
-+		scsi_hostbyte_name(DID_PASSTHROUGH),		\
-+		scsi_hostbyte_name(DID_SOFT_ERROR),		\
-+		scsi_hostbyte_name(DID_IMM_RETRY),		\
-+		scsi_hostbyte_name(DID_REQUEUE),		\
-+		scsi_hostbyte_name(DID_TRANSPORT_DISRUPTED),	\
-+		scsi_hostbyte_name(DID_TRANSPORT_FAILFAST))
-+
-+#define scsi_driverbyte_name(result)	{ result, #result }
-+#define show_driverbyte_name(val)				\
-+	__print_symbolic(val,					\
-+		scsi_driverbyte_name(DRIVER_OK),		\
-+		scsi_driverbyte_name(DRIVER_BUSY),		\
-+		scsi_driverbyte_name(DRIVER_SOFT),		\
-+		scsi_driverbyte_name(DRIVER_MEDIA),		\
-+		scsi_driverbyte_name(DRIVER_ERROR),		\
-+		scsi_driverbyte_name(DRIVER_INVALID),		\
-+		scsi_driverbyte_name(DRIVER_TIMEOUT),		\
-+		scsi_driverbyte_name(DRIVER_HARD),		\
-+		scsi_driverbyte_name(DRIVER_SENSE))
-+
-+#define scsi_msgbyte_name(result)	{ result, #result }
-+#define show_msgbyte_name(val)					\
-+	__print_symbolic(val,					\
-+		scsi_msgbyte_name(COMMAND_COMPLETE),		\
-+		scsi_msgbyte_name(EXTENDED_MESSAGE),		\
-+		scsi_msgbyte_name(SAVE_POINTERS),		\
-+		scsi_msgbyte_name(RESTORE_POINTERS),		\
-+		scsi_msgbyte_name(DISCONNECT),			\
-+		scsi_msgbyte_name(INITIATOR_ERROR),		\
-+		scsi_msgbyte_name(ABORT_TASK_SET),		\
-+		scsi_msgbyte_name(MESSAGE_REJECT),		\
-+		scsi_msgbyte_name(NOP),				\
-+		scsi_msgbyte_name(MSG_PARITY_ERROR),		\
-+		scsi_msgbyte_name(LINKED_CMD_COMPLETE),		\
-+		scsi_msgbyte_name(LINKED_FLG_CMD_COMPLETE),	\
-+		scsi_msgbyte_name(TARGET_RESET),		\
-+		scsi_msgbyte_name(ABORT_TASK),			\
-+		scsi_msgbyte_name(CLEAR_TASK_SET),		\
-+		scsi_msgbyte_name(INITIATE_RECOVERY),		\
-+		scsi_msgbyte_name(RELEASE_RECOVERY),		\
-+		scsi_msgbyte_name(CLEAR_ACA),			\
-+		scsi_msgbyte_name(LOGICAL_UNIT_RESET),		\
-+		scsi_msgbyte_name(SIMPLE_QUEUE_TAG),		\
-+		scsi_msgbyte_name(HEAD_OF_QUEUE_TAG),		\
-+		scsi_msgbyte_name(ORDERED_QUEUE_TAG),		\
-+		scsi_msgbyte_name(IGNORE_WIDE_RESIDUE),		\
-+		scsi_msgbyte_name(ACA),				\
-+		scsi_msgbyte_name(QAS_REQUEST),			\
-+		scsi_msgbyte_name(BUS_DEVICE_RESET),		\
-+		scsi_msgbyte_name(ABORT))
-+
-+#define scsi_statusbyte_name(result)	{ result, #result }
-+#define show_statusbyte_name(val)				\
-+	__print_symbolic(val,					\
-+		scsi_statusbyte_name(SAM_STAT_GOOD),		\
-+		scsi_statusbyte_name(SAM_STAT_CHECK_CONDITION),	\
-+		scsi_statusbyte_name(SAM_STAT_CONDITION_MET),	\
-+		scsi_statusbyte_name(SAM_STAT_BUSY),		\
-+		scsi_statusbyte_name(SAM_STAT_INTERMEDIATE),	\
-+		scsi_statusbyte_name(SAM_STAT_INTERMEDIATE_CONDITION_MET), \
-+		scsi_statusbyte_name(SAM_STAT_RESERVATION_CONFLICT),	\
-+		scsi_statusbyte_name(SAM_STAT_COMMAND_TERMINATED),	\
-+		scsi_statusbyte_name(SAM_STAT_TASK_SET_FULL),	\
-+		scsi_statusbyte_name(SAM_STAT_ACA_ACTIVE),	\
-+		scsi_statusbyte_name(SAM_STAT_TASK_ABORTED))
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+#define scsi_prot_op_name(result)	{ result, #result }
-+#define show_prot_op_name(val)					\
-+	__print_symbolic(val,					\
-+		scsi_prot_op_name(SCSI_PROT_NORMAL),		\
-+		scsi_prot_op_name(SCSI_PROT_READ_INSERT),	\
-+		scsi_prot_op_name(SCSI_PROT_WRITE_STRIP),	\
-+		scsi_prot_op_name(SCSI_PROT_READ_STRIP),	\
-+		scsi_prot_op_name(SCSI_PROT_WRITE_INSERT),	\
-+		scsi_prot_op_name(SCSI_PROT_READ_PASS),		\
-+		scsi_prot_op_name(SCSI_PROT_WRITE_PASS))
-+#endif
-+
-+const char *scsi_trace_parse_cdb(struct trace_seq*, unsigned char*, int);
-+#define __parse_cdb(cdb, len) scsi_trace_parse_cdb(p, cdb, len)
-+#endif
-+
-+TRACE_EVENT(scsi_dispatch_cmd_start,
-+
-+	TP_PROTO(struct scsi_cmnd *cmd),
-+
-+	TP_ARGS(cmd),
-+
-+	TP_STRUCT__entry(
-+		__field( unsigned int,	host_no	)
-+		__field( unsigned int,	channel	)
-+		__field( unsigned int,	id	)
-+		__field( unsigned int,	lun	)
-+		__field( unsigned int,	opcode	)
-+		__field( unsigned int,	cmd_len )
-+		__field( unsigned int,	data_sglen )
-+		__field( unsigned int,	prot_sglen )
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+		__field( unsigned char,	prot_op )
-+#endif
-+		__dynamic_array_hex(unsigned char,	cmnd, cmd->cmd_len)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(host_no, cmd->device->host->host_no)
-+		tp_assign(channel, cmd->device->channel)
-+		tp_assign(id, cmd->device->id)
-+		tp_assign(lun, cmd->device->lun)
-+		tp_assign(opcode, cmd->cmnd[0])
-+		tp_assign(cmd_len, cmd->cmd_len)
-+		tp_assign(data_sglen, scsi_sg_count(cmd))
-+		tp_assign(prot_sglen, scsi_prot_sg_count(cmd))
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+		tp_assign(prot_op, scsi_get_prot_op(cmd))
-+#endif
-+		tp_memcpy_dyn(cmnd, cmd->cmnd)
-+	),
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+	TP_printk("host_no=%u channel=%u id=%u lun=%u data_sgl=%u prot_sgl=%u" \
-+		  " prot_op=%s cmnd=(%s %s raw=%s)",
-+#else
-+	TP_printk("host_no=%u channel=%u id=%u lun=%u data_sgl=%u prot_sgl=%u" \
-+		  " cmnd=(%s %s raw=%s)",
-+#endif
-+		  __entry->host_no, __entry->channel, __entry->id,
-+		  __entry->lun, __entry->data_sglen, __entry->prot_sglen,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+		  show_prot_op_name(__entry->prot_op),
-+#endif
-+		  show_opcode_name(__entry->opcode),
-+		  __parse_cdb(__get_dynamic_array(cmnd), __entry->cmd_len),
-+		  __print_hex(__get_dynamic_array(cmnd), __entry->cmd_len))
-+)
-+
-+TRACE_EVENT(scsi_dispatch_cmd_error,
-+
-+	TP_PROTO(struct scsi_cmnd *cmd, int rtn),
-+
-+	TP_ARGS(cmd, rtn),
-+
-+	TP_STRUCT__entry(
-+		__field( unsigned int,	host_no	)
-+		__field( unsigned int,	channel	)
-+		__field( unsigned int,	id	)
-+		__field( unsigned int,	lun	)
-+		__field( int,		rtn	)
-+		__field( unsigned int,	opcode	)
-+		__field( unsigned int,	cmd_len )
-+		__field( unsigned int,	data_sglen )
-+		__field( unsigned int,	prot_sglen )
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+		__field( unsigned char,	prot_op )
-+#endif
-+		__dynamic_array_hex(unsigned char,	cmnd, cmd->cmd_len)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(host_no, cmd->device->host->host_no)
-+		tp_assign(channel, cmd->device->channel)
-+		tp_assign(id, cmd->device->id)
-+		tp_assign(lun, cmd->device->lun)
-+		tp_assign(rtn, rtn)
-+		tp_assign(opcode, cmd->cmnd[0])
-+		tp_assign(cmd_len, cmd->cmd_len)
-+		tp_assign(data_sglen, scsi_sg_count(cmd))
-+		tp_assign(prot_sglen, scsi_prot_sg_count(cmd))
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+		tp_assign(prot_op, scsi_get_prot_op(cmd))
-+#endif
-+		tp_memcpy_dyn(cmnd, cmd->cmnd)
-+	),
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+	TP_printk("host_no=%u channel=%u id=%u lun=%u data_sgl=%u prot_sgl=%u" \
-+		  " prot_op=%s cmnd=(%s %s raw=%s) rtn=%d",
-+#else
-+	TP_printk("host_no=%u channel=%u id=%u lun=%u data_sgl=%u prot_sgl=%u" \
-+		  " cmnd=(%s %s raw=%s) rtn=%d",
-+#endif
-+		  __entry->host_no, __entry->channel, __entry->id,
-+		  __entry->lun, __entry->data_sglen, __entry->prot_sglen,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+		  show_prot_op_name(__entry->prot_op),
-+#endif
-+		  show_opcode_name(__entry->opcode),
-+		  __parse_cdb(__get_dynamic_array(cmnd), __entry->cmd_len),
-+		  __print_hex(__get_dynamic_array(cmnd), __entry->cmd_len),
-+		  __entry->rtn)
-+)
-+
-+DECLARE_EVENT_CLASS(scsi_cmd_done_timeout_template,
-+
-+	TP_PROTO(struct scsi_cmnd *cmd),
-+
-+	TP_ARGS(cmd),
-+
-+	TP_STRUCT__entry(
-+		__field( unsigned int,	host_no	)
-+		__field( unsigned int,	channel	)
-+		__field( unsigned int,	id	)
-+		__field( unsigned int,	lun	)
-+		__field( int,		result	)
-+		__field( unsigned int,	opcode	)
-+		__field( unsigned int,	cmd_len )
-+		__field( unsigned int,	data_sglen )
-+		__field( unsigned int,	prot_sglen )
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+		__field( unsigned char,	prot_op )
-+#endif
-+		__dynamic_array_hex(unsigned char,	cmnd, cmd->cmd_len)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(host_no, cmd->device->host->host_no)
-+		tp_assign(channel, cmd->device->channel)
-+		tp_assign(id, cmd->device->id)
-+		tp_assign(lun, cmd->device->lun)
-+		tp_assign(result, cmd->result)
-+		tp_assign(opcode, cmd->cmnd[0])
-+		tp_assign(cmd_len, cmd->cmd_len)
-+		tp_assign(data_sglen, scsi_sg_count(cmd))
-+		tp_assign(prot_sglen, scsi_prot_sg_count(cmd))
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+		tp_assign(prot_op, scsi_get_prot_op(cmd))
-+#endif
-+		tp_memcpy_dyn(cmnd, cmd->cmnd)
-+	),
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+	TP_printk("host_no=%u channel=%u id=%u lun=%u data_sgl=%u " \
-+		  "prot_sgl=%u prot_op=%s cmnd=(%s %s raw=%s) result=(driver=" \
-+		  "%s host=%s message=%s status=%s)",
-+#else
-+	TP_printk("host_no=%u channel=%u id=%u lun=%u data_sgl=%u " \
-+		  "prot_sgl=%u cmnd=(%s %s raw=%s) result=(driver=%s host=%s " \
-+		  "message=%s status=%s)",
-+#endif
-+		  __entry->host_no, __entry->channel, __entry->id,
-+		  __entry->lun, __entry->data_sglen, __entry->prot_sglen,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-+		  show_prot_op_name(__entry->prot_op),
-+#endif
-+		  show_opcode_name(__entry->opcode),
-+		  __parse_cdb(__get_dynamic_array(cmnd), __entry->cmd_len),
-+		  __print_hex(__get_dynamic_array(cmnd), __entry->cmd_len),
-+		  show_driverbyte_name(((__entry->result) >> 24) & 0xff),
-+		  show_hostbyte_name(((__entry->result) >> 16) & 0xff),
-+		  show_msgbyte_name(((__entry->result) >> 8) & 0xff),
-+		  show_statusbyte_name(__entry->result & 0xff))
-+)
-+
-+DEFINE_EVENT(scsi_cmd_done_timeout_template, scsi_dispatch_cmd_done,
-+	     TP_PROTO(struct scsi_cmnd *cmd),
-+	     TP_ARGS(cmd))
-+
-+DEFINE_EVENT(scsi_cmd_done_timeout_template, scsi_dispatch_cmd_timeout,
-+	     TP_PROTO(struct scsi_cmnd *cmd),
-+	     TP_ARGS(cmd))
-+
-+TRACE_EVENT(scsi_eh_wakeup,
-+
-+	TP_PROTO(struct Scsi_Host *shost),
-+
-+	TP_ARGS(shost),
-+
-+	TP_STRUCT__entry(
-+		__field( unsigned int,	host_no	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(host_no, shost->host_no)
-+	),
-+
-+	TP_printk("host_no=%u", __entry->host_no)
-+)
-+
-+#endif /*  _TRACE_SCSI_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/signal.h
-@@ -0,0 +1,202 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM signal
-+
-+#if !defined(_TRACE_SIGNAL_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_SIGNAL_H
-+
-+#include <linux/tracepoint.h>
-+#include <linux/version.h>
-+
-+#ifndef _TRACE_SIGNAL_DEF
-+#define _TRACE_SIGNAL_DEF
-+#include <linux/signal.h>
-+#include <linux/sched.h>
-+#undef TP_STORE_SIGINFO
-+#define TP_STORE_SIGINFO(info)					\
-+		tp_assign(errno,				\
-+			(info == SEND_SIG_NOINFO || info == SEND_SIG_FORCED || info == SEND_SIG_PRIV) ? \
-+			0 :					\
-+			info->si_errno)				\
-+		tp_assign(code,					\
-+			(info == SEND_SIG_NOINFO || info == SEND_SIG_FORCED) ? \
-+			SI_USER : 				\
-+			((info == SEND_SIG_PRIV) ? SI_KERNEL : info->si_code))
-+#endif /* _TRACE_SIGNAL_DEF */
-+
-+/**
-+ * signal_generate - called when a signal is generated
-+ * @sig: signal number
-+ * @info: pointer to struct siginfo
-+ * @task: pointer to struct task_struct
-+ *
-+ * Current process sends a 'sig' signal to 'task' process with
-+ * 'info' siginfo. If 'info' is SEND_SIG_NOINFO or SEND_SIG_PRIV,
-+ * 'info' is not a pointer and you can't access its field. Instead,
-+ * SEND_SIG_NOINFO means that si_code is SI_USER, and SEND_SIG_PRIV
-+ * means that si_code is SI_KERNEL.
-+ */
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0))
-+TRACE_EVENT(signal_generate,
-+
-+	TP_PROTO(int sig, struct siginfo *info, struct task_struct *task),
-+
-+	TP_ARGS(sig, info, task),
-+
-+	TP_STRUCT__entry(
-+		__field(	int,	sig			)
-+		__field(	int,	errno			)
-+		__field(	int,	code			)
-+		__array_text(	char,	comm,	TASK_COMM_LEN	)
-+		__field(	pid_t,	pid			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(sig, sig)
-+		TP_STORE_SIGINFO(info)
-+		tp_memcpy(comm, task->comm, TASK_COMM_LEN)
-+		tp_assign(pid, task->pid)
-+	),
-+
-+	TP_printk("sig=%d errno=%d code=%d comm=%s pid=%d",
-+		  __entry->sig, __entry->errno, __entry->code,
-+		  __entry->comm, __entry->pid)
-+)
-+#else
-+TRACE_EVENT(signal_generate,
-+
-+	TP_PROTO(int sig, struct siginfo *info, struct task_struct *task,
-+			int group, int result),
-+
-+	TP_ARGS(sig, info, task, group, result),
-+
-+	TP_STRUCT__entry(
-+		__field(	int,	sig			)
-+		__field(	int,	errno			)
-+		__field(	int,	code			)
-+		__array_text(	char,	comm,	TASK_COMM_LEN	)
-+		__field(	pid_t,	pid			)
-+		__field(	int,	group			)
-+		__field(	int,	result			)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(sig, sig)
-+		TP_STORE_SIGINFO(info)
-+		tp_memcpy(comm, task->comm, TASK_COMM_LEN)
-+		tp_assign(pid, task->pid)
-+		tp_assign(group, group)
-+		tp_assign(result, result)
-+	),
-+
-+	TP_printk("sig=%d errno=%d code=%d comm=%s pid=%d grp=%d res=%d",
-+		  __entry->sig, __entry->errno, __entry->code,
-+		  __entry->comm, __entry->pid, __entry->group,
-+		  __entry->result)
-+)
-+#endif
-+
-+/**
-+ * signal_deliver - called when a signal is delivered
-+ * @sig: signal number
-+ * @info: pointer to struct siginfo
-+ * @ka: pointer to struct k_sigaction
-+ *
-+ * A 'sig' signal is delivered to current process with 'info' siginfo,
-+ * and it will be handled by 'ka'. ka->sa.sa_handler can be SIG_IGN or
-+ * SIG_DFL.
-+ * Note that some signals reported by signal_generate tracepoint can be
-+ * lost, ignored or modified (by debugger) before hitting this tracepoint.
-+ * This means, this can show which signals are actually delivered, but
-+ * matching generated signals and delivered signals may not be correct.
-+ */
-+TRACE_EVENT(signal_deliver,
-+
-+	TP_PROTO(int sig, struct siginfo *info, struct k_sigaction *ka),
-+
-+	TP_ARGS(sig, info, ka),
-+
-+	TP_STRUCT__entry(
-+		__field(	int,		sig		)
-+		__field(	int,		errno		)
-+		__field(	int,		code		)
-+		__field(	unsigned long,	sa_handler	)
-+		__field(	unsigned long,	sa_flags	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(sig, sig)
-+		TP_STORE_SIGINFO(info)
-+		tp_assign(sa_handler, (unsigned long)ka->sa.sa_handler)
-+		tp_assign(sa_flags, ka->sa.sa_flags)
-+	),
-+
-+	TP_printk("sig=%d errno=%d code=%d sa_handler=%lx sa_flags=%lx",
-+		  __entry->sig, __entry->errno, __entry->code,
-+		  __entry->sa_handler, __entry->sa_flags)
-+)
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0))
-+DECLARE_EVENT_CLASS(signal_queue_overflow,
-+
-+	TP_PROTO(int sig, int group, struct siginfo *info),
-+
-+	TP_ARGS(sig, group, info),
-+
-+	TP_STRUCT__entry(
-+		__field(	int,	sig	)
-+		__field(	int,	group	)
-+		__field(	int,	errno	)
-+		__field(	int,	code	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(sig, sig)
-+		tp_assign(group, group)
-+		TP_STORE_SIGINFO(info)
-+	),
-+
-+	TP_printk("sig=%d group=%d errno=%d code=%d",
-+		  __entry->sig, __entry->group, __entry->errno, __entry->code)
-+)
-+
-+/**
-+ * signal_overflow_fail - called when signal queue is overflow
-+ * @sig: signal number
-+ * @group: signal to process group or not (bool)
-+ * @info: pointer to struct siginfo
-+ *
-+ * Kernel fails to generate 'sig' signal with 'info' siginfo, because
-+ * siginfo queue is overflow, and the signal is dropped.
-+ * 'group' is not 0 if the signal will be sent to a process group.
-+ * 'sig' is always one of RT signals.
-+ */
-+DEFINE_EVENT(signal_queue_overflow, signal_overflow_fail,
-+
-+	TP_PROTO(int sig, int group, struct siginfo *info),
-+
-+	TP_ARGS(sig, group, info)
-+)
-+
-+/**
-+ * signal_lose_info - called when siginfo is lost
-+ * @sig: signal number
-+ * @group: signal to process group or not (bool)
-+ * @info: pointer to struct siginfo
-+ *
-+ * Kernel generates 'sig' signal but loses 'info' siginfo, because siginfo
-+ * queue is overflow.
-+ * 'group' is not 0 if the signal will be sent to a process group.
-+ * 'sig' is always one of non-RT signals.
-+ */
-+DEFINE_EVENT(signal_queue_overflow, signal_lose_info,
-+
-+	TP_PROTO(int sig, int group, struct siginfo *info),
-+
-+	TP_ARGS(sig, group, info)
-+)
-+#endif
-+
-+#endif /* _TRACE_SIGNAL_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/skb.h
-@@ -0,0 +1,84 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM skb
-+
-+#if !defined(_TRACE_SKB_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_SKB_H
-+
-+#include <linux/skbuff.h>
-+#include <linux/netdevice.h>
-+#include <linux/tracepoint.h>
-+#include <linux/version.h>
-+
-+/*
-+ * Tracepoint for free an sk_buff:
-+ */
-+TRACE_EVENT_MAP(kfree_skb,
-+
-+	skb_kfree,
-+
-+	TP_PROTO(struct sk_buff *skb, void *location),
-+
-+	TP_ARGS(skb, location),
-+
-+	TP_STRUCT__entry(
-+		__field(	void *,		skbaddr		)
-+		__field(	void *,		location	)
-+		__field(	unsigned short,	protocol	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(skbaddr, skb)
-+		tp_assign(location, location)
-+		tp_assign(protocol, ntohs(skb->protocol))
-+	),
-+
-+	TP_printk("skbaddr=%p protocol=%u location=%p",
-+		__entry->skbaddr, __entry->protocol, __entry->location)
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
-+TRACE_EVENT_MAP(consume_skb,
-+
-+	skb_consume,
-+
-+	TP_PROTO(struct sk_buff *skb),
-+
-+	TP_ARGS(skb),
-+
-+	TP_STRUCT__entry(
-+		__field(	void *,	skbaddr	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(skbaddr, skb)
-+	),
-+
-+	TP_printk("skbaddr=%p", __entry->skbaddr)
-+)
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))
-+TRACE_EVENT(skb_copy_datagram_iovec,
-+
-+	TP_PROTO(const struct sk_buff *skb, int len),
-+
-+	TP_ARGS(skb, len),
-+
-+	TP_STRUCT__entry(
-+		__field(	const void *,		skbaddr		)
-+		__field(	int,			len		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(skbaddr, skb)
-+		tp_assign(len, len)
-+	),
-+
-+	TP_printk("skbaddr=%p len=%d", __entry->skbaddr, __entry->len)
-+)
-+#endif
-+
-+#endif /* _TRACE_SKB_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/sock.h
-@@ -0,0 +1,68 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM sock
-+
-+#if !defined(_TRACE_SOCK_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_SOCK_H
-+
-+#include <net/sock.h>
-+#include <linux/tracepoint.h>
-+
-+TRACE_EVENT(sock_rcvqueue_full,
-+
-+	TP_PROTO(struct sock *sk, struct sk_buff *skb),
-+
-+	TP_ARGS(sk, skb),
-+
-+	TP_STRUCT__entry(
-+		__field(int, rmem_alloc)
-+		__field(unsigned int, truesize)
-+		__field(int, sk_rcvbuf)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(rmem_alloc, atomic_read(&sk->sk_rmem_alloc))
-+		tp_assign(truesize, skb->truesize)
-+		tp_assign(sk_rcvbuf, sk->sk_rcvbuf)
-+	),
-+
-+	TP_printk("rmem_alloc=%d truesize=%u sk_rcvbuf=%d",
-+		__entry->rmem_alloc, __entry->truesize, __entry->sk_rcvbuf)
-+)
-+
-+TRACE_EVENT(sock_exceed_buf_limit,
-+
-+	TP_PROTO(struct sock *sk, struct proto *prot, long allocated),
-+
-+	TP_ARGS(sk, prot, allocated),
-+
-+	TP_STRUCT__entry(
-+		__string(name, prot->name)
-+		__array(long, sysctl_mem, 3)
-+		__field(long, allocated)
-+		__field(int, sysctl_rmem)
-+		__field(int, rmem_alloc)
-+	),
-+
-+	TP_fast_assign(
-+		tp_strcpy(name, prot->name)
-+		tp_memcpy(sysctl_mem, prot->sysctl_mem, 3 * sizeof(long))
-+		tp_assign(allocated, allocated)
-+		tp_assign(sysctl_rmem, prot->sysctl_rmem[0])
-+		tp_assign(rmem_alloc, atomic_read(&sk->sk_rmem_alloc))
-+	),
-+
-+	TP_printk("proto:%s sysctl_mem=%ld,%ld,%ld allocated=%ld "
-+		"sysctl_rmem=%d rmem_alloc=%d",
-+		__entry->name,
-+		__entry->sysctl_mem[0],
-+		__entry->sysctl_mem[1],
-+		__entry->sysctl_mem[2],
-+		__entry->allocated,
-+		__entry->sysctl_rmem,
-+		__entry->rmem_alloc)
-+)
-+
-+#endif /* _TRACE_SOCK_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/sunrpc.h
-@@ -0,0 +1,177 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM sunrpc
-+
-+#if !defined(_TRACE_SUNRPC_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_SUNRPC_H
-+
-+#include <linux/sunrpc/sched.h>
-+#include <linux/sunrpc/clnt.h>
-+#include <linux/tracepoint.h>
-+
-+DECLARE_EVENT_CLASS(rpc_task_status,
-+
-+	TP_PROTO(struct rpc_task *task),
-+
-+	TP_ARGS(task),
-+
-+	TP_STRUCT__entry(
-+		__field(const struct rpc_task *, task)
-+		__field(const struct rpc_clnt *, clnt)
-+		__field(int, status)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(task, task)
-+		tp_assign(clnt, task->tk_client)
-+		tp_assign(status, task->tk_status)
-+	),
-+
-+	TP_printk("task:%p@%p, status %d",__entry->task, __entry->clnt, __entry->status)
-+)
-+
-+DEFINE_EVENT(rpc_task_status, rpc_call_status,
-+	TP_PROTO(struct rpc_task *task),
-+
-+	TP_ARGS(task)
-+)
-+
-+DEFINE_EVENT(rpc_task_status, rpc_bind_status,
-+	TP_PROTO(struct rpc_task *task),
-+
-+	TP_ARGS(task)
-+)
-+
-+TRACE_EVENT(rpc_connect_status,
-+	TP_PROTO(struct rpc_task *task, int status),
-+
-+	TP_ARGS(task, status),
-+
-+	TP_STRUCT__entry(
-+		__field(const struct rpc_task *, task)
-+		__field(const struct rpc_clnt *, clnt)
-+		__field(int, status)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(task, task)
-+		tp_assign(clnt, task->tk_client)
-+		tp_assign(status, status)
-+	),
-+
-+	TP_printk("task:%p@%p, status %d",__entry->task, __entry->clnt, __entry->status)
-+)
-+
-+DECLARE_EVENT_CLASS(rpc_task_running,
-+
-+	TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action),
-+
-+	TP_ARGS(clnt, task, action),
-+
-+	TP_STRUCT__entry(
-+		__field(const struct rpc_clnt *, clnt)
-+		__field(const struct rpc_task *, task)
-+		__field(const void *, action)
-+		__field(unsigned long, runstate)
-+		__field(int, status)
-+		__field(unsigned short, flags)
-+		),
-+
-+	TP_fast_assign(
-+		tp_assign(clnt, clnt)
-+		tp_assign(task, task)
-+		tp_assign(action, action)
-+		tp_assign(runstate, task->tk_runstate)
-+		tp_assign(status, task->tk_status)
-+		tp_assign(flags, task->tk_flags)
-+		),
-+
-+	TP_printk("task:%p@%p flags=%4.4x state=%4.4lx status=%d action=%pf",
-+		__entry->task,
-+		__entry->clnt,
-+		__entry->flags,
-+		__entry->runstate,
-+		__entry->status,
-+		__entry->action
-+		)
-+)
-+
-+DEFINE_EVENT(rpc_task_running, rpc_task_begin,
-+
-+	TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action),
-+
-+	TP_ARGS(clnt, task, action)
-+
-+)
-+
-+DEFINE_EVENT(rpc_task_running, rpc_task_run_action,
-+
-+	TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action),
-+
-+	TP_ARGS(clnt, task, action)
-+
-+)
-+
-+DEFINE_EVENT(rpc_task_running, rpc_task_complete,
-+
-+	TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action),
-+
-+	TP_ARGS(clnt, task, action)
-+
-+)
-+
-+DECLARE_EVENT_CLASS(rpc_task_queued,
-+
-+	TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const struct rpc_wait_queue *q),
-+
-+	TP_ARGS(clnt, task, q),
-+
-+	TP_STRUCT__entry(
-+		__field(const struct rpc_clnt *, clnt)
-+		__field(const struct rpc_task *, task)
-+		__field(unsigned long, timeout)
-+		__field(unsigned long, runstate)
-+		__field(int, status)
-+		__field(unsigned short, flags)
-+		__string(q_name, rpc_qname(q))
-+		),
-+
-+	TP_fast_assign(
-+		tp_assign(clnt, clnt)
-+		tp_assign(task, task)
-+		tp_assign(timeout, task->tk_timeout)
-+		tp_assign(runstate, task->tk_runstate)
-+		tp_assign(status, task->tk_status)
-+		tp_assign(flags, task->tk_flags)
-+		tp_strcpy(q_name, rpc_qname(q))
-+		),
-+
-+	TP_printk("task:%p@%p flags=%4.4x state=%4.4lx status=%d timeout=%lu queue=%s",
-+		__entry->task,
-+		__entry->clnt,
-+		__entry->flags,
-+		__entry->runstate,
-+		__entry->status,
-+		__entry->timeout,
-+		__get_str(q_name)
-+		)
-+)
-+
-+DEFINE_EVENT(rpc_task_queued, rpc_task_sleep,
-+
-+	TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const struct rpc_wait_queue *q),
-+
-+	TP_ARGS(clnt, task, q)
-+
-+)
-+
-+DEFINE_EVENT(rpc_task_queued, rpc_task_wakeup,
-+
-+	TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const struct rpc_wait_queue *q),
-+
-+	TP_ARGS(clnt, task, q)
-+
-+)
-+
-+#endif /* _TRACE_SUNRPC_H */
-+
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/syscalls.h
-@@ -0,0 +1,76 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM raw_syscalls
-+#define TRACE_INCLUDE_FILE syscalls
-+
-+#if !defined(_TRACE_EVENTS_SYSCALLS_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_EVENTS_SYSCALLS_H
-+
-+#include <linux/tracepoint.h>
-+
-+#ifdef CONFIG_HAVE_SYSCALL_TRACEPOINTS
-+
-+#ifndef _TRACE_SYSCALLS_DEF_
-+#define _TRACE_SYSCALLS_DEF_
-+
-+#include <asm/ptrace.h>
-+#include <asm/syscall.h>
-+
-+#endif /* _TRACE_SYSCALLS_DEF_ */
-+
-+TRACE_EVENT(sys_enter,
-+
-+	TP_PROTO(struct pt_regs *regs, long id),
-+
-+	TP_ARGS(regs, id),
-+
-+	TP_STRUCT__entry(
-+		__field(	long,		id		)
-+		__array(	unsigned long,	args,	6	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(id, id)
-+		{
-+			tp_memcpy(args,
-+				({
-+					unsigned long args_copy[6];
-+					syscall_get_arguments(current, regs,
-+							0, 6, args_copy);
-+					args_copy;
-+				}), 6 * sizeof(unsigned long));
-+		}
-+	),
-+
-+	TP_printk("NR %ld (%lx, %lx, %lx, %lx, %lx, %lx)",
-+		  __entry->id,
-+		  __entry->args[0], __entry->args[1], __entry->args[2],
-+		  __entry->args[3], __entry->args[4], __entry->args[5])
-+)
-+
-+TRACE_EVENT(sys_exit,
-+
-+	TP_PROTO(struct pt_regs *regs, long ret),
-+
-+	TP_ARGS(regs, ret),
-+
-+	TP_STRUCT__entry(
-+		__field(	long,	id	)
-+		__field(	long,	ret	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(id, syscall_get_nr(current, regs))
-+		tp_assign(ret, ret)
-+	),
-+
-+	TP_printk("NR %ld = %ld",
-+		  __entry->id, __entry->ret)
-+)
-+
-+#endif /* CONFIG_HAVE_SYSCALL_TRACEPOINTS */
-+
-+#endif /* _TRACE_EVENTS_SYSCALLS_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
-+
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/timer.h
-@@ -0,0 +1,336 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM timer
-+
-+#if !defined(_TRACE_TIMER_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_TIMER_H
-+
-+#include <linux/tracepoint.h>
-+
-+#ifndef _TRACE_TIMER_DEF_
-+#define _TRACE_TIMER_DEF_
-+#include <linux/hrtimer.h>
-+#include <linux/timer.h>
-+
-+struct timer_list;
-+
-+#endif /* _TRACE_TIMER_DEF_ */
-+
-+DECLARE_EVENT_CLASS(timer_class,
-+
-+	TP_PROTO(struct timer_list *timer),
-+
-+	TP_ARGS(timer),
-+
-+	TP_STRUCT__entry(
-+		__field( void *,	timer	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(timer, timer)
-+	),
-+
-+	TP_printk("timer=%p", __entry->timer)
-+)
-+
-+/**
-+ * timer_init - called when the timer is initialized
-+ * @timer:	pointer to struct timer_list
-+ */
-+DEFINE_EVENT(timer_class, timer_init,
-+
-+	TP_PROTO(struct timer_list *timer),
-+
-+	TP_ARGS(timer)
-+)
-+
-+/**
-+ * timer_start - called when the timer is started
-+ * @timer:	pointer to struct timer_list
-+ * @expires:	the timers expiry time
-+ */
-+TRACE_EVENT(timer_start,
-+
-+	TP_PROTO(struct timer_list *timer, unsigned long expires),
-+
-+	TP_ARGS(timer, expires),
-+
-+	TP_STRUCT__entry(
-+		__field( void *,	timer		)
-+		__field( void *,	function	)
-+		__field( unsigned long,	expires		)
-+		__field( unsigned long,	now		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(timer, timer)
-+		tp_assign(function, timer->function)
-+		tp_assign(expires, expires)
-+		tp_assign(now, jiffies)
-+	),
-+
-+	TP_printk("timer=%p function=%pf expires=%lu [timeout=%ld]",
-+		  __entry->timer, __entry->function, __entry->expires,
-+		  (long)__entry->expires - __entry->now)
-+)
-+
-+/**
-+ * timer_expire_entry - called immediately before the timer callback
-+ * @timer:	pointer to struct timer_list
-+ *
-+ * Allows to determine the timer latency.
-+ */
-+TRACE_EVENT(timer_expire_entry,
-+
-+	TP_PROTO(struct timer_list *timer),
-+
-+	TP_ARGS(timer),
-+
-+	TP_STRUCT__entry(
-+		__field( void *,	timer	)
-+		__field( unsigned long,	now	)
-+		__field( void *,	function)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(timer, timer)
-+		tp_assign(now, jiffies)
-+		tp_assign(function, timer->function)
-+	),
-+
-+	TP_printk("timer=%p function=%pf now=%lu", __entry->timer, __entry->function,__entry->now)
-+)
-+
-+/**
-+ * timer_expire_exit - called immediately after the timer callback returns
-+ * @timer:	pointer to struct timer_list
-+ *
-+ * When used in combination with the timer_expire_entry tracepoint we can
-+ * determine the runtime of the timer callback function.
-+ *
-+ * NOTE: Do NOT derefernce timer in TP_fast_assign. The pointer might
-+ * be invalid. We solely track the pointer.
-+ */
-+DEFINE_EVENT(timer_class, timer_expire_exit,
-+
-+	TP_PROTO(struct timer_list *timer),
-+
-+	TP_ARGS(timer)
-+)
-+
-+/**
-+ * timer_cancel - called when the timer is canceled
-+ * @timer:	pointer to struct timer_list
-+ */
-+DEFINE_EVENT(timer_class, timer_cancel,
-+
-+	TP_PROTO(struct timer_list *timer),
-+
-+	TP_ARGS(timer)
-+)
-+
-+/**
-+ * hrtimer_init - called when the hrtimer is initialized
-+ * @timer:	pointer to struct hrtimer
-+ * @clockid:	the hrtimers clock
-+ * @mode:	the hrtimers mode
-+ */
-+TRACE_EVENT(hrtimer_init,
-+
-+	TP_PROTO(struct hrtimer *hrtimer, clockid_t clockid,
-+		 enum hrtimer_mode mode),
-+
-+	TP_ARGS(hrtimer, clockid, mode),
-+
-+	TP_STRUCT__entry(
-+		__field( void *,		hrtimer		)
-+		__field( clockid_t,		clockid		)
-+		__field( enum hrtimer_mode,	mode		)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(hrtimer, hrtimer)
-+		tp_assign(clockid, clockid)
-+		tp_assign(mode, mode)
-+	),
-+
-+	TP_printk("hrtimer=%p clockid=%s mode=%s", __entry->hrtimer,
-+		  __entry->clockid == CLOCK_REALTIME ?
-+			"CLOCK_REALTIME" : "CLOCK_MONOTONIC",
-+		  __entry->mode == HRTIMER_MODE_ABS ?
-+			"HRTIMER_MODE_ABS" : "HRTIMER_MODE_REL")
-+)
-+
-+/**
-+ * hrtimer_start - called when the hrtimer is started
-+ * @timer: pointer to struct hrtimer
-+ */
-+TRACE_EVENT(hrtimer_start,
-+
-+	TP_PROTO(struct hrtimer *hrtimer),
-+
-+	TP_ARGS(hrtimer),
-+
-+	TP_STRUCT__entry(
-+		__field( void *,	hrtimer		)
-+		__field( void *,	function	)
-+		__field( s64,		expires		)
-+		__field( s64,		softexpires	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(hrtimer, hrtimer)
-+		tp_assign(function, hrtimer->function)
-+		tp_assign(expires, hrtimer_get_expires(hrtimer).tv64)
-+		tp_assign(softexpires, hrtimer_get_softexpires(hrtimer).tv64)
-+	),
-+
-+	TP_printk("hrtimer=%p function=%pf expires=%llu softexpires=%llu",
-+		  __entry->hrtimer, __entry->function,
-+		  (unsigned long long)ktime_to_ns((ktime_t) {
-+				  .tv64 = __entry->expires }),
-+		  (unsigned long long)ktime_to_ns((ktime_t) {
-+				  .tv64 = __entry->softexpires }))
-+)
-+
-+/**
-+ * htimmer_expire_entry - called immediately before the hrtimer callback
-+ * @timer:	pointer to struct hrtimer
-+ * @now:	pointer to variable which contains current time of the
-+ *		timers base.
-+ *
-+ * Allows to determine the timer latency.
-+ */
-+TRACE_EVENT(hrtimer_expire_entry,
-+
-+	TP_PROTO(struct hrtimer *hrtimer, ktime_t *now),
-+
-+	TP_ARGS(hrtimer, now),
-+
-+	TP_STRUCT__entry(
-+		__field( void *,	hrtimer	)
-+		__field( s64,		now	)
-+		__field( void *,	function)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(hrtimer, hrtimer)
-+		tp_assign(now, now->tv64)
-+		tp_assign(function, hrtimer->function)
-+	),
-+
-+	TP_printk("hrtimer=%p function=%pf now=%llu", __entry->hrtimer, __entry->function,
-+		  (unsigned long long)ktime_to_ns((ktime_t) { .tv64 = __entry->now }))
-+)
-+
-+DECLARE_EVENT_CLASS(hrtimer_class,
-+
-+	TP_PROTO(struct hrtimer *hrtimer),
-+
-+	TP_ARGS(hrtimer),
-+
-+	TP_STRUCT__entry(
-+		__field( void *,	hrtimer	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(hrtimer, hrtimer)
-+	),
-+
-+	TP_printk("hrtimer=%p", __entry->hrtimer)
-+)
-+
-+/**
-+ * hrtimer_expire_exit - called immediately after the hrtimer callback returns
-+ * @timer:	pointer to struct hrtimer
-+ *
-+ * When used in combination with the hrtimer_expire_entry tracepoint we can
-+ * determine the runtime of the callback function.
-+ */
-+DEFINE_EVENT(hrtimer_class, hrtimer_expire_exit,
-+
-+	TP_PROTO(struct hrtimer *hrtimer),
-+
-+	TP_ARGS(hrtimer)
-+)
-+
-+/**
-+ * hrtimer_cancel - called when the hrtimer is canceled
-+ * @hrtimer:	pointer to struct hrtimer
-+ */
-+DEFINE_EVENT(hrtimer_class, hrtimer_cancel,
-+
-+	TP_PROTO(struct hrtimer *hrtimer),
-+
-+	TP_ARGS(hrtimer)
-+)
-+
-+/**
-+ * itimer_state - called when itimer is started or canceled
-+ * @which:	name of the interval timer
-+ * @value:	the itimers value, itimer is canceled if value->it_value is
-+ *		zero, otherwise it is started
-+ * @expires:	the itimers expiry time
-+ */
-+TRACE_EVENT(itimer_state,
-+
-+	TP_PROTO(int which, const struct itimerval *const value,
-+		 cputime_t expires),
-+
-+	TP_ARGS(which, value, expires),
-+
-+	TP_STRUCT__entry(
-+		__field(	int,		which		)
-+		__field(	cputime_t,	expires		)
-+		__field(	long,		value_sec	)
-+		__field(	long,		value_usec	)
-+		__field(	long,		interval_sec	)
-+		__field(	long,		interval_usec	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(which, which)
-+		tp_assign(expires, expires)
-+		tp_assign(value_sec, value->it_value.tv_sec)
-+		tp_assign(value_usec, value->it_value.tv_usec)
-+		tp_assign(interval_sec, value->it_interval.tv_sec)
-+		tp_assign(interval_usec, value->it_interval.tv_usec)
-+	),
-+
-+	TP_printk("which=%d expires=%llu it_value=%ld.%ld it_interval=%ld.%ld",
-+		  __entry->which, (unsigned long long)__entry->expires,
-+		  __entry->value_sec, __entry->value_usec,
-+		  __entry->interval_sec, __entry->interval_usec)
-+)
-+
-+/**
-+ * itimer_expire - called when itimer expires
-+ * @which:	type of the interval timer
-+ * @pid:	pid of the process which owns the timer
-+ * @now:	current time, used to calculate the latency of itimer
-+ */
-+TRACE_EVENT(itimer_expire,
-+
-+	TP_PROTO(int which, struct pid *pid, cputime_t now),
-+
-+	TP_ARGS(which, pid, now),
-+
-+	TP_STRUCT__entry(
-+		__field( int ,		which	)
-+		__field( pid_t,		pid	)
-+		__field( cputime_t,	now	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(which, which)
-+		tp_assign(now, now)
-+		tp_assign(pid, pid_nr(pid))
-+	),
-+
-+	TP_printk("which=%d pid=%d now=%llu", __entry->which,
-+		  (int) __entry->pid, (unsigned long long)__entry->now)
-+)
-+
-+#endif /*  _TRACE_TIMER_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/udp.h
-@@ -0,0 +1,32 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM udp
-+
-+#if !defined(_TRACE_UDP_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_UDP_H
-+
-+#include <linux/udp.h>
-+#include <linux/tracepoint.h>
-+
-+TRACE_EVENT(udp_fail_queue_rcv_skb,
-+
-+	TP_PROTO(int rc, struct sock *sk),
-+
-+	TP_ARGS(rc, sk),
-+
-+	TP_STRUCT__entry(
-+		__field(int, rc)
-+		__field(__u16, lport)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(rc, rc)
-+		tp_assign(lport, inet_sk(sk)->inet_num)
-+	),
-+
-+	TP_printk("rc=%d port=%hu", __entry->rc, __entry->lport)
-+)
-+
-+#endif /* _TRACE_UDP_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/vmscan.h
-@@ -0,0 +1,594 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM vmscan
-+
-+#if !defined(_TRACE_VMSCAN_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_VMSCAN_H
-+
-+#include <linux/types.h>
-+#include <linux/tracepoint.h>
-+#include <linux/mm.h>
-+#include <linux/memcontrol.h>
-+#include <trace/events/gfpflags.h>
-+#include <linux/version.h>
-+
-+#ifndef _TRACE_VMSCAN_DEF
-+#define _TRACE_VMSCAN_DEF
-+#define RECLAIM_WB_ANON		0x0001u
-+#define RECLAIM_WB_FILE		0x0002u
-+#define RECLAIM_WB_MIXED	0x0010u
-+#define RECLAIM_WB_SYNC		0x0004u /* Unused, all reclaim async */
-+#define RECLAIM_WB_ASYNC	0x0008u
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
-+#define show_reclaim_flags(flags)				\
-+	(flags) ? __print_flags(flags, "|",			\
-+		{RECLAIM_WB_ANON,	"RECLAIM_WB_ANON"},	\
-+		{RECLAIM_WB_FILE,	"RECLAIM_WB_FILE"},	\
-+		{RECLAIM_WB_MIXED,	"RECLAIM_WB_MIXED"},	\
-+		{RECLAIM_WB_SYNC,	"RECLAIM_WB_SYNC"},	\
-+		{RECLAIM_WB_ASYNC,	"RECLAIM_WB_ASYNC"}	\
-+		) : "RECLAIM_WB_NONE"
-+#else
-+#define show_reclaim_flags(flags)				\
-+	(flags) ? __print_flags(flags, "|",			\
-+		{RECLAIM_WB_ANON,	"RECLAIM_WB_ANON"},	\
-+		{RECLAIM_WB_FILE,	"RECLAIM_WB_FILE"},	\
-+		{RECLAIM_WB_SYNC,	"RECLAIM_WB_SYNC"},	\
-+		{RECLAIM_WB_ASYNC,	"RECLAIM_WB_ASYNC"}	\
-+		) : "RECLAIM_WB_NONE"
-+#endif
-+
-+#if ((LINUX_VERSION_CODE <= KERNEL_VERSION(3,0,38)) || \
-+	LTTNG_KERNEL_RANGE(3,1,0, 3,2,0))
-+typedef int isolate_mode_t;
-+#endif
-+
-+#endif
-+
-+TRACE_EVENT(mm_vmscan_kswapd_sleep,
-+
-+	TP_PROTO(int nid),
-+
-+	TP_ARGS(nid),
-+
-+	TP_STRUCT__entry(
-+		__field(	int,	nid	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(nid, nid)
-+	),
-+
-+	TP_printk("nid=%d", __entry->nid)
-+)
-+
-+TRACE_EVENT(mm_vmscan_kswapd_wake,
-+
-+	TP_PROTO(int nid, int order),
-+
-+	TP_ARGS(nid, order),
-+
-+	TP_STRUCT__entry(
-+		__field(	int,	nid	)
-+		__field(	int,	order	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(nid, nid)
-+		tp_assign(order, order)
-+	),
-+
-+	TP_printk("nid=%d order=%d", __entry->nid, __entry->order)
-+)
-+
-+TRACE_EVENT(mm_vmscan_wakeup_kswapd,
-+
-+	TP_PROTO(int nid, int zid, int order),
-+
-+	TP_ARGS(nid, zid, order),
-+
-+	TP_STRUCT__entry(
-+		__field(	int,		nid	)
-+		__field(	int,		zid	)
-+		__field(	int,		order	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(nid, nid)
-+		tp_assign(zid, zid)
-+		tp_assign(order, order)
-+	),
-+
-+	TP_printk("nid=%d zid=%d order=%d",
-+		__entry->nid,
-+		__entry->zid,
-+		__entry->order)
-+)
-+
-+DECLARE_EVENT_CLASS(mm_vmscan_direct_reclaim_begin_template,
-+
-+	TP_PROTO(int order, int may_writepage, gfp_t gfp_flags),
-+
-+	TP_ARGS(order, may_writepage, gfp_flags),
-+
-+	TP_STRUCT__entry(
-+		__field(	int,	order		)
-+		__field(	int,	may_writepage	)
-+		__field(	gfp_t,	gfp_flags	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(order, order)
-+		tp_assign(may_writepage, may_writepage)
-+		tp_assign(gfp_flags, gfp_flags)
-+	),
-+
-+	TP_printk("order=%d may_writepage=%d gfp_flags=%s",
-+		__entry->order,
-+		__entry->may_writepage,
-+		show_gfp_flags(__entry->gfp_flags))
-+)
-+
-+DEFINE_EVENT(mm_vmscan_direct_reclaim_begin_template, mm_vmscan_direct_reclaim_begin,
-+
-+	TP_PROTO(int order, int may_writepage, gfp_t gfp_flags),
-+
-+	TP_ARGS(order, may_writepage, gfp_flags)
-+)
-+
-+DEFINE_EVENT(mm_vmscan_direct_reclaim_begin_template, mm_vmscan_memcg_reclaim_begin,
-+
-+	TP_PROTO(int order, int may_writepage, gfp_t gfp_flags),
-+
-+	TP_ARGS(order, may_writepage, gfp_flags)
-+)
-+
-+DEFINE_EVENT(mm_vmscan_direct_reclaim_begin_template, mm_vmscan_memcg_softlimit_reclaim_begin,
-+
-+	TP_PROTO(int order, int may_writepage, gfp_t gfp_flags),
-+
-+	TP_ARGS(order, may_writepage, gfp_flags)
-+)
-+
-+DECLARE_EVENT_CLASS(mm_vmscan_direct_reclaim_end_template,
-+
-+	TP_PROTO(unsigned long nr_reclaimed),
-+
-+	TP_ARGS(nr_reclaimed),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned long,	nr_reclaimed	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(nr_reclaimed, nr_reclaimed)
-+	),
-+
-+	TP_printk("nr_reclaimed=%lu", __entry->nr_reclaimed)
-+)
-+
-+DEFINE_EVENT(mm_vmscan_direct_reclaim_end_template, mm_vmscan_direct_reclaim_end,
-+
-+	TP_PROTO(unsigned long nr_reclaimed),
-+
-+	TP_ARGS(nr_reclaimed)
-+)
-+
-+DEFINE_EVENT(mm_vmscan_direct_reclaim_end_template, mm_vmscan_memcg_reclaim_end,
-+
-+	TP_PROTO(unsigned long nr_reclaimed),
-+
-+	TP_ARGS(nr_reclaimed)
-+)
-+
-+DEFINE_EVENT(mm_vmscan_direct_reclaim_end_template, mm_vmscan_memcg_softlimit_reclaim_end,
-+
-+	TP_PROTO(unsigned long nr_reclaimed),
-+
-+	TP_ARGS(nr_reclaimed)
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0))
-+TRACE_EVENT(mm_shrink_slab_start,
-+	TP_PROTO(struct shrinker *shr, struct shrink_control *sc,
-+		long nr_objects_to_shrink, unsigned long pgs_scanned,
-+		unsigned long lru_pgs, unsigned long cache_items,
-+		unsigned long long delta, unsigned long total_scan),
-+
-+	TP_ARGS(shr, sc, nr_objects_to_shrink, pgs_scanned, lru_pgs,
-+		cache_items, delta, total_scan),
-+
-+	TP_STRUCT__entry(
-+		__field(struct shrinker *, shr)
-+		__field(void *, shrink)
-+		__field(long, nr_objects_to_shrink)
-+		__field(gfp_t, gfp_flags)
-+		__field(unsigned long, pgs_scanned)
-+		__field(unsigned long, lru_pgs)
-+		__field(unsigned long, cache_items)
-+		__field(unsigned long long, delta)
-+		__field(unsigned long, total_scan)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(shr,shr)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0))
-+		tp_assign(shrink, shr->scan_objects)
-+#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) */
-+		tp_assign(shrink, shr->shrink)
-+#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) */
-+		tp_assign(nr_objects_to_shrink, nr_objects_to_shrink)
-+		tp_assign(gfp_flags, sc->gfp_mask)
-+		tp_assign(pgs_scanned, pgs_scanned)
-+		tp_assign(lru_pgs, lru_pgs)
-+		tp_assign(cache_items, cache_items)
-+		tp_assign(delta, delta)
-+		tp_assign(total_scan, total_scan)
-+	),
-+
-+	TP_printk("%pF %p: objects to shrink %ld gfp_flags %s pgs_scanned %ld lru_pgs %ld cache items %ld delta %lld total_scan %ld",
-+		__entry->shrink,
-+		__entry->shr,
-+		__entry->nr_objects_to_shrink,
-+		show_gfp_flags(__entry->gfp_flags),
-+		__entry->pgs_scanned,
-+		__entry->lru_pgs,
-+		__entry->cache_items,
-+		__entry->delta,
-+		__entry->total_scan)
-+)
-+
-+TRACE_EVENT(mm_shrink_slab_end,
-+	TP_PROTO(struct shrinker *shr, int shrinker_retval,
-+		long unused_scan_cnt, long new_scan_cnt),
-+
-+	TP_ARGS(shr, shrinker_retval, unused_scan_cnt, new_scan_cnt),
-+
-+	TP_STRUCT__entry(
-+		__field(struct shrinker *, shr)
-+		__field(void *, shrink)
-+		__field(long, unused_scan)
-+		__field(long, new_scan)
-+		__field(int, retval)
-+		__field(long, total_scan)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(shr, shr)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0))
-+		tp_assign(shrink, shr->scan_objects)
-+#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) */
-+		tp_assign(shrink, shr->shrink)
-+#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) */
-+		tp_assign(unused_scan, unused_scan_cnt)
-+		tp_assign(new_scan, new_scan_cnt)
-+		tp_assign(retval, shrinker_retval)
-+		tp_assign(total_scan, new_scan_cnt - unused_scan_cnt)
-+	),
-+
-+	TP_printk("%pF %p: unused scan count %ld new scan count %ld total_scan %ld last shrinker return val %d",
-+		__entry->shrink,
-+		__entry->shr,
-+		__entry->unused_scan,
-+		__entry->new_scan,
-+		__entry->total_scan,
-+		__entry->retval)
-+)
-+#endif
-+
-+DECLARE_EVENT_CLASS(mm_vmscan_lru_isolate_template,
-+
-+	TP_PROTO(int order,
-+		unsigned long nr_requested,
-+		unsigned long nr_scanned,
-+		unsigned long nr_taken,
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0))
-+		unsigned long nr_lumpy_taken,
-+		unsigned long nr_lumpy_dirty,
-+		unsigned long nr_lumpy_failed,
-+#endif
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0))
-+		isolate_mode_t isolate_mode
-+#else
-+		isolate_mode_t isolate_mode,
-+		int file
-+#endif
-+	),
-+
-+	TP_ARGS(order, nr_requested, nr_scanned, nr_taken,
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0))
-+		nr_lumpy_taken, nr_lumpy_dirty, nr_lumpy_failed,
-+#endif
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0))
-+		isolate_mode
-+#else
-+		isolate_mode, file
-+#endif
-+	),
-+
-+
-+	TP_STRUCT__entry(
-+		__field(int, order)
-+		__field(unsigned long, nr_requested)
-+		__field(unsigned long, nr_scanned)
-+		__field(unsigned long, nr_taken)
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0))
-+		__field(unsigned long, nr_lumpy_taken)
-+		__field(unsigned long, nr_lumpy_dirty)
-+		__field(unsigned long, nr_lumpy_failed)
-+#endif
-+		__field(isolate_mode_t, isolate_mode)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+		__field(int, file)
-+#endif
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(order, order)
-+		tp_assign(nr_requested, nr_requested)
-+		tp_assign(nr_scanned, nr_scanned)
-+		tp_assign(nr_taken, nr_taken)
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0))
-+		tp_assign(nr_lumpy_taken, nr_lumpy_taken)
-+		tp_assign(nr_lumpy_dirty, nr_lumpy_dirty)
-+		tp_assign(nr_lumpy_failed, nr_lumpy_failed)
-+#endif
-+		tp_assign(isolate_mode, isolate_mode)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+		tp_assign(file, file)
-+#endif
-+	),
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0))
-+	TP_printk("isolate_mode=%d order=%d nr_requested=%lu nr_scanned=%lu nr_taken=%lu contig_taken=%lu contig_dirty=%lu contig_failed=%lu",
-+		__entry->isolate_mode,
-+		__entry->order,
-+		__entry->nr_requested,
-+		__entry->nr_scanned,
-+		__entry->nr_taken,
-+		__entry->nr_lumpy_taken,
-+		__entry->nr_lumpy_dirty,
-+		__entry->nr_lumpy_failed)
-+#elif (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0))
-+	TP_printk("isolate_mode=%d order=%d nr_requested=%lu nr_scanned=%lu nr_taken=%lu contig_taken=%lu contig_dirty=%lu contig_failed=%lu file=%d",
-+		__entry->isolate_mode,
-+		__entry->order,
-+		__entry->nr_requested,
-+		__entry->nr_scanned,
-+		__entry->nr_taken,
-+		__entry->nr_lumpy_taken,
-+		__entry->nr_lumpy_dirty,
-+		__entry->nr_lumpy_failed,
-+		__entry->file)
-+#else
-+	TP_printk("isolate_mode=%d order=%d nr_requested=%lu nr_scanned=%lu nr_taken=%lu file=%d",
-+		__entry->isolate_mode,
-+		__entry->order,
-+		__entry->nr_requested,
-+		__entry->nr_scanned,
-+		__entry->nr_taken,
-+		__entry->file)
-+#endif
-+)
-+
-+DEFINE_EVENT(mm_vmscan_lru_isolate_template, mm_vmscan_lru_isolate,
-+
-+	TP_PROTO(int order,
-+		unsigned long nr_requested,
-+		unsigned long nr_scanned,
-+		unsigned long nr_taken,
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0))
-+		unsigned long nr_lumpy_taken,
-+		unsigned long nr_lumpy_dirty,
-+		unsigned long nr_lumpy_failed,
-+#endif
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0))
-+		isolate_mode_t isolate_mode
-+#else
-+		isolate_mode_t isolate_mode,
-+		int file
-+#endif
-+	),
-+
-+	TP_ARGS(order, nr_requested, nr_scanned, nr_taken,
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0))
-+		nr_lumpy_taken, nr_lumpy_dirty, nr_lumpy_failed,
-+#endif
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0))
-+		isolate_mode
-+#else
-+		isolate_mode, file
-+#endif
-+	)
-+
-+)
-+
-+DEFINE_EVENT(mm_vmscan_lru_isolate_template, mm_vmscan_memcg_isolate,
-+
-+	TP_PROTO(int order,
-+		unsigned long nr_requested,
-+		unsigned long nr_scanned,
-+		unsigned long nr_taken,
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0))
-+		unsigned long nr_lumpy_taken,
-+		unsigned long nr_lumpy_dirty,
-+		unsigned long nr_lumpy_failed,
-+#endif
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0))
-+		isolate_mode_t isolate_mode
-+#else
-+		isolate_mode_t isolate_mode,
-+		int file
-+#endif
-+	),
-+
-+	TP_ARGS(order, nr_requested, nr_scanned, nr_taken,
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0))
-+		nr_lumpy_taken, nr_lumpy_dirty, nr_lumpy_failed,
-+#endif
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0))
-+		isolate_mode
-+#else
-+		isolate_mode, file
-+#endif
-+	)
-+)
-+
-+TRACE_EVENT(mm_vmscan_writepage,
-+
-+	TP_PROTO(struct page *page,
-+		int reclaim_flags),
-+
-+	TP_ARGS(page, reclaim_flags),
-+
-+	TP_STRUCT__entry(
-+		__field(struct page *, page)
-+		__field(int, reclaim_flags)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(page, page)
-+		tp_assign(reclaim_flags, reclaim_flags)
-+	),
-+
-+	TP_printk("page=%p pfn=%lu flags=%s",
-+		__entry->page,
-+		page_to_pfn(__entry->page),
-+		show_reclaim_flags(__entry->reclaim_flags))
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
-+TRACE_EVENT(mm_vmscan_lru_shrink_inactive,
-+
-+	TP_PROTO(int nid, int zid,
-+			unsigned long nr_scanned, unsigned long nr_reclaimed,
-+			int priority, int reclaim_flags),
-+
-+	TP_ARGS(nid, zid, nr_scanned, nr_reclaimed, priority, reclaim_flags),
-+
-+	TP_STRUCT__entry(
-+		__field(int, nid)
-+		__field(int, zid)
-+		__field(unsigned long, nr_scanned)
-+		__field(unsigned long, nr_reclaimed)
-+		__field(int, priority)
-+		__field(int, reclaim_flags)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(nid, nid)
-+		tp_assign(zid, zid)
-+		tp_assign(nr_scanned, nr_scanned)
-+		tp_assign(nr_reclaimed, nr_reclaimed)
-+		tp_assign(priority, priority)
-+		tp_assign(reclaim_flags, reclaim_flags)
-+	),
-+
-+	TP_printk("nid=%d zid=%d nr_scanned=%ld nr_reclaimed=%ld priority=%d flags=%s",
-+		__entry->nid, __entry->zid,
-+		__entry->nr_scanned, __entry->nr_reclaimed,
-+		__entry->priority,
-+		show_reclaim_flags(__entry->reclaim_flags))
-+)
-+#endif
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0))
-+TRACE_EVENT_MAP(replace_swap_token,
-+
-+	mm_vmscan_replace_swap_token,
-+
-+	TP_PROTO(struct mm_struct *old_mm,
-+		 struct mm_struct *new_mm),
-+
-+	TP_ARGS(old_mm, new_mm),
-+
-+	TP_STRUCT__entry(
-+		__field(struct mm_struct*,	old_mm)
-+		__field(unsigned int,		old_prio)
-+		__field(struct mm_struct*,	new_mm)
-+		__field(unsigned int,		new_prio)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(old_mm, old_mm)
-+		tp_assign(old_prio, old_mm ? old_mm->token_priority : 0)
-+		tp_assign(new_mm, new_mm)
-+		tp_assign(new_prio, new_mm->token_priority)
-+	),
-+
-+	TP_printk("old_token_mm=%p old_prio=%u new_token_mm=%p new_prio=%u",
-+		  __entry->old_mm, __entry->old_prio,
-+		  __entry->new_mm, __entry->new_prio)
-+)
-+
-+DECLARE_EVENT_CLASS(mm_vmscan_put_swap_token_template,
-+	TP_PROTO(struct mm_struct *swap_token_mm),
-+
-+	TP_ARGS(swap_token_mm),
-+
-+	TP_STRUCT__entry(
-+		__field(struct mm_struct*, swap_token_mm)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(swap_token_mm, swap_token_mm)
-+	),
-+
-+	TP_printk("token_mm=%p", __entry->swap_token_mm)
-+)
-+
-+DEFINE_EVENT_MAP(mm_vmscan_put_swap_token_template, put_swap_token,
-+
-+	mm_vmscan_put_swap_token,
-+
-+	TP_PROTO(struct mm_struct *swap_token_mm),
-+	TP_ARGS(swap_token_mm)
-+)
-+
-+DEFINE_EVENT_CONDITION_MAP(mm_vmscan_put_swap_token_template, disable_swap_token,
-+
-+	mm_vmscan_disable_swap_token,
-+
-+	TP_PROTO(struct mm_struct *swap_token_mm),
-+	TP_ARGS(swap_token_mm),
-+	TP_CONDITION(swap_token_mm != NULL)
-+)
-+
-+TRACE_EVENT_CONDITION_MAP(update_swap_token_priority,
-+
-+	mm_vmscan_update_swap_token_priority,
-+
-+	TP_PROTO(struct mm_struct *mm,
-+		 unsigned int old_prio,
-+		 struct mm_struct *swap_token_mm),
-+
-+	TP_ARGS(mm, old_prio, swap_token_mm),
-+
-+	TP_CONDITION(mm->token_priority != old_prio),
-+
-+	TP_STRUCT__entry(
-+		__field(struct mm_struct*, mm)
-+		__field(unsigned int, old_prio)
-+		__field(unsigned int, new_prio)
-+		__field(struct mm_struct*, swap_token_mm)
-+		__field(unsigned int, swap_token_prio)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(mm, mm)
-+		tp_assign(old_prio, old_prio)
-+		tp_assign(new_prio, mm->token_priority)
-+		tp_assign(swap_token_mm, swap_token_mm)
-+		tp_assign(swap_token_prio, swap_token_mm ? swap_token_mm->token_priority : 0)
-+	),
-+
-+	TP_printk("mm=%p old_prio=%u new_prio=%u swap_token_mm=%p token_prio=%u",
-+		  __entry->mm, __entry->old_prio, __entry->new_prio,
-+		  __entry->swap_token_mm, __entry->swap_token_prio)
-+)
-+#endif
-+
-+#endif /* _TRACE_VMSCAN_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/workqueue.h
-@@ -0,0 +1,219 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM workqueue
-+
-+#if !defined(_TRACE_WORKQUEUE_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_WORKQUEUE_H
-+
-+#include <linux/tracepoint.h>
-+#include <linux/workqueue.h>
-+#include <linux/version.h>
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+
-+#ifndef _TRACE_WORKQUEUE_DEF_
-+#define _TRACE_WORKQUEUE_DEF_
-+
-+struct worker;
-+struct global_cwq;
-+
-+#endif
-+
-+DECLARE_EVENT_CLASS(workqueue_work,
-+
-+	TP_PROTO(struct work_struct *work),
-+
-+	TP_ARGS(work),
-+
-+	TP_STRUCT__entry(
-+		__field( void *,	work	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(work, work)
-+	),
-+
-+	TP_printk("work struct %p", __entry->work)
-+)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
-+/**
-+ * workqueue_queue_work - called when a work gets queued
-+ * @req_cpu:	the requested cpu
-+ * @cwq:	pointer to struct cpu_workqueue_struct
-+ * @work:	pointer to struct work_struct
-+ *
-+ * This event occurs when a work is queued immediately or once a
-+ * delayed work is actually queued on a workqueue (ie: once the delay
-+ * has been reached).
-+ */
-+TRACE_EVENT(workqueue_queue_work,
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0))
-+	TP_PROTO(unsigned int req_cpu, struct pool_workqueue *pwq,
-+		 struct work_struct *work),
-+
-+	TP_ARGS(req_cpu, pwq, work),
-+#else
-+	TP_PROTO(unsigned int req_cpu, struct cpu_workqueue_struct *cwq,
-+		 struct work_struct *work),
-+
-+	TP_ARGS(req_cpu, cwq, work),
-+#endif
-+
-+	TP_STRUCT__entry(
-+		__field( void *,	work	)
-+		__field( void *,	function)
-+		__field( unsigned int,	req_cpu	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(work, work)
-+		tp_assign(function, work->func)
-+		tp_assign(req_cpu, req_cpu)
-+	),
-+
-+	TP_printk("work struct=%p function=%pf req_cpu=%u",
-+		  __entry->work, __entry->function,
-+		  __entry->req_cpu)
-+)
-+
-+/**
-+ * workqueue_activate_work - called when a work gets activated
-+ * @work:	pointer to struct work_struct
-+ *
-+ * This event occurs when a queued work is put on the active queue,
-+ * which happens immediately after queueing unless @max_active limit
-+ * is reached.
-+ */
-+DEFINE_EVENT(workqueue_work, workqueue_activate_work,
-+
-+	TP_PROTO(struct work_struct *work),
-+
-+	TP_ARGS(work)
-+)
-+#endif
-+
-+/**
-+ * workqueue_execute_start - called immediately before the workqueue callback
-+ * @work:	pointer to struct work_struct
-+ *
-+ * Allows to track workqueue execution.
-+ */
-+TRACE_EVENT(workqueue_execute_start,
-+
-+	TP_PROTO(struct work_struct *work),
-+
-+	TP_ARGS(work),
-+
-+	TP_STRUCT__entry(
-+		__field( void *,	work	)
-+		__field( void *,	function)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(work, work)
-+		tp_assign(function, work->func)
-+	),
-+
-+	TP_printk("work struct %p: function %pf", __entry->work, __entry->function)
-+)
-+
-+/**
-+ * workqueue_execute_end - called immediately after the workqueue callback
-+ * @work:	pointer to struct work_struct
-+ *
-+ * Allows to track workqueue execution.
-+ */
-+DEFINE_EVENT(workqueue_work, workqueue_execute_end,
-+
-+	TP_PROTO(struct work_struct *work),
-+
-+	TP_ARGS(work)
-+)
-+
-+#else
-+
-+DECLARE_EVENT_CLASS(workqueue,
-+
-+	TP_PROTO(struct task_struct *wq_thread, struct work_struct *work),
-+
-+	TP_ARGS(wq_thread, work),
-+
-+	TP_STRUCT__entry(
-+		__array(char,		thread_comm,	TASK_COMM_LEN)
-+		__field(pid_t,		thread_pid)
-+		__field(work_func_t,	func)
-+	),
-+
-+	TP_fast_assign(
-+		tp_memcpy(thread_comm, wq_thread->comm, TASK_COMM_LEN)
-+		tp_assign(thread_pid, wq_thread->pid)
-+		tp_assign(func, work->func)
-+	),
-+
-+	TP_printk("thread=%s:%d func=%pf", __entry->thread_comm,
-+		__entry->thread_pid, __entry->func)
-+)
-+
-+DEFINE_EVENT(workqueue, workqueue_insertion,
-+
-+	TP_PROTO(struct task_struct *wq_thread, struct work_struct *work),
-+
-+	TP_ARGS(wq_thread, work)
-+)
-+
-+DEFINE_EVENT(workqueue, workqueue_execution,
-+
-+	TP_PROTO(struct task_struct *wq_thread, struct work_struct *work),
-+
-+	TP_ARGS(wq_thread, work)
-+)
-+
-+/* Trace the creation of one workqueue thread on a cpu */
-+TRACE_EVENT(workqueue_creation,
-+
-+	TP_PROTO(struct task_struct *wq_thread, int cpu),
-+
-+	TP_ARGS(wq_thread, cpu),
-+
-+	TP_STRUCT__entry(
-+		__array(char,	thread_comm,	TASK_COMM_LEN)
-+		__field(pid_t,	thread_pid)
-+		__field(int,	cpu)
-+	),
-+
-+	TP_fast_assign(
-+		tp_memcpy(thread_comm, wq_thread->comm, TASK_COMM_LEN)
-+		tp_assign(thread_pid, wq_thread->pid)
-+		tp_assign(cpu, cpu)
-+	),
-+
-+	TP_printk("thread=%s:%d cpu=%d", __entry->thread_comm,
-+		__entry->thread_pid, __entry->cpu)
-+)
-+
-+TRACE_EVENT(workqueue_destruction,
-+
-+	TP_PROTO(struct task_struct *wq_thread),
-+
-+	TP_ARGS(wq_thread),
-+
-+	TP_STRUCT__entry(
-+		__array(char,	thread_comm,	TASK_COMM_LEN)
-+		__field(pid_t,	thread_pid)
-+	),
-+
-+	TP_fast_assign(
-+		tp_memcpy(thread_comm, wq_thread->comm, TASK_COMM_LEN)
-+		tp_assign(thread_pid, wq_thread->pid)
-+	),
-+
-+	TP_printk("thread=%s:%d", __entry->thread_comm, __entry->thread_pid)
-+)
-+
-+#endif
-+
-+#endif /*  _TRACE_WORKQUEUE_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/writeback.h
-@@ -0,0 +1,617 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM writeback
-+
-+#if !defined(_TRACE_WRITEBACK_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_WRITEBACK_H
-+
-+#include <linux/backing-dev.h>
-+#include <linux/writeback.h>
-+#include <linux/version.h>
-+
-+#ifndef _TRACE_WRITEBACK_DEF_
-+#define _TRACE_WRITEBACK_DEF_
-+static inline struct backing_dev_info *inode_to_bdi(struct inode *inode)
-+{
-+	struct super_block *sb = inode->i_sb;
-+
-+	if (strcmp(sb->s_type->name, "bdev") == 0)
-+		return inode->i_mapping->backing_dev_info;
-+
-+	return sb->s_bdi;
-+}
-+#endif
-+
-+#define show_inode_state(state)					\
-+	__print_flags(state, "|",				\
-+		{I_DIRTY_SYNC,		"I_DIRTY_SYNC"},	\
-+		{I_DIRTY_DATASYNC,	"I_DIRTY_DATASYNC"},	\
-+		{I_DIRTY_PAGES,		"I_DIRTY_PAGES"},	\
-+		{I_NEW,			"I_NEW"},		\
-+		{I_WILL_FREE,		"I_WILL_FREE"},		\
-+		{I_FREEING,		"I_FREEING"},		\
-+		{I_CLEAR,		"I_CLEAR"},		\
-+		{I_SYNC,		"I_SYNC"},		\
-+		{I_REFERENCED,		"I_REFERENCED"}		\
-+	)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))
-+#define WB_WORK_REASON							\
-+		{WB_REASON_BACKGROUND,		"background"},		\
-+		{WB_REASON_TRY_TO_FREE_PAGES,	"try_to_free_pages"},	\
-+		{WB_REASON_SYNC,		"sync"},		\
-+		{WB_REASON_PERIODIC,		"periodic"},		\
-+		{WB_REASON_LAPTOP_TIMER,	"laptop_timer"},	\
-+		{WB_REASON_FREE_MORE_MEM,	"free_more_memory"},	\
-+		{WB_REASON_FS_FREE_SPACE,	"fs_free_space"},	\
-+		{WB_REASON_FORKER_THREAD,	"forker_thread"}
-+#endif
-+
-+DECLARE_EVENT_CLASS(writeback_work_class,
-+	TP_PROTO(struct backing_dev_info *bdi, struct wb_writeback_work *work),
-+	TP_ARGS(bdi, work),
-+	TP_STRUCT__entry(
-+		__array(char, name, 32)
-+	),
-+	TP_fast_assign(
-+		tp_memcpy(name, dev_name(bdi->dev ? bdi->dev :
-+				default_backing_dev_info.dev), 32)
-+	),
-+	TP_printk("bdi %s",
-+		  __entry->name
-+	)
-+)
-+#define DEFINE_WRITEBACK_WORK_EVENT(name) \
-+DEFINE_EVENT(writeback_work_class, name, \
-+	TP_PROTO(struct backing_dev_info *bdi, struct wb_writeback_work *work), \
-+	TP_ARGS(bdi, work))
-+DEFINE_WRITEBACK_WORK_EVENT(writeback_nothread)
-+DEFINE_WRITEBACK_WORK_EVENT(writeback_queue)
-+DEFINE_WRITEBACK_WORK_EVENT(writeback_exec)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0))
-+DEFINE_WRITEBACK_WORK_EVENT(writeback_start)
-+DEFINE_WRITEBACK_WORK_EVENT(writeback_written)
-+DEFINE_WRITEBACK_WORK_EVENT(writeback_wait)
-+#endif
-+
-+TRACE_EVENT(writeback_pages_written,
-+	TP_PROTO(long pages_written),
-+	TP_ARGS(pages_written),
-+	TP_STRUCT__entry(
-+		__field(long,		pages)
-+	),
-+	TP_fast_assign(
-+		tp_assign(pages, pages_written)
-+	),
-+	TP_printk("%ld", __entry->pages)
-+)
-+
-+DECLARE_EVENT_CLASS(writeback_class,
-+	TP_PROTO(struct backing_dev_info *bdi),
-+	TP_ARGS(bdi),
-+	TP_STRUCT__entry(
-+		__array(char, name, 32)
-+	),
-+	TP_fast_assign(
-+		tp_memcpy(name, dev_name(bdi->dev), 32)
-+	),
-+	TP_printk("bdi %s",
-+		  __entry->name
-+	)
-+)
-+#define DEFINE_WRITEBACK_EVENT(name) \
-+DEFINE_EVENT(writeback_class, name, \
-+	TP_PROTO(struct backing_dev_info *bdi), \
-+	TP_ARGS(bdi))
-+
-+#define DEFINE_WRITEBACK_EVENT_MAP(name, map) \
-+DEFINE_EVENT_MAP(writeback_class, name, map, \
-+	TP_PROTO(struct backing_dev_info *bdi), \
-+	TP_ARGS(bdi))
-+
-+DEFINE_WRITEBACK_EVENT(writeback_nowork)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38))
-+DEFINE_WRITEBACK_EVENT(writeback_wake_background)
-+#endif
-+DEFINE_WRITEBACK_EVENT(writeback_wake_thread)
-+DEFINE_WRITEBACK_EVENT(writeback_wake_forker_thread)
-+DEFINE_WRITEBACK_EVENT(writeback_bdi_register)
-+DEFINE_WRITEBACK_EVENT(writeback_bdi_unregister)
-+DEFINE_WRITEBACK_EVENT(writeback_thread_start)
-+DEFINE_WRITEBACK_EVENT(writeback_thread_stop)
-+#if (LTTNG_KERNEL_RANGE(3,1,0, 3,2,0))
-+DEFINE_WRITEBACK_EVENT_MAP(balance_dirty_start, writeback_balance_dirty_start)
-+DEFINE_WRITEBACK_EVENT_MAP(balance_dirty_wait, writeback_balance_dirty_wait)
-+
-+TRACE_EVENT_MAP(balance_dirty_written,
-+
-+	writeback_balance_dirty_written,
-+
-+	TP_PROTO(struct backing_dev_info *bdi, int written),
-+
-+	TP_ARGS(bdi, written),
-+
-+	TP_STRUCT__entry(
-+		__array(char,	name, 32)
-+		__field(int,	written)
-+	),
-+
-+	TP_fast_assign(
-+		tp_memcpy(name, dev_name(bdi->dev), 32)
-+		tp_assign(written, written)
-+	),
-+
-+	TP_printk("bdi %s written %d",
-+		  __entry->name,
-+		  __entry->written
-+	)
-+)
-+#endif
-+
-+DECLARE_EVENT_CLASS(writeback_wbc_class,
-+	TP_PROTO(struct writeback_control *wbc, struct backing_dev_info *bdi),
-+	TP_ARGS(wbc, bdi),
-+	TP_STRUCT__entry(
-+		__array(char, name, 32)
-+		__field(long, nr_to_write)
-+		__field(long, pages_skipped)
-+		__field(int, sync_mode)
-+		__field(int, for_kupdate)
-+		__field(int, for_background)
-+		__field(int, for_reclaim)
-+		__field(int, range_cyclic)
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0))
-+		__field(int, more_io)
-+		__field(unsigned long, older_than_this)
-+#endif
-+		__field(long, range_start)
-+		__field(long, range_end)
-+	),
-+
-+	TP_fast_assign(
-+		tp_memcpy(name, dev_name(bdi->dev), 32)
-+		tp_assign(nr_to_write, wbc->nr_to_write)
-+		tp_assign(pages_skipped, wbc->pages_skipped)
-+		tp_assign(sync_mode, wbc->sync_mode)
-+		tp_assign(for_kupdate, wbc->for_kupdate)
-+		tp_assign(for_background, wbc->for_background)
-+		tp_assign(for_reclaim, wbc->for_reclaim)
-+		tp_assign(range_cyclic, wbc->range_cyclic)
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0))
-+		tp_assign(more_io, wbc->more_io)
-+		tp_assign(older_than_this, wbc->older_than_this ?
-+						*wbc->older_than_this : 0)
-+#endif
-+		tp_assign(range_start, (long)wbc->range_start)
-+		tp_assign(range_end, (long)wbc->range_end)
-+	),
-+
-+	TP_printk("bdi %s: towrt=%ld skip=%ld mode=%d kupd=%d "
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0))
-+		"bgrd=%d reclm=%d cyclic=%d more=%d older=0x%lx "
-+#else
-+		"bgrd=%d reclm=%d cyclic=%d "
-+#endif
-+		"start=0x%lx end=0x%lx",
-+		__entry->name,
-+		__entry->nr_to_write,
-+		__entry->pages_skipped,
-+		__entry->sync_mode,
-+		__entry->for_kupdate,
-+		__entry->for_background,
-+		__entry->for_reclaim,
-+		__entry->range_cyclic,
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0))
-+		__entry->more_io,
-+		__entry->older_than_this,
-+#endif
-+		__entry->range_start,
-+		__entry->range_end)
-+)
-+
-+#undef DEFINE_WBC_EVENT
-+#define DEFINE_WBC_EVENT(name, map) \
-+DEFINE_EVENT_MAP(writeback_wbc_class, name, map, \
-+	TP_PROTO(struct writeback_control *wbc, struct backing_dev_info *bdi), \
-+	TP_ARGS(wbc, bdi))
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0))
-+DEFINE_WBC_EVENT(wbc_writeback_start, writeback_wbc_writeback_start)
-+DEFINE_WBC_EVENT(wbc_writeback_written, writeback_wbc_writeback_written)
-+DEFINE_WBC_EVENT(wbc_writeback_wait, writeback_wbc_writeback_wait)
-+DEFINE_WBC_EVENT(wbc_balance_dirty_start, writeback_wbc_balance_dirty_start)
-+DEFINE_WBC_EVENT(wbc_balance_dirty_written, writeback_wbc_balance_dirty_written)
-+DEFINE_WBC_EVENT(wbc_balance_dirty_wait, writeback_wbc_balance_dirty_wait)
-+#endif
-+DEFINE_WBC_EVENT(wbc_writepage, writeback_wbc_writepage)
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0))
-+TRACE_EVENT(writeback_queue_io,
-+	TP_PROTO(struct bdi_writeback *wb,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))
-+		 struct wb_writeback_work *work,
-+#else
-+		 unsigned long *older_than_this,
-+#endif
-+		 int moved),
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))
-+	TP_ARGS(wb, work, moved),
-+#else
-+	TP_ARGS(wb, older_than_this, moved),
-+#endif
-+	TP_STRUCT__entry(
-+		__array(char,		name, 32)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))
-+#else
-+		__field(unsigned long,	older)
-+		__field(long,		age)
-+#endif
-+		__field(int,		moved)
-+	),
-+	TP_fast_assign(
-+		tp_memcpy(name, dev_name(wb->bdi->dev), 32)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))
-+#else
-+		tp_assign(older, older_than_this ?  *older_than_this : 0)
-+		tp_assign(age, older_than_this ?
-+			(jiffies - *older_than_this) * 1000 / HZ : -1)
-+#endif
-+		tp_assign(moved, moved)
-+	),
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))
-+	TP_printk("bdi %s: enqueue=%d",
-+		__entry->name,
-+		__entry->moved,
-+	)
-+#else
-+	TP_printk("bdi %s: older=%lu age=%ld enqueue=%d",
-+		__entry->name,
-+		__entry->older,	/* older_than_this in jiffies */
-+		__entry->age,	/* older_than_this in relative milliseconds */
-+		__entry->moved
-+	)
-+#endif
-+)
-+
-+TRACE_EVENT_MAP(global_dirty_state,
-+
-+	writeback_global_dirty_state,
-+
-+	TP_PROTO(unsigned long background_thresh,
-+		 unsigned long dirty_thresh
-+	),
-+
-+	TP_ARGS(background_thresh,
-+		dirty_thresh
-+	),
-+
-+	TP_STRUCT__entry(
-+		__field(unsigned long,	nr_dirty)
-+		__field(unsigned long,	nr_writeback)
-+		__field(unsigned long,	nr_unstable)
-+		__field(unsigned long,	background_thresh)
-+		__field(unsigned long,	dirty_thresh)
-+		__field(unsigned long,	dirty_limit)
-+		__field(unsigned long,	nr_dirtied)
-+		__field(unsigned long,	nr_written)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(nr_dirty, global_page_state(NR_FILE_DIRTY))
-+		tp_assign(nr_writeback, global_page_state(NR_WRITEBACK))
-+		tp_assign(nr_unstable, global_page_state(NR_UNSTABLE_NFS))
-+		tp_assign(nr_dirtied, global_page_state(NR_DIRTIED))
-+		tp_assign(nr_written, global_page_state(NR_WRITTEN))
-+		tp_assign(background_thresh, background_thresh)
-+		tp_assign(dirty_thresh, dirty_thresh)
-+		tp_assign(dirty_limit, global_dirty_limit)
-+	),
-+
-+	TP_printk("dirty=%lu writeback=%lu unstable=%lu "
-+		  "bg_thresh=%lu thresh=%lu limit=%lu "
-+		  "dirtied=%lu written=%lu",
-+		  __entry->nr_dirty,
-+		  __entry->nr_writeback,
-+		  __entry->nr_unstable,
-+		  __entry->background_thresh,
-+		  __entry->dirty_thresh,
-+		  __entry->dirty_limit,
-+		  __entry->nr_dirtied,
-+		  __entry->nr_written
-+	)
-+)
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))
-+
-+#define KBps(x)			((x) << (PAGE_SHIFT - 10))
-+
-+TRACE_EVENT_MAP(bdi_dirty_ratelimit,
-+
-+	writeback_bdi_dirty_ratelimit,
-+
-+	TP_PROTO(struct backing_dev_info *bdi,
-+		 unsigned long dirty_rate,
-+		 unsigned long task_ratelimit),
-+
-+	TP_ARGS(bdi, dirty_rate, task_ratelimit),
-+
-+	TP_STRUCT__entry(
-+		__array(char,		bdi, 32)
-+		__field(unsigned long,	write_bw)
-+		__field(unsigned long,	avg_write_bw)
-+		__field(unsigned long,	dirty_rate)
-+		__field(unsigned long,	dirty_ratelimit)
-+		__field(unsigned long,	task_ratelimit)
-+		__field(unsigned long,	balanced_dirty_ratelimit)
-+	),
-+
-+	TP_fast_assign(
-+		tp_memcpy(bdi, dev_name(bdi->dev), 32)
-+		tp_assign(write_bw, KBps(bdi->write_bandwidth))
-+		tp_assign(avg_write_bw, KBps(bdi->avg_write_bandwidth))
-+		tp_assign(dirty_rate, KBps(dirty_rate))
-+		tp_assign(dirty_ratelimit, KBps(bdi->dirty_ratelimit))
-+		tp_assign(task_ratelimit, KBps(task_ratelimit))
-+		tp_assign(balanced_dirty_ratelimit,
-+					KBps(bdi->balanced_dirty_ratelimit))
-+	),
-+
-+	TP_printk("bdi %s: "
-+		  "write_bw=%lu awrite_bw=%lu dirty_rate=%lu "
-+		  "dirty_ratelimit=%lu task_ratelimit=%lu "
-+		  "balanced_dirty_ratelimit=%lu",
-+		  __entry->bdi,
-+		  __entry->write_bw,		/* write bandwidth */
-+		  __entry->avg_write_bw,	/* avg write bandwidth */
-+		  __entry->dirty_rate,		/* bdi dirty rate */
-+		  __entry->dirty_ratelimit,	/* base ratelimit */
-+		  __entry->task_ratelimit, /* ratelimit with position control */
-+		  __entry->balanced_dirty_ratelimit /* the balanced ratelimit */
-+	)
-+)
-+
-+TRACE_EVENT_MAP(balance_dirty_pages,
-+
-+	writeback_balance_dirty_pages,
-+
-+	TP_PROTO(struct backing_dev_info *bdi,
-+		 unsigned long thresh,
-+		 unsigned long bg_thresh,
-+		 unsigned long dirty,
-+		 unsigned long bdi_thresh,
-+		 unsigned long bdi_dirty,
-+		 unsigned long dirty_ratelimit,
-+		 unsigned long task_ratelimit,
-+		 unsigned long dirtied,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+		 unsigned long period,
-+#endif
-+		 long pause,
-+		 unsigned long start_time),
-+
-+	TP_ARGS(bdi, thresh, bg_thresh, dirty, bdi_thresh, bdi_dirty,
-+		dirty_ratelimit, task_ratelimit,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+		dirtied, period, pause, start_time),
-+#else
-+		dirtied, pause, start_time),
-+#endif
-+	TP_STRUCT__entry(
-+		__array(	 char,	bdi, 32)
-+		__field(unsigned long,	limit)
-+		__field(unsigned long,	setpoint)
-+		__field(unsigned long,	dirty)
-+		__field(unsigned long,	bdi_setpoint)
-+		__field(unsigned long,	bdi_dirty)
-+		__field(unsigned long,	dirty_ratelimit)
-+		__field(unsigned long,	task_ratelimit)
-+		__field(unsigned int,	dirtied)
-+		__field(unsigned int,	dirtied_pause)
-+		__field(unsigned long,	paused)
-+		__field(	 long,	pause)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+		__field(unsigned long,	period)
-+		__field(	 long,	think)
-+#endif
-+	),
-+
-+	TP_fast_assign(
-+		tp_memcpy(bdi, dev_name(bdi->dev), 32)
-+		tp_assign(limit, global_dirty_limit)
-+		tp_assign(setpoint,
-+			(global_dirty_limit + (thresh + bg_thresh) / 2) / 2)
-+		tp_assign(dirty, dirty)
-+		tp_assign(bdi_setpoint,
-+			((global_dirty_limit + (thresh + bg_thresh) / 2) / 2) *
-+			bdi_thresh / (thresh + 1))
-+		tp_assign(bdi_dirty, bdi_dirty)
-+		tp_assign(dirty_ratelimit, KBps(dirty_ratelimit))
-+		tp_assign(task_ratelimit, KBps(task_ratelimit))
-+		tp_assign(dirtied, dirtied)
-+		tp_assign(dirtied_pause, current->nr_dirtied_pause)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+		tp_assign(think, current->dirty_paused_when == 0 ? 0 :
-+			(long)(jiffies - current->dirty_paused_when) * 1000/HZ)
-+		tp_assign(period, period * 1000 / HZ)
-+#endif
-+		tp_assign(pause, pause * 1000 / HZ)
-+		tp_assign(paused, (jiffies - start_time) * 1000 / HZ)
-+	),
-+
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+	TP_printk("bdi %s: "
-+		  "limit=%lu setpoint=%lu dirty=%lu "
-+		  "bdi_setpoint=%lu bdi_dirty=%lu "
-+		  "dirty_ratelimit=%lu task_ratelimit=%lu "
-+		  "dirtied=%u dirtied_pause=%u "
-+		  "paused=%lu pause=%ld period=%lu think=%ld",
-+		  __entry->bdi,
-+		  __entry->limit,
-+		  __entry->setpoint,
-+		  __entry->dirty,
-+		  __entry->bdi_setpoint,
-+		  __entry->bdi_dirty,
-+		  __entry->dirty_ratelimit,
-+		  __entry->task_ratelimit,
-+		  __entry->dirtied,
-+		  __entry->dirtied_pause,
-+		  __entry->paused,	/* ms */
-+		  __entry->pause,	/* ms */
-+		  __entry->period,	/* ms */
-+		  __entry->think	/* ms */
-+	  )
-+#else
-+	TP_printk("bdi %s: "
-+		  "limit=%lu setpoint=%lu dirty=%lu "
-+		  "bdi_setpoint=%lu bdi_dirty=%lu "
-+		  "dirty_ratelimit=%lu task_ratelimit=%lu "
-+		  "dirtied=%u dirtied_pause=%u "
-+		  "paused=%lu pause=%ld",
-+		  __entry->bdi,
-+		  __entry->limit,
-+		  __entry->setpoint,
-+		  __entry->dirty,
-+		  __entry->bdi_setpoint,
-+		  __entry->bdi_dirty,
-+		  __entry->dirty_ratelimit,
-+		  __entry->task_ratelimit,
-+		  __entry->dirtied,
-+		  __entry->dirtied_pause,
-+		  __entry->paused,	/* ms */
-+		  __entry->pause	/* ms */
-+	  )
-+#endif
-+)
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
-+TRACE_EVENT(writeback_sb_inodes_requeue,
-+
-+	TP_PROTO(struct inode *inode),
-+	TP_ARGS(inode),
-+
-+	TP_STRUCT__entry(
-+		__array(char, name, 32)
-+		__field(unsigned long, ino)
-+		__field(unsigned long, state)
-+		__field(unsigned long, dirtied_when)
-+	),
-+
-+	TP_fast_assign(
-+		tp_memcpy(name, dev_name(inode_to_bdi(inode)->dev), 32)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(state, inode->i_state)
-+		tp_assign(dirtied_when, inode->dirtied_when)
-+	),
-+
-+	TP_printk("bdi %s: ino=%lu state=%s dirtied_when=%lu age=%lu",
-+		  __entry->name,
-+		  __entry->ino,
-+		  show_inode_state(__entry->state),
-+		  __entry->dirtied_when,
-+		  (jiffies - __entry->dirtied_when) / HZ
-+	)
-+)
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
-+DECLARE_EVENT_CLASS(writeback_congest_waited_template,
-+
-+	TP_PROTO(unsigned int usec_timeout, unsigned int usec_delayed),
-+
-+	TP_ARGS(usec_timeout, usec_delayed),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned int,	usec_timeout	)
-+		__field(	unsigned int,	usec_delayed	)
-+	),
-+
-+	TP_fast_assign(
-+		tp_assign(usec_timeout, usec_timeout)
-+		tp_assign(usec_delayed, usec_delayed)
-+	),
-+
-+	TP_printk("usec_timeout=%u usec_delayed=%u",
-+			__entry->usec_timeout,
-+			__entry->usec_delayed)
-+)
-+
-+DEFINE_EVENT(writeback_congest_waited_template, writeback_congestion_wait,
-+
-+	TP_PROTO(unsigned int usec_timeout, unsigned int usec_delayed),
-+
-+	TP_ARGS(usec_timeout, usec_delayed)
-+)
-+
-+DEFINE_EVENT(writeback_congest_waited_template, writeback_wait_iff_congested,
-+
-+	TP_PROTO(unsigned int usec_timeout, unsigned int usec_delayed),
-+
-+	TP_ARGS(usec_timeout, usec_delayed)
-+)
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0))
-+DECLARE_EVENT_CLASS(writeback_single_inode_template,
-+
-+	TP_PROTO(struct inode *inode,
-+		 struct writeback_control *wbc,
-+		 unsigned long nr_to_write
-+	),
-+
-+	TP_ARGS(inode, wbc, nr_to_write),
-+
-+	TP_STRUCT__entry(
-+		__array(char, name, 32)
-+		__field(unsigned long, ino)
-+		__field(unsigned long, state)
-+		__field(unsigned long, dirtied_when)
-+		__field(unsigned long, writeback_index)
-+		__field(long, nr_to_write)
-+		__field(unsigned long, wrote)
-+	),
-+
-+	TP_fast_assign(
-+		tp_memcpy(name, dev_name(inode_to_bdi(inode)->dev), 32)
-+		tp_assign(ino, inode->i_ino)
-+		tp_assign(state, inode->i_state)
-+		tp_assign(dirtied_when, inode->dirtied_when)
-+		tp_assign(writeback_index, inode->i_mapping->writeback_index)
-+		tp_assign(nr_to_write, nr_to_write)
-+		tp_assign(wrote, nr_to_write - wbc->nr_to_write)
-+	),
-+
-+	TP_printk("bdi %s: ino=%lu state=%s dirtied_when=%lu age=%lu "
-+		  "index=%lu to_write=%ld wrote=%lu",
-+		  __entry->name,
-+		  __entry->ino,
-+		  show_inode_state(__entry->state),
-+		  __entry->dirtied_when,
-+		  (jiffies - __entry->dirtied_when) / HZ,
-+		  __entry->writeback_index,
-+		  __entry->nr_to_write,
-+		  __entry->wrote
-+	)
-+)
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0))
-+DEFINE_EVENT(writeback_single_inode_template, writeback_single_inode_requeue,
-+	TP_PROTO(struct inode *inode,
-+		struct writeback_control *wbc,
-+		unsigned long nr_to_write),
-+	TP_ARGS(inode, wbc, nr_to_write)
-+)
-+#endif
-+
-+DEFINE_EVENT(writeback_single_inode_template, writeback_single_inode,
-+	TP_PROTO(struct inode *inode,
-+		 struct writeback_control *wbc,
-+		 unsigned long nr_to_write),
-+	TP_ARGS(inode, wbc, nr_to_write)
-+)
-+#endif
-+
-+#endif /* _TRACE_WRITEBACK_H */
-+
-+/* This part must be outside protection */
-+#include "../../../probes/define_trace.h"
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/mainline/arch/x86/kvm/mmutrace.h
-@@ -0,0 +1,285 @@
-+#if !defined(_TRACE_KVMMMU_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_KVMMMU_H
-+
-+#include <linux/tracepoint.h>
-+#include <linux/ftrace_event.h>
-+
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM kvmmmu
-+
-+#define KVM_MMU_PAGE_FIELDS \
-+	__field(__u64, gfn) \
-+	__field(__u32, role) \
-+	__field(__u32, root_count) \
-+	__field(bool, unsync)
-+
-+#define KVM_MMU_PAGE_ASSIGN(sp)			     \
-+	__entry->gfn = sp->gfn;			     \
-+	__entry->role = sp->role.word;		     \
-+	__entry->root_count = sp->root_count;        \
-+	__entry->unsync = sp->unsync;
-+
-+#define KVM_MMU_PAGE_PRINTK() ({				        \
-+	const char *ret = p->buffer + p->len;				\
-+	static const char *access_str[] = {			        \
-+		"---", "--x", "w--", "w-x", "-u-", "-ux", "wu-", "wux"  \
-+	};							        \
-+	union kvm_mmu_page_role role;				        \
-+								        \
-+	role.word = __entry->role;					\
-+									\
-+	trace_seq_printf(p, "sp gfn %llx %u%s q%u%s %s%s"		\
-+			 " %snxe root %u %s%c",				\
-+			 __entry->gfn, role.level,			\
-+			 role.cr4_pae ? " pae" : "",			\
-+			 role.quadrant,					\
-+			 role.direct ? " direct" : "",			\
-+			 access_str[role.access],			\
-+			 role.invalid ? " invalid" : "",		\
-+			 role.nxe ? "" : "!",				\
-+			 __entry->root_count,				\
-+			 __entry->unsync ? "unsync" : "sync", 0);	\
-+	ret;								\
-+		})
-+
-+#define kvm_mmu_trace_pferr_flags       \
-+	{ PFERR_PRESENT_MASK, "P" },	\
-+	{ PFERR_WRITE_MASK, "W" },	\
-+	{ PFERR_USER_MASK, "U" },	\
-+	{ PFERR_RSVD_MASK, "RSVD" },	\
-+	{ PFERR_FETCH_MASK, "F" }
-+
-+/*
-+ * A pagetable walk has started
-+ */
-+TRACE_EVENT(
-+	kvm_mmu_pagetable_walk,
-+	TP_PROTO(u64 addr, u32 pferr),
-+	TP_ARGS(addr, pferr),
-+
-+	TP_STRUCT__entry(
-+		__field(__u64, addr)
-+		__field(__u32, pferr)
-+	),
-+
-+	TP_fast_assign(
-+		__entry->addr = addr;
-+		__entry->pferr = pferr;
-+	),
-+
-+	TP_printk("addr %llx pferr %x %s", __entry->addr, __entry->pferr,
-+		  __print_flags(__entry->pferr, "|", kvm_mmu_trace_pferr_flags))
-+);
-+
-+
-+/* We just walked a paging element */
-+TRACE_EVENT(
-+	kvm_mmu_paging_element,
-+	TP_PROTO(u64 pte, int level),
-+	TP_ARGS(pte, level),
-+
-+	TP_STRUCT__entry(
-+		__field(__u64, pte)
-+		__field(__u32, level)
-+		),
-+
-+	TP_fast_assign(
-+		__entry->pte = pte;
-+		__entry->level = level;
-+		),
-+
-+	TP_printk("pte %llx level %u", __entry->pte, __entry->level)
-+);
-+
-+DECLARE_EVENT_CLASS(kvm_mmu_set_bit_class,
-+
-+	TP_PROTO(unsigned long table_gfn, unsigned index, unsigned size),
-+
-+	TP_ARGS(table_gfn, index, size),
-+
-+	TP_STRUCT__entry(
-+		__field(__u64, gpa)
-+	),
-+
-+	TP_fast_assign(
-+		__entry->gpa = ((u64)table_gfn << PAGE_SHIFT)
-+				+ index * size;
-+		),
-+
-+	TP_printk("gpa %llx", __entry->gpa)
-+);
-+
-+/* We set a pte accessed bit */
-+DEFINE_EVENT(kvm_mmu_set_bit_class, kvm_mmu_set_accessed_bit,
-+
-+	TP_PROTO(unsigned long table_gfn, unsigned index, unsigned size),
-+
-+	TP_ARGS(table_gfn, index, size)
-+);
-+
-+/* We set a pte dirty bit */
-+DEFINE_EVENT(kvm_mmu_set_bit_class, kvm_mmu_set_dirty_bit,
-+
-+	TP_PROTO(unsigned long table_gfn, unsigned index, unsigned size),
-+
-+	TP_ARGS(table_gfn, index, size)
-+);
-+
-+TRACE_EVENT(
-+	kvm_mmu_walker_error,
-+	TP_PROTO(u32 pferr),
-+	TP_ARGS(pferr),
-+
-+	TP_STRUCT__entry(
-+		__field(__u32, pferr)
-+		),
-+
-+	TP_fast_assign(
-+		__entry->pferr = pferr;
-+		),
-+
-+	TP_printk("pferr %x %s", __entry->pferr,
-+		  __print_flags(__entry->pferr, "|", kvm_mmu_trace_pferr_flags))
-+);
-+
-+TRACE_EVENT(
-+	kvm_mmu_get_page,
-+	TP_PROTO(struct kvm_mmu_page *sp, bool created),
-+	TP_ARGS(sp, created),
-+
-+	TP_STRUCT__entry(
-+		KVM_MMU_PAGE_FIELDS
-+		__field(bool, created)
-+		),
-+
-+	TP_fast_assign(
-+		KVM_MMU_PAGE_ASSIGN(sp)
-+		__entry->created = created;
-+		),
-+
-+	TP_printk("%s %s", KVM_MMU_PAGE_PRINTK(),
-+		  __entry->created ? "new" : "existing")
-+);
-+
-+DECLARE_EVENT_CLASS(kvm_mmu_page_class,
-+
-+	TP_PROTO(struct kvm_mmu_page *sp),
-+	TP_ARGS(sp),
-+
-+	TP_STRUCT__entry(
-+		KVM_MMU_PAGE_FIELDS
-+	),
-+
-+	TP_fast_assign(
-+		KVM_MMU_PAGE_ASSIGN(sp)
-+	),
-+
-+	TP_printk("%s", KVM_MMU_PAGE_PRINTK())
-+);
-+
-+DEFINE_EVENT(kvm_mmu_page_class, kvm_mmu_sync_page,
-+	TP_PROTO(struct kvm_mmu_page *sp),
-+
-+	TP_ARGS(sp)
-+);
-+
-+DEFINE_EVENT(kvm_mmu_page_class, kvm_mmu_unsync_page,
-+	TP_PROTO(struct kvm_mmu_page *sp),
-+
-+	TP_ARGS(sp)
-+);
-+
-+DEFINE_EVENT(kvm_mmu_page_class, kvm_mmu_prepare_zap_page,
-+	TP_PROTO(struct kvm_mmu_page *sp),
-+
-+	TP_ARGS(sp)
-+);
-+
-+TRACE_EVENT(
-+	mark_mmio_spte,
-+	TP_PROTO(u64 *sptep, gfn_t gfn, unsigned access),
-+	TP_ARGS(sptep, gfn, access),
-+
-+	TP_STRUCT__entry(
-+		__field(void *, sptep)
-+		__field(gfn_t, gfn)
-+		__field(unsigned, access)
-+	),
-+
-+	TP_fast_assign(
-+		__entry->sptep = sptep;
-+		__entry->gfn = gfn;
-+		__entry->access = access;
-+	),
-+
-+	TP_printk("sptep:%p gfn %llx access %x", __entry->sptep, __entry->gfn,
-+		  __entry->access)
-+);
-+
-+TRACE_EVENT(
-+	handle_mmio_page_fault,
-+	TP_PROTO(u64 addr, gfn_t gfn, unsigned access),
-+	TP_ARGS(addr, gfn, access),
-+
-+	TP_STRUCT__entry(
-+		__field(u64, addr)
-+		__field(gfn_t, gfn)
-+		__field(unsigned, access)
-+	),
-+
-+	TP_fast_assign(
-+		__entry->addr = addr;
-+		__entry->gfn = gfn;
-+		__entry->access = access;
-+	),
-+
-+	TP_printk("addr:%llx gfn %llx access %x", __entry->addr, __entry->gfn,
-+		  __entry->access)
-+);
-+
-+#define __spte_satisfied(__spte)				\
-+	(__entry->retry && is_writable_pte(__entry->__spte))
-+
-+TRACE_EVENT(
-+	fast_page_fault,
-+	TP_PROTO(struct kvm_vcpu *vcpu, gva_t gva, u32 error_code,
-+		 u64 *sptep, u64 old_spte, bool retry),
-+	TP_ARGS(vcpu, gva, error_code, sptep, old_spte, retry),
-+
-+	TP_STRUCT__entry(
-+		__field(int, vcpu_id)
-+		__field(gva_t, gva)
-+		__field(u32, error_code)
-+		__field(u64 *, sptep)
-+		__field(u64, old_spte)
-+		__field(u64, new_spte)
-+		__field(bool, retry)
-+	),
-+
-+	TP_fast_assign(
-+		__entry->vcpu_id = vcpu->vcpu_id;
-+		__entry->gva = gva;
-+		__entry->error_code = error_code;
-+		__entry->sptep = sptep;
-+		__entry->old_spte = old_spte;
-+		__entry->new_spte = *sptep;
-+		__entry->retry = retry;
-+	),
-+
-+	TP_printk("vcpu %d gva %lx error_code %s sptep %p old %#llx"
-+		  " new %llx spurious %d fixed %d", __entry->vcpu_id,
-+		  __entry->gva, __print_flags(__entry->error_code, "|",
-+		  kvm_mmu_trace_pferr_flags), __entry->sptep,
-+		  __entry->old_spte, __entry->new_spte,
-+		  __spte_satisfied(old_spte), __spte_satisfied(new_spte)
-+	)
-+);
-+#endif /* _TRACE_KVMMMU_H */
-+
-+#undef TRACE_INCLUDE_PATH
-+#define TRACE_INCLUDE_PATH .
-+#undef TRACE_INCLUDE_FILE
-+#define TRACE_INCLUDE_FILE mmutrace
-+
-+/* This part must be outside protection */
-+#include <trace/define_trace.h>
---- /dev/null
-+++ b/drivers/staging/lttng/instrumentation/events/mainline/arch/x86/kvm/trace.h
-@@ -0,0 +1,828 @@
-+#if !defined(_TRACE_KVM_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_KVM_H
-+
-+#include <linux/tracepoint.h>
-+#include <asm/vmx.h>
-+#include <asm/svm.h>
-+#include <asm/clocksource.h>
-+
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM kvm
-+
-+/*
-+ * Tracepoint for guest mode entry.
-+ */
-+TRACE_EVENT(kvm_entry,
-+	TP_PROTO(unsigned int vcpu_id),
-+	TP_ARGS(vcpu_id),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned int,	vcpu_id		)
-+	),
-+
-+	TP_fast_assign(
-+		__entry->vcpu_id	= vcpu_id;
-+	),
-+
-+	TP_printk("vcpu %u", __entry->vcpu_id)
-+);
-+
-+/*
-+ * Tracepoint for hypercall.
-+ */
-+TRACE_EVENT(kvm_hypercall,
-+	TP_PROTO(unsigned long nr, unsigned long a0, unsigned long a1,
-+		 unsigned long a2, unsigned long a3),
-+	TP_ARGS(nr, a0, a1, a2, a3),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned long, 	nr		)
-+		__field(	unsigned long,	a0		)
-+		__field(	unsigned long,	a1		)
-+		__field(	unsigned long,	a2		)
-+		__field(	unsigned long,	a3		)
-+	),
-+
-+	TP_fast_assign(
-+		__entry->nr		= nr;
-+		__entry->a0		= a0;
-+		__entry->a1		= a1;
-+		__entry->a2		= a2;
-+		__entry->a3		= a3;
-+	),
-+
-+	TP_printk("nr 0x%lx a0 0x%lx a1 0x%lx a2 0x%lx a3 0x%lx",
-+		 __entry->nr, __entry->a0, __entry->a1,  __entry->a2,
-+		 __entry->a3)
-+);
-+
-+/*
-+ * Tracepoint for hypercall.
-+ */
-+TRACE_EVENT(kvm_hv_hypercall,
-+	TP_PROTO(__u16 code, bool fast, __u16 rep_cnt, __u16 rep_idx,
-+		 __u64 ingpa, __u64 outgpa),
-+	TP_ARGS(code, fast, rep_cnt, rep_idx, ingpa, outgpa),
-+
-+	TP_STRUCT__entry(
-+		__field(	__u16,		rep_cnt		)
-+		__field(	__u16,		rep_idx		)
-+		__field(	__u64,		ingpa		)
-+		__field(	__u64,		outgpa		)
-+		__field(	__u16, 		code		)
-+		__field(	bool,		fast		)
-+	),
-+
-+	TP_fast_assign(
-+		__entry->rep_cnt	= rep_cnt;
-+		__entry->rep_idx	= rep_idx;
-+		__entry->ingpa		= ingpa;
-+		__entry->outgpa		= outgpa;
-+		__entry->code		= code;
-+		__entry->fast		= fast;
-+	),
-+
-+	TP_printk("code 0x%x %s cnt 0x%x idx 0x%x in 0x%llx out 0x%llx",
-+		  __entry->code, __entry->fast ? "fast" : "slow",
-+		  __entry->rep_cnt, __entry->rep_idx,  __entry->ingpa,
-+		  __entry->outgpa)
-+);
-+
-+/*
-+ * Tracepoint for PIO.
-+ */
-+TRACE_EVENT(kvm_pio,
-+	TP_PROTO(unsigned int rw, unsigned int port, unsigned int size,
-+		 unsigned int count),
-+	TP_ARGS(rw, port, size, count),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned int, 	rw		)
-+		__field(	unsigned int, 	port		)
-+		__field(	unsigned int, 	size		)
-+		__field(	unsigned int,	count		)
-+	),
-+
-+	TP_fast_assign(
-+		__entry->rw		= rw;
-+		__entry->port		= port;
-+		__entry->size		= size;
-+		__entry->count		= count;
-+	),
-+
-+	TP_printk("pio_%s at 0x%x size %d count %d",
-+		  __entry->rw ? "write" : "read",
-+		  __entry->port, __entry->size, __entry->count)
-+);
-+
-+/*
-+ * Tracepoint for cpuid.
-+ */
-+TRACE_EVENT(kvm_cpuid,
-+	TP_PROTO(unsigned int function, unsigned long rax, unsigned long rbx,
-+		 unsigned long rcx, unsigned long rdx),
-+	TP_ARGS(function, rax, rbx, rcx, rdx),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned int,	function	)
-+		__field(	unsigned long,	rax		)
-+		__field(	unsigned long,	rbx		)
-+		__field(	unsigned long,	rcx		)
-+		__field(	unsigned long,	rdx		)
-+	),
-+
-+	TP_fast_assign(
-+		__entry->function	= function;
-+		__entry->rax		= rax;
-+		__entry->rbx		= rbx;
-+		__entry->rcx		= rcx;
-+		__entry->rdx		= rdx;
-+	),
-+
-+	TP_printk("func %x rax %lx rbx %lx rcx %lx rdx %lx",
-+		  __entry->function, __entry->rax,
-+		  __entry->rbx, __entry->rcx, __entry->rdx)
-+);
-+
-+#define AREG(x) { APIC_##x, "APIC_" #x }
-+
-+#define kvm_trace_symbol_apic						    \
-+	AREG(ID), AREG(LVR), AREG(TASKPRI), AREG(ARBPRI), AREG(PROCPRI),    \
-+	AREG(EOI), AREG(RRR), AREG(LDR), AREG(DFR), AREG(SPIV), AREG(ISR),  \
-+	AREG(TMR), AREG(IRR), AREG(ESR), AREG(ICR), AREG(ICR2), AREG(LVTT), \
-+	AREG(LVTTHMR), AREG(LVTPC), AREG(LVT0), AREG(LVT1), AREG(LVTERR),   \
-+	AREG(TMICT), AREG(TMCCT), AREG(TDCR), AREG(SELF_IPI), AREG(EFEAT),  \
-+	AREG(ECTRL)
-+/*
-+ * Tracepoint for apic access.
-+ */
-+TRACE_EVENT(kvm_apic,
-+	TP_PROTO(unsigned int rw, unsigned int reg, unsigned int val),
-+	TP_ARGS(rw, reg, val),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned int,	rw		)
-+		__field(	unsigned int,	reg		)
-+		__field(	unsigned int,	val		)
-+	),
-+
-+	TP_fast_assign(
-+		__entry->rw		= rw;
-+		__entry->reg		= reg;
-+		__entry->val		= val;
-+	),
-+
-+	TP_printk("apic_%s %s = 0x%x",
-+		  __entry->rw ? "write" : "read",
-+		  __print_symbolic(__entry->reg, kvm_trace_symbol_apic),
-+		  __entry->val)
-+);
-+
-+#define trace_kvm_apic_read(reg, val)		trace_kvm_apic(0, reg, val)
-+#define trace_kvm_apic_write(reg, val)		trace_kvm_apic(1, reg, val)
-+
-+#define KVM_ISA_VMX   1
-+#define KVM_ISA_SVM   2
-+
-+/*
-+ * Tracepoint for kvm guest exit:
-+ */
-+TRACE_EVENT(kvm_exit,
-+	TP_PROTO(unsigned int exit_reason, struct kvm_vcpu *vcpu, u32 isa),
-+	TP_ARGS(exit_reason, vcpu, isa),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned int,	exit_reason	)
-+		__field(	unsigned long,	guest_rip	)
-+		__field(	u32,	        isa             )
-+		__field(	u64,	        info1           )
-+		__field(	u64,	        info2           )
-+	),
-+
-+	TP_fast_assign(
-+		__entry->exit_reason	= exit_reason;
-+		__entry->guest_rip	= kvm_rip_read(vcpu);
-+		__entry->isa            = isa;
-+		kvm_x86_ops->get_exit_info(vcpu, &__entry->info1,
-+					   &__entry->info2);
-+	),
-+
-+	TP_printk("reason %s rip 0x%lx info %llx %llx",
-+		 (__entry->isa == KVM_ISA_VMX) ?
-+		 __print_symbolic(__entry->exit_reason, VMX_EXIT_REASONS) :
-+		 __print_symbolic(__entry->exit_reason, SVM_EXIT_REASONS),
-+		 __entry->guest_rip, __entry->info1, __entry->info2)
-+);
-+
-+/*
-+ * Tracepoint for kvm interrupt injection:
-+ */
-+TRACE_EVENT(kvm_inj_virq,
-+	TP_PROTO(unsigned int irq),
-+	TP_ARGS(irq),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned int,	irq		)
-+	),
-+
-+	TP_fast_assign(
-+		__entry->irq		= irq;
-+	),
-+
-+	TP_printk("irq %u", __entry->irq)
-+);
-+
-+#define EXS(x) { x##_VECTOR, "#" #x }
-+
-+#define kvm_trace_sym_exc						\
-+	EXS(DE), EXS(DB), EXS(BP), EXS(OF), EXS(BR), EXS(UD), EXS(NM),	\
-+	EXS(DF), EXS(TS), EXS(NP), EXS(SS), EXS(GP), EXS(PF),		\
-+	EXS(MF), EXS(MC)
-+
-+/*
-+ * Tracepoint for kvm interrupt injection:
-+ */
-+TRACE_EVENT(kvm_inj_exception,
-+	TP_PROTO(unsigned exception, bool has_error, unsigned error_code),
-+	TP_ARGS(exception, has_error, error_code),
-+
-+	TP_STRUCT__entry(
-+		__field(	u8,	exception	)
-+		__field(	u8,	has_error	)
-+		__field(	u32,	error_code	)
-+	),
-+
-+	TP_fast_assign(
-+		__entry->exception	= exception;
-+		__entry->has_error	= has_error;
-+		__entry->error_code	= error_code;
-+	),
-+
-+	TP_printk("%s (0x%x)",
-+		  __print_symbolic(__entry->exception, kvm_trace_sym_exc),
-+		  /* FIXME: don't print error_code if not present */
-+		  __entry->has_error ? __entry->error_code : 0)
-+);
-+
-+/*
-+ * Tracepoint for page fault.
-+ */
-+TRACE_EVENT(kvm_page_fault,
-+	TP_PROTO(unsigned long fault_address, unsigned int error_code),
-+	TP_ARGS(fault_address, error_code),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned long,	fault_address	)
-+		__field(	unsigned int,	error_code	)
-+	),
-+
-+	TP_fast_assign(
-+		__entry->fault_address	= fault_address;
-+		__entry->error_code	= error_code;
-+	),
-+
-+	TP_printk("address %lx error_code %x",
-+		  __entry->fault_address, __entry->error_code)
-+);
-+
-+/*
-+ * Tracepoint for guest MSR access.
-+ */
-+TRACE_EVENT(kvm_msr,
-+	TP_PROTO(unsigned write, u32 ecx, u64 data, bool exception),
-+	TP_ARGS(write, ecx, data, exception),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned,	write		)
-+		__field(	u32,		ecx		)
-+		__field(	u64,		data		)
-+		__field(	u8,		exception	)
-+	),
-+
-+	TP_fast_assign(
-+		__entry->write		= write;
-+		__entry->ecx		= ecx;
-+		__entry->data		= data;
-+		__entry->exception	= exception;
-+	),
-+
-+	TP_printk("msr_%s %x = 0x%llx%s",
-+		  __entry->write ? "write" : "read",
-+		  __entry->ecx, __entry->data,
-+		  __entry->exception ? " (#GP)" : "")
-+);
-+
-+#define trace_kvm_msr_read(ecx, data)      trace_kvm_msr(0, ecx, data, false)
-+#define trace_kvm_msr_write(ecx, data)     trace_kvm_msr(1, ecx, data, false)
-+#define trace_kvm_msr_read_ex(ecx)         trace_kvm_msr(0, ecx, 0, true)
-+#define trace_kvm_msr_write_ex(ecx, data)  trace_kvm_msr(1, ecx, data, true)
-+
-+/*
-+ * Tracepoint for guest CR access.
-+ */
-+TRACE_EVENT(kvm_cr,
-+	TP_PROTO(unsigned int rw, unsigned int cr, unsigned long val),
-+	TP_ARGS(rw, cr, val),
-+
-+	TP_STRUCT__entry(
-+		__field(	unsigned int,	rw		)
-+		__field(	unsigned int,	cr		)
-+		__field(	unsigned long,	val		)
-+	),
-+
-+	TP_fast_assign(
-+		__entry->rw		= rw;
-+		__entry->cr		= cr;
-+		__entry->val		= val;
-+	),
-+
-+	TP_printk("cr_%s %x = 0x%lx",
-+		  __entry->rw ? "write" : "read",
-+		  __entry->cr, __entry->val)
-+);
-+
-+#define trace_kvm_cr_read(cr, val)		trace_kvm_cr(0, cr, val)
-+#define trace_kvm_cr_write(cr, val)		trace_kvm_cr(1, cr, val)
-+
-+TRACE_EVENT(kvm_pic_set_irq,
-+	    TP_PROTO(__u8 chip, __u8 pin, __u8 elcr, __u8 imr, bool coalesced),
-+	    TP_ARGS(chip, pin, elcr, imr, coalesced),
-+
-+	TP_STRUCT__entry(
-+		__field(	__u8,		chip		)
-+		__field(	__u8,		pin		)
-+		__field(	__u8,		elcr		)
-+		__field(	__u8,		imr		)
-+		__field(	bool,		coalesced	)
-+	),
-+
-+	TP_fast_assign(
-+		__entry->chip		= chip;
-+		__entry->pin		= pin;
-+		__entry->elcr		= elcr;
-+		__entry->imr		= imr;
-+		__entry->coalesced	= coalesced;
-+	),
-+
-+	TP_printk("chip %u pin %u (%s%s)%s",
-+		  __entry->chip, __entry->pin,
-+		  (__entry->elcr & (1 << __entry->pin)) ? "level":"edge",
-+		  (__entry->imr & (1 << __entry->pin)) ? "|masked":"",
-+		  __entry->coalesced ? " (coalesced)" : "")
-+);
-+
-+#define kvm_apic_dst_shorthand		\
-+	{0x0, "dst"},			\
-+	{0x1, "self"},			\
-+	{0x2, "all"},			\
-+	{0x3, "all-but-self"}
-+
-+TRACE_EVENT(kvm_apic_ipi,
-+	    TP_PROTO(__u32 icr_low, __u32 dest_id),
-+	    TP_ARGS(icr_low, dest_id),
-+
-+	TP_STRUCT__entry(
-+		__field(	__u32,		icr_low		)
-+		__field(	__u32,		dest_id		)
-+	),
-+
-+	TP_fast_assign(
-+		__entry->icr_low	= icr_low;
-+		__entry->dest_id	= dest_id;
-+	),
-+
-+	TP_printk("dst %x vec %u (%s|%s|%s|%s|%s)",
-+		  __entry->dest_id, (u8)__entry->icr_low,
-+		  __print_symbolic((__entry->icr_low >> 8 & 0x7),
-+				   kvm_deliver_mode),
-+		  (__entry->icr_low & (1<<11)) ? "logical" : "physical",
-+		  (__entry->icr_low & (1<<14)) ? "assert" : "de-assert",
-+		  (__entry->icr_low & (1<<15)) ? "level" : "edge",
-+		  __print_symbolic((__entry->icr_low >> 18 & 0x3),
-+				   kvm_apic_dst_shorthand))
-+);
-+
-+TRACE_EVENT(kvm_apic_accept_irq,
-+	    TP_PROTO(__u32 apicid, __u16 dm, __u8 tm, __u8 vec, bool coalesced),
-+	    TP_ARGS(apicid, dm, tm, vec, coalesced),
-+
-+	TP_STRUCT__entry(
-+		__field(	__u32,		apicid		)
-+		__field(	__u16,		dm		)
-+		__field(	__u8,		tm		)
-+		__field(	__u8,		vec		)
-+		__field(	bool,		coalesced	)
-+	),
-+
-+	TP_fast_assign(
-+		__entry->apicid		= apicid;
-+		__entry->dm		= dm;
-+		__entry->tm		= tm;
-+		__entry->vec		= vec;
-+		__entry->coalesced	= coalesced;
-+	),
-+
-+	TP_printk("apicid %x vec %u (%s|%s)%s",
-+		  __entry->apicid, __entry->vec,
-+		  __print_symbolic((__entry->dm >> 8 & 0x7), kvm_deliver_mode),
-+		  __entry->tm ? "level" : "edge",
-+		  __entry->coalesced ? " (coalesced)" : "")
-+);
-+
-+TRACE_EVENT(kvm_eoi,
-+	    TP_PROTO(struct kvm_lapic *apic, int vector),
-+	    TP_ARGS(apic, vector),
-+
-+	TP_STRUCT__entry(