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>
This commit is contained in:
parent
32946cc2d5
commit
c9fe0f8fa4
5 changed files with 40 additions and 1 deletions
|
@ -2,7 +2,9 @@ obj-$(CONFIG_HYPERV) += hv_vmbus.o
|
|||
obj-$(CONFIG_HYPERV_UTILS) += hv_utils.o
|
||||
obj-$(CONFIG_HYPERV_BALLOON) += hv_balloon.o
|
||||
|
||||
CFLAGS_hv_trace.o = -I$(src)
|
||||
|
||||
hv_vmbus-y := vmbus_drv.o \
|
||||
hv.o connection.o channel.o \
|
||||
channel_mgmt.o ring_buffer.o
|
||||
channel_mgmt.o ring_buffer.o hv_trace.o
|
||||
hv_utils-y := hv_util.o hv_kvp.o hv_snapshot.o hv_fcopy.o hv_utils_transport.o
|
||||
|
|
4
drivers/hv/hv_trace.c
Normal file
4
drivers/hv/hv_trace.c
Normal file
|
@ -0,0 +1,4 @@
|
|||
#include "hyperv_vmbus.h"
|
||||
|
||||
#define CREATE_TRACE_POINTS
|
||||
#include "hv_trace.h"
|
29
drivers/hv/hv_trace.h
Normal file
29
drivers/hv/hv_trace.h
Normal file
|
@ -0,0 +1,29 @@
|
|||
#undef TRACE_SYSTEM
|
||||
#define TRACE_SYSTEM hyperv
|
||||
|
||||
#if !defined(_HV_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
|
||||
#define _HV_TRACE_H
|
||||
|
||||
#include <linux/tracepoint.h>
|
||||
|
||||
DECLARE_EVENT_CLASS(vmbus_hdr_msg,
|
||||
TP_PROTO(const struct vmbus_channel_message_header *hdr),
|
||||
TP_ARGS(hdr),
|
||||
TP_STRUCT__entry(__field(unsigned int, msgtype)),
|
||||
TP_fast_assign(__entry->msgtype = hdr->msgtype;),
|
||||
TP_printk("msgtype=%u", __entry->msgtype)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(vmbus_hdr_msg, vmbus_on_msg_dpc,
|
||||
TP_PROTO(const struct vmbus_channel_message_header *hdr),
|
||||
TP_ARGS(hdr)
|
||||
);
|
||||
|
||||
#undef TRACE_INCLUDE_PATH
|
||||
#define TRACE_INCLUDE_PATH .
|
||||
#undef TRACE_INCLUDE_FILE
|
||||
#define TRACE_INCLUDE_FILE hv_trace
|
||||
#endif /* _HV_TRACE_H */
|
||||
|
||||
/* This part must be outside protection */
|
||||
#include <trace/define_trace.h>
|
|
@ -31,6 +31,8 @@
|
|||
#include <linux/hyperv.h>
|
||||
#include <linux/interrupt.h>
|
||||
|
||||
#include "hv_trace.h"
|
||||
|
||||
/*
|
||||
* Timeout for services such as KVP and fcopy.
|
||||
*/
|
||||
|
|
|
@ -835,6 +835,8 @@ void vmbus_on_msg_dpc(unsigned long data)
|
|||
|
||||
hdr = (struct vmbus_channel_message_header *)msg->u.payload;
|
||||
|
||||
trace_vmbus_on_msg_dpc(hdr);
|
||||
|
||||
if (hdr->msgtype >= CHANNELMSG_COUNT) {
|
||||
WARN_ONCE(1, "unknown msgtype=%d\n", hdr->msgtype);
|
||||
goto msg_handled;
|
||||
|
|
Loading…
Reference in a new issue