DPDK patches and discussions
 help / color / mirror / Atom feed
From: Jan Viktorin <viktorin@rehivetech.com>
To: dev@dpdk.org
Cc: Jan Viktorin <viktorin@rehivetech.com>
Subject: [dpdk-dev] [RFC 4/7] eal/linuxapp: support SoC infra in linuxapp
Date: Fri,  1 Jan 2016 22:05:23 +0100	[thread overview]
Message-ID: <1451682326-5834-5-git-send-email-viktorin@rehivetech.com> (raw)
In-Reply-To: <1451682326-5834-1-git-send-email-viktorin@rehivetech.com>

Provide Linux-specific discovery routines. The discovery reads the
/sys/bus/platform/devices/*/uevent file for each device. If the uevent
file contains OF_FULLNAME entry (path in the Device Tree) and a list of
OF_COMPATIBLE_# entries, it is considered as a SoC device and inserted
into the soc_device_list.

We do not care about the mem_resources at the moment. We need a proper
Linux Kernel driver to support this. Gathering of the resource information
could be done by parsing reg properties in the Device Tree.

There is a possible pitfall here, if there is a device depending on another
device (eg. an EMAC with a separate DMA engine), we cannot treat it as a
single device as the relation between whose might not be described in a
standardized way. So the drivers of the particular devices must take care of
this themselfs.

Signed-off-by: Jan Viktorin <viktorin@rehivetech.com>
---
 lib/librte_eal/linuxapp/eal/Makefile  |   2 +
 lib/librte_eal/linuxapp/eal/eal_soc.c | 394 ++++++++++++++++++++++++++++++++++
 2 files changed, 396 insertions(+)
 create mode 100644 lib/librte_eal/linuxapp/eal/eal_soc.c

diff --git a/lib/librte_eal/linuxapp/eal/Makefile b/lib/librte_eal/linuxapp/eal/Makefile
index f2ed696..11e2dc8 100644
--- a/lib/librte_eal/linuxapp/eal/Makefile
+++ b/lib/librte_eal/linuxapp/eal/Makefile
@@ -60,6 +60,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_pci.c
 SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_pci_uio.c
 SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_pci_vfio.c
 SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_pci_vfio_mp_sync.c
+SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_soc.c
 SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_debug.c
 SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_lcore.c
 SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_timer.c
@@ -105,6 +106,7 @@ CFLAGS_eal_hugepage_info.o := -D_GNU_SOURCE
 CFLAGS_eal_pci.o := -D_GNU_SOURCE
 CFLAGS_eal_pci_uio.o := -D_GNU_SOURCE
 CFLAGS_eal_pci_vfio.o := -D_GNU_SOURCE
+CFLAGS_eal_soc.o := -D_GNU_SOURCE
 CFLAGS_eal_common_whitelist.o := -D_GNU_SOURCE
 CFLAGS_eal_common_options.o := -D_GNU_SOURCE
 CFLAGS_eal_common_thread.o := -D_GNU_SOURCE
diff --git a/lib/librte_eal/linuxapp/eal/eal_soc.c b/lib/librte_eal/linuxapp/eal/eal_soc.c
new file mode 100644
index 0000000..be0e44d
--- /dev/null
+++ b/lib/librte_eal/linuxapp/eal/eal_soc.c
@@ -0,0 +1,394 @@
+/*-
+ *   BSD LICENSE
+ *
+ *   Copyright(c) 2016 RehiveTech. All rights reserved.
+ *   All rights reserved.
+ *
+ *   Redistribution and use in source and binary forms, with or without
+ *   modification, are permitted provided that the following conditions
+ *   are met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in
+ *       the documentation and/or other materials provided with the
+ *       distribution.
+ *     * Neither the name of Intel Corporation nor the names of its
+ *       contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <string.h>
+#include <dirent.h>
+#include <sys/stat.h>
+
+#include <rte_log.h>
+#include <rte_pci.h>
+#include <rte_eal_memconfig.h>
+#include <rte_malloc.h>
+#include <rte_devargs.h>
+#include <rte_memcpy.h>
+
+#include "eal_filesystem.h"
+#include "eal_private.h"
+#include "eal_pci_init.h"
+
+int
+soc_map_device(struct rte_soc_device *dev)
+{
+	int rc = -1;
+
+	switch (dev->kdrv) {
+	case RTE_SOC_KDRV_NONE:
+		rc = 0;
+		break;
+	default:
+		RTE_LOG(DEBUG, EAL,
+			"  Not managed by a supported kernel driver, skipped\n");
+		rc = 1;
+		break;
+	}
+
+	return rc;
+}
+
+void
+soc_unmap_device(struct rte_soc_device *dev)
+{
+	switch (dev->kdrv) {
+	case RTE_SOC_KDRV_NONE:
+		break;
+	default:
+		RTE_LOG(DEBUG, EAL,
+			"  Not managed by a supported kernel driver, skipped\n");
+		break;
+	}
+}
+
+static char *
+linecpy(char *dst, const char *line, size_t max)
+{
+	size_t len = 0;
+
+	while (line[len] && line[len] != '\n')
+		len += 1;
+
+	return (char *) memcpy(dst, line, len > max? max : len);
+}
+
+static char *
+linedup(const char *line)
+{
+	size_t len = 0;
+	char *s;
+
+	while (line[len] && line[len] != '\n')
+		len += 1;
+
+	s = malloc(len + 1);
+	if (s == NULL)
+		return NULL;
+
+	memcpy(s, line, len);
+	s[len] = '\0';
+	return s;
+}
+
+static const char *
+uevent_find_entry(const char *start, const char *end,
+		const char *prefix, const char *context)
+{
+	const size_t len = strlen(prefix);
+	const char *p = start;
+
+	while (strncmp(prefix, p, len)) {
+		while (p < end && *p != '\n') {
+			p += 1;
+		}
+
+		if (p >= end) {
+			RTE_LOG(WARNING, EAL,
+				"%s(): missing uevent entry %s (%s)\n",
+				__func__, prefix, context);
+			return NULL;
+		}
+		else {
+			p += 1; /* skip end-of-line */
+		}
+	}
+
+	if (p + len < end)
+		return p + len;
+	else {
+		RTE_LOG(WARNING, EAL,
+			"%s(): missing value for uevent entry %s (%s)\n",
+			__func__, prefix, context);
+		return NULL;
+	}
+}
+
+static int
+soc_device_from_uevent(struct rte_soc_device *dev, const char *uevent)
+{
+	FILE *f;
+	struct stat st;
+	char *buf;
+	char *end;
+	char *err;
+	const char *entry;
+	unsigned long i;
+	unsigned long count;
+
+	if ((f = fopen(uevent, "r")) == NULL) {
+		RTE_LOG(ERR, EAL, "%s(): cannot open sysfs file uevent\n",
+			__func__);
+		return -1;
+	}
+
+	if (fstat(fileno(f), &st) < 0) {
+		RTE_LOG(ERR, EAL, "%s(): cannot stat sysfs file uevent (%s)\n",
+			__func__, strerror(errno));
+		goto fail_fclose;
+	}
+
+	if (st.st_size <= 0) {
+		RTE_LOG(ERR, EAL, "%s(): sysfs file uevent seems to be empty\n",
+			__func__);
+		goto fail_fclose_skip;
+	}
+
+	buf = malloc(st.st_size + 1);
+	if (buf == NULL) {
+		RTE_LOG(ERR, EAL, "%s(): failed to alloc memory\n", __func__);
+		goto fail_fclose;
+	}
+
+	if (fread(buf, 1, st.st_size, f) == 0) {
+		RTE_LOG(ERR, EAL, "%s(): cannot read sysfs file uevent\n",
+			__func__);
+		goto fail_free_buf;
+	}
+	buf[st.st_size] = '\0';
+	end = buf + st.st_size;
+
+	entry = uevent_find_entry(buf, end, "OF_FULLNAME=", uevent);
+	if (entry == NULL)
+		goto fail_free_buf_skip;
+
+	linecpy((char *) dev->addr.devtree_path, entry,
+		sizeof(dev->addr.devtree_path));
+
+	RTE_LOG(DEBUG, EAL, "%s(): OF_FULLNAME=%s\n", __func__,
+			dev->addr.devtree_path);
+
+	entry = uevent_find_entry(buf, end, "OF_COMPATIBLE_N=", uevent);
+	if (entry == NULL)
+		goto fail_free_buf_skip; /* reported from uevent_find_entry */
+
+	count = strtoul(entry, &err, 0);
+	if (err == NULL) {
+		RTE_LOG(ERR, EAL, "%s(): failed to parse OF_COMPATIBLE_N\n",
+			__func__);
+		goto fail_free_buf;
+	}
+
+	RTE_LOG(DEBUG, EAL, "%s(): OF_COMPATIBLE_N=%lu\n", __func__, count);
+
+	dev->id.compatible = calloc(count + 1, sizeof(*dev->id.compatible));
+	if (dev->id.compatible == NULL) {
+		RTE_LOG(ERR, EAL, "%s(): failed to alloc memory\n",
+			__func__);
+		goto fail_free_buf;
+	}
+
+	if (count > 9999) /* FIXME: better way? */
+		rte_exit(EXIT_FAILURE, "Strange count of OF_COMPATIBLE entries"
+				"in sysfs uevent\n");
+
+	for (i = 0; i < count; ++i) {
+		char prefix[strlen("OF_COMPATIBLE_NNNN=")];
+		snprintf(prefix, sizeof(prefix), "OF_COMPATIBLE_%lu=", i);
+
+		entry = uevent_find_entry(buf, end, prefix, uevent);
+		if (entry == NULL) {
+			while (i-- > 0)
+				free(dev->id.compatible[i]);
+			goto fail_id_compatible;
+		}
+
+		dev->id.compatible[i] = linedup(entry);
+		RTE_LOG(DEBUG, EAL, "%s(): %s%s\n", __func__, prefix,
+				dev->id.compatible[i]);
+		if (dev->id.compatible[i] == NULL) {
+			RTE_LOG(ERR, EAL, "%s(): failed to alloc memory\n",
+				__func__);
+
+			while (i-- > 0)
+				free(dev->id.compatible[i]);
+			goto fail_id_compatible;
+		}
+	}
+
+	dev->id.compatible[count] = NULL;
+	return 0;
+
+fail_id_compatible:
+	free(dev->id.compatible);
+fail_free_buf:
+	free(buf);
+fail_fclose:
+	fclose(f);
+	return -1;
+fail_free_buf_skip:
+	free(buf);
+fail_fclose_skip:
+	fclose(f);
+	return 1;
+}
+
+static void
+soc_device_uevent_free(struct rte_soc_device *dev)
+{
+	if (!dev)
+		return;
+
+	if (dev->id.compatible) {
+		int i;
+
+		for (i = 0; dev->id.compatible[i]; ++i)
+			free(dev->id.compatible[i]);
+
+		free(dev->id.compatible);
+	}
+}
+
+static void
+soc_device_free(struct rte_soc_device *dev)
+{
+	soc_device_uevent_free(dev);
+	free(dev);
+}
+
+static int
+soc_scan_one(const char *dirname)
+{
+	char filename[PATH_MAX];
+	struct rte_soc_device *dev;
+	unsigned long tmp;
+	int rc;
+
+	dev = calloc(1, sizeof(*dev));
+	if (dev == NULL)
+		return -1;
+
+	snprintf(filename, sizeof(filename), "%s/numa_node", dirname);
+	if (access(filename, R_OK) != 0) {
+		/* no NUMA support */
+		dev->numa_node = 0;
+	} else {
+		if (eal_parse_sysfs_value(filename, &tmp) < 0) {
+			free(dev);
+			return -1;
+		}
+		dev->numa_node = tmp;
+	}
+
+	snprintf(filename, sizeof(filename), "%s/uevent", dirname);
+	rc = soc_device_from_uevent(dev, filename);
+	if (rc) {
+		free(dev);
+		return rc;
+	}
+
+	dev->driver = NULL;
+	dev->kdrv = RTE_SOC_KDRV_NONE;
+
+	if (TAILQ_EMPTY(&soc_device_list)) {
+		TAILQ_INSERT_TAIL(&soc_device_list, dev, next);
+	} else {
+		struct rte_soc_device *dev2;
+		int rc;
+
+		TAILQ_FOREACH(dev2, &soc_device_list, next) {
+			rc = rte_eal_compare_soc_addr(&dev->addr, &dev2->addr);
+			if (rc > 0)
+				continue;
+
+			if (rc < 0) {
+				TAILQ_INSERT_BEFORE(dev2, dev, next);
+			} else { /* already exists */
+				dev2->kdrv = dev->kdrv;
+				memmove(dev2->mem_resource, dev->mem_resource,
+						sizeof(dev->mem_resource));
+				soc_device_free(dev);
+			}
+			return 0;
+		}
+		TAILQ_INSERT_TAIL(&soc_device_list, dev, next);
+	}
+
+	return 0;
+}
+
+int
+rte_eal_soc_scan(void)
+{
+	struct dirent *e;
+	DIR *dir;
+	char dirname[PATH_MAX];
+
+	dir = opendir(SYSFS_SOC_DEVICES);
+	if (dir == NULL) {
+		RTE_LOG(ERR, EAL, "%s(): opendir failed: %s\n",
+			__func__, strerror(errno));
+		return -1;
+	}
+
+	while ((e = readdir(dir)) != NULL) {
+		if (e->d_name[0] == '.')
+			continue;
+
+		snprintf(dirname, sizeof(dirname), "%s/%s", SYSFS_SOC_DEVICES,
+				e->d_name);
+		if (soc_scan_one(dirname) < 0)
+			goto error;
+	}
+
+	closedir(dir);
+	return 0;
+
+error:
+	closedir(dir);
+	return -1;
+}
+
+int
+rte_eal_soc_init(void)
+{
+	TAILQ_INIT(&soc_driver_list);
+	TAILQ_INIT(&soc_device_list);
+
+	if (internal_config.no_soc)
+		return 0;
+
+	if (rte_eal_soc_scan() < 0) {
+		RTE_LOG(ERR, EAL, "%s(): Failed to scan for SoC devices\n",
+			__func__);
+		return -1;
+	}
+
+	return 0;
+}
-- 
2.6.3

  parent reply	other threads:[~2016-01-01 21:06 UTC|newest]

Thread overview: 230+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-01 21:05 [dpdk-dev] [RFC 0/7] Support non-PCI devices Jan Viktorin
2016-01-01 21:05 ` [dpdk-dev] [RFC 1/7] eal/common: define rte_soc_* related common interface Jan Viktorin
2016-01-02 18:01   ` Stephen Hemminger
2016-01-02 18:35     ` Wiles, Keith
2016-01-02 18:52       ` Jan Viktorin
2016-01-02 19:13         ` Wiles, Keith
2016-01-02 19:14         ` Stephen Hemminger
2016-01-02 19:22           ` Wiles, Keith
2016-01-02 18:45     ` Jan Viktorin
2016-01-03 17:12       ` Jan Viktorin
2016-01-04 15:21         ` Wiles, Keith
2016-01-01 21:05 ` [dpdk-dev] [RFC 2/7] eal: introduce --no-soc option Jan Viktorin
2016-01-01 21:05 ` [dpdk-dev] [RFC 3/7] eal: add common part of the SoC infra Jan Viktorin
2016-01-01 21:05 ` Jan Viktorin [this message]
2016-01-01 21:05 ` [dpdk-dev] [RFC 5/7] eal: init SoC infra on rte_eal_init Jan Viktorin
2016-01-01 21:05 ` [dpdk-dev] [RFC 6/7] eal/soc: make SoC infra testable on any platform Jan Viktorin
2016-01-01 21:05 ` [dpdk-dev] [RFC 7/7] app/test: add SoC infra probe/detach test Jan Viktorin
2016-05-06 13:47 ` [dpdk-dev] [PATCH v1 00/28] Support non-PCI devices Jan Viktorin
2016-05-06 13:47 ` [dpdk-dev] [PATCH v1 01/28] eal: make enum rte_kernel_driver non-PCI specific Jan Viktorin
2016-05-06 13:47 ` [dpdk-dev] [PATCH v1 02/28] eal: extract function eal_parse_sysfs_valuef Jan Viktorin
2016-05-06 13:47 ` [dpdk-dev] [PATCH v1 03/28] eal/linux: extract function rte_eal_unbind_kernel_driver Jan Viktorin
2016-05-13  1:22   ` Jianbo Liu
2016-05-17 18:14     ` Jan Viktorin
2016-05-18 13:45       ` Jianbo Liu
2016-05-06 13:47 ` [dpdk-dev] [PATCH v1 04/28] eal/linux: extract function rte_eal_get_kernel_driver_by_path Jan Viktorin
2016-05-06 13:47 ` [dpdk-dev] [PATCH v1 05/28] eal: remove pci_ prefix from pci_(un)map_resource Jan Viktorin
2016-05-06 13:47 ` [dpdk-dev] [PATCH v1 06/28] eal/soc: introduce very essential SoC infra definitions Jan Viktorin
2016-05-06 13:47 ` [dpdk-dev] [PATCH v1 07/28] eal/soc: add rte_eal_soc_register/unregister logic Jan Viktorin
2016-06-13 14:19   ` Shreyansh Jain
2016-06-13 14:25     ` Jan Viktorin
2016-06-15  5:57     ` Shreyansh Jain
2016-06-15  9:50       ` Jan Viktorin
2016-05-06 13:47 ` [dpdk-dev] [PATCH v1 08/28] eal/soc: implement SoC device discovery Jan Viktorin
2016-05-06 13:47 ` [dpdk-dev] [PATCH v1 09/28] eal: introduce --no-soc option Jan Viktorin
2016-05-13  3:28   ` Jianbo Liu
2016-05-17 18:10     ` Jan Viktorin
2016-05-06 13:47 ` [dpdk-dev] [PATCH v1 10/28] eal/soc: init SoC infra from EAL Jan Viktorin
2016-05-06 13:47 ` [dpdk-dev] [PATCH v1 11/28] eal/soc: implement probing of drivers Jan Viktorin
2016-05-06 13:47 ` [dpdk-dev] [PATCH v1 12/28] eal/soc: extend and utilize devargs Jan Viktorin
2016-05-06 13:47 ` [dpdk-dev] [PATCH v1 13/28] eal/soc: update device on probe when already exists Jan Viktorin
2016-05-06 13:47 ` [dpdk-dev] [PATCH v1 14/28] eal/soc: detect assigned kernel driver Jan Viktorin
2016-05-06 13:47 ` [dpdk-dev] [PATCH v1 15/28] eal/soc: map/unmap resources Jan Viktorin
2016-05-06 13:47 ` [dpdk-dev] [PATCH v1 16/28] eal/soc: add intr_handle Jan Viktorin
2016-05-06 13:47 ` [dpdk-dev] [PATCH v1 17/28] eal/soc: hack (const char *) compatible setting Jan Viktorin
2016-05-06 13:48 ` [dpdk-dev] [PATCH v1 18/28] eal/soc: detect numa_node of the rte_soc_device Jan Viktorin
2016-05-06 13:48 ` [dpdk-dev] [PATCH v1 19/28] eal/soc: add drv_flags Jan Viktorin
2016-06-13 14:21   ` Shreyansh Jain
2016-06-13 14:26     ` Jan Viktorin
2016-05-06 13:48 ` [dpdk-dev] [PATCH v1 20/28] eal/soc: map resources conditionally Jan Viktorin
2016-05-06 13:48 ` [dpdk-dev] [PATCH v1 21/28] eal/soc: unbind kernel driver on probe Jan Viktorin
2016-05-06 13:48 ` [dpdk-dev] [PATCH v1 22/28] eal/soc: detect DMA non-coherent devices Jan Viktorin
2016-05-06 13:48 ` [dpdk-dev] [PATCH v1 23/28] eal: define macro container_of Jan Viktorin
2016-05-06 13:48 ` [dpdk-dev] [PATCH v1 24/28] ether: utilize container_of for pci_drv Jan Viktorin
2016-05-06 13:48 ` [dpdk-dev] [PATCH v1 25/28] ether: verify we copy info from a PCI device Jan Viktorin
2016-05-06 13:48 ` [dpdk-dev] [PATCH v1 26/28] ether: extract function eth_dev_get_intr_handle Jan Viktorin
2016-05-06 13:48 ` [dpdk-dev] [PATCH v1 27/28] ether: extract function eth_dev_get_driver_name Jan Viktorin
2016-05-06 13:48 ` [dpdk-dev] [PATCH v1 28/28] ether: support SoC device/driver Jan Viktorin
2016-06-29  9:42   ` Shreyansh jain
2016-07-04 13:04     ` Jan Viktorin
2016-07-04 14:27       ` Shreyansh jain
2016-07-04 14:36         ` Jan Viktorin
2016-07-05  4:42           ` Shreyansh jain
2016-07-05  5:16             ` Jan Viktorin
2016-07-07 10:29               ` Shreyansh jain
2016-07-12  8:45           ` Shreyansh jain
2016-07-12 10:41             ` Jan Viktorin
2016-08-31 11:00 ` [dpdk-dev] [PATCH v2 00/14] Introduce SoC device/driver framework for EAL Shreyansh Jain
2016-08-31 11:00   ` [dpdk-dev] [PATCH v2 01/14] eal/soc: introduce very essential SoC infra definitions Shreyansh Jain
2016-08-31 11:00   ` [dpdk-dev] [PATCH v2 02/14] eal/soc: add rte_eal_soc_register/unregister logic Shreyansh Jain
2016-08-31 11:00   ` [dpdk-dev] [PATCH v2 03/14] eal/soc: Implement SoC device list and dump Shreyansh Jain
2016-08-31 11:00   ` [dpdk-dev] [PATCH v2 04/14] eal: introduce --no-soc option Shreyansh Jain
2016-08-31 11:00   ` [dpdk-dev] [PATCH v2 05/14] eal/soc: init SoC infra from EAL Shreyansh Jain
2016-08-31 11:00   ` [dpdk-dev] [PATCH v2 06/14] eal/soc: implement probing of drivers Shreyansh Jain
2016-08-31 11:00   ` [dpdk-dev] [PATCH v2 07/14] eal/soc: extend and utilize devargs Shreyansh Jain
2016-08-31 11:00   ` [dpdk-dev] [PATCH v2 08/14] eal/soc: add drv_flags Shreyansh Jain
2016-08-31 11:00   ` [dpdk-dev] [PATCH v2 09/14] eal/soc: add intr_handle Shreyansh Jain
2016-08-31 11:00   ` [dpdk-dev] [PATCH v2 10/14] ether: utilize container_of for pci_drv Shreyansh Jain
2016-08-31 11:00   ` [dpdk-dev] [PATCH v2 11/14] ether: verify we copy info from a PCI device Shreyansh Jain
2016-08-31 11:00   ` [dpdk-dev] [PATCH v2 12/14] ether: extract function eth_dev_get_intr_handle Shreyansh Jain
2016-08-31 11:00   ` [dpdk-dev] [PATCH v2 13/14] ether: extract function eth_dev_get_driver_name Shreyansh Jain
2016-08-31 11:00   ` [dpdk-dev] [PATCH v2 14/14] ether: Support rte_soc_driver/device for etherdev Shreyansh Jain
2016-09-09  8:43 ` [dpdk-dev] [PATCH v3 00/15] Introduce SoC device/driver framework for EAL Shreyansh Jain
2016-09-09  8:43   ` [dpdk-dev] [PATCH v3 01/15] eal/soc: introduce very essential SoC infra definitions Shreyansh Jain
2016-09-15 12:58     ` Hunt, David
2016-09-16  6:17       ` Shreyansh Jain
2016-09-09  8:43   ` [dpdk-dev] [PATCH v3 02/15] eal/soc: add rte_eal_soc_register/unregister logic Shreyansh Jain
2016-09-15 13:00     ` Hunt, David
2016-09-15 13:09       ` Jan Viktorin
2016-09-15 14:09         ` Thomas Monjalon
2016-09-16  7:32           ` Panu Matilainen
2016-09-09  8:43   ` [dpdk-dev] [PATCH v3 03/15] eal/soc: Implement SoC device list and dump Shreyansh Jain
2016-09-09  8:43   ` [dpdk-dev] [PATCH v3 04/15] eal: introduce --no-soc option Shreyansh Jain
2016-09-16 11:36     ` Jan Viktorin
2016-09-16 11:55       ` Shreyansh Jain
2016-09-09  8:43   ` [dpdk-dev] [PATCH v3 05/15] eal/soc: init SoC infra from EAL Shreyansh Jain
2016-09-09  8:43   ` [dpdk-dev] [PATCH v3 06/15] eal/soc: implement probing of drivers Shreyansh Jain
2016-09-16 12:27     ` Jan Viktorin
2016-09-19  6:47       ` Shreyansh Jain
2016-09-19 11:34         ` Jan Viktorin
2016-09-20  6:46           ` Shreyansh Jain
2016-09-09  8:43   ` [dpdk-dev] [PATCH v3 07/15] eal/soc: extend and utilize devargs Shreyansh Jain
2016-09-09  8:43   ` [dpdk-dev] [PATCH v3 08/15] eal/soc: add drv_flags Shreyansh Jain
2016-09-09  8:43   ` [dpdk-dev] [PATCH v3 09/15] eal/soc: add intr_handle Shreyansh Jain
2016-09-09  8:43   ` [dpdk-dev] [PATCH v3 10/15] ether: utilize container_of for pci_drv Shreyansh Jain
2016-09-09  8:43   ` [dpdk-dev] [PATCH v3 11/15] ether: verify we copy info from a PCI device Shreyansh Jain
2016-09-09  8:43   ` [dpdk-dev] [PATCH v3 12/15] ether: extract function eth_dev_get_intr_handle Shreyansh Jain
2016-09-15 13:02     ` Hunt, David
2016-09-15 14:05       ` Thomas Monjalon
2016-09-16  7:17         ` Panu Matilainen
2016-09-09  8:43   ` [dpdk-dev] [PATCH v3 13/15] ether: extract function eth_dev_get_driver_name Shreyansh Jain
2016-09-15 13:03     ` Hunt, David
2016-09-09  8:43   ` [dpdk-dev] [PATCH v3 14/15] ether: Support rte_soc_driver/device for etherdev Shreyansh Jain
2016-09-09  8:43   ` [dpdk-dev] [PATCH v3 15/15] eal/crypto: Support rte_soc_driver/device for cryptodev Shreyansh Jain
2016-09-15 12:56   ` [dpdk-dev] [PATCH v3 00/15] Introduce SoC device/driver framework for EAL Hunt, David
2016-09-16  6:14     ` Shreyansh Jain
2016-09-18  5:58   ` Jianbo Liu
2016-09-18  7:22     ` Jan Viktorin
2016-09-18  8:56       ` Jianbo Liu
2016-09-18  9:17         ` Jan Viktorin
2016-09-18  9:41           ` Hemant Agrawal
2016-09-18 10:04             ` Jan Viktorin
2016-09-19 12:33               ` Hemant Agrawal
2016-10-15 13:44   ` [dpdk-dev] [PATCH v4 00/17] " Shreyansh Jain
2016-10-15 13:44     ` [dpdk-dev] [PATCH v4 01/17] eal: define container macro Shreyansh Jain
2016-10-15 13:44     ` [dpdk-dev] [PATCH v4 02/17] eal/soc: introduce very essential SoC infra definitions Shreyansh Jain
2016-10-15 13:44     ` [dpdk-dev] [PATCH v4 03/17] eal/soc: add SoC PMD register/unregister logic Shreyansh Jain
2016-10-15 13:44     ` [dpdk-dev] [PATCH v4 04/17] eal/soc: implement SoC device list and dump Shreyansh Jain
2016-10-15 13:44     ` [dpdk-dev] [PATCH v4 05/17] eal: introduce command line enable SoC option Shreyansh Jain
2016-10-15 13:44     ` [dpdk-dev] [PATCH v4 06/17] eal/soc: init SoC infra from EAL Shreyansh Jain
2016-10-15 13:44     ` [dpdk-dev] [PATCH v4 07/17] eal/soc: implement probing of drivers Shreyansh Jain
2016-10-15 13:44     ` [dpdk-dev] [PATCH v4 08/17] eal/soc: extend and utilize devargs Shreyansh Jain
2016-10-15 13:45     ` [dpdk-dev] [PATCH v4 09/17] eal/soc: add drv_flags Shreyansh Jain
2016-10-15 13:45     ` [dpdk-dev] [PATCH v4 10/17] eal/soc: add intr_handle Shreyansh Jain
2016-10-15 13:45     ` [dpdk-dev] [PATCH v4 11/17] eal/soc: add default scan for Soc devices Shreyansh Jain
2016-10-16  0:56       ` Jan Viktorin
2016-10-16  7:12         ` Shreyansh Jain
2016-10-24 12:08           ` Shreyansh Jain
2016-10-24 16:11             ` Jan Viktorin
2016-10-15 13:45     ` [dpdk-dev] [PATCH v4 12/17] eal/soc: additional features for SoC Shreyansh Jain
2016-10-15 13:45     ` [dpdk-dev] [PATCH v4 13/17] ether: utilize container_of for pci_drv Shreyansh Jain
2016-10-15 13:45     ` [dpdk-dev] [PATCH v4 14/17] ether: verify we copy info from a PCI device Shreyansh Jain
2016-10-15 13:45     ` [dpdk-dev] [PATCH v4 15/17] ether: extract function eth_dev_get_intr_handle Shreyansh Jain
2016-10-15 13:45     ` [dpdk-dev] [PATCH v4 16/17] ether: introduce ethernet dev probe remove Shreyansh Jain
2016-10-15 13:45     ` [dpdk-dev] [PATCH v4 17/17] eal/crypto: Support rte_soc_driver/device for cryptodev Shreyansh Jain
2016-10-15 13:53     ` [dpdk-dev] [PATCH v4 00/17] Introduce SoC device/driver framework for EAL Shreyansh Jain
2016-10-24 11:59     ` [dpdk-dev] [PATCH v5 00/21] " Shreyansh Jain
2016-10-24 11:59       ` [dpdk-dev] [PATCH v5 01/21] eal: generalize PCI kernel driver enum to EAL Shreyansh Jain
2016-10-24 16:13         ` Jan Viktorin
2016-10-24 11:59       ` [dpdk-dev] [PATCH v5 02/21] eal: generalize PCI map/unmap resource " Shreyansh Jain
2016-10-24 11:59       ` [dpdk-dev] [PATCH v5 03/21] eal/linux: generalize PCI kernel unbinding driver " Shreyansh Jain
2016-10-24 11:59       ` [dpdk-dev] [PATCH v5 04/21] eal/linux: generalize PCI kernel driver extraction " Shreyansh Jain
2016-10-24 11:59       ` [dpdk-dev] [PATCH v5 05/21] eal: define container macro Shreyansh Jain
2016-10-24 11:59       ` [dpdk-dev] [PATCH v5 06/21] eal/soc: introduce very essential SoC infra definitions Shreyansh Jain
2016-10-24 16:21         ` Jan Viktorin
2016-10-25  5:36           ` Shreyansh Jain
2016-10-25 12:38             ` Shreyansh Jain
2016-10-24 11:59       ` [dpdk-dev] [PATCH v5 07/21] eal/soc: add SoC PMD register/unregister logic Shreyansh Jain
2016-10-24 11:59       ` [dpdk-dev] [PATCH v5 08/21] eal/soc: implement SoC device list and dump Shreyansh Jain
2016-10-24 11:59       ` [dpdk-dev] [PATCH v5 09/21] eal: introduce command line enable SoC option Shreyansh Jain
2016-10-24 11:59       ` [dpdk-dev] [PATCH v5 10/21] eal/soc: init SoC infra from EAL Shreyansh Jain
2016-10-24 11:59       ` [dpdk-dev] [PATCH v5 11/21] eal/soc: implement probing of drivers Shreyansh Jain
2016-10-24 11:59       ` [dpdk-dev] [PATCH v5 12/21] eal/soc: extend and utilize devargs Shreyansh Jain
2016-10-24 11:59       ` [dpdk-dev] [PATCH v5 13/21] eal/soc: add drv_flags Shreyansh Jain
2016-10-24 11:59       ` [dpdk-dev] [PATCH v5 14/21] eal/soc: add intr_handle Shreyansh Jain
2016-10-24 11:59       ` [dpdk-dev] [PATCH v5 15/21] eal/soc: add default scan for Soc devices Shreyansh Jain
2016-10-24 11:59       ` [dpdk-dev] [PATCH v5 16/21] eal/soc: additional features for SoC Shreyansh Jain
2016-10-24 11:59       ` [dpdk-dev] [PATCH v5 17/21] ether: utilize container_of for pci_drv Shreyansh Jain
2016-10-24 11:59       ` [dpdk-dev] [PATCH v5 18/21] ether: verify we copy info from a PCI device Shreyansh Jain
2016-10-24 11:59       ` [dpdk-dev] [PATCH v5 19/21] ether: extract function eth_dev_get_intr_handle Shreyansh Jain
2016-10-24 11:59       ` [dpdk-dev] [PATCH v5 20/21] ether: introduce ethernet dev probe remove Shreyansh Jain
2016-10-24 11:59       ` [dpdk-dev] [PATCH v5 21/21] eal/crypto: Support rte_soc_driver/device for cryptodev Shreyansh Jain
2016-10-27 15:17       ` [dpdk-dev] [PATCH v6 00/21] Introduce SoC device/driver framework for EAL Shreyansh Jain
2016-10-27 15:17         ` [dpdk-dev] [PATCH v6 01/21] eal: generalize PCI kernel driver enum to EAL Shreyansh Jain
2016-10-27 15:17         ` [dpdk-dev] [PATCH v6 02/21] eal: generalize PCI map/unmap resource " Shreyansh Jain
2016-10-27 15:17         ` [dpdk-dev] [PATCH v6 03/21] eal/linux: generalize PCI kernel unbinding driver " Shreyansh Jain
2016-10-27 15:17         ` [dpdk-dev] [PATCH v6 04/21] eal/linux: generalize PCI kernel driver extraction " Shreyansh Jain
2016-10-27 15:17         ` [dpdk-dev] [PATCH v6 05/21] eal: define container macro Shreyansh Jain
2016-10-27 15:17         ` [dpdk-dev] [PATCH v6 06/21] eal/soc: introduce very essential SoC infra definitions Shreyansh Jain
2016-10-27 15:17         ` [dpdk-dev] [PATCH v6 07/21] eal/soc: add SoC PMD register/unregister logic Shreyansh Jain
2016-10-27 15:17         ` [dpdk-dev] [PATCH v6 08/21] eal/soc: implement SoC device list and dump Shreyansh Jain
2016-10-27 15:17         ` [dpdk-dev] [PATCH v6 09/21] eal: introduce command line enable SoC option Shreyansh Jain
2016-10-27 15:17         ` [dpdk-dev] [PATCH v6 10/21] eal/soc: init SoC infra from EAL Shreyansh Jain
2016-10-27 15:17         ` [dpdk-dev] [PATCH v6 12/21] eal/soc: extend and utilize devargs Shreyansh Jain
2016-10-27 15:17         ` [dpdk-dev] [PATCH v6 13/21] eal/soc: add drv_flags Shreyansh Jain
2016-10-27 15:17         ` [dpdk-dev] [PATCH v6 14/21] eal/soc: add intr_handle Shreyansh Jain
2016-10-27 15:17         ` [dpdk-dev] [PATCH v6 15/21] eal/soc: add default scan for Soc devices Shreyansh Jain
2016-10-27 15:17         ` [dpdk-dev] [PATCH v6 16/21] eal/soc: additional features for SoC Shreyansh Jain
2016-10-27 15:17         ` [dpdk-dev] [PATCH v6 17/21] ether: utilize container_of for pci_drv Shreyansh Jain
2016-10-27 15:17         ` [dpdk-dev] [PATCH v6 18/21] ether: verify we copy info from a PCI device Shreyansh Jain
2016-10-27 15:17         ` [dpdk-dev] [PATCH v6 19/21] ether: extract function eth_dev_get_intr_handle Shreyansh Jain
2016-10-27 15:17         ` [dpdk-dev] [PATCH v6 20/21] ether: introduce ethernet dev probe remove Shreyansh Jain
2016-10-27 15:17         ` [dpdk-dev] [PATCH v6 21/21] eal/crypto: Support rte_soc_driver/device for cryptodev Shreyansh Jain
2016-10-28 12:26         ` [dpdk-dev] [PATCH v7 00/21] Introduce SoC device/driver framework for EAL Shreyansh Jain
2016-10-28 12:26           ` [dpdk-dev] [PATCH v7 01/21] eal: generalize PCI kernel driver enum to EAL Shreyansh Jain
2016-10-28 12:26           ` [dpdk-dev] [PATCH v7 02/21] eal: generalize PCI map/unmap resource " Shreyansh Jain
2016-10-28 12:26           ` [dpdk-dev] [PATCH v7 03/21] eal/linux: generalize PCI kernel unbinding driver " Shreyansh Jain
2016-11-10  2:24             ` Jianbo Liu
2016-11-10  5:46               ` Shreyansh Jain
2016-10-28 12:26           ` [dpdk-dev] [PATCH v7 04/21] eal/linux: generalize PCI kernel driver extraction " Shreyansh Jain
2016-10-28 12:26           ` [dpdk-dev] [PATCH v7 05/21] eal: define container macro Shreyansh Jain
2016-10-28 12:26           ` [dpdk-dev] [PATCH v7 06/21] eal/soc: introduce very essential SoC infra definitions Shreyansh Jain
2016-11-10  4:09             ` Jianbo Liu
2016-11-10  5:51               ` Shreyansh Jain
2016-10-28 12:26           ` [dpdk-dev] [PATCH v7 07/21] eal/soc: add SoC PMD register/unregister logic Shreyansh Jain
2016-10-28 12:26           ` [dpdk-dev] [PATCH v7 08/21] eal/soc: implement SoC device list and dump Shreyansh Jain
2016-11-10  3:06             ` Jianbo Liu
2016-11-10  5:56               ` Shreyansh Jain
2016-10-28 12:26           ` [dpdk-dev] [PATCH v7 09/21] eal: introduce command line enable SoC option Shreyansh Jain
2016-10-28 12:26           ` [dpdk-dev] [PATCH v7 10/21] eal/soc: init SoC infra from EAL Shreyansh Jain
2016-10-28 12:26           ` [dpdk-dev] [PATCH v7 11/21] eal/soc: implement probing of drivers Shreyansh Jain
2016-11-10  3:30             ` Jianbo Liu
2016-11-10  6:10               ` Shreyansh Jain
2016-11-10  7:41                 ` Jianbo Liu
2016-11-10  9:10                   ` Shreyansh Jain
2016-11-10  9:26                     ` Thomas Monjalon
2016-11-11  1:58                       ` Jianbo Liu
2016-11-11  6:04                       ` Shreyansh Jain
2016-10-28 12:26           ` [dpdk-dev] [PATCH v7 12/21] eal/soc: extend and utilize devargs Shreyansh Jain
2016-10-28 12:26           ` [dpdk-dev] [PATCH v7 13/21] eal/soc: add drv_flags Shreyansh Jain
2016-10-28 12:26           ` [dpdk-dev] [PATCH v7 14/21] eal/soc: add intr_handle Shreyansh Jain
2016-10-28 12:26           ` [dpdk-dev] [PATCH v7 15/21] eal/soc: add default scan for Soc devices Shreyansh Jain
2016-10-28 12:26           ` [dpdk-dev] [PATCH v7 16/21] eal/soc: additional features for SoC Shreyansh Jain
2016-10-28 12:26           ` [dpdk-dev] [PATCH v7 17/21] ether: utilize container_of for pci_drv Shreyansh Jain
2016-10-28 12:26           ` [dpdk-dev] [PATCH v7 18/21] ether: verify we copy info from a PCI device Shreyansh Jain
2016-10-28 12:26           ` [dpdk-dev] [PATCH v7 19/21] ether: extract function eth_dev_get_intr_handle Shreyansh Jain
2016-10-28 12:26           ` [dpdk-dev] [PATCH v7 20/21] ether: introduce ethernet dev probe remove Shreyansh Jain
2016-10-28 12:26           ` [dpdk-dev] [PATCH v7 21/21] eal/crypto: Support rte_soc_driver/device for cryptodev Shreyansh Jain
2016-10-28 12:35           ` [dpdk-dev] [PATCH v7 00/21] Introduce SoC device/driver framework for EAL Shreyansh Jain
2016-11-09 10:17           ` Thomas Monjalon
2016-11-09 13:36             ` Shreyansh Jain

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=1451682326-5834-5-git-send-email-viktorin@rehivetech.com \
    --to=viktorin@rehivetech.com \
    --cc=dev@dpdk.org \
    /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).