diff --git a/kernel/patches-4.14.x/0001-NVDIMM-reducded-ND_MIN_NAMESPACE_SIZE-from-4MB-to-4K.patch b/kernel/patches-4.14.x/0001-NVDIMM-reducded-ND_MIN_NAMESPACE_SIZE-from-4MB-to-4K.patch index 41b1c39d5..dbb0a6b91 100644 --- a/kernel/patches-4.14.x/0001-NVDIMM-reducded-ND_MIN_NAMESPACE_SIZE-from-4MB-to-4K.patch +++ b/kernel/patches-4.14.x/0001-NVDIMM-reducded-ND_MIN_NAMESPACE_SIZE-from-4MB-to-4K.patch @@ -1,8 +1,8 @@ From 6bbdbaead3d12453aec28a37cb33bff2485a148a Mon Sep 17 00:00:00 2001 From: Cheng-mean Liu Date: Tue, 11 Jul 2017 16:58:26 -0700 -Subject: [PATCH] NVDIMM: reducded ND_MIN_NAMESPACE_SIZE from 4MB to 4KB (page - size) +Subject: [PATCH 01/18] NVDIMM: reducded ND_MIN_NAMESPACE_SIZE from 4MB to 4KB + (page size) Signed-off-by: Cheng-mean Liu Origin: https://github.com/Microsoft/opengcs/blob/master/kernelconfig/4.11/patch_lower-the-minimum-PMEM-size.patch diff --git a/kernel/patches-4.14.x/0002-hyper-v-trace-vmbus_on_msg_dpc.patch b/kernel/patches-4.14.x/0002-hyper-v-trace-vmbus_on_msg_dpc.patch new file mode 100644 index 000000000..519cc9a89 --- /dev/null +++ b/kernel/patches-4.14.x/0002-hyper-v-trace-vmbus_on_msg_dpc.patch @@ -0,0 +1,111 @@ +From 4e238653b5403128c184405dd84787f99ef12d77 Mon Sep 17 00:00:00 2001 +From: Vitaly Kuznetsov +Date: Sun, 29 Oct 2017 12:21:00 -0700 +Subject: [PATCH 02/18] 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 +Signed-off-by: K. Y. Srinivasan +Signed-off-by: Greg Kroah-Hartman +(cherry picked from commit c9fe0f8fa4136c2451dcc012e48fbf4470d6b592) +--- + drivers/hv/Makefile | 4 +++- + drivers/hv/hv_trace.c | 4 ++++ + drivers/hv/hv_trace.h | 29 +++++++++++++++++++++++++++++ + drivers/hv/hyperv_vmbus.h | 2 ++ + drivers/hv/vmbus_drv.c | 2 ++ + 5 files changed, 40 insertions(+), 1 deletion(-) + create mode 100644 drivers/hv/hv_trace.c + create mode 100644 drivers/hv/hv_trace.h + +diff --git a/drivers/hv/Makefile b/drivers/hv/Makefile +index e7b1d796ba2e..14c22786b519 100644 +--- a/drivers/hv/Makefile ++++ b/drivers/hv/Makefile +@@ -3,7 +3,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 +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 @@ ++#include "hyperv_vmbus.h" ++ ++#define CREATE_TRACE_POINTS ++#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 @@ ++#undef TRACE_SYSTEM ++#define TRACE_SYSTEM hyperv ++ ++#if !defined(_HV_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) ++#define _HV_TRACE_H ++ ++#include ++ ++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 +diff --git a/drivers/hv/hyperv_vmbus.h b/drivers/hv/hyperv_vmbus.h +index 49569f8fe038..82eb082f3302 100644 +--- a/drivers/hv/hyperv_vmbus.h ++++ b/drivers/hv/hyperv_vmbus.h +@@ -31,6 +31,8 @@ + #include + #include + ++#include "hv_trace.h" ++ + /* + * Timeout for services such as KVP and fcopy. + */ +diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c +index 2cd134dd94d2..9687e462fd43 100644 +--- a/drivers/hv/vmbus_drv.c ++++ b/drivers/hv/vmbus_drv.c +@@ -833,6 +833,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; +-- +2.16.0 + diff --git a/kernel/patches-4.14.x/0003-hyper-v-trace-vmbus_on_message.patch b/kernel/patches-4.14.x/0003-hyper-v-trace-vmbus_on_message.patch new file mode 100644 index 000000000..774a20801 --- /dev/null +++ b/kernel/patches-4.14.x/0003-hyper-v-trace-vmbus_on_message.patch @@ -0,0 +1,49 @@ +From c87244e9cba6dc88b82cbe0a5d4ada4f9951e319 Mon Sep 17 00:00:00 2001 +From: Vitaly Kuznetsov +Date: Sun, 29 Oct 2017 12:21:01 -0700 +Subject: [PATCH 03/18] hyper-v: trace vmbus_on_message() + +Add tracepoint to vmbus_on_message() which is called when we start +processing a blocking from work context. + +Signed-off-by: Vitaly Kuznetsov +Signed-off-by: K. Y. Srinivasan +Signed-off-by: Greg Kroah-Hartman +(cherry picked from commit 716fa52fb474a36ddd3cbc981108f93610c973ef) +--- + drivers/hv/channel_mgmt.c | 2 ++ + drivers/hv/hv_trace.h | 5 +++++ + 2 files changed, 7 insertions(+) + +diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c +index 65c6d6bdce4c..7948fff52a6d 100644 +--- a/drivers/hv/channel_mgmt.c ++++ b/drivers/hv/channel_mgmt.c +@@ -1169,6 +1169,8 @@ void vmbus_onmessage(void *context) + hdr = (struct vmbus_channel_message_header *)msg->u.payload; + size = msg->header.payload_size; + ++ trace_vmbus_on_message(hdr); ++ + if (hdr->msgtype >= CHANNELMSG_COUNT) { + pr_err("Received invalid channel message type %d size %d\n", + hdr->msgtype, size); +diff --git a/drivers/hv/hv_trace.h b/drivers/hv/hv_trace.h +index 9c2772922c76..d432aba5df8a 100644 +--- a/drivers/hv/hv_trace.h ++++ b/drivers/hv/hv_trace.h +@@ -19,6 +19,11 @@ DEFINE_EVENT(vmbus_hdr_msg, vmbus_on_msg_dpc, + TP_ARGS(hdr) + ); + ++DEFINE_EVENT(vmbus_hdr_msg, vmbus_on_message, ++ TP_PROTO(const struct vmbus_channel_message_header *hdr), ++ TP_ARGS(hdr) ++); ++ + #undef TRACE_INCLUDE_PATH + #define TRACE_INCLUDE_PATH . + #undef TRACE_INCLUDE_FILE +-- +2.16.0 + diff --git a/kernel/patches-4.14.x/0004-hyper-v-trace-vmbus_onoffer.patch b/kernel/patches-4.14.x/0004-hyper-v-trace-vmbus_onoffer.patch new file mode 100644 index 000000000..949cc9723 --- /dev/null +++ b/kernel/patches-4.14.x/0004-hyper-v-trace-vmbus_onoffer.patch @@ -0,0 +1,80 @@ +From b37f6409b9cb749a1f1dd00fbdc080290b8c88ab Mon Sep 17 00:00:00 2001 +From: Vitaly Kuznetsov +Date: Sun, 29 Oct 2017 12:21:02 -0700 +Subject: [PATCH 04/18] hyper-v: trace vmbus_onoffer() + +Add tracepoint to CHANNELMSG_OFFERCHANNEL handler. + +Signed-off-by: Vitaly Kuznetsov +Signed-off-by: K. Y. Srinivasan +Signed-off-by: Greg Kroah-Hartman +(cherry picked from commit 03b81e66c78b076bfc127714ce6fd25655784600) +--- + drivers/hv/channel_mgmt.c | 2 ++ + drivers/hv/hv_trace.h | 37 +++++++++++++++++++++++++++++++++++++ + 2 files changed, 39 insertions(+) + +diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c +index 7948fff52a6d..1909c5c571d1 100644 +--- a/drivers/hv/channel_mgmt.c ++++ b/drivers/hv/channel_mgmt.c +@@ -806,6 +806,8 @@ static void vmbus_onoffer(struct vmbus_channel_message_header *hdr) + + offer = (struct vmbus_channel_offer_channel *)hdr; + ++ trace_vmbus_onoffer(offer); ++ + /* Allocate the channel object and save this offer. */ + newchannel = alloc_channel(); + if (!newchannel) { +diff --git a/drivers/hv/hv_trace.h b/drivers/hv/hv_trace.h +index d432aba5df8a..488b873b563e 100644 +--- a/drivers/hv/hv_trace.h ++++ b/drivers/hv/hv_trace.h +@@ -24,6 +24,43 @@ DEFINE_EVENT(vmbus_hdr_msg, vmbus_on_message, + TP_ARGS(hdr) + ); + ++TRACE_EVENT(vmbus_onoffer, ++ TP_PROTO(const struct vmbus_channel_offer_channel *offer), ++ TP_ARGS(offer), ++ TP_STRUCT__entry( ++ __field(u32, child_relid) ++ __field(u8, monitorid) ++ __field(u16, is_ddc_int) ++ __field(u32, connection_id) ++ __array(char, if_type, 16) ++ __array(char, if_instance, 16) ++ __field(u16, chn_flags) ++ __field(u16, mmio_mb) ++ __field(u16, sub_idx) ++ ), ++ TP_fast_assign(__entry->child_relid = offer->child_relid; ++ __entry->monitorid = offer->monitorid; ++ __entry->is_ddc_int = offer->is_dedicated_interrupt; ++ __entry->connection_id = offer->connection_id; ++ memcpy(__entry->if_type, ++ &offer->offer.if_type.b, 16); ++ memcpy(__entry->if_instance, ++ &offer->offer.if_instance.b, 16); ++ __entry->chn_flags = offer->offer.chn_flags; ++ __entry->mmio_mb = offer->offer.mmio_megabytes; ++ __entry->sub_idx = offer->offer.sub_channel_index; ++ ), ++ TP_printk("child_relid 0x%x, monitorid 0x%x, is_dedicated %d, " ++ "connection_id 0x%x, if_type %pUl, if_instance %pUl, " ++ "chn_flags 0x%x, mmio_megabytes %d, sub_channel_index %d", ++ __entry->child_relid, __entry->monitorid, ++ __entry->is_ddc_int, __entry->connection_id, ++ __entry->if_type, __entry->if_instance, ++ __entry->chn_flags, __entry->mmio_mb, ++ __entry->sub_idx ++ ) ++ ); ++ + #undef TRACE_INCLUDE_PATH + #define TRACE_INCLUDE_PATH . + #undef TRACE_INCLUDE_FILE +-- +2.16.0 + diff --git a/kernel/patches-4.14.x/0005-hyper-v-trace-vmbus_onoffer_rescind.patch b/kernel/patches-4.14.x/0005-hyper-v-trace-vmbus_onoffer_rescind.patch new file mode 100644 index 000000000..044656a80 --- /dev/null +++ b/kernel/patches-4.14.x/0005-hyper-v-trace-vmbus_onoffer_rescind.patch @@ -0,0 +1,51 @@ +From 635e04ba7b3f11d986f8657aaf8eba8ed72762e4 Mon Sep 17 00:00:00 2001 +From: Vitaly Kuznetsov +Date: Sun, 29 Oct 2017 12:21:03 -0700 +Subject: [PATCH 05/18] hyper-v: trace vmbus_onoffer_rescind() + +Add tracepoint to CHANNELMSG_RESCIND_CHANNELOFFER handler. + +Signed-off-by: Vitaly Kuznetsov +Signed-off-by: K. Y. Srinivasan +Signed-off-by: Greg Kroah-Hartman +(cherry picked from commit 5175167c77afb19993bd86ab8b4be63d9cb4a928) +--- + drivers/hv/channel_mgmt.c | 2 ++ + drivers/hv/hv_trace.h | 8 ++++++++ + 2 files changed, 10 insertions(+) + +diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c +index 1909c5c571d1..54235b32ac82 100644 +--- a/drivers/hv/channel_mgmt.c ++++ b/drivers/hv/channel_mgmt.c +@@ -849,6 +849,8 @@ static void vmbus_onoffer_rescind(struct vmbus_channel_message_header *hdr) + + rescind = (struct vmbus_channel_rescind_offer *)hdr; + ++ trace_vmbus_onoffer_rescind(rescind); ++ + /* + * The offer msg and the corresponding rescind msg + * from the host are guranteed to be ordered - +diff --git a/drivers/hv/hv_trace.h b/drivers/hv/hv_trace.h +index 488b873b563e..dbbed1d1f327 100644 +--- a/drivers/hv/hv_trace.h ++++ b/drivers/hv/hv_trace.h +@@ -61,6 +61,14 @@ TRACE_EVENT(vmbus_onoffer, + ) + ); + ++TRACE_EVENT(vmbus_onoffer_rescind, ++ TP_PROTO(const struct vmbus_channel_rescind_offer *offer), ++ TP_ARGS(offer), ++ TP_STRUCT__entry(__field(u32, child_relid)), ++ TP_fast_assign(__entry->child_relid = offer->child_relid), ++ TP_printk("child_relid 0x%x", __entry->child_relid) ++ ); ++ + #undef TRACE_INCLUDE_PATH + #define TRACE_INCLUDE_PATH . + #undef TRACE_INCLUDE_FILE +-- +2.16.0 + diff --git a/kernel/patches-4.14.x/0006-hyper-v-trace-vmbus_onopen_result.patch b/kernel/patches-4.14.x/0006-hyper-v-trace-vmbus_onopen_result.patch new file mode 100644 index 000000000..8a6b17dbf --- /dev/null +++ b/kernel/patches-4.14.x/0006-hyper-v-trace-vmbus_onopen_result.patch @@ -0,0 +1,60 @@ +From ec7221a006dc8537f684a0f5164227ed6a4cc362 Mon Sep 17 00:00:00 2001 +From: Vitaly Kuznetsov +Date: Sun, 29 Oct 2017 12:21:04 -0700 +Subject: [PATCH 06/18] hyper-v: trace vmbus_onopen_result() + +Add tracepoint to CHANNELMSG_OPENCHANNEL_RESULT handler. + +Signed-off-by: Vitaly Kuznetsov +Signed-off-by: K. Y. Srinivasan +Signed-off-by: Greg Kroah-Hartman +(cherry picked from commit 9f23ce1a23b6bf471d5920bdca5cc40940419e60) +--- + drivers/hv/channel_mgmt.c | 2 ++ + drivers/hv/hv_trace.h | 17 +++++++++++++++++ + 2 files changed, 19 insertions(+) + +diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c +index 54235b32ac82..66aa6b079b2e 100644 +--- a/drivers/hv/channel_mgmt.c ++++ b/drivers/hv/channel_mgmt.c +@@ -979,6 +979,8 @@ static void vmbus_onopen_result(struct vmbus_channel_message_header *hdr) + + result = (struct vmbus_channel_open_result *)hdr; + ++ trace_vmbus_onopen_result(result); ++ + /* + * Find the open msg, copy the result and signal/unblock the wait event + */ +diff --git a/drivers/hv/hv_trace.h b/drivers/hv/hv_trace.h +index dbbed1d1f327..9757c19d1c08 100644 +--- a/drivers/hv/hv_trace.h ++++ b/drivers/hv/hv_trace.h +@@ -69,6 +69,23 @@ TRACE_EVENT(vmbus_onoffer_rescind, + TP_printk("child_relid 0x%x", __entry->child_relid) + ); + ++TRACE_EVENT(vmbus_onopen_result, ++ TP_PROTO(const struct vmbus_channel_open_result *result), ++ TP_ARGS(result), ++ TP_STRUCT__entry( ++ __field(u32, child_relid) ++ __field(u32, openid) ++ __field(u32, status) ++ ), ++ TP_fast_assign(__entry->child_relid = result->child_relid; ++ __entry->openid = result->openid; ++ __entry->status = result->status; ++ ), ++ TP_printk("child_relid 0x%x, openid %d, status %d", ++ __entry->child_relid, __entry->openid, __entry->status ++ ) ++ ); ++ + #undef TRACE_INCLUDE_PATH + #define TRACE_INCLUDE_PATH . + #undef TRACE_INCLUDE_FILE +-- +2.16.0 + diff --git a/kernel/patches-4.14.x/0007-hyper-v-trace-vmbus_ongpadl_created.patch b/kernel/patches-4.14.x/0007-hyper-v-trace-vmbus_ongpadl_created.patch new file mode 100644 index 000000000..1ef5fcdbd --- /dev/null +++ b/kernel/patches-4.14.x/0007-hyper-v-trace-vmbus_ongpadl_created.patch @@ -0,0 +1,60 @@ +From 1cae1a53932c3357f3f6ee3f5d1635a6280f4408 Mon Sep 17 00:00:00 2001 +From: Vitaly Kuznetsov +Date: Sun, 29 Oct 2017 12:21:05 -0700 +Subject: [PATCH 07/18] hyper-v: trace vmbus_ongpadl_created() + +Add tracepoint to CHANNELMSG_GPADL_CREATED handler. + +Signed-off-by: Vitaly Kuznetsov +Signed-off-by: K. Y. Srinivasan +Signed-off-by: Greg Kroah-Hartman +(cherry picked from commit a13bf0ea4a60a7946bf335bd57e60adc344033bd) +--- + drivers/hv/channel_mgmt.c | 2 ++ + drivers/hv/hv_trace.h | 17 +++++++++++++++++ + 2 files changed, 19 insertions(+) + +diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c +index 66aa6b079b2e..ca5eccd3dceb 100644 +--- a/drivers/hv/channel_mgmt.c ++++ b/drivers/hv/channel_mgmt.c +@@ -1025,6 +1025,8 @@ static void vmbus_ongpadl_created(struct vmbus_channel_message_header *hdr) + + gpadlcreated = (struct vmbus_channel_gpadl_created *)hdr; + ++ trace_vmbus_ongpadl_created(gpadlcreated); ++ + /* + * Find the establish msg, copy the result and signal/unblock the wait + * event +diff --git a/drivers/hv/hv_trace.h b/drivers/hv/hv_trace.h +index 9757c19d1c08..20734b7b341b 100644 +--- a/drivers/hv/hv_trace.h ++++ b/drivers/hv/hv_trace.h +@@ -86,6 +86,23 @@ TRACE_EVENT(vmbus_onopen_result, + ) + ); + ++TRACE_EVENT(vmbus_ongpadl_created, ++ TP_PROTO(const struct vmbus_channel_gpadl_created *gpadlcreated), ++ TP_ARGS(gpadlcreated), ++ TP_STRUCT__entry( ++ __field(u32, child_relid) ++ __field(u32, gpadl) ++ __field(u32, status) ++ ), ++ TP_fast_assign(__entry->child_relid = gpadlcreated->child_relid; ++ __entry->gpadl = gpadlcreated->gpadl; ++ __entry->status = gpadlcreated->creation_status; ++ ), ++ TP_printk("child_relid 0x%x, gpadl 0x%x, creation_status %d", ++ __entry->child_relid, __entry->gpadl, __entry->status ++ ) ++ ); ++ + #undef TRACE_INCLUDE_PATH + #define TRACE_INCLUDE_PATH . + #undef TRACE_INCLUDE_FILE +-- +2.16.0 + diff --git a/kernel/patches-4.14.x/0008-hyper-v-trace-vmbus_ongpadl_torndown.patch b/kernel/patches-4.14.x/0008-hyper-v-trace-vmbus_ongpadl_torndown.patch new file mode 100644 index 000000000..929a21648 --- /dev/null +++ b/kernel/patches-4.14.x/0008-hyper-v-trace-vmbus_ongpadl_torndown.patch @@ -0,0 +1,51 @@ +From 69f601d5d2b8cbf98c72bfd4881d3e90baa6fa8e Mon Sep 17 00:00:00 2001 +From: Vitaly Kuznetsov +Date: Sun, 29 Oct 2017 12:21:06 -0700 +Subject: [PATCH 08/18] hyper-v: trace vmbus_ongpadl_torndown() + +Add tracepoint to CHANNELMSG_GPADL_TORNDOWN handler. + +Signed-off-by: Vitaly Kuznetsov +Signed-off-by: K. Y. Srinivasan +Signed-off-by: Greg Kroah-Hartman +(cherry picked from commit 602a8c525c8c7b2ff446894fc6b21f42471c952f) +--- + drivers/hv/channel_mgmt.c | 2 ++ + drivers/hv/hv_trace.h | 8 ++++++++ + 2 files changed, 10 insertions(+) + +diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c +index ca5eccd3dceb..1e8b0ebe1b9e 100644 +--- a/drivers/hv/channel_mgmt.c ++++ b/drivers/hv/channel_mgmt.c +@@ -1075,6 +1075,8 @@ static void vmbus_ongpadl_torndown( + + gpadl_torndown = (struct vmbus_channel_gpadl_torndown *)hdr; + ++ trace_vmbus_ongpadl_torndown(gpadl_torndown); ++ + /* + * Find the open msg, copy the result and signal/unblock the wait event + */ +diff --git a/drivers/hv/hv_trace.h b/drivers/hv/hv_trace.h +index 20734b7b341b..84c08cdf7235 100644 +--- a/drivers/hv/hv_trace.h ++++ b/drivers/hv/hv_trace.h +@@ -103,6 +103,14 @@ TRACE_EVENT(vmbus_ongpadl_created, + ) + ); + ++TRACE_EVENT(vmbus_ongpadl_torndown, ++ TP_PROTO(const struct vmbus_channel_gpadl_torndown *gpadltorndown), ++ TP_ARGS(gpadltorndown), ++ TP_STRUCT__entry(__field(u32, gpadl)), ++ TP_fast_assign(__entry->gpadl = gpadltorndown->gpadl), ++ TP_printk("gpadl 0x%x", __entry->gpadl) ++ ); ++ + #undef TRACE_INCLUDE_PATH + #define TRACE_INCLUDE_PATH . + #undef TRACE_INCLUDE_FILE +-- +2.16.0 + diff --git a/kernel/patches-4.14.x/0009-hyper-v-trace-vmbus_onversion_response.patch b/kernel/patches-4.14.x/0009-hyper-v-trace-vmbus_onversion_response.patch new file mode 100644 index 000000000..d1d756e6a --- /dev/null +++ b/kernel/patches-4.14.x/0009-hyper-v-trace-vmbus_onversion_response.patch @@ -0,0 +1,55 @@ +From 21b6485093fe73933793d024f5fc07d17fb4f564 Mon Sep 17 00:00:00 2001 +From: Vitaly Kuznetsov +Date: Sun, 29 Oct 2017 12:21:07 -0700 +Subject: [PATCH 09/18] hyper-v: trace vmbus_onversion_response() + +Add tracepoint to CHANNELMSG_VERSION_RESPONSE handler. + +Signed-off-by: Vitaly Kuznetsov +Signed-off-by: K. Y. Srinivasan +Signed-off-by: Greg Kroah-Hartman +(cherry picked from commit c7924fb07a2646c9ff661efcad1167a1106d6019) +--- + drivers/hv/channel_mgmt.c | 3 +++ + drivers/hv/hv_trace.h | 11 +++++++++++ + 2 files changed, 14 insertions(+) + +diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c +index 1e8b0ebe1b9e..26d5452ee2be 100644 +--- a/drivers/hv/channel_mgmt.c ++++ b/drivers/hv/channel_mgmt.c +@@ -1120,6 +1120,9 @@ static void vmbus_onversion_response( + unsigned long flags; + + version_response = (struct vmbus_channel_version_response *)hdr; ++ ++ trace_vmbus_onversion_response(version_response); ++ + spin_lock_irqsave(&vmbus_connection.channelmsg_lock, flags); + + list_for_each_entry(msginfo, &vmbus_connection.chn_msg_list, +diff --git a/drivers/hv/hv_trace.h b/drivers/hv/hv_trace.h +index 84c08cdf7235..2a046547107f 100644 +--- a/drivers/hv/hv_trace.h ++++ b/drivers/hv/hv_trace.h +@@ -111,6 +111,17 @@ TRACE_EVENT(vmbus_ongpadl_torndown, + TP_printk("gpadl 0x%x", __entry->gpadl) + ); + ++TRACE_EVENT(vmbus_onversion_response, ++ TP_PROTO(const struct vmbus_channel_version_response *response), ++ TP_ARGS(response), ++ TP_STRUCT__entry( ++ __field(u8, ver) ++ ), ++ TP_fast_assign(__entry->ver = response->version_supported; ++ ), ++ TP_printk("version_supported %d", __entry->ver) ++ ); ++ + #undef TRACE_INCLUDE_PATH + #define TRACE_INCLUDE_PATH . + #undef TRACE_INCLUDE_FILE +-- +2.16.0 + diff --git a/kernel/patches-4.14.x/0010-hyper-v-trace-vmbus_request_offers.patch b/kernel/patches-4.14.x/0010-hyper-v-trace-vmbus_request_offers.patch new file mode 100644 index 000000000..b6eab3250 --- /dev/null +++ b/kernel/patches-4.14.x/0010-hyper-v-trace-vmbus_request_offers.patch @@ -0,0 +1,55 @@ +From e171d5a3845680154bdc51a663e419543e9eb823 Mon Sep 17 00:00:00 2001 +From: Vitaly Kuznetsov +Date: Sun, 29 Oct 2017 12:21:08 -0700 +Subject: [PATCH 10/18] hyper-v: trace vmbus_request_offers() + +Add tracepoint to CHANNELMSG_REQUESTOFFERS sender. + +Signed-off-by: Vitaly Kuznetsov +Signed-off-by: K. Y. Srinivasan +Signed-off-by: Greg Kroah-Hartman +(cherry picked from commit d6706e63367a9c783974db4b94cf8980d31c4cb2) +--- + drivers/hv/channel_mgmt.c | 4 +++- + drivers/hv/hv_trace.h | 8 ++++++++ + 2 files changed, 11 insertions(+), 1 deletion(-) + +diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c +index 26d5452ee2be..51156ee83b93 100644 +--- a/drivers/hv/channel_mgmt.c ++++ b/drivers/hv/channel_mgmt.c +@@ -1217,9 +1217,11 @@ int vmbus_request_offers(void) + + msg->msgtype = CHANNELMSG_REQUESTOFFERS; + +- + ret = vmbus_post_msg(msg, sizeof(struct vmbus_channel_message_header), + true); ++ ++ trace_vmbus_request_offers(ret); ++ + if (ret != 0) { + pr_err("Unable to request offers - %d\n", ret); + +diff --git a/drivers/hv/hv_trace.h b/drivers/hv/hv_trace.h +index 2a046547107f..566ac0f2fe56 100644 +--- a/drivers/hv/hv_trace.h ++++ b/drivers/hv/hv_trace.h +@@ -122,6 +122,14 @@ TRACE_EVENT(vmbus_onversion_response, + TP_printk("version_supported %d", __entry->ver) + ); + ++TRACE_EVENT(vmbus_request_offers, ++ TP_PROTO(int ret), ++ TP_ARGS(ret), ++ TP_STRUCT__entry(__field(int, ret)), ++ TP_fast_assign(__entry->ret = ret), ++ TP_printk("sending ret %d", __entry->ret) ++ ); ++ + #undef TRACE_INCLUDE_PATH + #define TRACE_INCLUDE_PATH . + #undef TRACE_INCLUDE_FILE +-- +2.16.0 + diff --git a/kernel/patches-4.14.x/0011-hyper-v-trace-vmbus_open.patch b/kernel/patches-4.14.x/0011-hyper-v-trace-vmbus_open.patch new file mode 100644 index 000000000..66d07ce26 --- /dev/null +++ b/kernel/patches-4.14.x/0011-hyper-v-trace-vmbus_open.patch @@ -0,0 +1,70 @@ +From ab0cedcde1c60fee6ea7baac4f563ef314cb81a2 Mon Sep 17 00:00:00 2001 +From: Vitaly Kuznetsov +Date: Sun, 29 Oct 2017 12:21:09 -0700 +Subject: [PATCH 11/18] hyper-v: trace vmbus_open() + +Add tracepoint to CHANNELMSG_OPENCHANNEL sender. + +Signed-off-by: Vitaly Kuznetsov +Signed-off-by: K. Y. Srinivasan +Signed-off-by: Greg Kroah-Hartman +(cherry picked from commit 9202d771ca37514bfbc2c3a8fdcb018f40a6bd8a) +--- + drivers/hv/channel.c | 2 ++ + drivers/hv/hv_trace.h | 27 +++++++++++++++++++++++++++ + 2 files changed, 29 insertions(+) + +diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c +index 05964347008d..b562a7fb4c42 100644 +--- a/drivers/hv/channel.c ++++ b/drivers/hv/channel.c +@@ -185,6 +185,8 @@ int vmbus_open(struct vmbus_channel *newchannel, u32 send_ringbuffer_size, + ret = vmbus_post_msg(open_msg, + sizeof(struct vmbus_channel_open_channel), true); + ++ trace_vmbus_open(open_msg, ret); ++ + if (ret != 0) { + err = ret; + goto error_clean_msglist; +diff --git a/drivers/hv/hv_trace.h b/drivers/hv/hv_trace.h +index 566ac0f2fe56..38fedb803bd8 100644 +--- a/drivers/hv/hv_trace.h ++++ b/drivers/hv/hv_trace.h +@@ -130,6 +130,33 @@ TRACE_EVENT(vmbus_request_offers, + TP_printk("sending ret %d", __entry->ret) + ); + ++TRACE_EVENT(vmbus_open, ++ TP_PROTO(const struct vmbus_channel_open_channel *msg, int ret), ++ TP_ARGS(msg, ret), ++ TP_STRUCT__entry( ++ __field(u32, child_relid) ++ __field(u32, openid) ++ __field(u32, gpadlhandle) ++ __field(u32, target_vp) ++ __field(u32, offset) ++ __field(int, ret) ++ ), ++ TP_fast_assign( ++ __entry->child_relid = msg->child_relid; ++ __entry->openid = msg->openid; ++ __entry->gpadlhandle = msg->ringbuffer_gpadlhandle; ++ __entry->target_vp = msg->target_vp; ++ __entry->offset = msg->downstream_ringbuffer_pageoffset; ++ __entry->ret = ret; ++ ), ++ TP_printk("sending child_relid 0x%x, openid %d, " ++ "gpadlhandle 0x%x, target_vp 0x%x, offset 0x%x, ret %d", ++ __entry->child_relid, __entry->openid, ++ __entry->gpadlhandle, __entry->target_vp, ++ __entry->offset, __entry->ret ++ ) ++ ); ++ + #undef TRACE_INCLUDE_PATH + #define TRACE_INCLUDE_PATH . + #undef TRACE_INCLUDE_FILE +-- +2.16.0 + diff --git a/kernel/patches-4.14.x/0012-hyper-v-trace-vmbus_close_internal.patch b/kernel/patches-4.14.x/0012-hyper-v-trace-vmbus_close_internal.patch new file mode 100644 index 000000000..2298394b7 --- /dev/null +++ b/kernel/patches-4.14.x/0012-hyper-v-trace-vmbus_close_internal.patch @@ -0,0 +1,58 @@ +From 2398d2a0e00a57022e2b43bb248ad8262ba63649 Mon Sep 17 00:00:00 2001 +From: Vitaly Kuznetsov +Date: Sun, 29 Oct 2017 12:21:10 -0700 +Subject: [PATCH 12/18] hyper-v: trace vmbus_close_internal() + +Add tracepoint to CHANNELMSG_CLOSECHANNEL sender. + +Signed-off-by: Vitaly Kuznetsov +Signed-off-by: K. Y. Srinivasan +Signed-off-by: Greg Kroah-Hartman +(cherry picked from commit 633b005df0dff555c0d4f22b5f1f8b04dba67ac5) +--- + drivers/hv/channel.c | 2 ++ + drivers/hv/hv_trace.h | 15 +++++++++++++++ + 2 files changed, 17 insertions(+) + +diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c +index b562a7fb4c42..70babce00ddc 100644 +--- a/drivers/hv/channel.c ++++ b/drivers/hv/channel.c +@@ -591,6 +591,8 @@ static int vmbus_close_internal(struct vmbus_channel *channel) + ret = vmbus_post_msg(msg, sizeof(struct vmbus_channel_close_channel), + true); + ++ trace_vmbus_close_internal(msg, ret); ++ + if (ret) { + pr_err("Close failed: close post msg return is %d\n", ret); + /* +diff --git a/drivers/hv/hv_trace.h b/drivers/hv/hv_trace.h +index 38fedb803bd8..302bd4e964f0 100644 +--- a/drivers/hv/hv_trace.h ++++ b/drivers/hv/hv_trace.h +@@ -157,6 +157,21 @@ TRACE_EVENT(vmbus_open, + ) + ); + ++TRACE_EVENT(vmbus_close_internal, ++ TP_PROTO(const struct vmbus_channel_close_channel *msg, int ret), ++ TP_ARGS(msg, ret), ++ TP_STRUCT__entry( ++ __field(u32, child_relid) ++ __field(int, ret) ++ ), ++ TP_fast_assign( ++ __entry->child_relid = msg->child_relid; ++ __entry->ret = ret; ++ ), ++ TP_printk("sending child_relid 0x%x, ret %d", __entry->child_relid, ++ __entry->ret) ++ ); ++ + #undef TRACE_INCLUDE_PATH + #define TRACE_INCLUDE_PATH . + #undef TRACE_INCLUDE_FILE +-- +2.16.0 + diff --git a/kernel/patches-4.14.x/0013-hyper-v-trace-vmbus_establish_gpadl.patch b/kernel/patches-4.14.x/0013-hyper-v-trace-vmbus_establish_gpadl.patch new file mode 100644 index 000000000..ddeaf1f61 --- /dev/null +++ b/kernel/patches-4.14.x/0013-hyper-v-trace-vmbus_establish_gpadl.patch @@ -0,0 +1,96 @@ +From 02a9a8babb01ccd78337756138ced187ab13fa26 Mon Sep 17 00:00:00 2001 +From: Vitaly Kuznetsov +Date: Sun, 29 Oct 2017 12:21:11 -0700 +Subject: [PATCH 13/18] hyper-v: trace vmbus_establish_gpadl() + +Add tracepoint to CHANNELMSG_GPADL_HEADER/CHANNELMSG_GPADL_BODY sender. + +Signed-off-by: Vitaly Kuznetsov +Signed-off-by: K. Y. Srinivasan +Signed-off-by: Greg Kroah-Hartman +(cherry picked from commit 69edbd5f4729a58e11437b2804103bf8ea52745c) +--- + drivers/hv/channel.c | 6 ++++++ + drivers/hv/hv_trace.h | 42 ++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 48 insertions(+) + +diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c +index 70babce00ddc..a7ac16c091a9 100644 +--- a/drivers/hv/channel.c ++++ b/drivers/hv/channel.c +@@ -435,6 +435,9 @@ int vmbus_establish_gpadl(struct vmbus_channel *channel, void *kbuffer, + + ret = vmbus_post_msg(gpadlmsg, msginfo->msgsize - + sizeof(*msginfo), true); ++ ++ trace_vmbus_establish_gpadl_header(gpadlmsg, ret); ++ + if (ret != 0) + goto cleanup; + +@@ -450,6 +453,9 @@ int vmbus_establish_gpadl(struct vmbus_channel *channel, void *kbuffer, + ret = vmbus_post_msg(gpadl_body, + submsginfo->msgsize - sizeof(*submsginfo), + true); ++ ++ trace_vmbus_establish_gpadl_body(gpadl_body, ret); ++ + if (ret != 0) + goto cleanup; + +diff --git a/drivers/hv/hv_trace.h b/drivers/hv/hv_trace.h +index 302bd4e964f0..978e70bdc7c5 100644 +--- a/drivers/hv/hv_trace.h ++++ b/drivers/hv/hv_trace.h +@@ -172,6 +172,48 @@ TRACE_EVENT(vmbus_close_internal, + __entry->ret) + ); + ++TRACE_EVENT(vmbus_establish_gpadl_header, ++ TP_PROTO(const struct vmbus_channel_gpadl_header *msg, int ret), ++ TP_ARGS(msg, ret), ++ TP_STRUCT__entry( ++ __field(u32, child_relid) ++ __field(u32, gpadl) ++ __field(u16, range_buflen) ++ __field(u16, rangecount) ++ __field(int, ret) ++ ), ++ TP_fast_assign( ++ __entry->child_relid = msg->child_relid; ++ __entry->gpadl = msg->gpadl; ++ __entry->range_buflen = msg->range_buflen; ++ __entry->rangecount = msg->rangecount; ++ __entry->ret = ret; ++ ), ++ TP_printk("sending child_relid 0x%x, gpadl 0x%x, range_buflen %d " ++ "rangecount %d, ret %d", ++ __entry->child_relid, __entry->gpadl, ++ __entry->range_buflen, __entry->rangecount, __entry->ret ++ ) ++ ); ++ ++TRACE_EVENT(vmbus_establish_gpadl_body, ++ TP_PROTO(const struct vmbus_channel_gpadl_body *msg, int ret), ++ TP_ARGS(msg, ret), ++ TP_STRUCT__entry( ++ __field(u32, msgnumber) ++ __field(u32, gpadl) ++ __field(int, ret) ++ ), ++ TP_fast_assign( ++ __entry->msgnumber = msg->msgnumber; ++ __entry->gpadl = msg->gpadl; ++ __entry->ret = ret; ++ ), ++ TP_printk("sending msgnumber %d, gpadl 0x%x, ret %d", ++ __entry->msgnumber, __entry->gpadl, __entry->ret ++ ) ++ ); ++ + #undef TRACE_INCLUDE_PATH + #define TRACE_INCLUDE_PATH . + #undef TRACE_INCLUDE_FILE +-- +2.16.0 + diff --git a/kernel/patches-4.14.x/0014-hyper-v-trace-vmbus_teardown_gpadl.patch b/kernel/patches-4.14.x/0014-hyper-v-trace-vmbus_teardown_gpadl.patch new file mode 100644 index 000000000..6b0b75ac9 --- /dev/null +++ b/kernel/patches-4.14.x/0014-hyper-v-trace-vmbus_teardown_gpadl.patch @@ -0,0 +1,61 @@ +From ee9c6f7bcee6f9e224910b9d6e1416d14e8a2148 Mon Sep 17 00:00:00 2001 +From: Vitaly Kuznetsov +Date: Sun, 29 Oct 2017 12:21:12 -0700 +Subject: [PATCH 14/18] hyper-v: trace vmbus_teardown_gpadl() + +Add tracepoint to CHANNELMSG_GPADL_TEARDOWN sender. + +Signed-off-by: Vitaly Kuznetsov +Signed-off-by: K. Y. Srinivasan +Signed-off-by: Greg Kroah-Hartman +(cherry picked from commit 09cdf8f87c15dbe9a3eeb6de04aaafd0cd922d6d) +--- + drivers/hv/channel.c | 2 ++ + drivers/hv/hv_trace.h | 18 ++++++++++++++++++ + 2 files changed, 20 insertions(+) + +diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c +index a7ac16c091a9..ba4b4eceb563 100644 +--- a/drivers/hv/channel.c ++++ b/drivers/hv/channel.c +@@ -519,6 +519,8 @@ int vmbus_teardown_gpadl(struct vmbus_channel *channel, u32 gpadl_handle) + ret = vmbus_post_msg(msg, sizeof(struct vmbus_channel_gpadl_teardown), + true); + ++ trace_vmbus_teardown_gpadl(msg, ret); ++ + if (ret) + goto post_msg_err; + +diff --git a/drivers/hv/hv_trace.h b/drivers/hv/hv_trace.h +index 978e70bdc7c5..cd33a52ef27f 100644 +--- a/drivers/hv/hv_trace.h ++++ b/drivers/hv/hv_trace.h +@@ -214,6 +214,24 @@ TRACE_EVENT(vmbus_establish_gpadl_body, + ) + ); + ++TRACE_EVENT(vmbus_teardown_gpadl, ++ TP_PROTO(const struct vmbus_channel_gpadl_teardown *msg, int ret), ++ TP_ARGS(msg, ret), ++ TP_STRUCT__entry( ++ __field(u32, child_relid) ++ __field(u32, gpadl) ++ __field(int, ret) ++ ), ++ TP_fast_assign( ++ __entry->child_relid = msg->child_relid; ++ __entry->gpadl = msg->gpadl; ++ __entry->ret = ret; ++ ), ++ TP_printk("sending child_relid 0x%x, gpadl 0x%x, ret %d", ++ __entry->child_relid, __entry->gpadl, __entry->ret ++ ) ++ ); ++ + #undef TRACE_INCLUDE_PATH + #define TRACE_INCLUDE_PATH . + #undef TRACE_INCLUDE_FILE +-- +2.16.0 + diff --git a/kernel/patches-4.14.x/0015-hyper-v-trace-vmbus_negotiate_version.patch b/kernel/patches-4.14.x/0015-hyper-v-trace-vmbus_negotiate_version.patch new file mode 100644 index 000000000..a506f0b60 --- /dev/null +++ b/kernel/patches-4.14.x/0015-hyper-v-trace-vmbus_negotiate_version.patch @@ -0,0 +1,70 @@ +From d25867a69fbb2602c717d54485afd16f526ff1aa Mon Sep 17 00:00:00 2001 +From: Vitaly Kuznetsov +Date: Sun, 29 Oct 2017 12:21:13 -0700 +Subject: [PATCH 15/18] hyper-v: trace vmbus_negotiate_version() + +Add tracepoint to CHANNELMSG_INITIATE_CONTACT sender. + +Signed-off-by: Vitaly Kuznetsov +Signed-off-by: K. Y. Srinivasan +Signed-off-by: Greg Kroah-Hartman +(cherry picked from commit 034ebf552e0a3403eeb7e7f8a3a502fc0c70a24c) +--- + drivers/hv/connection.c | 3 +++ + drivers/hv/hv_trace.h | 26 ++++++++++++++++++++++++++ + 2 files changed, 29 insertions(+) + +diff --git a/drivers/hv/connection.c b/drivers/hv/connection.c +index f41901f80b64..5e36f86d0b0c 100644 +--- a/drivers/hv/connection.c ++++ b/drivers/hv/connection.c +@@ -117,6 +117,9 @@ static int vmbus_negotiate_version(struct vmbus_channel_msginfo *msginfo, + ret = vmbus_post_msg(msg, + sizeof(struct vmbus_channel_initiate_contact), + true); ++ ++ trace_vmbus_negotiate_version(msg, ret); ++ + if (ret != 0) { + spin_lock_irqsave(&vmbus_connection.channelmsg_lock, flags); + list_del(&msginfo->msglistentry); +diff --git a/drivers/hv/hv_trace.h b/drivers/hv/hv_trace.h +index cd33a52ef27f..f06284d64a8c 100644 +--- a/drivers/hv/hv_trace.h ++++ b/drivers/hv/hv_trace.h +@@ -232,6 +232,32 @@ TRACE_EVENT(vmbus_teardown_gpadl, + ) + ); + ++TRACE_EVENT(vmbus_negotiate_version, ++ TP_PROTO(const struct vmbus_channel_initiate_contact *msg, int ret), ++ TP_ARGS(msg, ret), ++ TP_STRUCT__entry( ++ __field(u32, ver) ++ __field(u32, target_vcpu) ++ __field(int, ret) ++ __field(u64, int_page) ++ __field(u64, mon_page1) ++ __field(u64, mon_page2) ++ ), ++ TP_fast_assign( ++ __entry->ver = msg->vmbus_version_requested; ++ __entry->target_vcpu = msg->target_vcpu; ++ __entry->int_page = msg->interrupt_page; ++ __entry->mon_page1 = msg->monitor_page1; ++ __entry->mon_page2 = msg->monitor_page2; ++ __entry->ret = ret; ++ ), ++ TP_printk("sending vmbus_version_requested %d, target_vcpu 0x%x, " ++ "pages %llx:%llx:%llx, ret %d", ++ __entry->ver, __entry->target_vcpu, __entry->int_page, ++ __entry->mon_page1, __entry->mon_page2, __entry->ret ++ ) ++ ); ++ + #undef TRACE_INCLUDE_PATH + #define TRACE_INCLUDE_PATH . + #undef TRACE_INCLUDE_FILE +-- +2.16.0 + diff --git a/kernel/patches-4.14.x/0016-hyper-v-trace-vmbus_release_relid.patch b/kernel/patches-4.14.x/0016-hyper-v-trace-vmbus_release_relid.patch new file mode 100644 index 000000000..7e9a2bf9d --- /dev/null +++ b/kernel/patches-4.14.x/0016-hyper-v-trace-vmbus_release_relid.patch @@ -0,0 +1,68 @@ +From c04ba9625defb6a199e554b6a5fc73fcb3ddf557 Mon Sep 17 00:00:00 2001 +From: Vitaly Kuznetsov +Date: Sun, 29 Oct 2017 12:21:14 -0700 +Subject: [PATCH 16/18] hyper-v: trace vmbus_release_relid() + +Add tracepoint to CHANNELMSG_RELID_RELEASED sender. + +Signed-off-by: Vitaly Kuznetsov +Signed-off-by: K. Y. Srinivasan +Signed-off-by: Greg Kroah-Hartman +(cherry picked from commit 259cc665e9c08d054549a877c1b53b793de15753) +--- + drivers/hv/channel_mgmt.c | 7 +++++-- + drivers/hv/hv_trace.h | 16 ++++++++++++++++ + 2 files changed, 21 insertions(+), 2 deletions(-) + +diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c +index 51156ee83b93..9263e3c86476 100644 +--- a/drivers/hv/channel_mgmt.c ++++ b/drivers/hv/channel_mgmt.c +@@ -374,12 +374,15 @@ static void percpu_channel_deq(void *arg) + static void vmbus_release_relid(u32 relid) + { + struct vmbus_channel_relid_released msg; ++ int ret; + + memset(&msg, 0, sizeof(struct vmbus_channel_relid_released)); + msg.child_relid = relid; + msg.header.msgtype = CHANNELMSG_RELID_RELEASED; +- vmbus_post_msg(&msg, sizeof(struct vmbus_channel_relid_released), +- true); ++ ret = vmbus_post_msg(&msg, sizeof(struct vmbus_channel_relid_released), ++ true); ++ ++ trace_vmbus_release_relid(&msg, ret); + } + + void hv_process_channel_removal(u32 relid) +diff --git a/drivers/hv/hv_trace.h b/drivers/hv/hv_trace.h +index f06284d64a8c..f0e437c3522f 100644 +--- a/drivers/hv/hv_trace.h ++++ b/drivers/hv/hv_trace.h +@@ -258,6 +258,22 @@ TRACE_EVENT(vmbus_negotiate_version, + ) + ); + ++TRACE_EVENT(vmbus_release_relid, ++ TP_PROTO(const struct vmbus_channel_relid_released *msg, int ret), ++ TP_ARGS(msg, ret), ++ TP_STRUCT__entry( ++ __field(u32, child_relid) ++ __field(int, ret) ++ ), ++ TP_fast_assign( ++ __entry->child_relid = msg->child_relid; ++ __entry->ret = ret; ++ ), ++ TP_printk("sending child_relid 0x%x, ret %d", ++ __entry->child_relid, __entry->ret ++ ) ++ ); ++ + #undef TRACE_INCLUDE_PATH + #define TRACE_INCLUDE_PATH . + #undef TRACE_INCLUDE_FILE +-- +2.16.0 + diff --git a/kernel/patches-4.14.x/0017-hyper-v-trace-vmbus_send_tl_connect_request.patch b/kernel/patches-4.14.x/0017-hyper-v-trace-vmbus_send_tl_connect_request.patch new file mode 100644 index 000000000..4ffa4e583 --- /dev/null +++ b/kernel/patches-4.14.x/0017-hyper-v-trace-vmbus_send_tl_connect_request.patch @@ -0,0 +1,74 @@ +From a19d56b5c3f5bb6fc2eae083b53191f9235c7899 Mon Sep 17 00:00:00 2001 +From: Vitaly Kuznetsov +Date: Sun, 29 Oct 2017 12:21:15 -0700 +Subject: [PATCH 17/18] hyper-v: trace vmbus_send_tl_connect_request() + +Add tracepoint to CHANNELMSG_TL_CONNECT_REQUEST sender. + +Signed-off-by: Vitaly Kuznetsov +Signed-off-by: K. Y. Srinivasan +Signed-off-by: Greg Kroah-Hartman +(cherry picked from commit 98f31a0050ca8ba47b57c6d67599013cdbdd2122) +--- + drivers/hv/channel.c | 7 ++++++- + drivers/hv/hv_trace.h | 20 ++++++++++++++++++++ + 2 files changed, 26 insertions(+), 1 deletion(-) + +diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c +index ba4b4eceb563..218d16c7fbae 100644 +--- a/drivers/hv/channel.c ++++ b/drivers/hv/channel.c +@@ -236,13 +236,18 @@ int vmbus_send_tl_connect_request(const uuid_le *shv_guest_servie_id, + const uuid_le *shv_host_servie_id) + { + struct vmbus_channel_tl_connect_request conn_msg; ++ int ret; + + memset(&conn_msg, 0, sizeof(conn_msg)); + conn_msg.header.msgtype = CHANNELMSG_TL_CONNECT_REQUEST; + conn_msg.guest_endpoint_id = *shv_guest_servie_id; + conn_msg.host_service_id = *shv_host_servie_id; + +- return vmbus_post_msg(&conn_msg, sizeof(conn_msg), true); ++ ret = vmbus_post_msg(&conn_msg, sizeof(conn_msg), true); ++ ++ trace_vmbus_send_tl_connect_request(&conn_msg, ret); ++ ++ return ret; + } + EXPORT_SYMBOL_GPL(vmbus_send_tl_connect_request); + +diff --git a/drivers/hv/hv_trace.h b/drivers/hv/hv_trace.h +index f0e437c3522f..5382d9630306 100644 +--- a/drivers/hv/hv_trace.h ++++ b/drivers/hv/hv_trace.h +@@ -274,6 +274,26 @@ TRACE_EVENT(vmbus_release_relid, + ) + ); + ++TRACE_EVENT(vmbus_send_tl_connect_request, ++ TP_PROTO(const struct vmbus_channel_tl_connect_request *msg, ++ int ret), ++ TP_ARGS(msg, ret), ++ TP_STRUCT__entry( ++ __array(char, guest_id, 16) ++ __array(char, host_id, 16) ++ __field(int, ret) ++ ), ++ TP_fast_assign( ++ memcpy(__entry->guest_id, &msg->guest_endpoint_id.b, 16); ++ memcpy(__entry->host_id, &msg->host_service_id.b, 16); ++ __entry->ret = ret; ++ ), ++ TP_printk("sending guest_endpoint_id %pUl, host_service_id %pUl, " ++ "ret %d", ++ __entry->guest_id, __entry->host_id, __entry->ret ++ ) ++ ); ++ + #undef TRACE_INCLUDE_PATH + #define TRACE_INCLUDE_PATH . + #undef TRACE_INCLUDE_FILE +-- +2.16.0 + diff --git a/kernel/patches-4.14.x/0018-hyper-v-trace-channel-events.patch b/kernel/patches-4.14.x/0018-hyper-v-trace-channel-events.patch new file mode 100644 index 000000000..fc081bb29 --- /dev/null +++ b/kernel/patches-4.14.x/0018-hyper-v-trace-channel-events.patch @@ -0,0 +1,101 @@ +From 6581af57280de139734ea6ddda9448a74899eaf7 Mon Sep 17 00:00:00 2001 +From: Vitaly Kuznetsov +Date: Sun, 29 Oct 2017 12:21:16 -0700 +Subject: [PATCH 18/18] 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 +Signed-off-by: Vitaly Kuznetsov +Signed-off-by: K. Y. Srinivasan +Signed-off-by: Greg Kroah-Hartman +Signed-off-by: Rolf Neugebauer +(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.16.0 +