On Wed 06 Nov 03:19 PST 2019, Maulik Shah wrote: > diff --git a/Documentation/ABI/testing/sysfs-power b/Documentation/ABI/testing/sysfs-power > index 6f87b9d..e095eae 100644 > --- a/Documentation/ABI/testing/sysfs-power > +++ b/Documentation/ABI/testing/sysfs-power > @@ -288,6 +288,16 @@ Description: > writing a "0" (default) to it disables them. Reads from > this file return the current value. > > +What: /sys/power/subsystem_sleep/stats > +Date: December 2017 > +Contact: Maulik Shah <mkshah@xxxxxxxxxxxxxx> > +Description: > + The /sys/power/subsystem_sleep/stats file prints the subsystem > + sleep information on Qualcomm Technologies, Inc. (QTI) SoCs. > + > + Reading from this file will display subsystem level low power > + mode statistics. sysfs files must follow the design of "one file, one value" and it must be well defined. "sleep information" does not have a defined structure. And as Stephen has pointed out several times, /sys/power/subsystem_sleep is hardly the right place for a Qualcomm-specific entry. [..] > diff --git a/drivers/soc/qcom/subsystem_sleep_stats.c b/drivers/soc/qcom/subsystem_sleep_stats.c [..] > +static int __init subsystem_sleep_stats_init(void) > +{ > + struct kobject *ss_stats_kobj; > + int ret; > + > + prvdata = kzalloc(sizeof(*prvdata), GFP_KERNEL); > + if (!prvdata) > + return -ENOMEM; > + > + ss_stats_kobj = kobject_create_and_add("subsystem_sleep", > + power_kobj); > + if (!ss_stats_kobj) > + return -ENOMEM; > + > + prvdata->kobj = ss_stats_kobj; > + > + sysfs_attr_init(&prvdata->ka.attr); > + prvdata->ka.attr.mode = 0444; > + prvdata->ka.attr.name = "stats"; > + prvdata->ka.show = subsystem_stats_show; > + > + ret = sysfs_create_file(prvdata->kobj, &prvdata->ka.attr); > + if (ret) { > + kobject_put(prvdata->kobj); > + kfree(prvdata); > + } > + > + return ret; > +} > + > +static void __exit subsystem_sleep_stats_exit(void) > +{ > + sysfs_remove_file(prvdata->kobj, &prvdata->ka.attr); > + kobject_put(prvdata->kobj); > + kfree(prvdata); > +} > + > +module_init(subsystem_sleep_stats_init); > +module_exit(subsystem_sleep_stats_exit); In the event that this is compiled as a kernel module, this driver won't be automatically loaded - there's no references from other drivers nor devicetree. But equally big of an issue is that there's a single arm64 defconfig, so this driver will be available on non-Qualcomm installations as well, so you will be creating /sys/power/subsystem_sleep/stats regardless if it ever will be possible to get any data out of this. Regards, Bjorn