summaryrefslogtreecommitdiff
path: root/drivers/dma/idxd/init.c
diff options
context:
space:
mode:
authorDave Jiang <dave.jiang@intel.com>2021-07-15 21:44:47 +0300
committerVinod Koul <vkoul@kernel.org>2021-07-21 07:39:16 +0300
commit6e7f3ee97bbe2c7d7a53b7dbd7a08a579e03c8c9 (patch)
treec9e9476cf28d5b54ee9ab97a7dbd1e2a40fd1fbf /drivers/dma/idxd/init.c
parentd9e5481fca74f870cf2fc2f90a0e77e85c0b5b86 (diff)
downloadlinux-6e7f3ee97bbe2c7d7a53b7dbd7a08a579e03c8c9.tar.xz
dmaengine: idxd: move dsa_drv support to compatible mode
The original architecture of /sys/bus/dsa invented a scheme whereby a single entry in the list of bus drivers, /sys/bus/drivers/dsa, handled all device types and internally routed them to different different drivers. Those internal drivers were invisible to userspace. With the idxd driver transitioned to a proper bus device-driver model, the legacy behavior needs to be preserved due to it being exposed to user space via sysfs. Create a compat driver to provide the legacy behavior for /sys/bus/dsa/drivers/dsa. This should satisfy user tool accel-config v3.2 or ealier where this behavior is expected. If the distro has a newer accel-config then the legacy mode does not need to be enabled. When the compat driver binds the device (i.e. dsa0) to the dsa driver, it will be bound to the new idxd_drv. The wq device (i.e. wq0.0) will be bound to either the dmaengine_drv or the user_drv. The dsa_drv becomes a routing mechansim for the new drivers. It will not support additional external drivers that are implemented later. Reviewed-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: Dave Jiang <dave.jiang@intel.com> Link: https://lore.kernel.org/r/162637468705.744545.4399080971745974435.stgit@djiang5-desk3.ch.intel.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
Diffstat (limited to 'drivers/dma/idxd/init.c')
-rw-r--r--drivers/dma/idxd/init.c7
1 files changed, 0 insertions, 7 deletions
diff --git a/drivers/dma/idxd/init.c b/drivers/dma/idxd/init.c
index 9b797fcdfd7b..8db56f98059f 100644
--- a/drivers/dma/idxd/init.c
+++ b/drivers/dma/idxd/init.c
@@ -849,10 +849,6 @@ static int __init idxd_init_module(void)
if (err < 0)
goto err_idxd_user_driver_register;
- err = idxd_driver_register(&dsa_drv);
- if (err < 0)
- goto err_dsa_driver_register;
-
err = idxd_cdev_register();
if (err)
goto err_cdev_register;
@@ -866,8 +862,6 @@ static int __init idxd_init_module(void)
err_pci_register:
idxd_cdev_remove();
err_cdev_register:
- idxd_driver_unregister(&dsa_drv);
-err_dsa_driver_register:
idxd_driver_unregister(&idxd_user_drv);
err_idxd_user_driver_register:
idxd_driver_unregister(&idxd_dmaengine_drv);
@@ -883,7 +877,6 @@ static void __exit idxd_exit_module(void)
idxd_driver_unregister(&idxd_user_drv);
idxd_driver_unregister(&idxd_dmaengine_drv);
idxd_driver_unregister(&idxd_drv);
- idxd_driver_unregister(&dsa_drv);
pci_unregister_driver(&idxd_pci_driver);
idxd_cdev_remove();
perfmon_exit();