Хост NixOS (Intel Meteor Lake/Arc): сбой 3D-ускорения QEMU с VK_ERROR_INITIALIZATION_FAILED в гостевой системе (Kali) [зLinux

Ответить
Anonymous
 Хост NixOS (Intel Meteor Lake/Arc): сбой 3D-ускорения QEMU с VK_ERROR_INITIALIZATION_FAILED в гостевой системе (Kali) [з

Сообщение Anonymous »

Системная среда:
  • Аппаратное обеспечение: 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 фактически невозможен на этом оборудовании.
2. Выбор драйвера (i915 против xe)
  • Попробовал принудительно настроить i915 (

    Код: Выделить всё

    i915.force_probe=7d45). Те же результаты.
    [*]В настоящее время используется [b]xe
    драйвер[/b] (

    Код: Выделить всё

    xe.force_probe=7d45
    ), который является рекомендуемым драйвером для этой архитектуры.
3. Разрешения и пути
  • Запуск 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"
]
'';
};
Гостевой XML Ошибка: когда я загружаю гостя (Kali) и пытаюсь принудительно запустить Zink/Venus с помощью экспорта MESA_LOADER_DRIVER_OVERRIDE=zink, glxinfo -B завершается с ошибкой:

Код: Выделить всё

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
Если я отключу переменные Zink и попробую стандартный VirGL, по умолчанию будет использоваться llvmpipe.
Вопрос: Требуется ли определенная конфигурация, чтобы драйвер xe работал с virtio-GPU QEMU (GL или Vulkan) в NixOS? Кажется, гость не может инициализировать экземпляр Vulkan на хосте, несмотря на правильные пути и права root, или имеет некоторую конфигурацию i915 (та же проблема с i915)

Подробнее здесь: https://stackoverflow.com/questions/798 ... -error-ini
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»