查看问题详情

编号项目分类查看权限最后更新
0000217Anolis OS 8kernelpublic2021-11-10 14:57
报告员geliwei-ali 分派给 
优先级normal严重性minor出现频率always
状态 new处理状况open 
平台aarch64操作系统Anolis OS操作系统版本8
产品版本8.2 正式版 
标题0000217: 在鲲鹏服务器上内核tty无法访问
描述按下ctl+alt+f1...f4 无法访问tty console,hibmc驱动貌似无法正常绘制缓冲区
标签没加标签.

活动

flyingcatz

2021-11-10 14:57

开发人员   ~0000654

这个bug是因为调用hibmc驱动的时候上一个图形化界面的framebuffer没能释放而导致卡住,24版本中已经加入了修复的补丁
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

问题历史

日期 用户名 字段 更改
2021-08-10 15:07 geliwei-ali 新建问题
2021-11-10 14:57 flyingcatz 注释已添加: 0000654
2021-11-10 14:57 flyingcatz 添加了以下文件:: 0001-openEuler-gpu-hibmc-Fix-stuck-when-switch-GUI-to-tex.patch