Commit 27d27a06 authored by Subbaraya Sundeep's avatar Subbaraya Sundeep Committed by Paolo Abeni
Browse files

octeontx2: Add pcifunc also to mailbox tracepoints



This patch adds pcifunc which represents PF and VF device to the
tracepoints otx2_msg_alloc, otx2_msg_send, otx2_msg_process so that
it is easier to correlate which device allocated the message, which
device forwarded it and which device processed that message.
Also add message id in otx2_msg_send tracepoint to check which
message is sent at any point of time from a device.

Signed-off-by: default avatarSubbaraya Sundeep <sbhatta@marvell.com>
Link: https://patch.msgid.link/1747136408-30685-4-git-send-email-sbhatta@marvell.com


Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent ba7b6367
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -218,6 +218,7 @@ static void otx2_mbox_msg_send_data(struct otx2_mbox *mbox, int devid, u64 data)
	struct otx2_mbox_dev *mdev = &mbox->dev[devid];
	struct mbox_hdr *tx_hdr, *rx_hdr;
	void *hw_mbase = mdev->hwbase;
	struct mbox_msghdr *msg;
	u64 intr_val;

	tx_hdr = hw_mbase + mbox->tx_start;
@@ -250,7 +251,10 @@ static void otx2_mbox_msg_send_data(struct otx2_mbox *mbox, int devid, u64 data)
	tx_hdr->num_msgs = mdev->num_msgs;
	rx_hdr->num_msgs = 0;

	trace_otx2_msg_send(mbox->pdev, tx_hdr->num_msgs, tx_hdr->msg_size);
	msg = (struct mbox_msghdr *)(hw_mbase + mbox->tx_start + msgs_offset);

	trace_otx2_msg_send(mbox->pdev, tx_hdr->num_msgs, tx_hdr->msg_size,
			    msg->id, msg->pcifunc);

	spin_unlock(&mdev->mbox_lock);

+1 −1
Original line number Diff line number Diff line
@@ -2173,7 +2173,7 @@ static int rvu_process_mbox_msg(struct otx2_mbox *mbox, int devid,
		if (rsp && err)						\
			rsp->hdr.rc = err;				\
									\
		trace_otx2_msg_process(mbox->pdev, _id, err);		\
		trace_otx2_msg_process(mbox->pdev, _id, err, req->pcifunc); \
		return rsp ? err : -ENOMEM;				\
	}
MBOX_MESSAGES
+1 −1
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ static struct _req_type __maybe_unused \
		return NULL;						\
	req->hdr.sig = OTX2_MBOX_REQ_SIG;				\
	req->hdr.id = _id;						\
	trace_otx2_msg_alloc(rvu->pdev, _id, sizeof(*req));		\
	trace_otx2_msg_alloc(rvu->pdev, _id, sizeof(*req), 0);		\
	return req;							\
}

+24 −12
Original line number Diff line number Diff line
@@ -18,33 +18,42 @@
#include "mbox.h"

TRACE_EVENT(otx2_msg_alloc,
	    TP_PROTO(const struct pci_dev *pdev, u16 id, u64 size),
	    TP_ARGS(pdev, id, size),
	    TP_PROTO(const struct pci_dev *pdev, u16 id, u64 size, u16 pcifunc),
	    TP_ARGS(pdev, id, size, pcifunc),
	    TP_STRUCT__entry(__string(dev, pci_name(pdev))
			     __field(u16, id)
			     __field(u64, size)
			     __field(u16, pcifunc)
	    ),
	    TP_fast_assign(__assign_str(dev);
			   __entry->id = id;
			   __entry->size = size;
			   __entry->pcifunc = pcifunc;
	    ),
	    TP_printk("[%s] msg:(%s) size:%lld\n", __get_str(dev),
		      otx2_mbox_id2name(__entry->id), __entry->size)
	    TP_printk("[%s] msg:(%s) size:%lld pcifunc:0x%x\n", __get_str(dev),
		      otx2_mbox_id2name(__entry->id), __entry->size,
		      __entry->pcifunc)
);

TRACE_EVENT(otx2_msg_send,
	    TP_PROTO(const struct pci_dev *pdev, u16 num_msgs, u64 msg_size),
	    TP_ARGS(pdev, num_msgs, msg_size),
	    TP_PROTO(const struct pci_dev *pdev, u16 num_msgs, u64 msg_size,
		     u16 id, u16 pcifunc),
	    TP_ARGS(pdev, num_msgs, msg_size, id, pcifunc),
	    TP_STRUCT__entry(__string(dev, pci_name(pdev))
			     __field(u16, num_msgs)
			     __field(u64, msg_size)
			     __field(u16, id)
			     __field(u16, pcifunc)
	    ),
	    TP_fast_assign(__assign_str(dev);
			   __entry->num_msgs = num_msgs;
			   __entry->msg_size = msg_size;
			   __entry->id = id;
			   __entry->pcifunc = pcifunc;
	    ),
	    TP_printk("[%s] sent %d msg(s) of size:%lld\n", __get_str(dev),
		      __entry->num_msgs, __entry->msg_size)
	    TP_printk("[%s] sent %d msg(s) of size:%lld msg:(%s) pcifunc:0x%x\n",
		      __get_str(dev), __entry->num_msgs, __entry->msg_size,
		      otx2_mbox_id2name(__entry->id), __entry->pcifunc)
);

TRACE_EVENT(otx2_msg_check,
@@ -81,18 +90,21 @@ TRACE_EVENT(otx2_msg_interrupt,
);

TRACE_EVENT(otx2_msg_process,
	    TP_PROTO(const struct pci_dev *pdev, u16 id, int err),
	    TP_ARGS(pdev, id, err),
	    TP_PROTO(const struct pci_dev *pdev, u16 id, int err, u16 pcifunc),
	    TP_ARGS(pdev, id, err, pcifunc),
	    TP_STRUCT__entry(__string(dev, pci_name(pdev))
			     __field(u16, id)
			     __field(int, err)
			     __field(u16, pcifunc)
	    ),
	    TP_fast_assign(__assign_str(dev);
			   __entry->id = id;
			   __entry->err = err;
			   __entry->pcifunc = pcifunc;
	    ),
	    TP_printk("[%s] msg:(%s) error:%d\n", __get_str(dev),
		      otx2_mbox_id2name(__entry->id), __entry->err)
	    TP_printk("[%s] msg:(%s) error:%d pcifunc:0x%x\n", __get_str(dev),
		      otx2_mbox_id2name(__entry->id),
		      __entry->err, __entry->pcifunc)
);

TRACE_EVENT(otx2_msg_wait_rsp,
+3 −1
Original line number Diff line number Diff line
@@ -871,6 +871,7 @@ static struct _req_type __maybe_unused \
*otx2_mbox_alloc_msg_ ## _fn_name(struct mbox *mbox)                    \
{									\
	struct _req_type *req;						\
	u16 pcifunc = mbox->pfvf->pcifunc;				\
									\
	req = (struct _req_type *)otx2_mbox_alloc_msg_rsp(		\
		&mbox->mbox, 0, sizeof(struct _req_type),		\
@@ -879,7 +880,8 @@ static struct _req_type __maybe_unused \
		return NULL;						\
	req->hdr.sig = OTX2_MBOX_REQ_SIG;				\
	req->hdr.id = _id;						\
	trace_otx2_msg_alloc(mbox->mbox.pdev, _id, sizeof(*req));	\
	req->hdr.pcifunc = pcifunc;					\
	trace_otx2_msg_alloc(mbox->mbox.pdev, _id, sizeof(*req), pcifunc); \
	return req;							\
}

Loading