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 的固定频率运行。