DPDK patches and discussions
 help / color / mirror / Atom feed
From: Jerin Jacob <jerin.jacob@caviumnetworks.com>
To: dev@dpdk.org
Cc: thomas.monjalon@6wind.com, bruce.richardson@intel.com,
	harry.van.haaren@intel.com, hemant.agrawal@nxp.com,
	gage.eads@intel.com, nipun.gupta@nxp.com,
	santosh.shukla@caviumnetworks.com,
	Jerin Jacob <jerin.jacob@caviumnetworks.com>
Subject: [dpdk-dev] [PATCH 05/39] event/octeontx: probe ssovf pcie devices
Date: Fri,  3 Mar 2017 22:57:47 +0530	[thread overview]
Message-ID: <1488562101-6658-6-git-send-email-jerin.jacob@caviumnetworks.com> (raw)
In-Reply-To: <1488562101-6658-1-git-send-email-jerin.jacob@caviumnetworks.com>

An event device consists of event queues and event ports.
On Octeontx HW, each event queues(sso group/ssovf) and
event ports(sso hws/ssowvf) are enumerated as separate
SRIOV VF PCIe device.In order to expose as an event device,
On PCIe probe, the driver stores the information associated
with the PCIe device and later with vdev infrastructure
creates event device with earlier probed PCIe VF devices.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
---
 drivers/event/octeontx/ssovf_evdev.h | 24 ++++++++++
 drivers/event/octeontx/ssovf_probe.c | 86 ++++++++++++++++++++++++++++++++++++
 2 files changed, 110 insertions(+)

diff --git a/drivers/event/octeontx/ssovf_evdev.h b/drivers/event/octeontx/ssovf_evdev.h
index ce6b7d4..809eed1 100644
--- a/drivers/event/octeontx/ssovf_evdev.h
+++ b/drivers/event/octeontx/ssovf_evdev.h
@@ -34,6 +34,7 @@
 #define __SSOVF_EVDEV_H__
 
 #include <rte_config.h>
+#include <rte_io.h>
 
 #define EVENTDEV_NAME_OCTEONTX_PMD event_octeontx
 
@@ -54,4 +55,27 @@
 	RTE_LOG(ERR, EVENTDEV, "[%s] %s() " fmt "\n", \
 		RTE_STR(EVENTDEV_NAME_OCTEONTX_PMD), __func__, ## args)
 
+#define PCI_VENDOR_ID_CAVIUM              0x177D
+#define PCI_DEVICE_ID_OCTEONTX_SSOGRP_VF  0xA04B
+
+#define SSO_MAX_VHGRP                     (64)
+
+/* SSO VF register offsets */
+#define SSO_VHGRP_QCTL                    (0x010ULL)
+#define SSO_VHGRP_INT                     (0x100ULL)
+#define SSO_VHGRP_INT_W1S                 (0x108ULL)
+#define SSO_VHGRP_INT_ENA_W1S             (0x110ULL)
+#define SSO_VHGRP_INT_ENA_W1C             (0x118ULL)
+#define SSO_VHGRP_INT_THR                 (0x140ULL)
+#define SSO_VHGRP_INT_CNT                 (0x180ULL)
+#define SSO_VHGRP_XAQ_CNT                 (0x1B0ULL)
+#define SSO_VHGRP_AQ_CNT                  (0x1C0ULL)
+#define SSO_VHGRP_AQ_THR                  (0x1E0ULL)
+#define SSO_VHGRP_PF_MBOX(x)              (0x200ULL | ((x) << 3))
+
+/* BAR2 */
+#define SSO_VHGRP_OP_ADD_WORK0            (0x00ULL)
+#define SSO_VHGRP_OP_ADD_WORK1            (0x08ULL)
+
+
 #endif /* __SSOVF_EVDEV_H__ */
diff --git a/drivers/event/octeontx/ssovf_probe.c b/drivers/event/octeontx/ssovf_probe.c
index 9412878..713329c 100644
--- a/drivers/event/octeontx/ssovf_probe.c
+++ b/drivers/event/octeontx/ssovf_probe.c
@@ -30,3 +30,89 @@
  *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include <rte_atomic.h>
+#include <rte_common.h>
+#include <rte_eal.h>
+#include <rte_io.h>
+#include <rte_pci.h>
+
+#include "ssovf_evdev.h"
+
+struct ssovf_res {
+	uint16_t domain;
+	uint16_t vfid;
+	void *bar0;
+	void *bar2;
+};
+
+struct ssodev {
+	uint8_t total_ssovfs;
+	struct ssovf_res grp[SSO_MAX_VHGRP];
+};
+static struct ssodev sdev;
+
+/* SSOVF pcie device aka event queue probe */
+
+static int
+ssovf_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
+{
+	uint64_t val;
+	uint16_t vfid;
+	uint8_t *idreg;
+	struct ssovf_res *res;
+
+	RTE_SET_USED(pci_drv);
+
+	/* For secondary processes, the primary has done all the work */
+	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+		return 0;
+
+	if (pci_dev->mem_resource[0].addr == NULL ||
+			pci_dev->mem_resource[2].addr == NULL) {
+		ssovf_log_err("Empty bars %p %p",
+			pci_dev->mem_resource[0].addr,
+			pci_dev->mem_resource[2].addr);
+		return -ENODEV;
+	}
+	idreg = pci_dev->mem_resource[0].addr;
+	idreg += SSO_VHGRP_AQ_THR;
+	val = rte_read64(idreg);
+
+	/* Write back the default value of aq_thr */
+	rte_write64((1ULL << 33) - 1, idreg);
+	vfid = (val >> 16) & 0xffff;
+	if (vfid >= SSO_MAX_VHGRP) {
+		ssovf_log_err("Invalid vfid (%d/%d)", vfid, SSO_MAX_VHGRP);
+		return -EINVAL;
+	}
+
+	res = &sdev.grp[vfid];
+	res->vfid = vfid;
+	res->bar0 = pci_dev->mem_resource[0].addr;
+	res->bar2 = pci_dev->mem_resource[2].addr;
+	res->domain = val & 0xffff;
+
+	sdev.total_ssovfs++;
+	rte_wmb();
+	ssovf_log_dbg("Domain=%d group=%d total_ssovfs=%d", res->domain,
+			res->vfid, sdev.total_ssovfs);
+	return 0;
+}
+
+static const struct rte_pci_id pci_ssovf_map[] = {
+	{
+		RTE_PCI_DEVICE(PCI_VENDOR_ID_CAVIUM,
+				PCI_DEVICE_ID_OCTEONTX_SSOGRP_VF)
+	},
+	{
+		.vendor_id = 0,
+	},
+};
+
+static struct rte_pci_driver pci_ssovf = {
+	.id_table = pci_ssovf_map,
+	.drv_flags = RTE_PCI_DRV_NEED_MAPPING,
+	.probe = ssovf_probe,
+};
+
+RTE_PMD_REGISTER_PCI(octeontx_ssovf, pci_ssovf);
-- 
2.5.5

  parent reply	other threads:[~2017-03-03 17:29 UTC|newest]

Thread overview: 135+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-03 17:27 [dpdk-dev] Cavium OCTEONTX ssovf eventdev PMD Jerin Jacob
2017-03-03 17:27 ` [dpdk-dev] [PATCH 01/39] eventdev: update PMD dequeue timeout conversion callback Jerin Jacob
2017-03-15 17:27   ` Van Haaren, Harry
2017-03-16  8:30     ` Jerin Jacob
2017-03-23 10:11     ` Jerin Jacob
2017-03-03 17:27 ` [dpdk-dev] [PATCH 02/39] app/test: fix eventdev reconfigure test Jerin Jacob
2017-03-15 17:28   ` Van Haaren, Harry
2017-03-23 10:11     ` Jerin Jacob
2017-03-03 17:27 ` [dpdk-dev] [PATCH 03/39] mk: handle intra drivers dependencies for shared build Jerin Jacob
2017-03-03 17:27 ` [dpdk-dev] [PATCH 04/39] event/octeontx: add build and log infrastructure Jerin Jacob
2017-03-23 15:14   ` Eads, Gage
2017-03-03 17:27 ` Jerin Jacob [this message]
2017-03-23 15:39   ` [dpdk-dev] [PATCH 05/39] event/octeontx: probe ssovf pcie devices Eads, Gage
2017-03-03 17:27 ` [dpdk-dev] [PATCH 06/39] event/octeontx: probe ssowvf " Jerin Jacob
2017-03-23 15:44   ` Eads, Gage
2017-03-03 17:27 ` [dpdk-dev] [PATCH 07/39] event/octeontx: add vdev interface functions Jerin Jacob
2017-03-23 16:07   ` Eads, Gage
2017-03-03 17:27 ` [dpdk-dev] [PATCH 08/39] event/octeontx: add mailbox support Jerin Jacob
2017-03-23 16:46   ` Eads, Gage
2017-03-24  9:57     ` Jerin Jacob
2017-03-03 17:27 ` [dpdk-dev] [PATCH 09/39] event/octeontx: add octeontx eventdev driver Jerin Jacob
2017-03-23 17:07   ` Eads, Gage
2017-03-03 17:27 ` [dpdk-dev] [PATCH 10/39] event/octeontx: add device capabilities function Jerin Jacob
2017-03-23 17:08   ` Eads, Gage
2017-03-03 17:27 ` [dpdk-dev] [PATCH 11/39] event/octeontx: add configure function Jerin Jacob
2017-03-23 18:09   ` Eads, Gage
2017-03-03 17:27 ` [dpdk-dev] [PATCH 12/39] event/octeontx: add support for event queues Jerin Jacob
2017-03-23 18:10   ` Eads, Gage
2017-03-03 17:27 ` [dpdk-dev] [PATCH 13/39] event/octeontx: add support for event ports Jerin Jacob
2017-03-23 18:14   ` Eads, Gage
2017-03-03 17:27 ` [dpdk-dev] [PATCH 14/39] event/octeontx: add support for linking queues to ports Jerin Jacob
2017-03-23 18:16   ` Eads, Gage
2017-03-03 17:27 ` [dpdk-dev] [PATCH 15/39] event/octeontx: add support dequeue timeout tick conversion Jerin Jacob
2017-03-23 18:17   ` Eads, Gage
2017-03-03 17:27 ` [dpdk-dev] [PATCH 16/39] event/octeontx: add dump function for easier debugging Jerin Jacob
2017-03-23 18:20   ` Eads, Gage
2017-03-03 17:27 ` [dpdk-dev] [PATCH 17/39] event/octeontx: add SSO HW device operations Jerin Jacob
2017-03-22 15:29   ` Eads, Gage
2017-03-23 18:24     ` Eads, Gage
2017-03-03 17:28 ` [dpdk-dev] [PATCH 18/39] event/octeontx: add support worker enqueue function Jerin Jacob
2017-03-23 18:27   ` Eads, Gage
2017-03-03 17:28 ` [dpdk-dev] [PATCH 19/39] event/octeontx: add support worker dequeue function Jerin Jacob
2017-03-20 21:11   ` Eads, Gage
2017-03-21  3:21     ` Jerin Jacob
2017-03-23 18:51   ` Eads, Gage
2017-03-24 11:16     ` Jerin Jacob
2017-03-03 17:28 ` [dpdk-dev] [PATCH 20/39] event/octeontx: add start function Jerin Jacob
2017-03-23 18:59   ` Eads, Gage
2017-03-03 17:28 ` [dpdk-dev] [PATCH 21/39] event/octeontx: add stop and close function Jerin Jacob
2017-03-23 19:02   ` Eads, Gage
2017-03-03 17:28 ` [dpdk-dev] [PATCH 22/39] app/test: octeontx eventdev unit test infrastructure Jerin Jacob
2017-03-23 11:55   ` Van Haaren, Harry
2017-03-24 13:40     ` Jerin Jacob
2017-03-24 13:47       ` Van Haaren, Harry
2017-03-03 17:28 ` [dpdk-dev] [PATCH 23/39] app/test: octeontx unit test case setup and teardown Jerin Jacob
2017-03-23 11:56   ` Van Haaren, Harry
2017-03-03 17:28 ` [dpdk-dev] [PATCH 24/39] app/test: octeontx unit test case helper functions Jerin Jacob
2017-03-23 12:00   ` Van Haaren, Harry
2017-03-03 17:28 ` [dpdk-dev] [PATCH 25/39] app/test: octeontx simple event enqueue and dequeue test Jerin Jacob
2017-03-23 12:01   ` Van Haaren, Harry
2017-03-03 17:28 ` [dpdk-dev] [PATCH 26/39] app/test: octeontx multi queue " Jerin Jacob
2017-03-23 12:02   ` Van Haaren, Harry
2017-03-03 17:28 ` [dpdk-dev] [PATCH 27/39] app/test: octeontx eventdev priority test Jerin Jacob
2017-03-23 12:03   ` Van Haaren, Harry
2017-03-03 17:28 ` [dpdk-dev] [PATCH 28/39] app/test: add infrastructure for multicore octeontx tests Jerin Jacob
2017-03-23 12:03   ` Van Haaren, Harry
2017-03-03 17:28 ` [dpdk-dev] [PATCH 29/39] app/test: octeontx multi queue and multi core/port tests Jerin Jacob
2017-03-23 12:04   ` Van Haaren, Harry
2017-03-03 17:28 ` [dpdk-dev] [PATCH 30/39] app/test: octeontx single link establishment test Jerin Jacob
2017-03-23 12:05   ` Van Haaren, Harry
2017-03-03 17:28 ` [dpdk-dev] [PATCH 31/39] app/test: octeontx multi " Jerin Jacob
2017-03-23 12:06   ` Van Haaren, Harry
2017-03-03 17:28 ` [dpdk-dev] [PATCH 32/39] app/test: octeontx flow based two stage sched type test Jerin Jacob
2017-03-23 12:07   ` Van Haaren, Harry
2017-03-03 17:28 ` [dpdk-dev] [PATCH 33/39] app/test: octeontx queue " Jerin Jacob
2017-03-23 12:08   ` Van Haaren, Harry
2017-03-03 17:28 ` [dpdk-dev] [PATCH 34/39] app/test: octeontx flow based maximum stage pipeline Jerin Jacob
2017-03-23 12:08   ` Van Haaren, Harry
2017-03-03 17:28 ` [dpdk-dev] [PATCH 35/39] app/test: octeontx queue " Jerin Jacob
2017-03-23 12:09   ` Van Haaren, Harry
2017-03-03 17:28 ` [dpdk-dev] [PATCH 36/39] app/test: octeontx queue and flow based max " Jerin Jacob
2017-03-23 12:09   ` Van Haaren, Harry
2017-03-03 17:28 ` [dpdk-dev] [PATCH 37/39] app/test: octeontx producer-consumer based order test Jerin Jacob
2017-03-23 12:10   ` Van Haaren, Harry
2017-03-03 17:28 ` [dpdk-dev] [PATCH 38/39] app/test: add remaining tests based on existing helpers Jerin Jacob
2017-03-23 12:11   ` Van Haaren, Harry
2017-03-03 17:28 ` [dpdk-dev] [PATCH 39/39] doc: add OCTEONTX ssovf details Jerin Jacob
2017-03-20 20:20   ` Eads, Gage
2017-03-20 21:38   ` Eads, Gage
2017-03-21  3:18     ` Jerin Jacob
2017-03-23 12:47   ` Van Haaren, Harry
2017-03-31 19:34 ` [dpdk-dev] [PATCH v2 00/38] Cavium OCTEONTX ssovf eventdev PMD Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 01/38] event/octeontx: add build and log infrastructure Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 02/38] event/octeontx: probe ssovf pcie devices Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 03/38] event/octeontx: probe ssowvf " Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 04/38] event/octeontx: add vdev interface functions Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 05/38] event/octeontx: add mailbox support Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 06/38] event/octeontx: add octeontx eventdev driver Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 07/38] event/octeontx: add device capabilities function Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 08/38] event/octeontx: add configure function Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 09/38] event/octeontx: add support for event queues Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 10/38] event/octeontx: add support for event ports Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 11/38] event/octeontx: add support for linking queues to ports Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 12/38] event/octeontx: add support dequeue timeout tick conversion Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 13/38] event/octeontx: add dump function for easier debugging Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 14/38] event/octeontx: add SSO HW device operations Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 15/38] event/octeontx: add support worker enqueue function Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 16/38] event/octeontx: add support worker dequeue function Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 17/38] event/octeontx: add start function Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 18/38] event/octeontx: add stop and close function Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 19/38] test/test: octeontx eventdev unit test infrastructure Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 20/38] test/test: octeontx unit test case setup and teardown Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 21/38] test/test: octeontx unit test case helper functions Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 22/38] test/test: octeontx simple event enqueue and dequeue test Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 23/38] test/test: octeontx multi queue " Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 24/38] test/test: octeontx eventdev priority test Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 25/38] test/test: add infrastructure for multicore octeontx tests Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 26/38] test/test: octeontx multi queue and multi core/port tests Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 27/38] test/test: octeontx single link establishment test Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 28/38] test/test: octeontx multi " Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 29/38] test/test: octeontx flow based two stage sched type test Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 30/38] test/test: octeontx queue " Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 31/38] test/test: octeontx flow based maximum stage pipeline Jerin Jacob
2017-03-31 19:34   ` [dpdk-dev] [PATCH v2 32/38] test/test: octeontx queue " Jerin Jacob
2017-03-31 19:35   ` [dpdk-dev] [PATCH v2 33/38] test/test: octeontx queue and flow based max " Jerin Jacob
2017-03-31 19:35   ` [dpdk-dev] [PATCH v2 34/38] test/test: octeontx producer-consumer based order test Jerin Jacob
2017-03-31 19:35   ` [dpdk-dev] [PATCH v2 35/38] test/test: add remaining tests based on existing helpers Jerin Jacob
2017-03-31 19:35   ` [dpdk-dev] [PATCH v2 36/38] doc: add OCTEONTX ssovf details Jerin Jacob
2017-04-02 12:29     ` Mcnamara, John
2017-04-03  4:49       ` Jerin Jacob
2017-04-02 15:20     ` Mcnamara, John
2017-03-31 19:35   ` [dpdk-dev] [PATCH v2 37/38] maintainers: claim OCTEONTX eventdev PMD maintainership Jerin Jacob
2017-03-31 19:35   ` [dpdk-dev] [PATCH v2 38/38] doc: add Cavium OCTEONTX eventdev PMD to 17.05 release notes Jerin Jacob
2017-04-02 12:18     ` Mcnamara, John
2017-04-03 11:29   ` [dpdk-dev] [PATCH v2 00/38] Cavium OCTEONTX ssovf eventdev PMD Jerin Jacob

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1488562101-6658-6-git-send-email-jerin.jacob@caviumnetworks.com \
    --to=jerin.jacob@caviumnetworks.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=gage.eads@intel.com \
    --cc=harry.van.haaren@intel.com \
    --cc=hemant.agrawal@nxp.com \
    --cc=nipun.gupta@nxp.com \
    --cc=santosh.shukla@caviumnetworks.com \
    --cc=thomas.monjalon@6wind.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).