--- /dev/null
+From a449dfbfc0894676ad0aa1873383265047529e3a Mon Sep 17 00:00:00 2001
+From: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
+Date: Thu, 1 Dec 2022 19:33:09 +0100
+Subject: PM: sleep: Avoid using pr_cont() in the tasks freezing code
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+
+commit a449dfbfc0894676ad0aa1873383265047529e3a upstream.
+
+Using pr_cont() in the tasks freezing code related to system-wide
+suspend and hibernation is problematic, because the continuation
+messages printed there are susceptible to interspersing with other
+unrelated messages which results in output that is hard to
+understand.
+
+Address this issue by modifying try_to_freeze_tasks() to print
+messages that don't require continuations and adjusting its
+callers accordingly.
+
+Reported-by: Thomas Weißschuh <linux@weissschuh.net>
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Reviewed-by: Petr Mladek <pmladek@suse.com>
+Cc: Paul Menzel <pmenzel@molgen.mpg.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ kernel/power/process.c | 21 ++++++++-------------
+ 1 file changed, 8 insertions(+), 13 deletions(-)
+
+--- a/kernel/power/process.c
++++ b/kernel/power/process.c
+@@ -27,6 +27,8 @@ unsigned int __read_mostly freeze_timeou
+
+ static int try_to_freeze_tasks(bool user_only)
+ {
++ const char *what = user_only ? "user space processes" :
++ "remaining freezable tasks";
+ struct task_struct *g, *p;
+ unsigned long end_time;
+ unsigned int todo;
+@@ -36,6 +38,8 @@ static int try_to_freeze_tasks(bool user
+ bool wakeup = false;
+ int sleep_usecs = USEC_PER_MSEC;
+
++ pr_info("Freezing %s\n", what);
++
+ start = ktime_get_boottime();
+
+ end_time = jiffies + msecs_to_jiffies(freeze_timeout_msecs);
+@@ -82,7 +86,6 @@ static int try_to_freeze_tasks(bool user
+ elapsed_msecs = ktime_to_ms(elapsed);
+
+ if (todo) {
+- pr_cont("\n");
+ pr_err("Freezing of tasks %s after %d.%03d seconds "
+ "(%d tasks refusing to freeze, wq_busy=%d):\n",
+ wakeup ? "aborted" : "failed",
+@@ -101,8 +104,8 @@ static int try_to_freeze_tasks(bool user
+ read_unlock(&tasklist_lock);
+ }
+ } else {
+- pr_cont("(elapsed %d.%03d seconds) ", elapsed_msecs / 1000,
+- elapsed_msecs % 1000);
++ pr_info("Freezing %s completed (elapsed %d.%03d seconds)\n",
++ what, elapsed_msecs / 1000, elapsed_msecs % 1000);
+ }
+
+ return todo ? -EBUSY : 0;
+@@ -130,14 +133,11 @@ int freeze_processes(void)
+ static_branch_inc(&freezer_active);
+
+ pm_wakeup_clear(0);
+- pr_info("Freezing user space processes ... ");
+ pm_freezing = true;
+ error = try_to_freeze_tasks(true);
+- if (!error) {
++ if (!error)
+ __usermodehelper_set_disable_depth(UMH_DISABLED);
+- pr_cont("done.");
+- }
+- pr_cont("\n");
++
+ BUG_ON(in_atomic());
+
+ /*
+@@ -166,14 +166,9 @@ int freeze_kernel_threads(void)
+ {
+ int error;
+
+- pr_info("Freezing remaining freezable tasks ... ");
+-
+ pm_nosig_freezing = true;
+ error = try_to_freeze_tasks(false);
+- if (!error)
+- pr_cont("done.");
+
+- pr_cont("\n");
+ BUG_ON(in_atomic());
+
+ if (error)