Commit 3fd747a6 authored by David Lin's avatar David Lin Committed by Greg Kroah-Hartman

greybus: svc: clean up gb_svc struct for pwrmon

The power rail names and counts are unnecessarily stored in the gb_svc
structure once the SVC created, this causes waste of memory usage. This
patch removes rail names and rail counts storage from th gb_svc
structure.

Testing Done:
- Validated the readings from /d/greybus/1-svc/pwrmon/*
Signed-off-by: default avatarDavid Lin <dtwlin@google.com>
Reviewed-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
parent b482b0d6
...@@ -581,38 +581,40 @@ static void gb_svc_pwrmon_debugfs_init(struct gb_svc *svc) ...@@ -581,38 +581,40 @@ static void gb_svc_pwrmon_debugfs_init(struct gb_svc *svc)
int i; int i;
size_t bufsize; size_t bufsize;
struct dentry *dent; struct dentry *dent;
struct gb_svc_pwrmon_rail_names_get_response *rail_names;
u8 rail_count;
dent = debugfs_create_dir("pwrmon", svc->debugfs_dentry); dent = debugfs_create_dir("pwrmon", svc->debugfs_dentry);
if (IS_ERR_OR_NULL(dent)) if (IS_ERR_OR_NULL(dent))
return; return;
if (gb_svc_pwrmon_rail_count_get(svc, &svc->rail_count)) if (gb_svc_pwrmon_rail_count_get(svc, &rail_count))
goto err_pwrmon_debugfs; goto err_pwrmon_debugfs;
if (!svc->rail_count || svc->rail_count > GB_SVC_PWRMON_MAX_RAIL_COUNT) if (!rail_count || rail_count > GB_SVC_PWRMON_MAX_RAIL_COUNT)
goto err_pwrmon_debugfs; goto err_pwrmon_debugfs;
bufsize = GB_SVC_PWRMON_RAIL_NAME_BUFSIZE * svc->rail_count; bufsize = GB_SVC_PWRMON_RAIL_NAME_BUFSIZE * rail_count;
svc->rail_names = kzalloc(bufsize, GFP_KERNEL); rail_names = kzalloc(bufsize, GFP_KERNEL);
if (!svc->rail_names) if (!rail_names)
goto err_pwrmon_debugfs; goto err_pwrmon_debugfs;
svc->pwrmon_rails = kcalloc(svc->rail_count, sizeof(*svc->pwrmon_rails), svc->pwrmon_rails = kcalloc(rail_count, sizeof(*svc->pwrmon_rails),
GFP_KERNEL); GFP_KERNEL);
if (!svc->pwrmon_rails) if (!svc->pwrmon_rails)
goto err_pwrmon_debugfs_free; goto err_pwrmon_debugfs_free;
if (gb_svc_pwrmon_rail_names_get(svc, svc->rail_names, bufsize)) if (gb_svc_pwrmon_rail_names_get(svc, rail_names, bufsize))
goto err_pwrmon_debugfs_free; goto err_pwrmon_debugfs_free;
for (i = 0; i < svc->rail_count; i++) { for (i = 0; i < rail_count; i++) {
struct dentry *dir; struct dentry *dir;
struct svc_debugfs_pwrmon_rail *rail = &svc->pwrmon_rails[i]; struct svc_debugfs_pwrmon_rail *rail = &svc->pwrmon_rails[i];
char fname[GB_SVC_PWRMON_RAIL_NAME_BUFSIZE]; char fname[GB_SVC_PWRMON_RAIL_NAME_BUFSIZE];
snprintf(fname, sizeof(fname), "%s", snprintf(fname, sizeof(fname), "%s",
(char *)&svc->rail_names->name[i]); (char *)&rail_names->name[i]);
rail->id = i; rail->id = i;
rail->svc = svc; rail->svc = svc;
...@@ -625,12 +627,12 @@ static void gb_svc_pwrmon_debugfs_init(struct gb_svc *svc) ...@@ -625,12 +627,12 @@ static void gb_svc_pwrmon_debugfs_init(struct gb_svc *svc)
debugfs_create_file("power_now", S_IRUGO, dir, rail, debugfs_create_file("power_now", S_IRUGO, dir, rail,
&pwrmon_debugfs_power_fops); &pwrmon_debugfs_power_fops);
}; };
kfree(rail_names);
return; return;
err_pwrmon_debugfs_free: err_pwrmon_debugfs_free:
kfree(svc->rail_names); kfree(rail_names);
svc->rail_names = NULL;
kfree(svc->pwrmon_rails); kfree(svc->pwrmon_rails);
svc->pwrmon_rails = NULL; svc->pwrmon_rails = NULL;
...@@ -648,7 +650,6 @@ static void gb_svc_debugfs_init(struct gb_svc *svc) ...@@ -648,7 +650,6 @@ static void gb_svc_debugfs_init(struct gb_svc *svc)
static void gb_svc_debugfs_exit(struct gb_svc *svc) static void gb_svc_debugfs_exit(struct gb_svc *svc)
{ {
debugfs_remove_recursive(svc->debugfs_dentry); debugfs_remove_recursive(svc->debugfs_dentry);
kfree(svc->rail_names);
} }
static int gb_svc_hello(struct gb_operation *op) static int gb_svc_hello(struct gb_operation *op)
......
...@@ -48,8 +48,6 @@ struct gb_svc { ...@@ -48,8 +48,6 @@ struct gb_svc {
struct dentry *debugfs_dentry; struct dentry *debugfs_dentry;
struct svc_debugfs_pwrmon_rail *pwrmon_rails; struct svc_debugfs_pwrmon_rail *pwrmon_rails;
struct gb_svc_pwrmon_rail_names_get_response *rail_names;
u8 rail_count;
}; };
#define to_gb_svc(d) container_of(d, struct gb_svc, dev) #define to_gb_svc(d) container_of(d, struct gb_svc, dev)
......
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