exynos-mixer 14450000.mixer:[drm:exynos_drm_register_dma] *错误*设备 14450000.mixer 缺乏对 IOMMU 的支持

exynos-mixer 14450000.mixer:[drm:exynos_drm_register_dma] *错误*设备 14450000.mixer 缺乏对 IOMMU 的支持

我们正在尝试按照此处幻灯片演示中的建议在 Samsung XE303C12 Chromebook 又名“snow”上启动 Xen:

https://www.slideshare.net/xen_com_mgr/xpds16-porting-xen-on-arm-to-a-new-soc-julien-grall-arm

该设备采用 exynos5250 SOC 双核 1.7 GHz 和 2 MB RAM,是具有虚拟化扩展功能的三星 armv7 芯片。

特别是,我们让它在最新的 6.1.59 Linux LTS 内核的裸机上以及最近带有 KVM 的 5.4.257 LTS 内核上都运行得相当好,较旧的 LTS 内核版本用于测试 KVM,因为支持 KVM ARM v7 上的内核版本 5.7 左右已从 Linux 中删除。

所以我们知道我们启用了虚拟机管理程序模式,因为我们能够将它与 KVM 一起使用。

对于 Xen,我们使用最新的 Debian 版本 Xen 4.17 来实现 Debian armhf 架构:

(XEN) Xen version 4.17.2-pre (Debian 4.17.1+2-gb773c48e36-1) 
(pkg-xen-devel@xxxxxxxxxxxxxxxxxxxxxxx) 
(arm-linux-gnueabihf-gcc (Debian 12.2.0-14) 12.2.0) debug=n Thu May 18 19:26:30 UTC 2023

Linux 内核是一个自定义构建,它在内核之上添加了 Xen 配置内核选项(CONFIG_XEN_DOM0 等),该内核在裸机上的相同 Chromebook 型号上运行良好。

我们的引导方法是让 u-boot 引导 Xen 虚拟机管理程序,并在将 dom0 添加到 Linux 内核中其他未更改的设备树后加载设备树,使用 u-boot fdt 命令添加 /chosen 节点,如Xen wiki 以及从那里链接的页面。

我们还尝试使用设备树 /chosen 节点添加和加载 initrd.img,但这在我们的测试中没有任何区别。实际上,我们使用 Linux LTS 内核版本 6.1.59 作为 dom0 与 Xen 使用相同版本的 u-我们用于 KVM 的启动,但有一个大问题。

我们看到的问题是,当使用 Xen 将 6.1.59 内核版本作为 dom0 启动时,屏幕完全黑,并且访问系统的唯一方法是通过 ssh 远程访问。

日志表明大多数其他东西都在工作,例如 wifi 卡,因此我们可以通过 ssh 远程访问它,并且 USB 光电鼠标在连接时会亮起,因此 USB 也正在工作。

显然,磁盘也在工作。通过打开 Chrome 操作系统开发者模式选项以启用从 SD 卡插槽启动,Chromebook 配置为从设备的 SD 卡插槽启动。

神秘之处在于,当在裸机上启动完全相同的 6.1.59 内核而不是在 Xen 上将其作为 dom0 启动时,它会以完全访问屏幕的方式启动,我们可以使用 X.org Windows 系统与系统进行交互。但是使用 Xen 作为 dom0 启动时,屏幕完全变黑,我们对系统的唯一访问是通过 ssh 通过网络。

另外,当在虚拟机管理程序模式下使用 KVM 启动 5.4.257 内核时,屏幕可以工作,我们可以通过 X.org windows 系统与系统进行交互。

探索日志文件,我们看到以下错误:使用 Xen(或裸机):

devuan-bunsen kernel: [drm] Exynos DRM: using 14400000.fimd device for DMA mapping operations

devuan-bunsen kernel: exynos-drm exynos-drm: bound 14400000.fimd (ops 0xc0d96354)

devuan-bunsen kernel: exynos-drm exynos-drm: bound 14450000.mixer (ops 0xc0d97554)

devuan-bunsen kernel: exynos-drm exynos-drm: bound 145b0000.dp-controller (ops 0xc0d97278)

devuan-bunsen kernel: exynos-drm exynos-drm: bound 14530000.hdmi (ops 0xc0d97bd0)

... 

devuan-bunsen kernel: Console: switching to colour frame buffer device 170x48

devuan-bunsen kernel: exynos-drm exynos-drm: [drm] fb0: exynosdrmfb frame buffer device

devuan-bunsen kernel: [drm] Initialized exynos 1.1.0 20180330 for exynos-drm on minor 0

在这种情况下,内核能够使用 exynos-drm 内核来启动 fb0 设备。

但对于 Xen,我们在 exynos-drm 中遇到此错误:

devuan-bunsen kernel: [drm] Exynos DRM: using 14400000.fimd device for DMA mapping operations

devuan-bunsen kernel: exynos-drm exynos-drm: bound 14400000.fimd (ops 0xc0d96354)

devuan-bunsen kernel: exynos-mixer 14450000.mixer: [drm:exynos_drm_register_dma] *ERROR* Device 14450000.mixer lacks support for IOMMU

devuan-bunsen kernel: exynos-drm exynos-drm: failed to bind 14450000.mixer (ops 0xc0d97554): -22

devuan-bunsen kernel: exynos-drm exynos-drm: adev bind failed: -22

devuan-bunsen kernel: exynos-dp: probe of 145b0000.dp-controller failed with error -22

我们已经开始发表有关 Xen ML 的帖子,但实际上尚未找到解决方法:

https://lists.xenproject.org/archives/html/xen-users/2023-10/msg00034.html

看来我们应该/可以在内核配置文件中以某种方式调整 EXYNOS_IOMMU 参数......或者?

相关内容