dev_err(sdev->dev, "fw_state: UNKNOWN (%d)\n", sdev->fw_state);
 }
 
-void snd_sof_dsp_dbg_dump(struct snd_sof_dev *sdev, u32 flags)
+void snd_sof_dsp_dbg_dump(struct snd_sof_dev *sdev, const char *msg, u32 flags)
 {
        bool print_all = sof_debug_check_flag(SOF_DBG_PRINT_ALL_DUMPS);
 
 
        if (sof_ops(sdev)->dbg_dump && !sdev->dbg_dump_printed) {
                dev_err(sdev->dev, "------------[ DSP dump start ]------------\n");
+               if (msg)
+                       dev_err(sdev->dev, "%s\n", msg);
                snd_sof_dbg_print_fw_state(sdev);
                sof_ops(sdev)->dbg_dump(sdev, flags);
                dev_err(sdev->dev, "------------[ DSP dump end ]------------\n");
                if (!print_all)
                        sdev->dbg_dump_printed = true;
+       } else if (msg) {
+               dev_err(sdev->dev, "%s\n", msg);
        }
 }
 EXPORT_SYMBOL(snd_sof_dsp_dbg_dump);
 
        /* dump vital information to the logs */
        snd_sof_ipc_dump(sdev);
-       snd_sof_dsp_dbg_dump(sdev, SOF_DBG_DUMP_REGS | SOF_DBG_DUMP_MBOX);
+       snd_sof_dsp_dbg_dump(sdev, "Firmware exception",
+                            SOF_DBG_DUMP_REGS | SOF_DBG_DUMP_MBOX);
        snd_sof_trace_notify_for_error(sdev);
 }
 EXPORT_SYMBOL(snd_sof_handle_fw_exception);
 
        const struct sof_intel_dsp_desc *chip = hda->desc;
        unsigned int status;
        unsigned long mask;
+       char *dump_msg;
        u32 flags, j;
        int ret;
        int i;
        if (hda->boot_iteration == HDA_FW_BOOT_ATTEMPTS)
                flags &= ~SOF_DBG_DUMP_OPTIONAL;
 
-       snd_sof_dsp_dbg_dump(sdev, flags);
+       dump_msg = kasprintf(GFP_KERNEL, "Boot iteration failed: %d/%d",
+                            hda->boot_iteration, HDA_FW_BOOT_ATTEMPTS);
+       snd_sof_dsp_dbg_dump(sdev, dump_msg, flags);
        hda_dsp_core_reset_power_down(sdev, chip->host_managed_cores_mask);
 
+       kfree(dump_msg);
        return ret;
 }
 
         */
        hda->boot_iteration = HDA_FW_BOOT_ATTEMPTS;
        ret = cl_copy_fw(sdev, stream);
-       if (!ret) {
+       if (!ret)
                dev_dbg(sdev->dev, "Firmware download successful, booting...\n");
-       } else {
-               snd_sof_dsp_dbg_dump(sdev, SOF_DBG_DUMP_PCI | SOF_DBG_DUMP_MBOX);
-               dev_err(sdev->dev, "error: load fw failed ret: %d\n", ret);
-       }
+       else
+               snd_sof_dsp_dbg_dump(sdev, "Firmware download failed",
+                                    SOF_DBG_DUMP_PCI | SOF_DBG_DUMP_MBOX);
 
 cleanup:
        /*
 
        /* boot the firmware on the DSP */
        ret = snd_sof_dsp_run(sdev);
        if (ret < 0) {
-               dev_err(sdev->dev, "error: failed to start DSP\n");
-               snd_sof_dsp_dbg_dump(sdev, SOF_DBG_DUMP_MBOX | SOF_DBG_DUMP_PCI);
+               snd_sof_dsp_dbg_dump(sdev, "Failed to start DSP",
+                                    SOF_DBG_DUMP_MBOX | SOF_DBG_DUMP_PCI);
                return ret;
        }
 
                                 sdev->fw_state > SOF_FW_BOOT_IN_PROGRESS,
                                 msecs_to_jiffies(sdev->boot_timeout));
        if (ret == 0) {
-               dev_err(sdev->dev, "error: firmware boot failure\n");
-               snd_sof_dsp_dbg_dump(sdev, SOF_DBG_DUMP_REGS | SOF_DBG_DUMP_MBOX |
+               snd_sof_dsp_dbg_dump(sdev, "Firmware boot failure due to timeout",
+                                    SOF_DBG_DUMP_REGS | SOF_DBG_DUMP_MBOX |
                                     SOF_DBG_DUMP_TEXT | SOF_DBG_DUMP_PCI);
                sof_set_fw_state(sdev, SOF_FW_BOOT_FAILED);
                return -EIO;
 
         * if all dumps should be printed
         */
        if (non_recoverable || sof_debug_check_flag(SOF_DBG_PRINT_ALL_DUMPS)) {
-               dev_err(sdev->dev, "DSP panic!\n");
-
                /* We want to see the DSP panic! */
                sdev->dbg_dump_printed = false;
 
-               snd_sof_dsp_dbg_dump(sdev, SOF_DBG_DUMP_REGS | SOF_DBG_DUMP_MBOX);
+               snd_sof_dsp_dbg_dump(sdev, "DSP panic!",
+                                    SOF_DBG_DUMP_REGS | SOF_DBG_DUMP_MBOX);
                snd_sof_trace_notify_for_error(sdev);
        }
 }
 
 }
 
 /* debug */
-void snd_sof_dsp_dbg_dump(struct snd_sof_dev *sdev, u32 flags);
+void snd_sof_dsp_dbg_dump(struct snd_sof_dev *sdev, const char *msg, u32 flags);
 
 static inline int snd_sof_debugfs_add_region_item(struct snd_sof_dev *sdev,
                enum snd_sof_fw_blk_type blk_type, u32 offset, size_t size,