drm/xen-front Xen 半虚拟化前端驱动程序

此前端驱动程序根据 include/xen/interface/io/displif.h 中描述的显示协议实现 Xen 半虚拟化显示。

根据使用的显示缓冲区来划分的驱动程序运行模式

根据半虚拟化环境的需求,即主机和客户机环境中运行的配套 DRM/(v)GPU 驱动程序的需求,显示缓冲区可以由前端驱动程序或后端驱动程序分配。

由前端驱动程序分配的缓冲区

在这种运行模式下,驱动程序从系统内存中分配缓冲区。

注意!如果与配套的 DRM/(v)GPU 驱动程序一起使用,此运行模式可能需要在平台上支持 IOMMU,以便配套的 DRM/vGPU 硬件仍然可以在从前端驱动程序导入 PRIME 缓冲区时访问显示缓冲区内存。

由后端分配的缓冲区

此运行模式通过 XenStore 条目在客户机域配置中进行运行时配置。

对于不提供 IOMMU 支持,但对显示缓冲区有特定要求的系统,可以在后端分配此类缓冲区并与前端共享。 例如,如果主机域是 1:1 映射,并且具有期望物理上连续内存的 DRM/GPU 硬件,则这允许实现零拷贝用例。

注意,在使用此方案时应考虑以下事项:

  1. 如果客户机域死亡,则无法收回从后端接收的页面/授权

  2. 行为不端的客户机可能会向后端发送过多的请求,耗尽其授权引用和内存(从安全的角度考虑)

驱动程序限制

  1. 仅支持没有附加属性的主平面。

  2. 每个连接器仅支持一种视频模式,该模式通过 XenStore 配置。

  3. 所有 CRTC 都以 60Hz 的固定频率运行。