}
 
 const struct amd_ip_funcs acp_ip_funcs = {
+       .name = "acp_ip",
        .early_init = acp_early_init,
        .late_init = NULL,
        .sw_init = acp_sw_init,
 
                                if (r == -ENOENT) {
                                        adev->ip_block_status[i].valid = false;
                                } else if (r) {
-                                       DRM_ERROR("early_init %d failed %d\n", i, r);
+                                       DRM_ERROR("early_init of IP block <%s> failed %d\n", adev->ip_blocks[i].funcs->name, r);
                                        return r;
                                } else {
                                        adev->ip_block_status[i].valid = true;
 
 }
 
 const struct amd_ip_funcs amdgpu_pp_ip_funcs = {
+       .name = "amdgpu_powerplay",
        .early_init = amdgpu_pp_early_init,
        .late_init = amdgpu_pp_late_init,
        .sw_init = amdgpu_pp_sw_init,
 
 }
 
 const struct amd_ip_funcs ci_dpm_ip_funcs = {
+       .name = "ci_dpm",
        .early_init = ci_dpm_early_init,
        .late_init = ci_dpm_late_init,
        .sw_init = ci_dpm_sw_init,
 
 }
 
 const struct amd_ip_funcs cik_common_ip_funcs = {
+       .name = "cik_common",
        .early_init = cik_common_early_init,
        .late_init = NULL,
        .sw_init = cik_common_sw_init,
 
 }
 
 const struct amd_ip_funcs cik_ih_ip_funcs = {
+       .name = "cik_ih",
        .early_init = cik_ih_early_init,
        .late_init = NULL,
        .sw_init = cik_ih_sw_init,
 
 }
 
 const struct amd_ip_funcs cik_sdma_ip_funcs = {
+       .name = "cik_sdma",
        .early_init = cik_sdma_early_init,
        .late_init = NULL,
        .sw_init = cik_sdma_sw_init,
 
 }
 
 const struct amd_ip_funcs cz_dpm_ip_funcs = {
+       .name = "cz_dpm",
        .early_init = cz_dpm_early_init,
        .late_init = cz_dpm_late_init,
        .sw_init = cz_dpm_sw_init,
 
 }
 
 const struct amd_ip_funcs cz_ih_ip_funcs = {
+       .name = "cz_ih",
        .early_init = cz_ih_early_init,
        .late_init = NULL,
        .sw_init = cz_ih_sw_init,
 
 }
 
 const struct amd_ip_funcs dce_v10_0_ip_funcs = {
+       .name = "dce_v10_0",
        .early_init = dce_v10_0_early_init,
        .late_init = NULL,
        .sw_init = dce_v10_0_sw_init,
 
 }
 
 const struct amd_ip_funcs dce_v11_0_ip_funcs = {
+       .name = "dce_v11_0",
        .early_init = dce_v11_0_early_init,
        .late_init = NULL,
        .sw_init = dce_v11_0_sw_init,
 
 }
 
 const struct amd_ip_funcs dce_v8_0_ip_funcs = {
+       .name = "dce_v8_0",
        .early_init = dce_v8_0_early_init,
        .late_init = NULL,
        .sw_init = dce_v8_0_sw_init,
 
 }
 
 const struct amd_ip_funcs fiji_dpm_ip_funcs = {
+       .name = "fiji_dpm",
        .early_init = fiji_dpm_early_init,
        .late_init = NULL,
        .sw_init = fiji_dpm_sw_init,
 
 }
 
 const struct amd_ip_funcs gfx_v7_0_ip_funcs = {
+       .name = "gfx_v7_0",
        .early_init = gfx_v7_0_early_init,
        .late_init = gfx_v7_0_late_init,
        .sw_init = gfx_v7_0_sw_init,
 
 }
 
 const struct amd_ip_funcs gfx_v8_0_ip_funcs = {
+       .name = "gfx_v8_0",
        .early_init = gfx_v8_0_early_init,
        .late_init = gfx_v8_0_late_init,
        .sw_init = gfx_v8_0_sw_init,
 
 }
 
 const struct amd_ip_funcs gmc_v7_0_ip_funcs = {
+       .name = "gmc_v7_0",
        .early_init = gmc_v7_0_early_init,
        .late_init = gmc_v7_0_late_init,
        .sw_init = gmc_v7_0_sw_init,
 
 }
 
 const struct amd_ip_funcs gmc_v8_0_ip_funcs = {
+       .name = "gmc_v8_0",
        .early_init = gmc_v8_0_early_init,
        .late_init = gmc_v8_0_late_init,
        .sw_init = gmc_v8_0_sw_init,
 
 }
 
 const struct amd_ip_funcs iceland_dpm_ip_funcs = {
+       .name = "iceland_dpm",
        .early_init = iceland_dpm_early_init,
        .late_init = NULL,
        .sw_init = iceland_dpm_sw_init,
 
 }
 
 const struct amd_ip_funcs iceland_ih_ip_funcs = {
+       .name = "iceland_ih",
        .early_init = iceland_ih_early_init,
        .late_init = NULL,
        .sw_init = iceland_ih_sw_init,
 
 }
 
 const struct amd_ip_funcs kv_dpm_ip_funcs = {
+       .name = "kv_dpm",
        .early_init = kv_dpm_early_init,
        .late_init = kv_dpm_late_init,
        .sw_init = kv_dpm_sw_init,
 
 }
 
 const struct amd_ip_funcs sdma_v2_4_ip_funcs = {
+       .name = "sdma_v2_4",
        .early_init = sdma_v2_4_early_init,
        .late_init = NULL,
        .sw_init = sdma_v2_4_sw_init,
 
 }
 
 const struct amd_ip_funcs sdma_v3_0_ip_funcs = {
+       .name = "sdma_v3_0",
        .early_init = sdma_v3_0_early_init,
        .late_init = NULL,
        .sw_init = sdma_v3_0_sw_init,
 
 }
 
 const struct amd_ip_funcs tonga_dpm_ip_funcs = {
+       .name = "tonga_dpm",
        .early_init = tonga_dpm_early_init,
        .late_init = NULL,
        .sw_init = tonga_dpm_sw_init,
 
 }
 
 const struct amd_ip_funcs tonga_ih_ip_funcs = {
+       .name = "tonga_ih",
        .early_init = tonga_ih_early_init,
        .late_init = NULL,
        .sw_init = tonga_ih_sw_init,
 
 }
 
 const struct amd_ip_funcs uvd_v4_2_ip_funcs = {
+       .name = "uvd_v4_2",
        .early_init = uvd_v4_2_early_init,
        .late_init = NULL,
        .sw_init = uvd_v4_2_sw_init,
 
 }
 
 const struct amd_ip_funcs uvd_v5_0_ip_funcs = {
+       .name = "uvd_v5_0",
        .early_init = uvd_v5_0_early_init,
        .late_init = NULL,
        .sw_init = uvd_v5_0_sw_init,
 
 }
 
 const struct amd_ip_funcs uvd_v6_0_ip_funcs = {
+       .name = "uvd_v6_0",
        .early_init = uvd_v6_0_early_init,
        .late_init = NULL,
        .sw_init = uvd_v6_0_sw_init,
 
 }
 
 const struct amd_ip_funcs vce_v2_0_ip_funcs = {
+       .name = "vce_v2_0",
        .early_init = vce_v2_0_early_init,
        .late_init = NULL,
        .sw_init = vce_v2_0_sw_init,
 
 }
 
 const struct amd_ip_funcs vce_v3_0_ip_funcs = {
+       .name = "vce_v3_0",
        .early_init = vce_v3_0_early_init,
        .late_init = NULL,
        .sw_init = vce_v3_0_sw_init,
 
 }
 
 const struct amd_ip_funcs vi_common_ip_funcs = {
+       .name = "vi_common",
        .early_init = vi_common_early_init,
        .late_init = NULL,
        .sw_init = vi_common_sw_init,
 
 };
 
 struct amd_ip_funcs {
+       /* Name of IP block */
+       char *name;
        /* sets up early driver state (pre sw_init), does not configure hw - Optional */
        int (*early_init)(void *handle);
        /* sets up late driver/hw state (post hw_init) - Optional */
 
 }
 
 const struct amd_ip_funcs pp_ip_funcs = {
+       .name = "powerplay",
        .early_init = pp_early_init,
        .late_init = NULL,
        .sw_init = pp_sw_init,