Skip to content

Commit

Permalink
PM: base: power: don't try to use non-existing RTC for storing data
Browse files Browse the repository at this point in the history
If there is no legacy RTC device, don't try to use it for storing trace
data across suspend/resume.

Cc: <stable@vger.kernel.org>
Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Rafael J. Wysocki <rafael@kernel.org>
Link: https://lore.kernel.org/r/20210903084937.19392-2-jgross@suse.com
Signed-off-by: Juergen Gross <jgross@suse.com>
  • Loading branch information
jgross1 committed Sep 14, 2021
1 parent 8480ed9 commit 0560204
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions drivers/base/power/trace.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include <linux/export.h>
#include <linux/rtc.h>
#include <linux/suspend.h>
#include <linux/init.h>

#include <linux/mc146818rtc.h>

Expand Down Expand Up @@ -165,6 +166,9 @@ void generate_pm_trace(const void *tracedata, unsigned int user)
const char *file = *(const char **)(tracedata + 2);
unsigned int user_hash_value, file_hash_value;

if (!x86_platform.legacy.rtc)
return;

user_hash_value = user % USERHASH;
file_hash_value = hash_string(lineno, file, FILEHASH);
set_magic_time(user_hash_value, file_hash_value, dev_hash_value);
Expand Down Expand Up @@ -267,6 +271,9 @@ static struct notifier_block pm_trace_nb = {

static int __init early_resume_init(void)
{
if (!x86_platform.legacy.rtc)
return 0;

hash_value_early_read = read_magic_time();
register_pm_notifier(&pm_trace_nb);
return 0;
Expand All @@ -277,6 +284,9 @@ static int __init late_resume_init(void)
unsigned int val = hash_value_early_read;
unsigned int user, file, dev;

if (!x86_platform.legacy.rtc)
return 0;

user = val % USERHASH;
val = val / USERHASH;
file = val % FILEHASH;
Expand Down

0 comments on commit 0560204

Please sign in to comment.