* [PATCH v6 0/2] ASoC: SOF: Fix deadlock when shutdown a frozen userspace
@ 2022-11-30 15:47 ` Ricardo Ribalda
0 siblings, 0 replies; 13+ messages in thread
From: Ricardo Ribalda @ 2022-11-30 15:47 UTC (permalink / raw)
To: Chromeos Kdump, Liam Girdwood, Pierre-Louis Bossart,
Eric Biederman, Daniel Baluta, Mark Brown, Bard Liao,
Jaroslav Kysela, Kai Vehmanen, Ranjani Sridharan, Peter Ujfalusi,
Takashi Iwai, Steven Rostedt
Cc: Ricardo Ribalda, stable, linux-kernel, alsa-devel, kexec,
sound-open-firmware
Since: 83bfc7e793b5 ("ASoC: SOF: core: unregister clients and machine drivers in .shutdown")
we wait for all the workloads to be completed during shutdown. This was done to
avoid a stall once the device is started again.
Unfortunately this has the side effect of stalling kexec(), if the userspace
is frozen. Let's handle that case.
To: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
To: Liam Girdwood <lgirdwood@gmail.com>
To: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
To: Bard Liao <yung-chuan.liao@linux.intel.com>
To: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
To: Kai Vehmanen <kai.vehmanen@linux.intel.com>
To: Daniel Baluta <daniel.baluta@nxp.com>
To: Mark Brown <broonie@kernel.org>
To: Jaroslav Kysela <perex@perex.cz>
To: Takashi Iwai <tiwai@suse.com>
To: Eric Biederman <ebiederm@xmission.com>
To: Chromeos Kdump <chromeos-kdump@google.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: stable@vger.kernel.org
Cc: sound-open-firmware@alsa-project.org
Cc: alsa-devel@alsa-project.org
Cc: linux-kernel@vger.kernel.org
Cc: kexec@lists.infradead.org
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
---
Changes in v6:
- Check if we are in kexec with the userspace frozen.
- Link to v5: https://lore.kernel.org/r/20221127-snd-freeze-v5-0-4ededeb08ba0@chromium.org
Changes in v5:
- Edit subject prefix.
- Link to v4: https://lore.kernel.org/r/20221127-snd-freeze-v4-0-51ca64b7f2ab@chromium.org
Changes in v4:
- Do not call snd_sof_machine_unregister from shutdown.
- Link to v3: https://lore.kernel.org/r/20221127-snd-freeze-v3-0-a2eda731ca14@chromium.org
Changes in v3:
- Wrap pm_freezing in a function.
- Link to v2: https://lore.kernel.org/r/20221127-snd-freeze-v2-0-d8a425ea9663@chromium.org
Changes in v2:
- Only use pm_freezing if CONFIG_FREEZER .
- Link to v1: https://lore.kernel.org/r/20221127-snd-freeze-v1-0-57461a366ec2@chromium.org
---
Ricardo Ribalda (2):
kexec: Introduce kexec_with_frozen_processes
ASoC: SOF: Fix deadlock when shutdown a frozen userspace
include/linux/kexec.h | 3 +++
kernel/kexec_core.c | 5 +++++
sound/soc/sof/core.c | 4 +++-
3 files changed, 11 insertions(+), 1 deletion(-)
---
base-commit: 4312098baf37ee17a8350725e6e0d0e8590252d4
change-id: 20221127-snd-freeze-1ee143228326
Best regards,
--
Ricardo Ribalda <ribalda@chromium.org>
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v6 0/2] ASoC: SOF: Fix deadlock when shutdown a frozen userspace
@ 2022-11-30 15:47 ` Ricardo Ribalda
0 siblings, 0 replies; 13+ messages in thread
From: Ricardo Ribalda @ 2022-11-30 15:47 UTC (permalink / raw)
To: Chromeos Kdump, Liam Girdwood, Pierre-Louis Bossart,
Eric Biederman, Daniel Baluta, Mark Brown, Bard Liao,
Jaroslav Kysela, Kai Vehmanen, Ranjani Sridharan, Peter Ujfalusi,
Takashi Iwai, Steven Rostedt
Cc: Ricardo Ribalda, stable, linux-kernel, alsa-devel, kexec,
sound-open-firmware
Since: 83bfc7e793b5 ("ASoC: SOF: core: unregister clients and machine drivers in .shutdown")
we wait for all the workloads to be completed during shutdown. This was done to
avoid a stall once the device is started again.
Unfortunately this has the side effect of stalling kexec(), if the userspace
is frozen. Let's handle that case.
To: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
To: Liam Girdwood <lgirdwood@gmail.com>
To: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
To: Bard Liao <yung-chuan.liao@linux.intel.com>
To: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
To: Kai Vehmanen <kai.vehmanen@linux.intel.com>
To: Daniel Baluta <daniel.baluta@nxp.com>
To: Mark Brown <broonie@kernel.org>
To: Jaroslav Kysela <perex@perex.cz>
To: Takashi Iwai <tiwai@suse.com>
To: Eric Biederman <ebiederm@xmission.com>
To: Chromeos Kdump <chromeos-kdump@google.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: stable@vger.kernel.org
Cc: sound-open-firmware@alsa-project.org
Cc: alsa-devel@alsa-project.org
Cc: linux-kernel@vger.kernel.org
Cc: kexec@lists.infradead.org
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
---
Changes in v6:
- Check if we are in kexec with the userspace frozen.
- Link to v5: https://lore.kernel.org/r/20221127-snd-freeze-v5-0-4ededeb08ba0@chromium.org
Changes in v5:
- Edit subject prefix.
- Link to v4: https://lore.kernel.org/r/20221127-snd-freeze-v4-0-51ca64b7f2ab@chromium.org
Changes in v4:
- Do not call snd_sof_machine_unregister from shutdown.
- Link to v3: https://lore.kernel.org/r/20221127-snd-freeze-v3-0-a2eda731ca14@chromium.org
Changes in v3:
- Wrap pm_freezing in a function.
- Link to v2: https://lore.kernel.org/r/20221127-snd-freeze-v2-0-d8a425ea9663@chromium.org
Changes in v2:
- Only use pm_freezing if CONFIG_FREEZER .
- Link to v1: https://lore.kernel.org/r/20221127-snd-freeze-v1-0-57461a366ec2@chromium.org
---
Ricardo Ribalda (2):
kexec: Introduce kexec_with_frozen_processes
ASoC: SOF: Fix deadlock when shutdown a frozen userspace
include/linux/kexec.h | 3 +++
kernel/kexec_core.c | 5 +++++
sound/soc/sof/core.c | 4 +++-
3 files changed, 11 insertions(+), 1 deletion(-)
---
base-commit: 4312098baf37ee17a8350725e6e0d0e8590252d4
change-id: 20221127-snd-freeze-1ee143228326
Best regards,
--
Ricardo Ribalda <ribalda@chromium.org>
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v6 0/2] ASoC: SOF: Fix deadlock when shutdown a frozen userspace
@ 2022-11-30 15:47 ` Ricardo Ribalda
0 siblings, 0 replies; 13+ messages in thread
From: Ricardo Ribalda @ 2022-11-30 15:47 UTC (permalink / raw)
To: Chromeos Kdump, Liam Girdwood, Pierre-Louis Bossart,
Eric Biederman, Daniel Baluta, Mark Brown, Bard Liao,
Jaroslav Kysela, Kai Vehmanen, Ranjani Sridharan, Peter Ujfalusi,
Takashi Iwai, Steven Rostedt
Cc: alsa-devel, kexec, linux-kernel, stable, Ricardo Ribalda,
sound-open-firmware
Since: 83bfc7e793b5 ("ASoC: SOF: core: unregister clients and machine drivers in .shutdown")
we wait for all the workloads to be completed during shutdown. This was done to
avoid a stall once the device is started again.
Unfortunately this has the side effect of stalling kexec(), if the userspace
is frozen. Let's handle that case.
To: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
To: Liam Girdwood <lgirdwood@gmail.com>
To: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
To: Bard Liao <yung-chuan.liao@linux.intel.com>
To: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
To: Kai Vehmanen <kai.vehmanen@linux.intel.com>
To: Daniel Baluta <daniel.baluta@nxp.com>
To: Mark Brown <broonie@kernel.org>
To: Jaroslav Kysela <perex@perex.cz>
To: Takashi Iwai <tiwai@suse.com>
To: Eric Biederman <ebiederm@xmission.com>
To: Chromeos Kdump <chromeos-kdump@google.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: stable@vger.kernel.org
Cc: sound-open-firmware@alsa-project.org
Cc: alsa-devel@alsa-project.org
Cc: linux-kernel@vger.kernel.org
Cc: kexec@lists.infradead.org
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
---
Changes in v6:
- Check if we are in kexec with the userspace frozen.
- Link to v5: https://lore.kernel.org/r/20221127-snd-freeze-v5-0-4ededeb08ba0@chromium.org
Changes in v5:
- Edit subject prefix.
- Link to v4: https://lore.kernel.org/r/20221127-snd-freeze-v4-0-51ca64b7f2ab@chromium.org
Changes in v4:
- Do not call snd_sof_machine_unregister from shutdown.
- Link to v3: https://lore.kernel.org/r/20221127-snd-freeze-v3-0-a2eda731ca14@chromium.org
Changes in v3:
- Wrap pm_freezing in a function.
- Link to v2: https://lore.kernel.org/r/20221127-snd-freeze-v2-0-d8a425ea9663@chromium.org
Changes in v2:
- Only use pm_freezing if CONFIG_FREEZER .
- Link to v1: https://lore.kernel.org/r/20221127-snd-freeze-v1-0-57461a366ec2@chromium.org
---
Ricardo Ribalda (2):
kexec: Introduce kexec_with_frozen_processes
ASoC: SOF: Fix deadlock when shutdown a frozen userspace
include/linux/kexec.h | 3 +++
kernel/kexec_core.c | 5 +++++
sound/soc/sof/core.c | 4 +++-
3 files changed, 11 insertions(+), 1 deletion(-)
---
base-commit: 4312098baf37ee17a8350725e6e0d0e8590252d4
change-id: 20221127-snd-freeze-1ee143228326
Best regards,
--
Ricardo Ribalda <ribalda@chromium.org>
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v6 1/2] kexec: Introduce kexec_with_frozen_processes
2022-11-30 15:47 ` Ricardo Ribalda
(?)
@ 2022-11-30 15:47 ` Ricardo Ribalda
-1 siblings, 0 replies; 13+ messages in thread
From: Ricardo Ribalda @ 2022-11-30 15:47 UTC (permalink / raw)
To: Chromeos Kdump, Liam Girdwood, Pierre-Louis Bossart,
Eric Biederman, Daniel Baluta, Mark Brown, Bard Liao,
Jaroslav Kysela, Kai Vehmanen, Ranjani Sridharan, Peter Ujfalusi,
Takashi Iwai, Steven Rostedt
Cc: Ricardo Ribalda, stable, linux-kernel, alsa-devel, kexec,
sound-open-firmware
Drivers running .shutdown() might want to wait for userspace to complete
before exiting.
If userspace is frozen and we are running kexec they will stall the
computer.
Add a way for them to figure out if they should just skip waiting for
userspace.
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
---
include/linux/kexec.h | 3 +++
kernel/kexec_core.c | 5 +++++
2 files changed, 8 insertions(+)
diff --git a/include/linux/kexec.h b/include/linux/kexec.h
index 41a686996aaa..c22711e0f7b5 100644
--- a/include/linux/kexec.h
+++ b/include/linux/kexec.h
@@ -426,6 +426,8 @@ extern int kexec_load_disabled;
/* flag to track if kexec reboot is in progress */
extern bool kexec_in_progress;
+bool kexec_with_frozen_processes(void);
+
int crash_shrink_memory(unsigned long new_size);
ssize_t crash_get_memory_size(void);
@@ -507,6 +509,7 @@ static inline void __crash_kexec(struct pt_regs *regs) { }
static inline void crash_kexec(struct pt_regs *regs) { }
static inline int kexec_should_crash(struct task_struct *p) { return 0; }
static inline int kexec_crash_loaded(void) { return 0; }
+static inline bool kexec_with_frozen_processes(void) { return false; }
#define kexec_in_progress false
#endif /* CONFIG_KEXEC_CORE */
diff --git a/kernel/kexec_core.c b/kernel/kexec_core.c
index ca2743f9c634..8bc8257ee7ca 100644
--- a/kernel/kexec_core.c
+++ b/kernel/kexec_core.c
@@ -54,6 +54,11 @@ note_buf_t __percpu *crash_notes;
/* Flag to indicate we are going to kexec a new kernel */
bool kexec_in_progress = false;
+bool kexec_with_frozen_processes(void)
+{
+ return kexec_in_progress && pm_freezing;
+}
+EXPORT_SYMBOL(kexec_with_frozen_processes);
/* Location of the reserved area for the crash kernel */
struct resource crashk_res = {
--
2.38.1.584.g0f3c55d4c2-goog-b4-0.11.0-dev-696ae
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v6 1/2] kexec: Introduce kexec_with_frozen_processes
@ 2022-11-30 15:47 ` Ricardo Ribalda
0 siblings, 0 replies; 13+ messages in thread
From: Ricardo Ribalda @ 2022-11-30 15:47 UTC (permalink / raw)
To: Chromeos Kdump, Liam Girdwood, Pierre-Louis Bossart,
Eric Biederman, Daniel Baluta, Mark Brown, Bard Liao,
Jaroslav Kysela, Kai Vehmanen, Ranjani Sridharan, Peter Ujfalusi,
Takashi Iwai, Steven Rostedt
Cc: Ricardo Ribalda, stable, linux-kernel, alsa-devel, kexec,
sound-open-firmware
Drivers running .shutdown() might want to wait for userspace to complete
before exiting.
If userspace is frozen and we are running kexec they will stall the
computer.
Add a way for them to figure out if they should just skip waiting for
userspace.
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
---
include/linux/kexec.h | 3 +++
kernel/kexec_core.c | 5 +++++
2 files changed, 8 insertions(+)
diff --git a/include/linux/kexec.h b/include/linux/kexec.h
index 41a686996aaa..c22711e0f7b5 100644
--- a/include/linux/kexec.h
+++ b/include/linux/kexec.h
@@ -426,6 +426,8 @@ extern int kexec_load_disabled;
/* flag to track if kexec reboot is in progress */
extern bool kexec_in_progress;
+bool kexec_with_frozen_processes(void);
+
int crash_shrink_memory(unsigned long new_size);
ssize_t crash_get_memory_size(void);
@@ -507,6 +509,7 @@ static inline void __crash_kexec(struct pt_regs *regs) { }
static inline void crash_kexec(struct pt_regs *regs) { }
static inline int kexec_should_crash(struct task_struct *p) { return 0; }
static inline int kexec_crash_loaded(void) { return 0; }
+static inline bool kexec_with_frozen_processes(void) { return false; }
#define kexec_in_progress false
#endif /* CONFIG_KEXEC_CORE */
diff --git a/kernel/kexec_core.c b/kernel/kexec_core.c
index ca2743f9c634..8bc8257ee7ca 100644
--- a/kernel/kexec_core.c
+++ b/kernel/kexec_core.c
@@ -54,6 +54,11 @@ note_buf_t __percpu *crash_notes;
/* Flag to indicate we are going to kexec a new kernel */
bool kexec_in_progress = false;
+bool kexec_with_frozen_processes(void)
+{
+ return kexec_in_progress && pm_freezing;
+}
+EXPORT_SYMBOL(kexec_with_frozen_processes);
/* Location of the reserved area for the crash kernel */
struct resource crashk_res = {
--
2.38.1.584.g0f3c55d4c2-goog-b4-0.11.0-dev-696ae
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v6 1/2] kexec: Introduce kexec_with_frozen_processes
@ 2022-11-30 15:47 ` Ricardo Ribalda
0 siblings, 0 replies; 13+ messages in thread
From: Ricardo Ribalda @ 2022-11-30 15:47 UTC (permalink / raw)
To: Chromeos Kdump, Liam Girdwood, Pierre-Louis Bossart,
Eric Biederman, Daniel Baluta, Mark Brown, Bard Liao,
Jaroslav Kysela, Kai Vehmanen, Ranjani Sridharan, Peter Ujfalusi,
Takashi Iwai, Steven Rostedt
Cc: alsa-devel, kexec, linux-kernel, stable, Ricardo Ribalda,
sound-open-firmware
Drivers running .shutdown() might want to wait for userspace to complete
before exiting.
If userspace is frozen and we are running kexec they will stall the
computer.
Add a way for them to figure out if they should just skip waiting for
userspace.
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
---
include/linux/kexec.h | 3 +++
kernel/kexec_core.c | 5 +++++
2 files changed, 8 insertions(+)
diff --git a/include/linux/kexec.h b/include/linux/kexec.h
index 41a686996aaa..c22711e0f7b5 100644
--- a/include/linux/kexec.h
+++ b/include/linux/kexec.h
@@ -426,6 +426,8 @@ extern int kexec_load_disabled;
/* flag to track if kexec reboot is in progress */
extern bool kexec_in_progress;
+bool kexec_with_frozen_processes(void);
+
int crash_shrink_memory(unsigned long new_size);
ssize_t crash_get_memory_size(void);
@@ -507,6 +509,7 @@ static inline void __crash_kexec(struct pt_regs *regs) { }
static inline void crash_kexec(struct pt_regs *regs) { }
static inline int kexec_should_crash(struct task_struct *p) { return 0; }
static inline int kexec_crash_loaded(void) { return 0; }
+static inline bool kexec_with_frozen_processes(void) { return false; }
#define kexec_in_progress false
#endif /* CONFIG_KEXEC_CORE */
diff --git a/kernel/kexec_core.c b/kernel/kexec_core.c
index ca2743f9c634..8bc8257ee7ca 100644
--- a/kernel/kexec_core.c
+++ b/kernel/kexec_core.c
@@ -54,6 +54,11 @@ note_buf_t __percpu *crash_notes;
/* Flag to indicate we are going to kexec a new kernel */
bool kexec_in_progress = false;
+bool kexec_with_frozen_processes(void)
+{
+ return kexec_in_progress && pm_freezing;
+}
+EXPORT_SYMBOL(kexec_with_frozen_processes);
/* Location of the reserved area for the crash kernel */
struct resource crashk_res = {
--
2.38.1.584.g0f3c55d4c2-goog-b4-0.11.0-dev-696ae
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v6 2/2] ASoC: SOF: Fix deadlock when shutdown a frozen userspace
2022-11-30 15:47 ` Ricardo Ribalda
(?)
@ 2022-11-30 15:47 ` Ricardo Ribalda
-1 siblings, 0 replies; 13+ messages in thread
From: Ricardo Ribalda @ 2022-11-30 15:47 UTC (permalink / raw)
To: Chromeos Kdump, Liam Girdwood, Pierre-Louis Bossart,
Eric Biederman, Daniel Baluta, Mark Brown, Bard Liao,
Jaroslav Kysela, Kai Vehmanen, Ranjani Sridharan, Peter Ujfalusi,
Takashi Iwai, Steven Rostedt
Cc: Ricardo Ribalda, stable, linux-kernel, alsa-devel, kexec,
sound-open-firmware
During kexec(), the userspace is frozen. Therefore we cannot wait for it
to complete.
Avoid running snd_sof_machine_unregister during shutdown.
This fixes:
[ 84.943749] Freezing user space processes ... (elapsed 0.111 seconds) done.
[ 246.784446] INFO: task kexec-lite:5123 blocked for more than 122 seconds.
[ 246.819035] Call Trace:
[ 246.821782] <TASK>
[ 246.824186] __schedule+0x5f9/0x1263
[ 246.828231] schedule+0x87/0xc5
[ 246.831779] snd_card_disconnect_sync+0xb5/0x127
...
[ 246.889249] snd_sof_device_shutdown+0xb4/0x150
[ 246.899317] pci_device_shutdown+0x37/0x61
[ 246.903990] device_shutdown+0x14c/0x1d6
[ 246.908391] kernel_kexec+0x45/0xb9
And:
[ 246.893222] INFO: task kexec-lite:4891 blocked for more than 122 seconds.
[ 246.927709] Call Trace:
[ 246.930461] <TASK>
[ 246.932819] __schedule+0x5f9/0x1263
[ 246.936855] ? fsnotify_grab_connector+0x5c/0x70
[ 246.942045] schedule+0x87/0xc5
[ 246.945567] schedule_timeout+0x49/0xf3
[ 246.949877] wait_for_completion+0x86/0xe8
[ 246.954463] snd_card_free+0x68/0x89
...
[ 247.001080] platform_device_unregister+0x12/0x35
Cc: stable@vger.kernel.org
Fixes: 83bfc7e793b5 ("ASoC: SOF: core: unregister clients and machine drivers in .shutdown")
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
---
sound/soc/sof/core.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/sound/soc/sof/core.c b/sound/soc/sof/core.c
index 3e6141d03770..4301f347bb90 100644
--- a/sound/soc/sof/core.c
+++ b/sound/soc/sof/core.c
@@ -9,6 +9,7 @@
//
#include <linux/firmware.h>
+#include <linux/kexec.h>
#include <linux/module.h>
#include <sound/soc.h>
#include <sound/sof.h>
@@ -484,7 +485,8 @@ int snd_sof_device_shutdown(struct device *dev)
* make sure clients and machine driver(s) are unregistered to force
* all userspace devices to be closed prior to the DSP shutdown sequence
*/
- sof_unregister_clients(sdev);
+ if (!kexec_with_frozen_processes())
+ sof_unregister_clients(sdev);
snd_sof_machine_unregister(sdev, pdata);
--
2.38.1.584.g0f3c55d4c2-goog-b4-0.11.0-dev-696ae
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v6 2/2] ASoC: SOF: Fix deadlock when shutdown a frozen userspace
@ 2022-11-30 15:47 ` Ricardo Ribalda
0 siblings, 0 replies; 13+ messages in thread
From: Ricardo Ribalda @ 2022-11-30 15:47 UTC (permalink / raw)
To: Chromeos Kdump, Liam Girdwood, Pierre-Louis Bossart,
Eric Biederman, Daniel Baluta, Mark Brown, Bard Liao,
Jaroslav Kysela, Kai Vehmanen, Ranjani Sridharan, Peter Ujfalusi,
Takashi Iwai, Steven Rostedt
Cc: Ricardo Ribalda, stable, linux-kernel, alsa-devel, kexec,
sound-open-firmware
During kexec(), the userspace is frozen. Therefore we cannot wait for it
to complete.
Avoid running snd_sof_machine_unregister during shutdown.
This fixes:
[ 84.943749] Freezing user space processes ... (elapsed 0.111 seconds) done.
[ 246.784446] INFO: task kexec-lite:5123 blocked for more than 122 seconds.
[ 246.819035] Call Trace:
[ 246.821782] <TASK>
[ 246.824186] __schedule+0x5f9/0x1263
[ 246.828231] schedule+0x87/0xc5
[ 246.831779] snd_card_disconnect_sync+0xb5/0x127
...
[ 246.889249] snd_sof_device_shutdown+0xb4/0x150
[ 246.899317] pci_device_shutdown+0x37/0x61
[ 246.903990] device_shutdown+0x14c/0x1d6
[ 246.908391] kernel_kexec+0x45/0xb9
And:
[ 246.893222] INFO: task kexec-lite:4891 blocked for more than 122 seconds.
[ 246.927709] Call Trace:
[ 246.930461] <TASK>
[ 246.932819] __schedule+0x5f9/0x1263
[ 246.936855] ? fsnotify_grab_connector+0x5c/0x70
[ 246.942045] schedule+0x87/0xc5
[ 246.945567] schedule_timeout+0x49/0xf3
[ 246.949877] wait_for_completion+0x86/0xe8
[ 246.954463] snd_card_free+0x68/0x89
...
[ 247.001080] platform_device_unregister+0x12/0x35
Cc: stable@vger.kernel.org
Fixes: 83bfc7e793b5 ("ASoC: SOF: core: unregister clients and machine drivers in .shutdown")
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
---
sound/soc/sof/core.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/sound/soc/sof/core.c b/sound/soc/sof/core.c
index 3e6141d03770..4301f347bb90 100644
--- a/sound/soc/sof/core.c
+++ b/sound/soc/sof/core.c
@@ -9,6 +9,7 @@
//
#include <linux/firmware.h>
+#include <linux/kexec.h>
#include <linux/module.h>
#include <sound/soc.h>
#include <sound/sof.h>
@@ -484,7 +485,8 @@ int snd_sof_device_shutdown(struct device *dev)
* make sure clients and machine driver(s) are unregistered to force
* all userspace devices to be closed prior to the DSP shutdown sequence
*/
- sof_unregister_clients(sdev);
+ if (!kexec_with_frozen_processes())
+ sof_unregister_clients(sdev);
snd_sof_machine_unregister(sdev, pdata);
--
2.38.1.584.g0f3c55d4c2-goog-b4-0.11.0-dev-696ae
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v6 2/2] ASoC: SOF: Fix deadlock when shutdown a frozen userspace
@ 2022-11-30 15:47 ` Ricardo Ribalda
0 siblings, 0 replies; 13+ messages in thread
From: Ricardo Ribalda @ 2022-11-30 15:47 UTC (permalink / raw)
To: Chromeos Kdump, Liam Girdwood, Pierre-Louis Bossart,
Eric Biederman, Daniel Baluta, Mark Brown, Bard Liao,
Jaroslav Kysela, Kai Vehmanen, Ranjani Sridharan, Peter Ujfalusi,
Takashi Iwai, Steven Rostedt
Cc: alsa-devel, kexec, linux-kernel, stable, Ricardo Ribalda,
sound-open-firmware
During kexec(), the userspace is frozen. Therefore we cannot wait for it
to complete.
Avoid running snd_sof_machine_unregister during shutdown.
This fixes:
[ 84.943749] Freezing user space processes ... (elapsed 0.111 seconds) done.
[ 246.784446] INFO: task kexec-lite:5123 blocked for more than 122 seconds.
[ 246.819035] Call Trace:
[ 246.821782] <TASK>
[ 246.824186] __schedule+0x5f9/0x1263
[ 246.828231] schedule+0x87/0xc5
[ 246.831779] snd_card_disconnect_sync+0xb5/0x127
...
[ 246.889249] snd_sof_device_shutdown+0xb4/0x150
[ 246.899317] pci_device_shutdown+0x37/0x61
[ 246.903990] device_shutdown+0x14c/0x1d6
[ 246.908391] kernel_kexec+0x45/0xb9
And:
[ 246.893222] INFO: task kexec-lite:4891 blocked for more than 122 seconds.
[ 246.927709] Call Trace:
[ 246.930461] <TASK>
[ 246.932819] __schedule+0x5f9/0x1263
[ 246.936855] ? fsnotify_grab_connector+0x5c/0x70
[ 246.942045] schedule+0x87/0xc5
[ 246.945567] schedule_timeout+0x49/0xf3
[ 246.949877] wait_for_completion+0x86/0xe8
[ 246.954463] snd_card_free+0x68/0x89
...
[ 247.001080] platform_device_unregister+0x12/0x35
Cc: stable@vger.kernel.org
Fixes: 83bfc7e793b5 ("ASoC: SOF: core: unregister clients and machine drivers in .shutdown")
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
---
sound/soc/sof/core.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/sound/soc/sof/core.c b/sound/soc/sof/core.c
index 3e6141d03770..4301f347bb90 100644
--- a/sound/soc/sof/core.c
+++ b/sound/soc/sof/core.c
@@ -9,6 +9,7 @@
//
#include <linux/firmware.h>
+#include <linux/kexec.h>
#include <linux/module.h>
#include <sound/soc.h>
#include <sound/sof.h>
@@ -484,7 +485,8 @@ int snd_sof_device_shutdown(struct device *dev)
* make sure clients and machine driver(s) are unregistered to force
* all userspace devices to be closed prior to the DSP shutdown sequence
*/
- sof_unregister_clients(sdev);
+ if (!kexec_with_frozen_processes())
+ sof_unregister_clients(sdev);
snd_sof_machine_unregister(sdev, pdata);
--
2.38.1.584.g0f3c55d4c2-goog-b4-0.11.0-dev-696ae
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v6 1/2] kexec: Introduce kexec_with_frozen_processes
2022-11-30 15:47 ` Ricardo Ribalda
(?)
(?)
@ 2022-11-30 15:49 ` kernel test robot
-1 siblings, 0 replies; 13+ messages in thread
From: kernel test robot @ 2022-11-30 15:49 UTC (permalink / raw)
To: Ricardo Ribalda; +Cc: stable, oe-kbuild-all
Hi,
Thanks for your patch.
FYI: kernel test robot notices the stable kernel rule is not satisfied.
Rule: 'Cc: stable@vger.kernel.org' or 'commit <sha1> upstream.'
Subject: [PATCH v6 1/2] kexec: Introduce kexec_with_frozen_processes
Link: https://lore.kernel.org/stable/20221127-snd-freeze-v6-1-3e90553f64a5%40chromium.org
The check is based on https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v6 2/2] ASoC: SOF: Fix deadlock when shutdown a frozen userspace
2022-11-30 15:47 ` Ricardo Ribalda
(?)
@ 2022-11-30 15:54 ` Pierre-Louis Bossart
-1 siblings, 0 replies; 13+ messages in thread
From: Pierre-Louis Bossart @ 2022-11-30 15:54 UTC (permalink / raw)
To: Ricardo Ribalda, Chromeos Kdump, Liam Girdwood, Eric Biederman,
Daniel Baluta, Mark Brown, Bard Liao, Jaroslav Kysela,
Kai Vehmanen, Ranjani Sridharan, Peter Ujfalusi, Takashi Iwai,
Steven Rostedt
Cc: stable, linux-kernel, alsa-devel, kexec, sound-open-firmware
On 11/30/22 09:47, Ricardo Ribalda wrote:
> During kexec(), the userspace is frozen. Therefore we cannot wait for it
> to complete.
>
> Avoid running snd_sof_machine_unregister during shutdown.
That's not what you are doing below - you only unregister clients
conditionally.
I don't know if that's a stale commit message and can't reconcile it
either with the initial discussions in this thread where we were
referring to snd_card_disconnect(), etc?
Confused.
> @@ -484,7 +485,8 @@ int snd_sof_device_shutdown(struct device *dev)
> * make sure clients and machine driver(s) are unregistered to force
> * all userspace devices to be closed prior to the DSP shutdown sequence
> */
> - sof_unregister_clients(sdev);
> + if (!kexec_with_frozen_processes())
> + sof_unregister_clients(sdev);
>
> snd_sof_machine_unregister(sdev, pdata);
>
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v6 2/2] ASoC: SOF: Fix deadlock when shutdown a frozen userspace
@ 2022-11-30 15:54 ` Pierre-Louis Bossart
0 siblings, 0 replies; 13+ messages in thread
From: Pierre-Louis Bossart @ 2022-11-30 15:54 UTC (permalink / raw)
To: Ricardo Ribalda, Chromeos Kdump, Liam Girdwood, Eric Biederman,
Daniel Baluta, Mark Brown, Bard Liao, Jaroslav Kysela,
Kai Vehmanen, Ranjani Sridharan, Peter Ujfalusi, Takashi Iwai,
Steven Rostedt
Cc: stable, linux-kernel, alsa-devel, kexec, sound-open-firmware
On 11/30/22 09:47, Ricardo Ribalda wrote:
> During kexec(), the userspace is frozen. Therefore we cannot wait for it
> to complete.
>
> Avoid running snd_sof_machine_unregister during shutdown.
That's not what you are doing below - you only unregister clients
conditionally.
I don't know if that's a stale commit message and can't reconcile it
either with the initial discussions in this thread where we were
referring to snd_card_disconnect(), etc?
Confused.
> @@ -484,7 +485,8 @@ int snd_sof_device_shutdown(struct device *dev)
> * make sure clients and machine driver(s) are unregistered to force
> * all userspace devices to be closed prior to the DSP shutdown sequence
> */
> - sof_unregister_clients(sdev);
> + if (!kexec_with_frozen_processes())
> + sof_unregister_clients(sdev);
>
> snd_sof_machine_unregister(sdev, pdata);
>
>
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v6 2/2] ASoC: SOF: Fix deadlock when shutdown a frozen userspace
@ 2022-11-30 15:54 ` Pierre-Louis Bossart
0 siblings, 0 replies; 13+ messages in thread
From: Pierre-Louis Bossart @ 2022-11-30 15:54 UTC (permalink / raw)
To: Ricardo Ribalda, Chromeos Kdump, Liam Girdwood, Eric Biederman,
Daniel Baluta, Mark Brown, Bard Liao, Jaroslav Kysela,
Kai Vehmanen, Ranjani Sridharan, Peter Ujfalusi, Takashi Iwai,
Steven Rostedt
Cc: alsa-devel, kexec, linux-kernel, stable, sound-open-firmware
On 11/30/22 09:47, Ricardo Ribalda wrote:
> During kexec(), the userspace is frozen. Therefore we cannot wait for it
> to complete.
>
> Avoid running snd_sof_machine_unregister during shutdown.
That's not what you are doing below - you only unregister clients
conditionally.
I don't know if that's a stale commit message and can't reconcile it
either with the initial discussions in this thread where we were
referring to snd_card_disconnect(), etc?
Confused.
> @@ -484,7 +485,8 @@ int snd_sof_device_shutdown(struct device *dev)
> * make sure clients and machine driver(s) are unregistered to force
> * all userspace devices to be closed prior to the DSP shutdown sequence
> */
> - sof_unregister_clients(sdev);
> + if (!kexec_with_frozen_processes())
> + sof_unregister_clients(sdev);
>
> snd_sof_machine_unregister(sdev, pdata);
>
>
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2022-11-30 15:55 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-30 15:47 [PATCH v6 0/2] ASoC: SOF: Fix deadlock when shutdown a frozen userspace Ricardo Ribalda
2022-11-30 15:47 ` Ricardo Ribalda
2022-11-30 15:47 ` Ricardo Ribalda
2022-11-30 15:47 ` [PATCH v6 1/2] kexec: Introduce kexec_with_frozen_processes Ricardo Ribalda
2022-11-30 15:47 ` Ricardo Ribalda
2022-11-30 15:47 ` Ricardo Ribalda
2022-11-30 15:49 ` kernel test robot
2022-11-30 15:47 ` [PATCH v6 2/2] ASoC: SOF: Fix deadlock when shutdown a frozen userspace Ricardo Ribalda
2022-11-30 15:47 ` Ricardo Ribalda
2022-11-30 15:47 ` Ricardo Ribalda
2022-11-30 15:54 ` Pierre-Louis Bossart
2022-11-30 15:54 ` Pierre-Louis Bossart
2022-11-30 15:54 ` Pierre-Louis Bossart
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.