- Аппаратное обеспечение: Lenovo ThinkPad E14 Gen 6 (Intel Core Ultra / Meteor Lake)
- Графический процессор: Intel Arc Graphics (встроенная) [8086:7d45]
- Хост-операционная система: NixOS Нестабильная
- Гостевая ОС: Kali Linux
- Гипервизор: QEMU/KVM через Libvirt
- Драйверы: Хост, использующий драйвер xe (ядро) и Mesa
Я пытаюсь включить 3D ускорение виртуальной машины Linux с использованием нового драйвера ядра Intel xe. Я не могу заставить аппаратное ускорение работать ни с помощью VirGL (OpenGL), ни с помощью Venus (Vulkan). Гость всегда возвращается к llvmpipe или не может инициализировать средство рендеринга.
Что я пробовал до сих пор:
1. SR-IOV (Аппаратная виртуализация)
Я попытался использовать SR-IOV для передачи виртуальной функции (VF) на виртуальную машину.
- Конфигурация: Включены intel_iommu=on, iommu=pt, xe.max_vfs=7 и правила udev.
- Результат: Ошибка. echo 1 > /sys/bus/pci/devices/.../sriov_numvfs возвращает числовой результат вне допустимого диапазона.
- Причина: BIOS на этом конкретном ноутбуке блокирует размер апертуры/украденную память на уровне 256 МБ, чего недостаточно для драйвера xe для создания VF. SR-IOV фактически невозможен на этом оборудовании.
- Попробовал принудительно настроить i915 (драйвер[/b] (
Код: Выделить всё
i915.force_probe=7d45). Те же результаты. [*]В настоящее время используется [b]xe), который является рекомендуемым драйвером для этой архитектуры.Код: Выделить всё
xe.force_probe=7d45
- Запуск QEMU от имени пользователя root, чтобы исключить проблемы с разрешениями при доступе к /dev/dri/renderD128.
- Добавлены правильные списки управления доступом в cgroup_device_acl.
- Явно задан VK_ICD_FILENAMES, чтобы указать путь к хранилищу Nix для intel_icd.x86_64.json.
Конфигурация хоста.nix:
Код: Выделить всё
boot.kernelParams = [
"xe.force_probe=7d45"
"i915.force_probe=!7d45"
"intel_iommu=on" "iommu=pt"
];
virtualisation.libvirtd.qemu = {
package = pkgs.qemu_full;
runAsRoot = true;
verbatimConfig = ''
user = "root"
group = "root"
cgroup_device_acl = [ "/dev/dri/renderD128", "/dev/dri/card0", "/dev/kvm" ]
env = [
"VK_ICD_FILENAMES=/run/opengl-driver/share/vulkan/icd.d/intel_icd.x86_64.json",
"MESA_VK_IGNORE_CONFORMANCE_WARNING=1"
]
'';
};
Код: Выделить всё
Код: Выделить всё
MESA: error: ZINK: vkEnumeratePhysicalDevices failed (VK_ERROR_INITIALIZATION_FAILED)
MESA: error: ZINK: failed to choose pdev
glx: failed to create drisw screen
failed to load driver: zink
Вопрос: Требуется ли определенная конфигурация, чтобы драйвер xe работал с virtio-GPU QEMU (GL или Vulkan) в NixOS? Кажется, гость не может инициализировать экземпляр Vulkan на хосте, несмотря на правильные пути и права root, или имеет некоторую конфигурацию i915 (та же проблема с i915)
Подробнее здесь: https://stackoverflow.com/questions/798 ... -error-ini
Мобильная версия