summaryrefslogtreecommitdiff
path: root/mali_kbase/ipa
diff options
context:
space:
mode:
authorSidath Senanayake <sidaths@google.com>2017-09-19 18:23:58 +0200
committerSidath Senanayake <sidaths@google.com>2017-09-19 18:23:58 +0200
commitc19c62718d90e8efa4675528aae6ab6fde13a12f (patch)
tree4601ada4314a2641b2ebdb7073198a5a406085f8 /mali_kbase/ipa
parentea23e535ae857c92d45cb11bdd5dba7c27579726 (diff)
downloadgpu-c19c62718d90e8efa4675528aae6ab6fde13a12f.tar.gz
Mali Bifrost DDK r8p0 KMD
Provenance: a0013c522 (collaborate/EAC/b_r8p0) BX304L01B-BU-00000-r8p0-01rel0 BX304L06A-BU-00000-r8p0-01rel0 BX304X07X-BU-00000-r8p0-01rel0 Signed-off-by: Sidath Senanayake <sidaths@google.com> Change-Id: Iab1f0fc8f3602409180629b210c624791be774c5
Diffstat (limited to 'mali_kbase/ipa')
-rw-r--r--mali_kbase/ipa/mali_kbase_ipa.c13
-rw-r--r--mali_kbase/ipa/mali_kbase_ipa_simple.c19
-rw-r--r--mali_kbase/ipa/mali_kbase_ipa_vinstr_g71.c12
3 files changed, 24 insertions, 20 deletions
diff --git a/mali_kbase/ipa/mali_kbase_ipa.c b/mali_kbase/ipa/mali_kbase_ipa.c
index 4319893..e7e2299 100644
--- a/mali_kbase/ipa/mali_kbase_ipa.c
+++ b/mali_kbase/ipa/mali_kbase_ipa.c
@@ -242,18 +242,17 @@ struct kbase_ipa_model *kbase_ipa_init_model(struct kbase_device *kbdev,
dev_err(kbdev->dev,
"init of power model \'%s\' returned error %d\n",
ops->name, err);
- goto term_model;
+ kfree(model);
+ return NULL;
}
err = kbase_ipa_model_recalculate(model);
- if (err)
- goto term_model;
+ if (err) {
+ kbase_ipa_term_model(model);
+ return NULL;
+ }
return model;
-
-term_model:
- kbase_ipa_term_model(model);
- return NULL;
}
KBASE_EXPORT_TEST_API(kbase_ipa_init_model);
diff --git a/mali_kbase/ipa/mali_kbase_ipa_simple.c b/mali_kbase/ipa/mali_kbase_ipa_simple.c
index dd65d33..de6c3e6 100644
--- a/mali_kbase/ipa/mali_kbase_ipa_simple.c
+++ b/mali_kbase/ipa/mali_kbase_ipa_simple.c
@@ -26,6 +26,7 @@
#include "mali_kbase.h"
#include "mali_kbase_defs.h"
#include "mali_kbase_ipa_simple.h"
+#include "mali_kbase_ipa_debugfs.h"
#if MALI_UNIT_TEST
@@ -252,10 +253,8 @@ static int kbase_simple_power_model_init(struct kbase_ipa_model *model)
model_data = kzalloc(sizeof(struct kbase_ipa_model_simple_data),
GFP_KERNEL);
- if (!model_data) {
- err = -ENOMEM;
- goto exit;
- }
+ if (!model_data)
+ return -ENOMEM;
model->model_data = (void *) model_data;
@@ -263,17 +262,15 @@ static int kbase_simple_power_model_init(struct kbase_ipa_model *model)
model_data->poll_temperature_thread = kthread_run(poll_temperature,
(void *) model_data,
"mali-simple-power-model-temp-poll");
- if (!model_data->poll_temperature_thread) {
- err = -ENOMEM;
- goto exit;
+ if (IS_ERR(model_data->poll_temperature_thread)) {
+ kfree(model_data);
+ return PTR_ERR(model_data->poll_temperature_thread);
}
err = add_params(model);
-
-exit:
if (err) {
- if (model_data->poll_temperature_thread)
- kthread_stop(model_data->poll_temperature_thread);
+ kbase_ipa_model_param_free_all(model);
+ kthread_stop(model_data->poll_temperature_thread);
kfree(model_data);
}
diff --git a/mali_kbase/ipa/mali_kbase_ipa_vinstr_g71.c b/mali_kbase/ipa/mali_kbase_ipa_vinstr_g71.c
index 14241a0..81f6fdd 100644
--- a/mali_kbase/ipa/mali_kbase_ipa_vinstr_g71.c
+++ b/mali_kbase/ipa/mali_kbase_ipa_vinstr_g71.c
@@ -18,6 +18,7 @@
#include "mali_kbase_ipa_vinstr_common.h"
#include "mali_kbase.h"
+#include "mali_kbase_ipa_debugfs.h"
#define JM_BASE (0 * KBASE_IPA_NR_BYTES_PER_BLOCK)
@@ -78,7 +79,7 @@ static int kbase_g71_power_model_init(struct kbase_ipa_model *model)
model_data = kzalloc(sizeof(*model_data), GFP_KERNEL);
if (!model_data)
- return -EINVAL;
+ return -ENOMEM;
model_data->kbdev = model->kbdev;
model_data->groups_def = ipa_groups_def;
@@ -95,16 +96,23 @@ static int kbase_g71_power_model_init(struct kbase_ipa_model *model)
&model_data->group_values[i],
1, false);
if (err)
- break;
+ goto exit;
}
model_data->scaling_factor = 15000;
err = kbase_ipa_model_add_param_s32(model, "scale",
&model_data->scaling_factor,
1, false);
+ if (err)
+ goto exit;
err = kbase_ipa_attach_vinstr(model_data);
+exit:
+ if (err) {
+ kbase_ipa_model_param_free_all(model);
+ kfree(model_data);
+ }
return err;
}