diff options
author | Vitaly Kuznetsov <vkuznets@redhat.com> | 2017-10-29 15:21:00 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-11-04 07:04:24 -0400 |
commit | c9fe0f8fa4136c2451dcc012e48fbf4470d6b592 (patch) | |
tree | 5e8ce5d0a106d970b061041158eba858af9a35e6 | |
parent | 32946cc2d5686d320aab9fb162d8949c767f7519 (diff) |
hyper-v: trace vmbus_on_msg_dpc()
Add tracing subsystem to Hyper-V VMBus module and add tracepoint
to vmbus_on_msg_dpc() which is called when we receive a message from host.
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>
-rw-r--r-- | drivers/hv/Makefile | 4 | ||||
-rw-r--r-- | drivers/hv/hv_trace.c | 4 | ||||
-rw-r--r-- | drivers/hv/hv_trace.h | 29 | ||||
-rw-r--r-- | drivers/hv/hyperv_vmbus.h | 2 | ||||
-rw-r--r-- | drivers/hv/vmbus_drv.c | 2 |
5 files changed, 40 insertions, 1 deletions
diff --git a/drivers/hv/Makefile b/drivers/hv/Makefile index 39c9b2c08d33..ad791e00230f 100644 --- a/drivers/hv/Makefile +++ b/drivers/hv/Makefile | |||
@@ -2,7 +2,9 @@ obj-$(CONFIG_HYPERV) += hv_vmbus.o | |||
2 | obj-$(CONFIG_HYPERV_UTILS) += hv_utils.o | 2 | obj-$(CONFIG_HYPERV_UTILS) += hv_utils.o |
3 | obj-$(CONFIG_HYPERV_BALLOON) += hv_balloon.o | 3 | obj-$(CONFIG_HYPERV_BALLOON) += hv_balloon.o |
4 | 4 | ||
5 | CFLAGS_hv_trace.o = -I$(src) | ||
6 | |||
5 | hv_vmbus-y := vmbus_drv.o \ | 7 | hv_vmbus-y := vmbus_drv.o \ |
6 | hv.o connection.o channel.o \ | 8 | hv.o connection.o channel.o \ |
7 | channel_mgmt.o ring_buffer.o | 9 | channel_mgmt.o ring_buffer.o hv_trace.o |
8 | hv_utils-y := hv_util.o hv_kvp.o hv_snapshot.o hv_fcopy.o hv_utils_transport.o | 10 | hv_utils-y := hv_util.o hv_kvp.o hv_snapshot.o hv_fcopy.o hv_utils_transport.o |
diff --git a/drivers/hv/hv_trace.c b/drivers/hv/hv_trace.c new file mode 100644 index 000000000000..df47acd01a81 --- /dev/null +++ b/drivers/hv/hv_trace.c | |||
@@ -0,0 +1,4 @@ | |||
1 | #include "hyperv_vmbus.h" | ||
2 | |||
3 | #define CREATE_TRACE_POINTS | ||
4 | #include "hv_trace.h" | ||
diff --git a/drivers/hv/hv_trace.h b/drivers/hv/hv_trace.h new file mode 100644 index 000000000000..9c2772922c76 --- /dev/null +++ b/drivers/hv/hv_trace.h | |||
@@ -0,0 +1,29 @@ | |||
1 | #undef TRACE_SYSTEM | ||
2 | #define TRACE_SYSTEM hyperv | ||
3 | |||
4 | #if !defined(_HV_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) | ||
5 | #define _HV_TRACE_H | ||
6 | |||
7 | #include <linux/tracepoint.h> | ||
8 | |||
9 | DECLARE_EVENT_CLASS(vmbus_hdr_msg, | ||
10 | TP_PROTO(const struct vmbus_channel_message_header *hdr), | ||
11 | TP_ARGS(hdr), | ||
12 | TP_STRUCT__entry(__field(unsigned int, msgtype)), | ||
13 | TP_fast_assign(__entry->msgtype = hdr->msgtype;), | ||
14 | TP_printk("msgtype=%u", __entry->msgtype) | ||
15 | ); | ||
16 | |||
17 | DEFINE_EVENT(vmbus_hdr_msg, vmbus_on_msg_dpc, | ||
18 | TP_PROTO(const struct vmbus_channel_message_header *hdr), | ||
19 | TP_ARGS(hdr) | ||
20 | ); | ||
21 | |||
22 | #undef TRACE_INCLUDE_PATH | ||
23 | #define TRACE_INCLUDE_PATH . | ||
24 | #undef TRACE_INCLUDE_FILE | ||
25 | #define TRACE_INCLUDE_FILE hv_trace | ||
26 | #endif /* _HV_TRACE_H */ | ||
27 | |||
28 | /* This part must be outside protection */ | ||
29 | #include <trace/define_trace.h> | ||
diff --git a/drivers/hv/hyperv_vmbus.h b/drivers/hv/hyperv_vmbus.h index de6f01df9592..22300ec7b556 100644 --- a/drivers/hv/hyperv_vmbus.h +++ b/drivers/hv/hyperv_vmbus.h | |||
@@ -31,6 +31,8 @@ | |||
31 | #include <linux/hyperv.h> | 31 | #include <linux/hyperv.h> |
32 | #include <linux/interrupt.h> | 32 | #include <linux/interrupt.h> |
33 | 33 | ||
34 | #include "hv_trace.h" | ||
35 | |||
34 | /* | 36 | /* |
35 | * Timeout for services such as KVP and fcopy. | 37 | * Timeout for services such as KVP and fcopy. |
36 | */ | 38 | */ |
diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c index 8fe13cd76acf..8f9293a87c6b 100644 --- a/drivers/hv/vmbus_drv.c +++ b/drivers/hv/vmbus_drv.c | |||
@@ -835,6 +835,8 @@ void vmbus_on_msg_dpc(unsigned long data) | |||
835 | 835 | ||
836 | hdr = (struct vmbus_channel_message_header *)msg->u.payload; | 836 | hdr = (struct vmbus_channel_message_header *)msg->u.payload; |
837 | 837 | ||
838 | trace_vmbus_on_msg_dpc(hdr); | ||
839 | |||
838 | if (hdr->msgtype >= CHANNELMSG_COUNT) { | 840 | if (hdr->msgtype >= CHANNELMSG_COUNT) { |
839 | WARN_ONCE(1, "unknown msgtype=%d\n", hdr->msgtype); | 841 | WARN_ONCE(1, "unknown msgtype=%d\n", hdr->msgtype); |
840 | goto msg_handled; | 842 | goto msg_handled; |