dmaengine: idxd: idxd: move remove() bits for idxd 'struct device' to device.c
Move the code related to a ->remove() function for the idxd 'struct device' to device.c to prep for the idxd device sub-driver in device.c. Reviewed-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: Dave Jiang <dave.jiang@intel.com> Link: https://lore.kernel.org/r/162637464768.744545.15797285510999151668.stgit@djiang5-desk3.ch.intel.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
parent
bd42805b5d
commit
745e92a6d8
@ -1327,3 +1327,25 @@ int idxd_device_drv_probe(struct idxd_dev *idxd_dev)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void idxd_device_drv_remove(struct idxd_dev *idxd_dev)
|
||||
{
|
||||
struct device *dev = &idxd_dev->conf_dev;
|
||||
struct idxd_device *idxd = idxd_dev_to_idxd(idxd_dev);
|
||||
int i;
|
||||
|
||||
for (i = 0; i < idxd->max_wqs; i++) {
|
||||
struct idxd_wq *wq = idxd->wqs[i];
|
||||
struct device *wq_dev = wq_confdev(wq);
|
||||
|
||||
if (wq->state == IDXD_WQ_DISABLED)
|
||||
continue;
|
||||
dev_warn(dev, "Active wq %d on disable %s.\n", i, dev_name(wq_dev));
|
||||
device_release_driver(wq_dev);
|
||||
}
|
||||
|
||||
idxd_unregister_dma_device(idxd);
|
||||
idxd_device_disable(idxd);
|
||||
if (test_bit(IDXD_FLAG_CONFIGURABLE, &idxd->flags))
|
||||
idxd_device_reset(idxd);
|
||||
}
|
||||
|
@ -499,6 +499,7 @@ void idxd_unmask_msix_vector(struct idxd_device *idxd, int vec_id);
|
||||
|
||||
/* device control */
|
||||
int idxd_device_drv_probe(struct idxd_dev *idxd_dev);
|
||||
void idxd_device_drv_remove(struct idxd_dev *idxd_dev);
|
||||
int drv_enable_wq(struct idxd_wq *wq);
|
||||
void drv_disable_wq(struct idxd_wq *wq);
|
||||
int idxd_device_init_reset(struct idxd_device *idxd);
|
||||
|
@ -66,26 +66,8 @@ static int idxd_dsa_drv_probe(struct idxd_dev *idxd_dev)
|
||||
|
||||
static void idxd_dsa_drv_remove(struct idxd_dev *idxd_dev)
|
||||
{
|
||||
struct device *dev = &idxd_dev->conf_dev;
|
||||
|
||||
if (is_idxd_dev(idxd_dev)) {
|
||||
struct idxd_device *idxd = idxd_dev_to_idxd(idxd_dev);
|
||||
int i;
|
||||
|
||||
for (i = 0; i < idxd->max_wqs; i++) {
|
||||
struct idxd_wq *wq = idxd->wqs[i];
|
||||
|
||||
if (wq->state == IDXD_WQ_DISABLED)
|
||||
continue;
|
||||
dev_warn(dev, "Active wq %d on disable %s.\n", i,
|
||||
dev_name(wq_confdev(wq)));
|
||||
device_release_driver(wq_confdev(wq));
|
||||
}
|
||||
|
||||
idxd_unregister_dma_device(idxd);
|
||||
idxd_device_disable(idxd);
|
||||
if (test_bit(IDXD_FLAG_CONFIGURABLE, &idxd->flags))
|
||||
idxd_device_reset(idxd);
|
||||
idxd_device_drv_remove(idxd_dev);
|
||||
return;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user