msm: kgsl: Restrict gpu governors to gpu devfreq devices

These governors should fail if being set for any device other
than the gpu device. Do this by checking that the devfreq
device for which this governor is being set for has the gpu
device as it's parent device.

Change-Id: I391557c0d52a1f4ffba70e010401a0769587dea0
Signed-off-by: Harshdeep Dhatt <hdhatt@codeaurora.org>
This commit is contained in:
Harshdeep Dhatt 2020-03-11 10:58:06 -06:00
commit f02489b4c8
2 changed files with 13 additions and 5 deletions

View file

@ -197,6 +197,9 @@ static int devfreq_gpubw_event_handler(struct devfreq *devfreq,
int result = 0;
unsigned long freq;
if (strcmp(dev_name(devfreq->dev.parent), "kgsl-busmon"))
return -EINVAL;
mutex_lock(&devfreq->lock);
freq = devfreq->previous_freq;
switch (event) {

View file

@ -1,12 +1,13 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2010-2019, The Linux Foundation. All rights reserved.
* Copyright (c) 2010-2020, The Linux Foundation. All rights reserved.
*/
#include <linux/errno.h>
#include <linux/module.h>
#include <linux/devfreq.h>
#include <linux/dma-mapping.h>
#include <linux/math64.h>
#include <linux/of_platform.h>
#include <linux/spinlock.h>
#include <linux/slab.h>
#include <linux/io.h>
@ -505,11 +506,15 @@ static int tz_suspend(struct devfreq *devfreq)
static int tz_handler(struct devfreq *devfreq, unsigned int event, void *data)
{
int result;
struct msm_adreno_extended_profile *gpu_profile;
struct device_node *node = devfreq->dev.parent->of_node;
struct msm_adreno_extended_profile *gpu_profile = container_of(
(devfreq->profile),
struct msm_adreno_extended_profile,
profile);
if (!of_device_is_compatible(node, "qcom,kgsl-3d0"))
return -EINVAL;
gpu_profile = container_of((devfreq->profile),
struct msm_adreno_extended_profile,
profile);
switch (event) {
case DEVFREQ_GOV_START: