get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/69149/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 69149,
    "url": "https://patches.dpdk.org/api/patches/69149/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20200422190349.3768487-30-jerinj@marvell.com/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20200422190349.3768487-30-jerinj@marvell.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20200422190349.3768487-30-jerinj@marvell.com",
    "date": "2020-04-22T19:03:46",
    "name": "[v7,29/32] eventdev: add tracepoints",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "18dc0944c6ccbdbe174e7c4cfeedd886d8fb1de8",
    "submitter": {
        "id": 1188,
        "url": "https://patches.dpdk.org/api/people/1188/?format=api",
        "name": "Jerin Jacob Kollanukkaran",
        "email": "jerinj@marvell.com"
    },
    "delegate": {
        "id": 24651,
        "url": "https://patches.dpdk.org/api/users/24651/?format=api",
        "username": "dmarchand",
        "first_name": "David",
        "last_name": "Marchand",
        "email": "david.marchand@redhat.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20200422190349.3768487-30-jerinj@marvell.com/mbox/",
    "series": [
        {
            "id": 9574,
            "url": "https://patches.dpdk.org/api/series/9574/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=9574",
            "date": "2020-04-22T19:03:17",
            "name": "DPDK Trace support",
            "version": 7,
            "mbox": "https://patches.dpdk.org/series/9574/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/69149/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/69149/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 156E2A00C2;\n\tWed, 22 Apr 2020 21:09:12 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 5F4601D5AB;\n\tWed, 22 Apr 2020 21:05:59 +0200 (CEST)",
            "from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com\n [67.231.148.174]) by dpdk.org (Postfix) with ESMTP id 94BD81D6C8\n for <dev@dpdk.org>; Wed, 22 Apr 2020 21:05:52 +0200 (CEST)",
            "from pps.filterd (m0045849.ppops.net [127.0.0.1])\n by mx0a-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id\n 03MJ5Z4Z020019; Wed, 22 Apr 2020 12:05:51 -0700",
            "from sc-exch02.marvell.com ([199.233.58.182])\n by mx0a-0016f401.pphosted.com with ESMTP id 30fxwpk04y-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT);\n Wed, 22 Apr 2020 12:05:51 -0700",
            "from DC5-EXCH02.marvell.com (10.69.176.39) by SC-EXCH02.marvell.com\n (10.93.176.82) with Microsoft SMTP Server (TLS) id 15.0.1497.2;\n Wed, 22 Apr 2020 12:05:49 -0700",
            "from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com\n (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.2 via Frontend\n Transport; Wed, 22 Apr 2020 12:05:49 -0700",
            "from jerin-lab.marvell.com (jerin-lab.marvell.com [10.28.34.14])\n by maili.marvell.com (Postfix) with ESMTP id B79DC3F703F;\n Wed, 22 Apr 2020 12:05:46 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com;\n h=from : to : cc :\n subject : date : message-id : in-reply-to : references : mime-version :\n content-transfer-encoding : content-type; s=pfpt0818;\n bh=fmLJJs/4jNA1EAk07HL6HxIp8/v3xw6wlZ5P2nfG8X8=;\n b=Jhw5chNBGUWIhz9+SJJL9ToBK+5fkPfd10keZcTvIXisTJZHIa4BWQ9giKUt2/F1UhJs\n l8+1k0lFWwAKZXcjggJg+bteX5fNZ3oWD73dAslTXRlKTedMpBOhjrI+6R2SNagb+HYb\n UQwUMFsRjAeqP1sQ2+R+ooM8/djhbIElJWSaHSiuh7C+lH8Ad7Y7793Sm0iGycipEK6q\n ViEkB3TUFPuJLkDNPMYX/ZvdvQMiTVNRVZ3Ca6RSJMpfp/SqjWuQ6Ojatf+viemiWxHS\n FtKQHV+KfWM1wd7kvewORhIRYnhONP94IiwZTsl4+LeFiV8jSB0cgsF3mLhOq09Y/XBC 4A==",
        "From": "<jerinj@marvell.com>",
        "To": "Jerin Jacob <jerinj@marvell.com>, Abhinandan Gujjar\n <abhinandan.gujjar@intel.com>, Nikhil Rao <nikhil.rao@intel.com>, \"Erik\n Gabriel Carrillo\" <erik.g.carrillo@intel.com>",
        "CC": "<dev@dpdk.org>, <thomas@monjalon.net>, <bruce.richardson@intel.com>,\n <david.marchand@redhat.com>, <mattias.ronnblom@ericsson.com>,\n <skori@marvell.com>",
        "Date": "Thu, 23 Apr 2020 00:33:46 +0530",
        "Message-ID": "<20200422190349.3768487-30-jerinj@marvell.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20200422190349.3768487-1-jerinj@marvell.com>",
        "References": "<20200419100133.3232316-1-jerinj@marvell.com>\n <20200422190349.3768487-1-jerinj@marvell.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-Proofpoint-Virus-Version": "vendor=fsecure engine=2.50.10434:6.0.138, 18.0.676\n definitions=2020-04-22_06:2020-04-22,\n 2020-04-22 signatures=0",
        "Subject": "[dpdk-dev]  [PATCH v7 29/32] eventdev: add tracepoints",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: Sunil Kumar Kori <skori@marvell.com>\n\nAdd tracepoints at important and mandatory APIs for tracing support.\n\nSigned-off-by: Sunil Kumar Kori <skori@marvell.com>\n---\n lib/librte_eventdev/Makefile                  |   3 +\n lib/librte_eventdev/eventdev_trace_points.c   | 173 ++++++++++\n lib/librte_eventdev/meson.build               |   3 +\n .../rte_event_crypto_adapter.c                |  10 +\n .../rte_event_eth_rx_adapter.c                |  11 +\n .../rte_event_eth_tx_adapter.c                |  13 +-\n .../rte_event_eth_tx_adapter.h                |   2 +\n lib/librte_eventdev/rte_event_timer_adapter.c |   8 +-\n lib/librte_eventdev/rte_event_timer_adapter.h |   8 +\n lib/librte_eventdev/rte_eventdev.c            |   9 +\n lib/librte_eventdev/rte_eventdev.h            |   5 +-\n lib/librte_eventdev/rte_eventdev_trace.h      | 311 ++++++++++++++++++\n lib/librte_eventdev/rte_eventdev_trace_fp.h   |  85 +++++\n lib/librte_eventdev/rte_eventdev_version.map  |  42 +++\n 14 files changed, 679 insertions(+), 4 deletions(-)\n create mode 100644 lib/librte_eventdev/eventdev_trace_points.c\n create mode 100644 lib/librte_eventdev/rte_eventdev_trace.h\n create mode 100644 lib/librte_eventdev/rte_eventdev_trace_fp.h",
    "diff": "diff --git a/lib/librte_eventdev/Makefile b/lib/librte_eventdev/Makefile\nindex c85c0d3cf..0aed37fdc 100644\n--- a/lib/librte_eventdev/Makefile\n+++ b/lib/librte_eventdev/Makefile\n@@ -21,6 +21,7 @@ LDLIBS += -lrte_mbuf -lrte_cryptodev -lpthread\n # library source files\n SRCS-y += rte_eventdev.c\n SRCS-y += rte_event_ring.c\n+SRCS-y += eventdev_trace_points.c\n SRCS-y += rte_event_eth_rx_adapter.c\n SRCS-y += rte_event_timer_adapter.c\n SRCS-y += rte_event_crypto_adapter.c\n@@ -29,6 +30,8 @@ SRCS-y += rte_event_eth_tx_adapter.c\n # export include files\n SYMLINK-y-include += rte_eventdev.h\n SYMLINK-y-include += rte_eventdev_pmd.h\n+SYMLINK-y-include += rte_eventdev_trace.h\n+SYMLINK-y-include += rte_eventdev_trace_fp.h\n SYMLINK-y-include += rte_eventdev_pmd_pci.h\n SYMLINK-y-include += rte_eventdev_pmd_vdev.h\n SYMLINK-y-include += rte_event_ring.h\ndiff --git a/lib/librte_eventdev/eventdev_trace_points.c b/lib/librte_eventdev/eventdev_trace_points.c\nnew file mode 100644\nindex 000000000..9407180c6\n--- /dev/null\n+++ b/lib/librte_eventdev/eventdev_trace_points.c\n@@ -0,0 +1,173 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright(C) 2020 Marvell International Ltd.\n+ */\n+\n+#define RTE_TRACE_POINT_REGISTER_SELECT /* Select trace point register macros */\n+\n+#include \"rte_eventdev_trace.h\"\n+\n+/* Eventdev trace points */\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_configure);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_queue_setup);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_port_setup);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_port_link);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_port_unlink);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_start);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_stop);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_close);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_enq_burst);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_deq_burst);\n+\n+/* Eventdev Rx adapter trace points */\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_eth_rx_adapter_create);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_eth_rx_adapter_free);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_eth_rx_adapter_queue_add);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_eth_rx_adapter_queue_del);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_eth_rx_adapter_start);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_eth_rx_adapter_stop);\n+\n+/* Eventdev Tx adapter trace points */\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_eth_tx_adapter_create);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_eth_tx_adapter_free);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_eth_tx_adapter_queue_add);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_eth_tx_adapter_queue_del);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_eth_tx_adapter_start);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_eth_tx_adapter_stop);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_eth_tx_adapter_enqueue);\n+\n+/* Eventdev Timer adapter trace points */\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_timer_adapter_create);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_timer_adapter_start);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_timer_adapter_stop);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_timer_adapter_free);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_timer_arm_burst);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_timer_arm_tmo_tick_burst);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_timer_cancel_burst);\n+\n+/* Eventdev Crypto adapter trace points */\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_crypto_adapter_create);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_crypto_adapter_free);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_crypto_adapter_queue_pair_add);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_crypto_adapter_queue_pair_del);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_crypto_adapter_start);\n+RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_crypto_adapter_stop);\n+\n+RTE_INIT(eventdev_trace_init)\n+{\n+\t/* Eventdev trace points */\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_configure,\n+\t\t\t\t lib.eventdev.configure);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_queue_setup,\n+\t\t\t\t lib.eventdev.queue.setup);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_port_setup,\n+\t\t\t\t lib.eventdev.port.setup);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_port_link,\n+\t\t\t\t lib.eventdev.port.link);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_port_unlink,\n+\t\t\t\t lib.eventdev.port.unlink);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_start,\n+\t\t\t\t lib.eventdev.start);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_stop,\n+\t\t\t\t lib.eventdev.stop);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_close,\n+\t\t\t\t lib.eventdev.close);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_enq_burst,\n+\t\t\t\t lib.eventdev.enq.burst);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_deq_burst,\n+\t\t\t\t lib.eventdev.deq.burst);\n+\n+\n+\t/* Eventdev Rx adapter trace points */\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_rx_adapter_create,\n+\t\t\t\t lib.eventdev.rx.adapter.create);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_rx_adapter_free,\n+\t\t\t\t lib.eventdev.rx.adapter.free);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_rx_adapter_queue_add,\n+\t\t\t\t lib.eventdev.rx.adapter.queue.add);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_rx_adapter_queue_del,\n+\t\t\t\t lib.eventdev.rx.adapter.queue.del);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_rx_adapter_start,\n+\t\t\t\t lib.eventdev.rx.adapter.start);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_rx_adapter_stop,\n+\t\t\t\t lib.eventdev.rx.adapter.stop);\n+\n+\t/* Eventdev Tx adapter trace points */\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_tx_adapter_create,\n+\t\t\t\t lib.eventdev.tx.adapter.create);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_tx_adapter_free,\n+\t\t\t\t lib.eventdev.tx.adapter.free);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_tx_adapter_queue_add,\n+\t\t\t\t lib.eventdev.tx.adapter.queue.add);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_tx_adapter_queue_del,\n+\t\t\t\t lib.eventdev.tx.adapter.queue.del);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_tx_adapter_start,\n+\t\t\t\t lib.eventdev.tx.adapter.start);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_tx_adapter_stop,\n+\t\t\t\t lib.eventdev.tx.adapter.stop);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_tx_adapter_enqueue,\n+\t\t\t\t lib.eventdev.tx.adapter.enq);\n+\n+\n+\t/* Eventdev Timer adapter trace points */\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_timer_adapter_create,\n+\t\t\t\t lib.eventdev.timer.create);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_timer_adapter_start,\n+\t\t\t\t lib.eventdev.timer.start);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_timer_adapter_stop,\n+\t\t\t\t lib.eventdev.timer.stop);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_timer_adapter_free,\n+\t\t\t\t lib.eventdev.timer.free);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_timer_arm_burst,\n+\t\t\t\t lib.eventdev.timer.burst);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_timer_arm_tmo_tick_burst,\n+\t\t\t\t lib.eventdev.timer.tick.burst);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_timer_cancel_burst,\n+\t\t\t\t lib.eventdev.timer.cancel);\n+\n+\t/* Eventdev Crypto adapter trace points */\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_crypto_adapter_create,\n+\t\t\t\t lib.eventdev.crypto.create);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_crypto_adapter_free,\n+\t\t\t\t lib.eventdev.crypto.free);\n+\n+\tRTE_TRACE_POINT_REGISTER(\n+\t\t\trte_eventdev_trace_crypto_adapter_queue_pair_add,\n+\t\t\tlib.eventdev.crypto.queue.add);\n+\n+\tRTE_TRACE_POINT_REGISTER(\n+\t\t\trte_eventdev_trace_crypto_adapter_queue_pair_del,\n+\t\t\tlib.eventdev.crypto.queue.del);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_crypto_adapter_start,\n+\t\t\t\t lib.eventdev.crypto.start);\n+\n+\tRTE_TRACE_POINT_REGISTER(rte_eventdev_trace_crypto_adapter_stop,\n+\t\t\t\t lib.eventdev.crypto.stop);\n+}\ndiff --git a/lib/librte_eventdev/meson.build b/lib/librte_eventdev/meson.build\nindex 16d8240e9..07e0464d9 100644\n--- a/lib/librte_eventdev/meson.build\n+++ b/lib/librte_eventdev/meson.build\n@@ -9,12 +9,15 @@ endif\n \n sources = files('rte_eventdev.c',\n \t\t'rte_event_ring.c',\n+\t\t'eventdev_trace_points.c',\n \t\t'rte_event_eth_rx_adapter.c',\n \t\t'rte_event_timer_adapter.c',\n \t\t'rte_event_crypto_adapter.c',\n \t\t'rte_event_eth_tx_adapter.c')\n headers = files('rte_eventdev.h',\n \t\t'rte_eventdev_pmd.h',\n+\t\t'rte_eventdev_trace.h',\n+\t\t'rte_eventdev_trace_fp.h',\n \t\t'rte_eventdev_pmd_pci.h',\n \t\t'rte_eventdev_pmd_vdev.h',\n \t\t'rte_event_ring.h',\ndiff --git a/lib/librte_eventdev/rte_event_crypto_adapter.c b/lib/librte_eventdev/rte_event_crypto_adapter.c\nindex 22d910816..e7b7f0c63 100644\n--- a/lib/librte_eventdev/rte_event_crypto_adapter.c\n+++ b/lib/librte_eventdev/rte_event_crypto_adapter.c\n@@ -16,6 +16,7 @@\n \n #include \"rte_eventdev.h\"\n #include \"rte_eventdev_pmd.h\"\n+#include \"rte_eventdev_trace.h\"\n #include \"rte_event_crypto_adapter.h\"\n \n #define BATCH_SIZE 32\n@@ -267,6 +268,8 @@ rte_event_crypto_adapter_create_ext(uint8_t id, uint8_t dev_id,\n \n \tevent_crypto_adapter[id] = adapter;\n \n+\trte_eventdev_trace_crypto_adapter_create(id, dev_id, adapter, conf_arg,\n+\t\t\t\t\t\t  mode);\n \treturn 0;\n }\n \n@@ -314,6 +317,7 @@ rte_event_crypto_adapter_free(uint8_t id)\n \t\treturn -EBUSY;\n \t}\n \n+\trte_eventdev_trace_crypto_adapter_free(id, adapter);\n \tif (adapter->default_cb_arg)\n \t\trte_free(adapter->conf_arg);\n \trte_free(adapter->cdevs);\n@@ -874,6 +878,8 @@ rte_event_crypto_adapter_queue_pair_add(uint8_t id,\n \t\trte_service_component_runstate_set(adapter->service_id, 1);\n \t}\n \n+\trte_eventdev_trace_crypto_adapter_queue_pair_add(id, cdev_id, event,\n+\t\t\t\t\t\t\t  queue_pair_id);\n \treturn 0;\n }\n \n@@ -959,6 +965,8 @@ rte_event_crypto_adapter_queue_pair_del(uint8_t id, uint8_t cdev_id,\n \t\t\t\tadapter->nb_qps);\n \t}\n \n+\trte_eventdev_trace_crypto_adapter_queue_pair_del(id, cdev_id,\n+\t\t\t\t\t\t\t  queue_pair_id, ret);\n \treturn ret;\n }\n \n@@ -1014,12 +1022,14 @@ rte_event_crypto_adapter_start(uint8_t id)\n \tif (adapter == NULL)\n \t\treturn -EINVAL;\n \n+\trte_eventdev_trace_crypto_adapter_start(id, adapter);\n \treturn eca_adapter_ctrl(id, 1);\n }\n \n int\n rte_event_crypto_adapter_stop(uint8_t id)\n {\n+\trte_eventdev_trace_crypto_adapter_stop(id);\n \treturn eca_adapter_ctrl(id, 0);\n }\n \ndiff --git a/lib/librte_eventdev/rte_event_eth_rx_adapter.c b/lib/librte_eventdev/rte_event_eth_rx_adapter.c\nindex 95dd47820..7137a4e22 100644\n--- a/lib/librte_eventdev/rte_event_eth_rx_adapter.c\n+++ b/lib/librte_eventdev/rte_event_eth_rx_adapter.c\n@@ -20,6 +20,7 @@\n \n #include \"rte_eventdev.h\"\n #include \"rte_eventdev_pmd.h\"\n+#include \"rte_eventdev_trace.h\"\n #include \"rte_event_eth_rx_adapter.h\"\n \n #define BATCH_SIZE\t\t32\n@@ -1998,6 +1999,8 @@ rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,\n \tevent_eth_rx_adapter[id] = rx_adapter;\n \tif (conf_cb == rxa_default_conf_cb)\n \t\trx_adapter->default_cb_arg = 1;\n+\trte_eventdev_trace_eth_rx_adapter_create(id, dev_id, conf_cb,\n+\t\t\t\t\t\t  conf_arg);\n \treturn 0;\n }\n \n@@ -2047,6 +2050,7 @@ rte_event_eth_rx_adapter_free(uint8_t id)\n \trte_free(rx_adapter);\n \tevent_eth_rx_adapter[id] = NULL;\n \n+\trte_eventdev_trace_eth_rx_adapter_free(id);\n \treturn 0;\n }\n \n@@ -2142,6 +2146,9 @@ rte_event_eth_rx_adapter_queue_add(uint8_t id,\n \t\trte_spinlock_unlock(&rx_adapter->rx_lock);\n \t}\n \n+\trte_eventdev_trace_eth_rx_adapter_queue_add(id, eth_dev_id,\n+\t\t\t\t\t\t     rx_queue_id, queue_conf,\n+\t\t\t\t\t\t     ret);\n \tif (ret)\n \t\treturn ret;\n \n@@ -2263,18 +2270,22 @@ rte_event_eth_rx_adapter_queue_del(uint8_t id, uint16_t eth_dev_id,\n \t\t\t\trxa_sw_adapter_queue_count(rx_adapter));\n \t}\n \n+\trte_eventdev_trace_eth_rx_adapter_queue_del(id, eth_dev_id,\n+\t\t\t\t\t\t     rx_queue_id, ret);\n \treturn ret;\n }\n \n int\n rte_event_eth_rx_adapter_start(uint8_t id)\n {\n+\trte_eventdev_trace_eth_rx_adapter_start(id);\n \treturn rxa_ctrl(id, 1);\n }\n \n int\n rte_event_eth_rx_adapter_stop(uint8_t id)\n {\n+\trte_eventdev_trace_eth_rx_adapter_stop(id);\n \treturn rxa_ctrl(id, 0);\n }\n \ndiff --git a/lib/librte_eventdev/rte_event_eth_tx_adapter.c b/lib/librte_eventdev/rte_event_eth_tx_adapter.c\nindex d02ef57f4..d964c99f6 100644\n--- a/lib/librte_eventdev/rte_event_eth_tx_adapter.c\n+++ b/lib/librte_eventdev/rte_event_eth_tx_adapter.c\n@@ -6,6 +6,7 @@\n #include <rte_ethdev.h>\n \n #include \"rte_eventdev_pmd.h\"\n+#include \"rte_eventdev_trace.h\"\n #include \"rte_event_eth_tx_adapter.h\"\n \n #define TXA_BATCH_SIZE\t\t32\n@@ -942,7 +943,8 @@ rte_event_eth_tx_adapter_create(uint8_t id, uint8_t dev_id,\n \t\ttxa_dev_id_array[id] = TXA_INVALID_DEV_ID;\n \t\treturn ret;\n \t}\n-\n+\trte_eventdev_trace_eth_tx_adapter_create(id, dev_id, NULL, port_conf,\n+\t\t\t\t\t\t  ret);\n \ttxa_dev_id_array[id] = dev_id;\n \treturn 0;\n }\n@@ -984,6 +986,8 @@ rte_event_eth_tx_adapter_create_ext(uint8_t id, uint8_t dev_id,\n \t\treturn ret;\n \t}\n \n+\trte_eventdev_trace_eth_tx_adapter_create(id, dev_id, conf_cb, conf_arg,\n+\t\t\t\t\t\t  ret);\n \ttxa_dev_id_array[id] = dev_id;\n \treturn 0;\n }\n@@ -1012,6 +1016,7 @@ rte_event_eth_tx_adapter_free(uint8_t id)\n \t\tret = txa_service_adapter_free(id);\n \ttxa_dev_id_array[id] = TXA_INVALID_DEV_ID;\n \n+\trte_eventdev_trace_eth_tx_adapter_free(id, ret);\n \treturn ret;\n }\n \n@@ -1043,6 +1048,8 @@ rte_event_eth_tx_adapter_queue_add(uint8_t id,\n \telse\n \t\tret = txa_service_queue_add(id, txa_evdev(id), eth_dev, queue);\n \n+\trte_eventdev_trace_eth_tx_adapter_queue_add(id, eth_dev_id, queue,\n+\t\t\t\t\t\t     ret);\n \treturn ret;\n }\n \n@@ -1073,6 +1080,8 @@ rte_event_eth_tx_adapter_queue_del(uint8_t id,\n \telse\n \t\tret = txa_service_queue_del(id, eth_dev, queue);\n \n+\trte_eventdev_trace_eth_tx_adapter_queue_del(id, eth_dev_id, queue,\n+\t\t\t\t\t\t     ret);\n \treturn ret;\n }\n \n@@ -1094,6 +1103,7 @@ rte_event_eth_tx_adapter_start(uint8_t id)\n \tret = txa_dev_start(id) ? txa_dev_start(id)(id, txa_evdev(id)) : 0;\n \tif (ret == 0)\n \t\tret = txa_service_start(id);\n+\trte_eventdev_trace_eth_tx_adapter_start(id, ret);\n \treturn ret;\n }\n \n@@ -1154,5 +1164,6 @@ rte_event_eth_tx_adapter_stop(uint8_t id)\n \tret = txa_dev_stop(id) ? txa_dev_stop(id)(id,  txa_evdev(id)) : 0;\n \tif (ret == 0)\n \t\tret = txa_service_stop(id);\n+\trte_eventdev_trace_eth_tx_adapter_stop(id, ret);\n \treturn ret;\n }\ndiff --git a/lib/librte_eventdev/rte_event_eth_tx_adapter.h b/lib/librte_eventdev/rte_event_eth_tx_adapter.h\nindex 93b717af9..3bfd89be8 100644\n--- a/lib/librte_eventdev/rte_event_eth_tx_adapter.h\n+++ b/lib/librte_eventdev/rte_event_eth_tx_adapter.h\n@@ -369,6 +369,8 @@ rte_event_eth_tx_adapter_enqueue(uint8_t dev_id,\n \t\treturn 0;\n \t}\n #endif\n+\trte_eventdev_trace_eth_tx_adapter_enqueue(dev_id, port_id, ev,\n+\t\t\t\t\t\t   nb_events, flags);\n \tif (flags)\n \t\treturn dev->txa_enqueue_same_dest(dev->data->ports[port_id],\n \t\t\t\t\t\t  ev, nb_events);\ndiff --git a/lib/librte_eventdev/rte_event_timer_adapter.c b/lib/librte_eventdev/rte_event_timer_adapter.c\nindex 161e21a68..0e24945c5 100644\n--- a/lib/librte_eventdev/rte_event_timer_adapter.c\n+++ b/lib/librte_eventdev/rte_event_timer_adapter.c\n@@ -22,6 +22,7 @@\n \n #include \"rte_eventdev.h\"\n #include \"rte_eventdev_pmd.h\"\n+#include \"rte_eventdev_trace.h\"\n #include \"rte_event_timer_adapter.h\"\n #include \"rte_event_timer_adapter_pmd.h\"\n \n@@ -228,6 +229,8 @@ rte_event_timer_adapter_create_ext(\n \n \tadapter->allocated = 1;\n \n+\trte_eventdev_trace_timer_adapter_create(adapter_id, adapter, conf,\n+\t\t\t\t\t\t conf_cb);\n \treturn adapter;\n \n free_memzone:\n@@ -272,7 +275,7 @@ rte_event_timer_adapter_start(const struct rte_event_timer_adapter *adapter)\n \t\treturn ret;\n \n \tadapter->data->started = 1;\n-\n+\trte_eventdev_trace_timer_adapter_start(adapter);\n \treturn 0;\n }\n \n@@ -295,7 +298,7 @@ rte_event_timer_adapter_stop(const struct rte_event_timer_adapter *adapter)\n \t\treturn ret;\n \n \tadapter->data->started = 0;\n-\n+\trte_eventdev_trace_timer_adapter_stop(adapter);\n \treturn 0;\n }\n \n@@ -379,6 +382,7 @@ rte_event_timer_adapter_free(struct rte_event_timer_adapter *adapter)\n \tadapter->data = NULL;\n \tadapter->allocated = 0;\n \n+\trte_eventdev_trace_timer_adapter_free(adapter);\n \treturn 0;\n }\n \ndiff --git a/lib/librte_eventdev/rte_event_timer_adapter.h b/lib/librte_eventdev/rte_event_timer_adapter.h\nindex 7f6dc5c29..ac0400cb4 100644\n--- a/lib/librte_eventdev/rte_event_timer_adapter.h\n+++ b/lib/librte_eventdev/rte_event_timer_adapter.h\n@@ -115,6 +115,7 @@ extern \"C\" {\n #include <rte_memory.h>\n \n #include \"rte_eventdev.h\"\n+#include \"rte_eventdev_trace_fp.h\"\n \n /**\n  * Timer adapter clock source\n@@ -579,6 +580,8 @@ rte_event_timer_arm_burst(const struct rte_event_timer_adapter *adapter,\n \tADAPTER_VALID_OR_ERR_RET(adapter, -EINVAL);\n \tFUNC_PTR_OR_ERR_RET(adapter->arm_burst, -EINVAL);\n #endif\n+\trte_eventdev_trace_timer_arm_burst(adapter, (void **)evtims,\n+\t\t\t\t\t    nb_evtims);\n \treturn adapter->arm_burst(adapter, evtims, nb_evtims);\n }\n \n@@ -622,6 +625,9 @@ rte_event_timer_arm_tmo_tick_burst(\n \tADAPTER_VALID_OR_ERR_RET(adapter, -EINVAL);\n \tFUNC_PTR_OR_ERR_RET(adapter->arm_tmo_tick_burst, -EINVAL);\n #endif\n+\trte_eventdev_trace_timer_arm_tmo_tick_burst(adapter, timeout_ticks,\n+\t\t\t\t\t\t     (void **)evtims,\n+\t\t\t\t\t\t     nb_evtims);\n \treturn adapter->arm_tmo_tick_burst(adapter, evtims, timeout_ticks,\n \t\t\t\t\t   nb_evtims);\n }\n@@ -655,6 +661,8 @@ rte_event_timer_cancel_burst(const struct rte_event_timer_adapter *adapter,\n \tADAPTER_VALID_OR_ERR_RET(adapter, -EINVAL);\n \tFUNC_PTR_OR_ERR_RET(adapter->cancel_burst, -EINVAL);\n #endif\n+\trte_eventdev_trace_timer_cancel_burst(adapter, (void **)evtims,\n+\t\t\t\t\t       nb_evtims);\n \treturn adapter->cancel_burst(adapter, evtims, nb_evtims);\n }\n \ndiff --git a/lib/librte_eventdev/rte_eventdev.c b/lib/librte_eventdev/rte_eventdev.c\nindex b987e0745..e72d8b941 100644\n--- a/lib/librte_eventdev/rte_eventdev.c\n+++ b/lib/librte_eventdev/rte_eventdev.c\n@@ -35,6 +35,7 @@\n \n #include \"rte_eventdev.h\"\n #include \"rte_eventdev_pmd.h\"\n+#include \"rte_eventdev_trace.h\"\n \n static struct rte_eventdev rte_event_devices[RTE_EVENT_MAX_DEVS];\n \n@@ -524,6 +525,7 @@ rte_event_dev_configure(uint8_t dev_id,\n \t}\n \n \tdev->data->event_dev_cap = info.event_dev_cap;\n+\trte_eventdev_trace_configure(dev_id, dev_conf, diag);\n \treturn diag;\n }\n \n@@ -650,6 +652,7 @@ rte_event_queue_setup(uint8_t dev_id, uint8_t queue_id,\n \t}\n \n \tdev->data->queues_cfg[queue_id] = *queue_conf;\n+\trte_eventdev_trace_queue_setup(dev_id, queue_id, queue_conf);\n \treturn (*dev->dev_ops->queue_setup)(dev, queue_id, queue_conf);\n }\n \n@@ -766,6 +769,7 @@ rte_event_port_setup(uint8_t dev_id, uint8_t port_id,\n \tif (!diag)\n \t\tdiag = rte_event_port_unlink(dev_id, port_id, NULL, 0);\n \n+\trte_eventdev_trace_port_setup(dev_id, port_id, port_conf, diag);\n \tif (diag < 0)\n \t\treturn diag;\n \n@@ -936,6 +940,7 @@ rte_event_port_link(uint8_t dev_id, uint8_t port_id,\n \tfor (i = 0; i < diag; i++)\n \t\tlinks_map[queues[i]] = (uint8_t)priorities[i];\n \n+\trte_eventdev_trace_port_link(dev_id, port_id, nb_links, diag);\n \treturn diag;\n }\n \n@@ -1001,6 +1006,7 @@ rte_event_port_unlink(uint8_t dev_id, uint8_t port_id,\n \tfor (i = 0; i < diag; i++)\n \t\tlinks_map[queues[i]] = EVENT_QUEUE_SERVICE_PRIORITY_INVALID;\n \n+\trte_eventdev_trace_port_unlink(dev_id, port_id, nb_unlinks, diag);\n \treturn diag;\n }\n \n@@ -1213,6 +1219,7 @@ rte_event_dev_start(uint8_t dev_id)\n \t}\n \n \tdiag = (*dev->dev_ops->dev_start)(dev);\n+\trte_eventdev_trace_start(dev_id, diag);\n \tif (diag == 0)\n \t\tdev->data->dev_started = 1;\n \telse\n@@ -1257,6 +1264,7 @@ rte_event_dev_stop(uint8_t dev_id)\n \n \tdev->data->dev_started = 0;\n \t(*dev->dev_ops->dev_stop)(dev);\n+\trte_eventdev_trace_stop(dev_id);\n }\n \n int\n@@ -1275,6 +1283,7 @@ rte_event_dev_close(uint8_t dev_id)\n \t\treturn -EBUSY;\n \t}\n \n+\trte_eventdev_trace_close(dev_id);\n \treturn (*dev->dev_ops->dev_close)(dev);\n }\n \ndiff --git a/lib/librte_eventdev/rte_eventdev.h b/lib/librte_eventdev/rte_eventdev.h\nindex 226f352ad..7dc832353 100644\n--- a/lib/librte_eventdev/rte_eventdev.h\n+++ b/lib/librte_eventdev/rte_eventdev.h\n@@ -215,6 +215,8 @@ extern \"C\" {\n #include <rte_memory.h>\n #include <rte_errno.h>\n \n+#include \"rte_eventdev_trace_fp.h\"\n+\n struct rte_mbuf; /* we just use mbuf pointers; no need to include rte_mbuf.h */\n struct rte_event;\n \n@@ -1343,6 +1345,7 @@ __rte_event_enqueue_burst(uint8_t dev_id, uint8_t port_id,\n \t\treturn 0;\n \t}\n #endif\n+\trte_eventdev_trace_enq_burst(dev_id, port_id, ev, nb_events, fn);\n \t/*\n \t * Allow zero cost non burst mode routine invocation if application\n \t * requests nb_events as const one\n@@ -1620,7 +1623,7 @@ rte_event_dequeue_burst(uint8_t dev_id, uint8_t port_id, struct rte_event ev[],\n \t\treturn 0;\n \t}\n #endif\n-\n+\trte_eventdev_trace_deq_burst(dev_id, port_id, ev, nb_events);\n \t/*\n \t * Allow zero cost non burst mode routine invocation if application\n \t * requests nb_events as const one\ndiff --git a/lib/librte_eventdev/rte_eventdev_trace.h b/lib/librte_eventdev/rte_eventdev_trace.h\nnew file mode 100644\nindex 000000000..facbe4d50\n--- /dev/null\n+++ b/lib/librte_eventdev/rte_eventdev_trace.h\n@@ -0,0 +1,311 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright(C) 2020 Marvell International Ltd.\n+ */\n+\n+#ifndef _RTE_EVENTDEV_TRACE_H_\n+#define _RTE_EVENTDEV_TRACE_H_\n+\n+/**\n+ * @file\n+ *\n+ * API for ethdev trace support\n+ */\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+#include <rte_trace_point.h>\n+\n+#include \"rte_eventdev.h\"\n+#include \"rte_event_eth_rx_adapter.h\"\n+#include \"rte_event_timer_adapter.h\"\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_configure,\n+\tRTE_TRACE_POINT_ARGS(uint8_t dev_id,\n+\t\t\t     const struct rte_event_dev_config *dev_conf,\n+\t\t\t     int rc),\n+\trte_trace_point_emit_u8(dev_id);\n+\trte_trace_point_emit_u32(dev_conf->dequeue_timeout_ns);\n+\trte_trace_point_emit_i32(dev_conf->nb_events_limit);\n+\trte_trace_point_emit_u8(dev_conf->nb_event_queues);\n+\trte_trace_point_emit_u8(dev_conf->nb_event_ports);\n+\trte_trace_point_emit_u32(dev_conf->nb_event_queue_flows);\n+\trte_trace_point_emit_u32(dev_conf->nb_event_port_dequeue_depth);\n+\trte_trace_point_emit_u32(dev_conf->nb_event_port_enqueue_depth);\n+\trte_trace_point_emit_u32(dev_conf->event_dev_cfg);\n+\trte_trace_point_emit_int(rc);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_queue_setup,\n+\tRTE_TRACE_POINT_ARGS(uint8_t dev_id, uint8_t queue_id,\n+\t\t\t     const struct rte_event_queue_conf *queue_conf),\n+\trte_trace_point_emit_u8(dev_id);\n+\trte_trace_point_emit_u8(queue_id);\n+\trte_trace_point_emit_u32(queue_conf->nb_atomic_flows);\n+\trte_trace_point_emit_u32(queue_conf->nb_atomic_order_sequences);\n+\trte_trace_point_emit_u32(queue_conf->event_queue_cfg);\n+\trte_trace_point_emit_u8(queue_conf->schedule_type);\n+\trte_trace_point_emit_u8(queue_conf->priority);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_port_setup,\n+\tRTE_TRACE_POINT_ARGS(uint8_t dev_id, uint8_t port_id,\n+\t\t\t     const struct rte_event_port_conf *port_conf,\n+\t\t\t     int rc),\n+\trte_trace_point_emit_u8(dev_id);\n+\trte_trace_point_emit_u8(port_id);\n+\trte_trace_point_emit_i32(port_conf->new_event_threshold);\n+\trte_trace_point_emit_u16(port_conf->dequeue_depth);\n+\trte_trace_point_emit_u16(port_conf->enqueue_depth);\n+\trte_trace_point_emit_u8(port_conf->disable_implicit_release);\n+\trte_trace_point_emit_int(rc);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_port_link,\n+\tRTE_TRACE_POINT_ARGS(uint8_t dev_id, uint8_t port_id,\n+\t\t\t     uint16_t nb_links, int rc),\n+\trte_trace_point_emit_u8(dev_id);\n+\trte_trace_point_emit_u8(port_id);\n+\trte_trace_point_emit_u16(nb_links);\n+\trte_trace_point_emit_int(rc);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_port_unlink,\n+\tRTE_TRACE_POINT_ARGS(uint8_t dev_id, uint8_t port_id,\n+\t\t\t     uint16_t nb_unlinks, int rc),\n+\trte_trace_point_emit_u8(dev_id);\n+\trte_trace_point_emit_u8(port_id);\n+\trte_trace_point_emit_u16(nb_unlinks);\n+\trte_trace_point_emit_int(rc);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_start,\n+\tRTE_TRACE_POINT_ARGS(uint8_t dev_id, int rc),\n+\trte_trace_point_emit_u8(dev_id);\n+\trte_trace_point_emit_int(rc);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_stop,\n+\tRTE_TRACE_POINT_ARGS(uint8_t dev_id),\n+\trte_trace_point_emit_u8(dev_id);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_close,\n+\tRTE_TRACE_POINT_ARGS(uint8_t dev_id),\n+\trte_trace_point_emit_u8(dev_id);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_eth_rx_adapter_create,\n+\tRTE_TRACE_POINT_ARGS(uint8_t adptr_id, uint8_t dev_id,\n+\t\t\t     void *conf_cb, void *conf_arg),\n+\trte_trace_point_emit_u8(adptr_id);\n+\trte_trace_point_emit_u8(dev_id);\n+\trte_trace_point_emit_ptr(conf_cb);\n+\trte_trace_point_emit_ptr(conf_arg);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_eth_rx_adapter_free,\n+\tRTE_TRACE_POINT_ARGS(uint8_t adptr_id),\n+\trte_trace_point_emit_u8(adptr_id);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_eth_rx_adapter_queue_add,\n+\tRTE_TRACE_POINT_ARGS(uint8_t adptr_id, uint16_t eth_dev_id,\n+\t\t\t     int32_t rx_queue_id,\n+\t\t\t     const struct rte_event_eth_rx_adapter_queue_conf\n+\t\t\t     *queue_conf, int rc),\n+\trte_trace_point_emit_u8(adptr_id);\n+\trte_trace_point_emit_u16(eth_dev_id);\n+\trte_trace_point_emit_i32(rx_queue_id);\n+\trte_trace_point_emit_u32(queue_conf->rx_queue_flags);\n+\trte_trace_point_emit_u16(queue_conf->servicing_weight);\n+\trte_trace_point_emit_u8(queue_conf->ev.queue_id);\n+\trte_trace_point_emit_u8(queue_conf->ev.priority);\n+\trte_trace_point_emit_int(rc);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_eth_rx_adapter_queue_del,\n+\tRTE_TRACE_POINT_ARGS(uint8_t adptr_id, uint16_t eth_dev_id,\n+\t\t\t     int32_t rx_queue_id, int rc),\n+\trte_trace_point_emit_u8(adptr_id);\n+\trte_trace_point_emit_u16(eth_dev_id);\n+\trte_trace_point_emit_i32(rx_queue_id);\n+\trte_trace_point_emit_int(rc);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_eth_rx_adapter_start,\n+\tRTE_TRACE_POINT_ARGS(uint8_t adptr_id),\n+\trte_trace_point_emit_u8(adptr_id);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_eth_rx_adapter_stop,\n+\tRTE_TRACE_POINT_ARGS(uint8_t adptr_id),\n+\trte_trace_point_emit_u8(adptr_id);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_eth_tx_adapter_create,\n+\tRTE_TRACE_POINT_ARGS(uint8_t adptr_id, uint8_t dev_id, void *conf_cb,\n+\t\t\t     struct rte_event_port_conf *port_conf,\n+\t\t\t     int rc),\n+\trte_trace_point_emit_u8(adptr_id);\n+\trte_trace_point_emit_u8(dev_id);\n+\trte_trace_point_emit_i32(port_conf->new_event_threshold);\n+\trte_trace_point_emit_u16(port_conf->dequeue_depth);\n+\trte_trace_point_emit_u16(port_conf->enqueue_depth);\n+\trte_trace_point_emit_u8(port_conf->disable_implicit_release);\n+\trte_trace_point_emit_ptr(conf_cb);\n+\trte_trace_point_emit_int(rc);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_eth_tx_adapter_free,\n+\tRTE_TRACE_POINT_ARGS(uint8_t adptr_id, int rc),\n+\trte_trace_point_emit_u8(adptr_id);\n+\trte_trace_point_emit_int(rc);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_eth_tx_adapter_queue_add,\n+\tRTE_TRACE_POINT_ARGS(uint8_t adptr_id, uint16_t eth_dev_id,\n+\t\t\t     int32_t queue, int rc),\n+\trte_trace_point_emit_u8(adptr_id);\n+\trte_trace_point_emit_u16(eth_dev_id);\n+\trte_trace_point_emit_i32(queue);\n+\trte_trace_point_emit_int(rc);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_eth_tx_adapter_queue_del,\n+\tRTE_TRACE_POINT_ARGS(uint8_t adptr_id, uint16_t eth_dev_id,\n+\t\t\t     int32_t queue, int rc),\n+\trte_trace_point_emit_u8(adptr_id);\n+\trte_trace_point_emit_u16(eth_dev_id);\n+\trte_trace_point_emit_i32(queue);\n+\trte_trace_point_emit_int(rc);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_eth_tx_adapter_start,\n+\tRTE_TRACE_POINT_ARGS(uint8_t adptr_id, int rc),\n+\trte_trace_point_emit_u8(adptr_id);\n+\trte_trace_point_emit_int(rc);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_eth_tx_adapter_stop,\n+\tRTE_TRACE_POINT_ARGS(uint8_t adptr_id, int rc),\n+\trte_trace_point_emit_u8(adptr_id);\n+\trte_trace_point_emit_int(rc);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_timer_adapter_create,\n+\tRTE_TRACE_POINT_ARGS(uint16_t adapter_id, void *adapter,\n+\t\t\t     const struct rte_event_timer_adapter_conf *conf,\n+\t\t\t     void *conf_cb),\n+\trte_trace_point_emit_u16(adapter_id);\n+\trte_trace_point_emit_ptr(adapter);\n+\trte_trace_point_emit_ptr(conf);\n+\trte_trace_point_emit_u8(conf->event_dev_id);\n+\trte_trace_point_emit_u16(conf->timer_adapter_id);\n+\trte_trace_point_emit_u64(conf->timer_tick_ns);\n+\trte_trace_point_emit_u64(conf->max_tmo_ns);\n+\trte_trace_point_emit_u64(conf->nb_timers);\n+\trte_trace_point_emit_u64(conf->flags);\n+\trte_trace_point_emit_ptr(conf_cb);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_timer_adapter_start,\n+\tRTE_TRACE_POINT_ARGS(const void *adapter),\n+\trte_trace_point_emit_ptr(adapter);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_timer_adapter_stop,\n+\tRTE_TRACE_POINT_ARGS(const void *adapter),\n+\trte_trace_point_emit_ptr(adapter);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_timer_adapter_free,\n+\tRTE_TRACE_POINT_ARGS(void *adapter),\n+\trte_trace_point_emit_ptr(adapter);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_crypto_adapter_create,\n+\tRTE_TRACE_POINT_ARGS(uint8_t adptr_id, uint8_t dev_id, void *adapter,\n+\t\t\t     struct rte_event_port_conf *port_conf,\n+\t\t\t     uint8_t mode),\n+\trte_trace_point_emit_u8(adptr_id);\n+\trte_trace_point_emit_u8(dev_id);\n+\trte_trace_point_emit_ptr(adapter);\n+\trte_trace_point_emit_u8(mode);\n+\trte_trace_point_emit_i32(port_conf->new_event_threshold);\n+\trte_trace_point_emit_u16(port_conf->dequeue_depth);\n+\trte_trace_point_emit_u16(port_conf->enqueue_depth);\n+\trte_trace_point_emit_u8(port_conf->disable_implicit_release);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_crypto_adapter_free,\n+\tRTE_TRACE_POINT_ARGS(uint8_t adptr_id, void *adapter),\n+\trte_trace_point_emit_u8(adptr_id);\n+\trte_trace_point_emit_ptr(adapter);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_crypto_adapter_queue_pair_add,\n+\tRTE_TRACE_POINT_ARGS(uint8_t adptr_id, uint8_t cdev_id,\n+\t\t\t     const void *event, int32_t queue_pair_id),\n+\trte_trace_point_emit_u8(adptr_id);\n+\trte_trace_point_emit_u8(cdev_id);\n+\trte_trace_point_emit_i32(queue_pair_id);\n+\trte_trace_point_emit_ptr(event);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_crypto_adapter_queue_pair_del,\n+\tRTE_TRACE_POINT_ARGS(uint8_t adptr_id, uint8_t cdev_id,\n+\t\t\t     int32_t queue_pair_id, int rc),\n+\trte_trace_point_emit_u8(adptr_id);\n+\trte_trace_point_emit_u8(cdev_id);\n+\trte_trace_point_emit_i32(queue_pair_id);\n+\trte_trace_point_emit_int(rc);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_crypto_adapter_start,\n+\tRTE_TRACE_POINT_ARGS(uint8_t adptr_id, void *adapter),\n+\trte_trace_point_emit_u8(adptr_id);\n+\trte_trace_point_emit_ptr(adapter);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eventdev_trace_crypto_adapter_stop,\n+\tRTE_TRACE_POINT_ARGS(uint8_t adptr_id),\n+\trte_trace_point_emit_u8(adptr_id);\n+)\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* _RTE_EVENTDEV_TRACE_H_ */\ndiff --git a/lib/librte_eventdev/rte_eventdev_trace_fp.h b/lib/librte_eventdev/rte_eventdev_trace_fp.h\nnew file mode 100644\nindex 000000000..e261cf0da\n--- /dev/null\n+++ b/lib/librte_eventdev/rte_eventdev_trace_fp.h\n@@ -0,0 +1,85 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright(C) 2020 Marvell International Ltd.\n+ */\n+\n+#ifndef _RTE_EVENTDEV_TRACE_FP_H_\n+#define _RTE_EVENTDEV_TRACE_FP_H_\n+\n+/**\n+ * @file\n+ *\n+ * API for ethdev trace support\n+ */\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+#include <rte_trace_point.h>\n+\n+RTE_TRACE_POINT_FP(\n+\trte_eventdev_trace_deq_burst,\n+\tRTE_TRACE_POINT_ARGS(uint8_t dev_id, uint8_t port_id, void *ev_table,\n+\t\t\t     uint16_t nb_events),\n+\trte_trace_point_emit_u8(dev_id);\n+\trte_trace_point_emit_u8(port_id);\n+\trte_trace_point_emit_ptr(ev_table);\n+\trte_trace_point_emit_u16(nb_events);\n+)\n+\n+RTE_TRACE_POINT_FP(\n+\trte_eventdev_trace_enq_burst,\n+\tRTE_TRACE_POINT_ARGS(uint8_t dev_id, uint8_t port_id,\n+\t\t\t     const void *ev_table, uint16_t nb_events,\n+\t\t\t     void *enq_mode_cb),\n+\trte_trace_point_emit_u8(dev_id);\n+\trte_trace_point_emit_u8(port_id);\n+\trte_trace_point_emit_ptr(ev_table);\n+\trte_trace_point_emit_u16(nb_events);\n+\trte_trace_point_emit_ptr(enq_mode_cb);\n+)\n+\n+RTE_TRACE_POINT_FP(\n+\trte_eventdev_trace_eth_tx_adapter_enqueue,\n+\tRTE_TRACE_POINT_ARGS(uint8_t dev_id, uint8_t port_id, void *ev_table,\n+\t\t\t     uint16_t nb_events, const uint8_t flags),\n+\trte_trace_point_emit_u8(dev_id);\n+\trte_trace_point_emit_u8(port_id);\n+\trte_trace_point_emit_ptr(ev_table);\n+\trte_trace_point_emit_u16(nb_events);\n+\trte_trace_point_emit_u8(flags);\n+)\n+\n+RTE_TRACE_POINT_FP(\n+\trte_eventdev_trace_timer_arm_burst,\n+\tRTE_TRACE_POINT_ARGS(const void *adapter, void **evtims_table,\n+\t\t\t     uint16_t nb_evtims),\n+\trte_trace_point_emit_ptr(adapter);\n+\trte_trace_point_emit_ptr(evtims_table);\n+\trte_trace_point_emit_u16(nb_evtims);\n+)\n+\n+RTE_TRACE_POINT_FP(\n+\trte_eventdev_trace_timer_arm_tmo_tick_burst,\n+\tRTE_TRACE_POINT_ARGS(const void *adapter, const uint64_t timeout_ticks,\n+\t\t\t     void **evtims_table, const uint16_t nb_evtims),\n+\trte_trace_point_emit_ptr(adapter);\n+\trte_trace_point_emit_u64(timeout_ticks);\n+\trte_trace_point_emit_ptr(evtims_table);\n+\trte_trace_point_emit_u16(nb_evtims);\n+)\n+\n+RTE_TRACE_POINT_FP(\n+\trte_eventdev_trace_timer_cancel_burst,\n+\tRTE_TRACE_POINT_ARGS(const void *adapter, void **evtims_table,\n+\t\t\t     uint16_t nb_evtims),\n+\trte_trace_point_emit_ptr(adapter);\n+\trte_trace_point_emit_ptr(evtims_table);\n+\trte_trace_point_emit_u16(nb_evtims);\n+)\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* _RTE_EVENTDEV_TRACE_FP_H_ */\ndiff --git a/lib/librte_eventdev/rte_eventdev_version.map b/lib/librte_eventdev/rte_eventdev_version.map\nindex edfc15282..91a62cd07 100644\n--- a/lib/librte_eventdev/rte_eventdev_version.map\n+++ b/lib/librte_eventdev/rte_eventdev_version.map\n@@ -93,3 +93,45 @@ DPDK_20.0 {\n \n \tlocal: *;\n };\n+\n+EXPERIMENTAL {\n+\tglobal:\n+\n+\t# added in 20.05\n+\t__rte_eventdev_trace_configure;\n+\t__rte_eventdev_trace_queue_setup;\n+\t__rte_eventdev_trace_port_setup;\n+\t__rte_eventdev_trace_port_link;\n+\t__rte_eventdev_trace_port_unlink;\n+\t__rte_eventdev_trace_start;\n+\t__rte_eventdev_trace_stop;\n+\t__rte_eventdev_trace_close;\n+\t__rte_eventdev_trace_deq_burst;\n+\t__rte_eventdev_trace_enq_burst;\n+\t__rte_eventdev_trace_eth_rx_adapter_create;\n+\t__rte_eventdev_trace_eth_rx_adapter_free;\n+\t__rte_eventdev_trace_eth_rx_adapter_queue_add;\n+\t__rte_eventdev_trace_eth_rx_adapter_queue_del;\n+\t__rte_eventdev_trace_eth_rx_adapter_start;\n+\t__rte_eventdev_trace_eth_rx_adapter_stop;\n+\t__rte_eventdev_trace_eth_tx_adapter_create;\n+\t__rte_eventdev_trace_eth_tx_adapter_free;\n+\t__rte_eventdev_trace_eth_tx_adapter_queue_add;\n+\t__rte_eventdev_trace_eth_tx_adapter_queue_del;\n+\t__rte_eventdev_trace_eth_tx_adapter_start;\n+\t__rte_eventdev_trace_eth_tx_adapter_stop;\n+\t__rte_eventdev_trace_eth_tx_adapter_enqueue;\n+\t__rte_eventdev_trace_timer_adapter_create;\n+\t__rte_eventdev_trace_timer_adapter_start;\n+\t__rte_eventdev_trace_timer_adapter_stop;\n+\t__rte_eventdev_trace_timer_adapter_free;\n+\t__rte_eventdev_trace_timer_arm_burst;\n+\t__rte_eventdev_trace_timer_arm_tmo_tick_burst;\n+\t__rte_eventdev_trace_timer_cancel_burst;\n+\t__rte_eventdev_trace_crypto_adapter_create;\n+\t__rte_eventdev_trace_crypto_adapter_free;\n+\t__rte_eventdev_trace_crypto_adapter_queue_pair_add;\n+\t__rte_eventdev_trace_crypto_adapter_queue_pair_del;\n+\t__rte_eventdev_trace_crypto_adapter_start;\n+\t__rte_eventdev_trace_crypto_adapter_stop;\n+};\n",
    "prefixes": [
        "v7",
        "29/32"
    ]
}