summaryrefslogtreecommitdiffstats
path: root/kernel/power/main.c
diff options
context:
space:
mode:
authorJames Hogan <james@albanarts.com>2010-10-12 00:00:25 +0200
committerRafael J. Wysocki <rjw@sisk.pl>2010-10-17 01:57:50 +0200
commitd33ac60beaf2c7dee5cd90aba7c1eb385dd70937 (patch)
tree7393c5f323433f39d2c64e7d9990aa7565397214 /kernel/power/main.c
parent2ac21c6bc4249ee6d922f18dbec7266377592c32 (diff)
downloadop-kernel-dev-d33ac60beaf2c7dee5cd90aba7c1eb385dd70937.zip
op-kernel-dev-d33ac60beaf2c7dee5cd90aba7c1eb385dd70937.tar.gz
PM: Add sysfs attr for rechecking dev hash from PM trace
If the device which fails to resume is part of a loadable kernel module it won't be checked at startup against the magic number stored in the RTC. Add a read-only sysfs attribute /sys/power/pm_trace_dev_match which contains a list of newline separated devices (usually just the one) which currently match the last magic number. This allows the device which is failing to resume to be found after the modules are loaded again. Signed-off-by: James Hogan <james@albanarts.com> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Diffstat (limited to 'kernel/power/main.c')
-rw-r--r--kernel/power/main.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/kernel/power/main.c b/kernel/power/main.c
index 6b12a0cf..7b5db6a 100644
--- a/kernel/power/main.c
+++ b/kernel/power/main.c
@@ -281,12 +281,30 @@ pm_trace_store(struct kobject *kobj, struct kobj_attribute *attr,
}
power_attr(pm_trace);
+
+static ssize_t pm_trace_dev_match_show(struct kobject *kobj,
+ struct kobj_attribute *attr,
+ char *buf)
+{
+ return show_trace_dev_match(buf, PAGE_SIZE);
+}
+
+static ssize_t
+pm_trace_dev_match_store(struct kobject *kobj, struct kobj_attribute *attr,
+ const char *buf, size_t n)
+{
+ return -EINVAL;
+}
+
+power_attr(pm_trace_dev_match);
+
#endif /* CONFIG_PM_TRACE */
static struct attribute * g[] = {
&state_attr.attr,
#ifdef CONFIG_PM_TRACE
&pm_trace_attr.attr,
+ &pm_trace_dev_match_attr.attr,
#endif
#ifdef CONFIG_PM_SLEEP
&pm_async_attr.attr,
OpenPOWER on IntegriCloud