mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-07-24 11:25:40 +00:00
102 lines
3.1 KiB
Diff
102 lines
3.1 KiB
Diff
From cb551169323e21deaa6f30a2bda27b08efa4790c Mon Sep 17 00:00:00 2001
|
|
From: Vitaly Kuznetsov <vkuznets@redhat.com>
|
|
Date: Sun, 29 Oct 2017 12:21:16 -0700
|
|
Subject: [PATCH 18/21] hyper-v: trace channel events
|
|
|
|
Added an additional set of trace points for when channel gets notified
|
|
or signals host.
|
|
|
|
Slightly modified as 6981fbf37803("Drivers: hv: vmbus: Expose per-channel
|
|
interrupts and events counters") is not fully applied and caused a
|
|
cherry-pick conflict.
|
|
|
|
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>
|
|
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
|
|
(cherry picked from commit 991f8f1c6eb634688952fa6a03cc0ce949b6e363)
|
|
---
|
|
drivers/hv/channel.c | 2 ++
|
|
drivers/hv/connection.c | 2 ++
|
|
drivers/hv/hv_trace.h | 23 +++++++++++++++++++++++
|
|
drivers/hv/vmbus_drv.c | 2 ++
|
|
4 files changed, 29 insertions(+)
|
|
|
|
diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c
|
|
index 218d16c7fbae..262ffbafeb52 100644
|
|
--- a/drivers/hv/channel.c
|
|
+++ b/drivers/hv/channel.c
|
|
@@ -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.
|
|
diff --git a/drivers/hv/connection.c b/drivers/hv/connection.c
|
|
index 5e36f86d0b0c..8acd2e0e7c8e 100644
|
|
--- a/drivers/hv/connection.c
|
|
+++ b/drivers/hv/connection.c
|
|
@@ -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 *);
|
|
|
|
diff --git a/drivers/hv/hv_trace.h b/drivers/hv/hv_trace.h
|
|
index 5382d9630306..d635ee95b20d 100644
|
|
--- a/drivers/hv/hv_trace.h
|
|
+++ b/drivers/hv/hv_trace.h
|
|
@@ -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
|
|
diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c
|
|
index 9687e462fd43..27d5efd696ad 100644
|
|
--- a/drivers/hv/vmbus_drv.c
|
|
+++ b/drivers/hv/vmbus_drv.c
|
|
@@ -944,6 +944,8 @@ static void vmbus_chan_sched(struct hv_per_cpu_context *hv_cpu)
|
|
if (channel->rescind)
|
|
continue;
|
|
|
|
+ trace_vmbus_chan_sched(channel);
|
|
+
|
|
switch (channel->callback_mode) {
|
|
case HV_CALL_ISR:
|
|
vmbus_channel_isr(channel);
|
|
--
|
|
2.18.0
|
|
|