From 038094fe1b7dde720198a61ed9c2171a673841aa Mon Sep 17 00:00:00 2001 From: daiweizhong <747202565@qq.com> Date: Tue, 21 Nov 2023 19:48:07 +0800 Subject: [PATCH] drm/hisilicon: fix the call trace when hibmc loaded failed kunpeng inclusion category: bugfix bugzilla: https://gitee.com/openeuler/kernel/issues/I8ICAG ------------------------------------------------------------------ This patch fixes the call trace bug when hibmc driver loaded failed. Signed-off-by: daiweizhong <747202565@qq.com> --- .../gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c | 32 +++++++++++++------ 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c index 61b792f2248e..2723b4ae9856 100644 --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c @@ -288,21 +288,27 @@ static int hibmc_load(struct drm_device *dev) priv->dev = dev; ret = hibmc_hw_init(priv); - if (ret) - goto err; + if (ret) { + drm_err(dev, "failed to initialize hardware: %d\n", ret); + goto err_alloc; + } ret = hibmc_mm_init(priv); - if (ret) - goto err; + if (ret) { + drm_err(dev, "failed to initialize mm: %d\n", ret); + goto err_hw; + } ret = hibmc_kms_init(priv); - if (ret) - goto err; + if (ret) { + drm_err(dev, "failed to initialize kms: %d\n", ret); + goto err_mm; + } ret = drm_vblank_init(dev, dev->mode_config.num_crtc); if (ret) { drm_err(dev, "failed to initialize vblank: %d\n", ret); - goto err; + goto err_kms; } ret = pci_enable_msi(dev->pdev); @@ -319,9 +325,15 @@ static int hibmc_load(struct drm_device *dev) return 0; -err: - hibmc_unload(dev); - drm_err(dev, "failed to initialize drm driver: %d\n", ret); +err_kms: + hibmc_kms_fini(priv); +err_mm: + hibmc_mm_fini(priv); +err_hw: + hibmc_hw_unmap(priv); +err_alloc: + dev->dev_private = NULL; + return ret; } -- Gitee