All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dave Jiang <dave.jiang@intel.com>
To: vkoul@kernel.org
Cc: Dan Willliams <dan.j.williams@intel.com>, dmaengine@vger.kernel.org
Subject: [PATCH v2 13/18] dmaengine: idxd: add type to driver in order to allow device matching
Date: Wed, 14 Jul 2021 16:21:35 -0700	[thread overview]
Message-ID: <162630489586.631529.5304503973943658875.stgit@djiang5-desk3.ch.intel.com> (raw)
In-Reply-To: <162630468448.631529.1963704964865951650.stgit@djiang5-desk3.ch.intel.com>

Add an array of support device types to the idxd_device_driver
definition in order to enable simple matching of device type to a
given driver. The deprecated / omnibus dsa_drv driver specifies
IDXD_DEV_NONE as its only role is to service legacy userspace (old
accel-config) directed bind requests and route them to them the proper
driver. It need not attach to a device when the bus is autoprobed. The
accel-config tooling is being updated to drop its dependency on this
deprecated bind scheme.

Reviewed-by: Dan Willliams <dan.j.williams@intel.com>
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
---
 drivers/dma/idxd/idxd.h  |    1 +
 drivers/dma/idxd/init.c  |    5 +++++
 drivers/dma/idxd/sysfs.c |   16 +++++++++++++++-
 3 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/drivers/dma/idxd/idxd.h b/drivers/dma/idxd/idxd.h
index d44ee136c223..822afd3a397c 100644
--- a/drivers/dma/idxd/idxd.h
+++ b/drivers/dma/idxd/idxd.h
@@ -51,6 +51,7 @@ enum idxd_type {
 
 struct idxd_device_driver {
 	const char *name;
+	enum idxd_dev_type *type;
 	int (*probe)(struct idxd_dev *idxd_dev);
 	void (*remove)(struct idxd_dev *idxd_dev);
 	struct device_driver drv;
diff --git a/drivers/dma/idxd/init.c b/drivers/dma/idxd/init.c
index ada75bb7e71f..d45ccf4862f2 100644
--- a/drivers/dma/idxd/init.c
+++ b/drivers/dma/idxd/init.c
@@ -869,6 +869,11 @@ int __idxd_driver_register(struct idxd_device_driver *idxd_drv, struct module *o
 {
 	struct device_driver *drv = &idxd_drv->drv;
 
+	if (!idxd_drv->type) {
+		pr_debug("driver type not set (%ps)\n", __builtin_return_address(0));
+		return -EINVAL;
+	}
+
 	drv->name = idxd_drv->name;
 	drv->bus = &dsa_bus_type;
 	drv->owner = owner;
diff --git a/drivers/dma/idxd/sysfs.c b/drivers/dma/idxd/sysfs.c
index 1a6c9cf16a40..500d6c64a1b0 100644
--- a/drivers/dma/idxd/sysfs.c
+++ b/drivers/dma/idxd/sysfs.c
@@ -19,9 +19,18 @@ static char *idxd_wq_type_names[] = {
 static int idxd_config_bus_match(struct device *dev,
 				 struct device_driver *drv)
 {
+	struct idxd_device_driver *idxd_drv =
+		container_of(drv, struct idxd_device_driver, drv);
 	struct idxd_dev *idxd_dev = confdev_to_idxd_dev(dev);
+	int i = 0;
+
+	while (idxd_drv->type[i] != IDXD_DEV_NONE) {
+		if (idxd_dev->type == idxd_drv->type[i])
+			return 1;
+		i++;
+	}
 
-	return (is_idxd_dev(idxd_dev) || is_idxd_wq_dev(idxd_dev));
+	return 0;
 }
 
 static int idxd_config_bus_probe(struct device *dev)
@@ -79,10 +88,15 @@ static void idxd_dsa_drv_remove(struct idxd_dev *idxd_dev)
 	}
 }
 
+static enum idxd_dev_type dev_types[] = {
+	IDXD_DEV_NONE,
+};
+
 struct idxd_device_driver dsa_drv = {
 	.name = "dsa",
 	.probe = idxd_dsa_drv_probe,
 	.remove = idxd_dsa_drv_remove,
+	.type = dev_types,
 };
 
 /* IDXD engine attributes */



  parent reply	other threads:[~2021-07-14 23:21 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-14 23:20 [PATCH v2 00/18] Fix idxd sub-drivers setup Dave Jiang
2021-07-14 23:20 ` [PATCH v2 01/18] dmaengine: idxd: add driver register helper Dave Jiang
2021-07-14 23:20 ` [PATCH v2 02/18] dmaengine: idxd: add driver name Dave Jiang
2021-07-14 23:20 ` [PATCH v2 03/18] dmaengine: idxd: add 'struct idxd_dev' as wrapper for conf_dev Dave Jiang
2021-07-15  2:09   ` kernel test robot
2021-07-14 23:20 ` [PATCH v2 04/18] dmaengine: idxd: remove IDXD_DEV_CONF_READY Dave Jiang
2021-07-14 23:20 ` [PATCH v2 05/18] dmaengine: idxd: move wq_enable() to device.c Dave Jiang
2021-07-14 23:20 ` [PATCH v2 06/18] dmaengine: idxd: move wq_disable() " Dave Jiang
2021-07-14 23:21 ` [PATCH v2 07/18] dmaengine: idxd: remove bus shutdown Dave Jiang
2021-07-14 23:21 ` [PATCH v2 08/18] dmaengine: idxd: remove iax_bus_type prototype Dave Jiang
2021-07-14 23:21 ` [PATCH v2 09/18] dmaengine: idxd: fix bus_probe() and bus_remove() for dsa_bus Dave Jiang
2021-07-14 23:21 ` [PATCH v2 10/18] dmaengine: idxd: move probe() bits for idxd 'struct device' to device.c Dave Jiang
2021-07-14 23:21 ` [PATCH v2 11/18] dmaengine: idxd: idxd: move remove() " Dave Jiang
2021-07-14 23:21 ` [PATCH v2 12/18] dmanegine: idxd: open code the dsa_drv registration Dave Jiang
2021-07-14 23:21 ` Dave Jiang [this message]
2021-07-14 23:21 ` [PATCH v2 14/18] dmaengine: idxd: create idxd_device sub-driver Dave Jiang
2021-07-14 23:21 ` [PATCH v2 15/18] dmaengine: idxd: create dmaengine driver for wq 'device' Dave Jiang
2021-07-14 23:21 ` [PATCH v2 16/18] dmaengine: idxd: create user " Dave Jiang
2021-07-14 23:21 ` [PATCH v2 17/18] dmaengine: dsa: move dsa_bus_type out of idxd driver to standalone Dave Jiang
2021-07-14 23:22 ` [PATCH v2 18/18] dmaengine: idxd: move dsa_drv support to compatible mode Dave Jiang

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=162630489586.631529.5304503973943658875.stgit@djiang5-desk3.ch.intel.com \
    --to=dave.jiang@intel.com \
    --cc=dan.j.williams@intel.com \
    --cc=dmaengine@vger.kernel.org \
    --cc=vkoul@kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.