wbinvd_on_all_cpus();
 
        rc = __sev_do_cmd_locked(cmd, arg, error);
-       if (rc)
+       if (rc) {
+               dev_err(sev->dev, "SEV-SNP: %s failed rc %d, error %#x\n",
+                       cmd == SEV_CMD_SNP_INIT_EX ? "SNP_INIT_EX" : "SNP_INIT",
+                       rc, *error);
                return rc;
+       }
 
        /* Prepare for first SNP guest launch after INIT. */
        wbinvd_on_all_cpus();
        rc = __sev_do_cmd_locked(SEV_CMD_SNP_DF_FLUSH, NULL, error);
-       if (rc)
+       if (rc) {
+               dev_err(sev->dev, "SEV-SNP: SNP_DF_FLUSH failed rc %d, error %#x\n",
+                       rc, *error);
                return rc;
+       }
 
        sev->snp_initialized = true;
        dev_dbg(sev->dev, "SEV-SNP firmware initialized\n");
 
+       dev_info(sev->dev, "SEV-SNP API:%d.%d build:%d\n", sev->api_major,
+                sev->api_minor, sev->build);
+
        sev_es_tmr_size = SNP_TMR_SIZE;
 
-       return rc;
+       return 0;
 }
 
 static void __sev_platform_init_handle_tmr(struct sev_device *sev)
        if (error)
                *error = psp_ret;
 
-       if (rc)
+       if (rc) {
+               dev_err(sev->dev, "SEV: %s failed %#x, rc %d\n",
+                       sev_init_ex_buffer ? "INIT_EX" : "INIT", psp_ret, rc);
                return rc;
+       }
 
        sev->state = SEV_STATE_INIT;
 
        /* Prepare for first SEV guest launch after INIT */
        wbinvd_on_all_cpus();
        rc = __sev_do_cmd_locked(SEV_CMD_DF_FLUSH, NULL, error);
-       if (rc)
+       if (rc) {
+               dev_err(sev->dev, "SEV: DF_FLUSH failed %#x, rc %d\n",
+                       *error, rc);
                return rc;
+       }
 
        dev_dbg(sev->dev, "SEV firmware initialized\n");
 
         * so perform SEV-SNP initialization at probe time.
         */
        rc = __sev_snp_init_locked(&args->error);
-       if (rc && rc != -ENODEV) {
-               dev_err(sev->dev, "SEV-SNP: failed to INIT rc %d, error %#x\n",
-                       rc, args->error);
+       if (rc && rc != -ENODEV)
                return rc;
-       }
 
        /* Defer legacy SEV/SEV-ES support if allowed by caller/module. */
        if (args->probe && !psp_init_on_probe)
                return 0;
 
        ret = __sev_do_cmd_locked(SEV_CMD_SHUTDOWN, NULL, error);
-       if (ret)
+       if (ret) {
+               dev_err(sev->dev, "SEV: failed to SHUTDOWN error %#x, rc %d\n",
+                       *error, ret);
                return ret;
+       }
 
        sev->state = SEV_STATE_UNINIT;
        dev_dbg(sev->dev, "SEV firmware shutdown\n");
        ret = __sev_do_cmd_locked(SEV_CMD_SNP_SHUTDOWN_EX, &data, error);
        /* SHUTDOWN may require DF_FLUSH */
        if (*error == SEV_RET_DFFLUSH_REQUIRED) {
-               ret = __sev_do_cmd_locked(SEV_CMD_SNP_DF_FLUSH, NULL, NULL);
+               int dfflush_error;
+
+               ret = __sev_do_cmd_locked(SEV_CMD_SNP_DF_FLUSH, NULL, &dfflush_error);
                if (ret) {
-                       dev_err(sev->dev, "SEV-SNP DF_FLUSH failed\n");
+                       dev_err(sev->dev, "SEV-SNP DF_FLUSH failed, ret = %d, error = %#x\n",
+                               ret, dfflush_error);
                        return ret;
                }
                /* reissue the shutdown command */
                                          error);
        }
        if (ret) {
-               dev_err(sev->dev, "SEV-SNP firmware shutdown failed\n");
+               dev_err(sev->dev, "SEV-SNP firmware shutdown failed, rc %d, error %#x\n",
+                       ret, *error);
                return ret;
        }
 
                dev_err(sev->dev, "SEV: failed to INIT error %#x, rc %d\n",
                        args.error, rc);
 
-       dev_info(sev->dev, "SEV%s API:%d.%d build:%d\n", sev->snp_initialized ?
-               "-SNP" : "", sev->api_major, sev->api_minor, sev->build);
-
        atomic_notifier_chain_register(&panic_notifier_list,
                                       &snp_panic_notifier);
        return;