hyper-v: trace channel events
authorVitaly Kuznetsov <vkuznets@redhat.com>
Sun, 29 Oct 2017 19:21:16 +0000 (12:21 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 4 Nov 2017 11:04:26 +0000 (12:04 +0100)
Added an additional set of trace points for when channel gets notified
or signals host.

Suggested-by: Stephen Hemminger <sthemmin@microsoft.com>
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/hv/channel.c
drivers/hv/connection.c
drivers/hv/hv_trace.h
drivers/hv/vmbus_drv.c

index ed3634e53e15dc9ad6eba030ee91c6de53a70c28..19f0cf37e0ed0748be1c0c5cd8cf482cb3384eec 100644 (file)
@@ -43,6 +43,8 @@ void vmbus_setevent(struct vmbus_channel *channel)
 {
        struct hv_monitor_page *monitorpage;
 
+       trace_vmbus_setevent(channel);
+
        /*
         * For channels marked as in "low latency" mode
         * bypass the monitor page mechanism.
index 05f413c4fe3bf7270d1c18b3c6035d5aec78b231..447371f4de5675d8b786a99d298d583f657dc5bd 100644 (file)
@@ -322,6 +322,8 @@ void vmbus_on_event(unsigned long data)
        struct vmbus_channel *channel = (void *) data;
        unsigned long time_limit = jiffies + 2;
 
+       trace_vmbus_on_event(channel);
+
        do {
                void (*callback_fn)(void *);
 
index 5382d963030664b1b688db2700fbd2a7fe03f1fb..d635ee95b20d9141e407f129300632c04b80f3d1 100644 (file)
@@ -294,6 +294,29 @@ TRACE_EVENT(vmbus_send_tl_connect_request,
                    )
        );
 
+DECLARE_EVENT_CLASS(vmbus_channel,
+       TP_PROTO(const struct vmbus_channel *channel),
+       TP_ARGS(channel),
+       TP_STRUCT__entry(__field(u32, relid)),
+       TP_fast_assign(__entry->relid = channel->offermsg.child_relid),
+       TP_printk("relid 0x%x", __entry->relid)
+);
+
+DEFINE_EVENT(vmbus_channel, vmbus_chan_sched,
+           TP_PROTO(const struct vmbus_channel *channel),
+           TP_ARGS(channel)
+);
+
+DEFINE_EVENT(vmbus_channel, vmbus_setevent,
+           TP_PROTO(const struct vmbus_channel *channel),
+           TP_ARGS(channel)
+);
+
+DEFINE_EVENT(vmbus_channel, vmbus_on_event,
+           TP_PROTO(const struct vmbus_channel *channel),
+           TP_ARGS(channel)
+);
+
 #undef TRACE_INCLUDE_PATH
 #define TRACE_INCLUDE_PATH .
 #undef TRACE_INCLUDE_FILE
index 8f9293a87c6bd43fdd6684975080e5e3fbfde633..6a86746d4f60343a9e33cf3a8acd9e5e8da4f979 100644 (file)
@@ -946,6 +946,8 @@ static void vmbus_chan_sched(struct hv_per_cpu_context *hv_cpu)
                        if (channel->rescind)
                                continue;
 
+                       trace_vmbus_chan_sched(channel);
+
                        ++channel->interrupts;
 
                        switch (channel->callback_mode) {