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

Commit d8756051 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "PM / devfreq: Restart previous governor if new governor fails to start"

parents 17878012 5d116919
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -806,7 +806,7 @@ static ssize_t governor_store(struct device *dev, struct device_attribute *attr,
	struct devfreq *df = to_devfreq(dev);
	int ret;
	char str_governor[DEVFREQ_NAME_LEN + 1];
	struct devfreq_governor *governor;
	const struct devfreq_governor *governor, *prev_gov;

	ret = sscanf(buf, "%" __stringify(DEVFREQ_NAME_LEN) "s", str_governor);
	if (ret != 1)
@@ -831,12 +831,21 @@ static ssize_t governor_store(struct device *dev, struct device_attribute *attr,
			goto out;
		}
	}
	prev_gov = df->governor;
	df->governor = governor;
	strncpy(df->governor_name, governor->name, DEVFREQ_NAME_LEN);
	ret = df->governor->event_handler(df, DEVFREQ_GOV_START, NULL);
	if (ret)
	if (ret) {
		dev_warn(dev, "%s: Governor %s not started(%d)\n",
			 __func__, df->governor->name, ret);
		if (prev_gov) {
			df->governor = prev_gov;
			strncpy(df->governor_name, prev_gov->name,
				DEVFREQ_NAME_LEN);
			df->governor->event_handler(df, DEVFREQ_GOV_START,
						    NULL);
		}
	}
out:
	mutex_unlock(&devfreq_list_lock);