]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
ASoC: SOF: Rename snd_sof_get_status() and add kernel log level parameter
authorPeter Ujfalusi <peter.ujfalusi@linux.intel.com>
Thu, 23 Dec 2021 11:36:25 +0000 (13:36 +0200)
committerMark Brown <broonie@kernel.org>
Thu, 23 Dec 2021 13:38:26 +0000 (13:38 +0000)
The snd_sof_get_status() is not the best name for a function which in fact
is tasked to print out DSP oops and stack. Rename it to
sof_print_oops_and_stack().

At the same time add a new parameter to specify the desired kernel log
level to be used for the prints.

When updating the users of the function, pass KERN_ERR for now to make sure
that there is no functional change happens.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Chao Song <chao.song@intel.com>
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Link: https://lore.kernel.org/r/20211223113628.18582-18-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/core.c
sound/soc/sof/imx/imx-common.c
sound/soc/sof/intel/atom.c
sound/soc/sof/intel/bdw.c
sound/soc/sof/intel/hda.c
sound/soc/sof/sof-priv.h

index c3630ecc7d89ad3ae4575e5b252e720738415756..8f32b5b12b3e91502bb75c5d52cb6afd389971e9 100644 (file)
@@ -68,23 +68,33 @@ static const struct sof_panic_msg panic_msg[] = {
        {SOF_IPC_PANIC_ASSERT, "assertion failed"},
 };
 
-/*
+/**
+ * sof_print_oops_and_stack - Handle the printing of DSP oops and stack trace
+ * @sdev: Pointer to the device's sdev
+ * @level: prink log level to use for the printing
+ * @panic_code: the panic code
+ * @tracep_code: tracepoint code
+ * @oops: Pointer to DSP specific oops data
+ * @panic_info: Pointer to the received panic information message
+ * @stack: Pointer to the call stack data
+ * @stack_words: Number of words in the stack data
+ *
  * helper to be called from .dbg_dump callbacks. No error code is
  * provided, it's left as an exercise for the caller of .dbg_dump
  * (typically IPC or loader)
  */
-void snd_sof_get_status(struct snd_sof_dev *sdev, u32 panic_code,
-                       u32 tracep_code, void *oops,
-                       struct sof_ipc_panic_info *panic_info,
-                       void *stack, size_t stack_words)
+void sof_print_oops_and_stack(struct snd_sof_dev *sdev, const char *level,
+                             u32 panic_code, u32 tracep_code, void *oops,
+                             struct sof_ipc_panic_info *panic_info,
+                             void *stack, size_t stack_words)
 {
        u32 code;
        int i;
 
        /* is firmware dead ? */
        if ((panic_code & SOF_IPC_PANIC_MAGIC_MASK) != SOF_IPC_PANIC_MAGIC) {
-               dev_err(sdev->dev, "unexpected fault %#010x trace %#010x\n",
-                       panic_code, tracep_code);
+               dev_printk(level, sdev->dev, "unexpected fault %#010x trace %#010x\n",
+                          panic_code, tracep_code);
                return; /* no fault ? */
        }
 
@@ -92,24 +102,25 @@ void snd_sof_get_status(struct snd_sof_dev *sdev, u32 panic_code,
 
        for (i = 0; i < ARRAY_SIZE(panic_msg); i++) {
                if (panic_msg[i].id == code) {
-                       dev_err(sdev->dev, "reason: %s (%#x)\n", panic_msg[i].msg,
-                               code & SOF_IPC_PANIC_CODE_MASK);
-                       dev_err(sdev->dev, "trace point: %#010x\n", tracep_code);
+                       dev_printk(level, sdev->dev, "reason: %s (%#x)\n",
+                                  panic_msg[i].msg, code & SOF_IPC_PANIC_CODE_MASK);
+                       dev_printk(level, sdev->dev, "trace point: %#010x\n", tracep_code);
                        goto out;
                }
        }
 
        /* unknown error */
-       dev_err(sdev->dev, "unknown panic code: %#x\n", code & SOF_IPC_PANIC_CODE_MASK);
-       dev_err(sdev->dev, "trace point: %#010x\n", tracep_code);
+       dev_printk(level, sdev->dev, "unknown panic code: %#x\n",
+                  code & SOF_IPC_PANIC_CODE_MASK);
+       dev_printk(level, sdev->dev, "trace point: %#010x\n", tracep_code);
 
 out:
-       dev_err(sdev->dev, "panic at %s:%d\n", panic_info->filename,
-               panic_info->linenum);
-       sof_oops(sdev, KERN_ERR, oops);
-       sof_stack(sdev, KERN_ERR, oops, stack, stack_words);
+       dev_printk(level, sdev->dev, "panic at %s:%d\n", panic_info->filename,
+                  panic_info->linenum);
+       sof_oops(sdev, level, oops);
+       sof_stack(sdev, level, oops, stack, stack_words);
 }
-EXPORT_SYMBOL(snd_sof_get_status);
+EXPORT_SYMBOL(sof_print_oops_and_stack);
 
 /*
  *                     FW Boot State Transition Diagram
index 9371e9062cb14ffe06c1ce0cfb051b105be14901..36e3d414a18f4c465d76e395ac8bdf8e87630503 100644 (file)
@@ -69,8 +69,8 @@ void imx8_dump(struct snd_sof_dev *sdev, u32 flags)
                           IMX8_STACK_DUMP_SIZE);
 
        /* Print the information to the console */
-       snd_sof_get_status(sdev, status, status, &xoops, &panic_info, stack,
-                          IMX8_STACK_DUMP_SIZE);
+       sof_print_oops_and_stack(sdev, KERN_ERR, status, status, &xoops,
+                                &panic_info, stack, IMX8_STACK_DUMP_SIZE);
 }
 EXPORT_SYMBOL(imx8_dump);
 
index bcb2eb2acf2e2bbaa758e6c5ff0e7575409a735d..ff5900b155dc99ad5c184a5aadec9d411833b844 100644 (file)
@@ -70,8 +70,8 @@ void atom_dump(struct snd_sof_dev *sdev, u32 flags)
        panic = snd_sof_dsp_read64(sdev, DSP_BAR, SHIM_IPCX);
        atom_get_registers(sdev, &xoops, &panic_info, stack,
                           STACK_DUMP_SIZE);
-       snd_sof_get_status(sdev, status, panic, &xoops, &panic_info, stack,
-                          STACK_DUMP_SIZE);
+       sof_print_oops_and_stack(sdev, KERN_ERR, status, panic, &xoops,
+                                &panic_info, stack, STACK_DUMP_SIZE);
 
        /* provide some context for firmware debug */
        imrx = snd_sof_dsp_read64(sdev, DSP_BAR, SHIM_IMRX);
index 10c9a0b39371b75357146c2165a10b2fa1e6a048..d627b7498d5e5a646c24bd582fd392b3b04eab24 100644 (file)
@@ -258,8 +258,8 @@ static void bdw_dump(struct snd_sof_dev *sdev, u32 flags)
        panic = snd_sof_dsp_read(sdev, BDW_DSP_BAR, SHIM_IPCX);
        bdw_get_registers(sdev, &xoops, &panic_info, stack,
                          BDW_STACK_DUMP_SIZE);
-       snd_sof_get_status(sdev, status, panic, &xoops, &panic_info, stack,
-                          BDW_STACK_DUMP_SIZE);
+       sof_print_oops_and_stack(sdev, KERN_ERR, status, panic, &xoops,
+                                &panic_info, stack, BDW_STACK_DUMP_SIZE);
 
        /* provide some context for firmware debug */
        imrx = snd_sof_dsp_read(sdev, BDW_DSP_BAR, SHIM_IMRX);
index 21100d2e6644ba11ae710149adae27e08c6a2774..97027530ecef9c884e1accffd521d1bd357dc285 100644 (file)
@@ -554,8 +554,8 @@ void hda_dsp_dump(struct snd_sof_dev *sdev, u32 flags)
 
                hda_dsp_get_registers(sdev, &xoops, &panic_info, stack,
                                      HDA_DSP_STACK_DUMP_SIZE);
-               snd_sof_get_status(sdev, status, panic, &xoops, &panic_info,
-                                  stack, HDA_DSP_STACK_DUMP_SIZE);
+               sof_print_oops_and_stack(sdev, KERN_ERR, status, panic, &xoops,
+                                        &panic_info, stack, HDA_DSP_STACK_DUMP_SIZE);
        } else {
                hda_dsp_dump_ext_rom_status(sdev, flags);
        }
index 598f858f0e1bff4b7b3361af31e9d24a2aedf615..5fbd4f29321a58076aebfc47c69e83d008e686d1 100644 (file)
@@ -559,10 +559,10 @@ int snd_sof_debugfs_buf_item(struct snd_sof_dev *sdev,
 int snd_sof_trace_update_pos(struct snd_sof_dev *sdev,
                             struct sof_ipc_dma_trace_posn *posn);
 void snd_sof_trace_notify_for_error(struct snd_sof_dev *sdev);
-void snd_sof_get_status(struct snd_sof_dev *sdev, u32 panic_code,
-                       u32 tracep_code, void *oops,
-                       struct sof_ipc_panic_info *panic_info,
-                       void *stack, size_t stack_words);
+void sof_print_oops_and_stack(struct snd_sof_dev *sdev, const char *level,
+                             u32 panic_code, u32 tracep_code, void *oops,
+                             struct sof_ipc_panic_info *panic_info,
+                             void *stack, size_t stack_words);
 int snd_sof_init_trace_ipc(struct snd_sof_dev *sdev);
 void snd_sof_handle_fw_exception(struct snd_sof_dev *sdev);
 int snd_sof_dbg_memory_info_init(struct snd_sof_dev *sdev);