Commit 189df987 authored by xinglong.yang's avatar xinglong.yang Committed by Sudeep Holla

firmware: arm_scmi: Check beforehand if the perf domain set operations are allowed

Certain SCMI performance domains may have restrictions on the set level
and/or limits operation. If the set level/limits are performed by an
agent who is not allowed to do so may get SCMI_ERR_SUPPORT. However,
since this information about the domain is already known to the
agent(OSPM here) obtained via PERF_DOMAIN_ATTRIBUTES, the agent(OSPM)
can avoid making PERF_LEVEL_SET and PERF_LIMITS_SET calls to the firmware.

Add those checks and return -ENOTSUPP to the caller without interacting
with the firmware based on the information collected during the domain
enumeration stage.
Signed-off-by: default avatarxinglong.yang <xinglong.yang@cixtech.com>
Link: https://lore.kernel.org/r/20231109082855.472681-1-xinglong.yang@cixtech.comSigned-off-by: default avatarSudeep Holla <sudeep.holla@arm.com>
parent b85ea95d
...@@ -504,6 +504,9 @@ static int scmi_perf_limits_set(const struct scmi_protocol_handle *ph, ...@@ -504,6 +504,9 @@ static int scmi_perf_limits_set(const struct scmi_protocol_handle *ph,
if (IS_ERR(dom)) if (IS_ERR(dom))
return PTR_ERR(dom); return PTR_ERR(dom);
if (!dom->set_limits)
return -EOPNOTSUPP;
if (PROTOCOL_REV_MAJOR(pi->version) >= 0x3 && !max_perf && !min_perf) if (PROTOCOL_REV_MAJOR(pi->version) >= 0x3 && !max_perf && !min_perf)
return -EINVAL; return -EINVAL;
...@@ -654,6 +657,9 @@ static int scmi_perf_level_set(const struct scmi_protocol_handle *ph, ...@@ -654,6 +657,9 @@ static int scmi_perf_level_set(const struct scmi_protocol_handle *ph,
if (IS_ERR(dom)) if (IS_ERR(dom))
return PTR_ERR(dom); return PTR_ERR(dom);
if (!dom->info.set_perf)
return -EOPNOTSUPP;
if (dom->level_indexing_mode) { if (dom->level_indexing_mode) {
struct scmi_opp *opp; struct scmi_opp *opp;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment