Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cb00bca4 authored by Tadeusz Struk's avatar Tadeusz Struk Committed by Herbert Xu
Browse files

crypto: qat - explicitly stop all VFs first



When stopping devices it is not enought to loop backwards.
We need to explicitly stop all VFs first.

Signed-off-by: default avatarTadeusz Struk <tadeusz.struk@intel.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 4218ebe8
Loading
Loading
Loading
Loading
+20 −1
Original line number Diff line number Diff line
@@ -275,7 +275,26 @@ static int adf_ctl_stop_devices(uint32_t id)
	struct adf_accel_dev *accel_dev;
	int ret = 0;

	list_for_each_entry_reverse(accel_dev, adf_devmgr_get_head(), list) {
	list_for_each_entry(accel_dev, adf_devmgr_get_head(), list) {
		if (id == accel_dev->accel_id || id == ADF_CFG_ALL_DEVICES) {
			if (!adf_dev_started(accel_dev))
				continue;

			/* First stop all VFs */
			if (!accel_dev->is_vf)
				continue;

			if (adf_dev_stop(accel_dev)) {
				dev_err(&GET_DEV(accel_dev),
					"Failed to stop qat_dev%d\n", id);
				ret = -EFAULT;
			} else {
				adf_dev_shutdown(accel_dev);
			}
		}
	}

	list_for_each_entry(accel_dev, adf_devmgr_get_head(), list) {
		if (id == accel_dev->accel_id || id == ADF_CFG_ALL_DEVICES) {
			if (!adf_dev_started(accel_dev))
				continue;