forked from Minki/linux
mei: remove flash_work_queue
Cancel each work properly and remove flash_work_queue. Quoting documentation: In most situations flushing the entire workqueue is overkill; you merely need to know that a particular work item isn't queued and isn't running. In such cases you should use cancel_delayed_work_sync() or cancel_work_sync() instead. Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
6ce4eac1f6
commit
dc844b0d99
@ -131,6 +131,15 @@ err:
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mei_start);
|
||||
|
||||
|
||||
void mei_cancel_work(struct mei_device *dev)
|
||||
{
|
||||
cancel_work_sync(&dev->init_work);
|
||||
|
||||
cancel_delayed_work(&dev->timer_work);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mei_cancel_work);
|
||||
|
||||
/**
|
||||
* mei_reset - resets host and fw.
|
||||
*
|
||||
@ -215,16 +224,14 @@ void mei_stop(struct mei_device *dev)
|
||||
{
|
||||
dev_dbg(&dev->pdev->dev, "stopping the device.\n");
|
||||
|
||||
flush_scheduled_work();
|
||||
mei_cancel_work(dev);
|
||||
|
||||
mei_nfc_host_exit(dev);
|
||||
|
||||
mutex_lock(&dev->device_lock);
|
||||
|
||||
cancel_delayed_work(&dev->timer_work);
|
||||
|
||||
mei_wd_stop(dev);
|
||||
|
||||
mei_nfc_host_exit();
|
||||
|
||||
dev->dev_state = MEI_DEV_POWER_DOWN;
|
||||
mei_reset(dev, 0);
|
||||
|
||||
|
@ -463,6 +463,7 @@ void mei_device_init(struct mei_device *dev);
|
||||
void mei_reset(struct mei_device *dev, int interrupts);
|
||||
int mei_start(struct mei_device *dev);
|
||||
void mei_stop(struct mei_device *dev);
|
||||
void mei_cancel_work(struct mei_device *dev);
|
||||
|
||||
/*
|
||||
* MEI interrupt functions prototype
|
||||
@ -510,7 +511,7 @@ int mei_amthif_irq_read(struct mei_device *dev, s32 *slots);
|
||||
* NFC functions
|
||||
*/
|
||||
int mei_nfc_host_init(struct mei_device *dev);
|
||||
void mei_nfc_host_exit(void);
|
||||
void mei_nfc_host_exit(struct mei_device *dev);
|
||||
|
||||
/*
|
||||
* NFC Client UUID
|
||||
|
@ -547,12 +547,16 @@ err:
|
||||
return ret;
|
||||
}
|
||||
|
||||
void mei_nfc_host_exit(void)
|
||||
void mei_nfc_host_exit(struct mei_device *dev)
|
||||
{
|
||||
struct mei_nfc_dev *ndev = &nfc_dev;
|
||||
|
||||
cancel_work_sync(&ndev->init_work);
|
||||
|
||||
mutex_lock(&dev->device_lock);
|
||||
if (ndev->cl && ndev->cl->device)
|
||||
mei_cl_remove_device(ndev->cl->device);
|
||||
|
||||
mei_nfc_free(ndev);
|
||||
mutex_unlock(&dev->device_lock);
|
||||
}
|
||||
|
@ -195,8 +195,8 @@ static int mei_me_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
return 0;
|
||||
|
||||
release_irq:
|
||||
mei_cancel_work(dev);
|
||||
mei_disable_interrupts(dev);
|
||||
flush_scheduled_work();
|
||||
free_irq(pdev->irq, dev);
|
||||
disable_msi:
|
||||
pci_disable_msi(pdev);
|
||||
|
Loading…
Reference in New Issue
Block a user