0001-openEuler-gpu-hibmc-Fix-stuck-when-switch-GUI-to-tex.patch (2,181 字节)
From c32c304e7267ea60b674d576266d0d040efcc35c Mon Sep 17 00:00:00 2001
From: shiyongbang <shiyongbang@huawei.com>
Date: Mon, 8 Mar 2021 21:01:06 +0800
Subject: [PATCH] openEuler: gpu: hibmc: Fix stuck when switch GUI to text.
to #36078485
commit 4096b2f4156f286bacc1e413924e9390dd770f8b openEuler
gpu: hibmc: Fix stuck when switch GUI to text.
driver inclusion
category: bugfix
bugzilla: NA
CVE: NA
Add remove_conflicting_framebuffers function to fix stuck problem
when switch GUI to text during installation using the ISO file.
Signed-off-by: Shiyongbang <shiyongbang@huawei.com>
Reviewed-by: Wu yang <wuyang7@huawei.com>
Reviewed-by: Li dongming <lidongming5@huawei.com>
Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai@huawei.com>
Signed-off-by: linsheng <linyan.lin@alibaba-inc.com>
Reviewed-by: Caspar Zhang <caspar@linux.alibaba.com>
Reviewed-by: Shile Zhang <shile.zhang@linux.alibaba.com>
---
.../gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
index b9a6643a6515..7be784a77efa 100644
--- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
+++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
@@ -55,6 +55,22 @@ irqreturn_t hibmc_drm_interrupt(int irq, void *arg)
return IRQ_HANDLED;
}
+static void hibmc_remove_framebuffers(struct pci_dev *pdev)
+{
+ struct apertures_struct *ap;
+
+ ap = alloc_apertures(1);
+ if (!ap)
+ return;
+
+ ap->ranges[0].base = pci_resource_start(pdev, 0);
+ ap->ranges[0].size = pci_resource_len(pdev, 0);
+
+ drm_fb_helper_remove_conflicting_framebuffers(ap, "hibmcdrmfb", false);
+
+ kfree(ap);
+}
+
static struct drm_driver hibmc_driver = {
.driver_features = DRIVER_GEM | DRIVER_MODESET |
DRIVER_ATOMIC | DRIVER_HAVE_IRQ,
@@ -367,6 +383,8 @@ int hibmc_load(struct drm_device *dev, unsigned long flags)
static int hibmc_pci_probe(struct pci_dev *pdev,
const struct pci_device_id *ent)
{
+ hibmc_remove_framebuffers(pdev);
+
return drm_get_pci_dev(pdev, ent, &hibmc_driver);
}
--
2.27.0