Arhn - архитектура программирования

Тестируете драйвер пользовательского пространства, который использует VFIO?

У меня есть оборудование, которое, возможно, содержит ошибки, и драйвер пользовательского пространства для него, который полагается на драйвер ядра vfio-pci. Я бы хотел протестировать драйвер, не разбираясь с оборудованием.

Я предполагаю, что идеальным решением было бы что-то вроде: запустить весь мой стек, кроме оборудования (приложение, драйвер пользовательского пространства, драйвер VFIO), и перехватить все, что драйвер VFIO решает отправить на оборудование. Затем я мог убедиться, что оборудование получает правильную информацию - сбросы происходят в ожидаемое время, DMA направляются на нужные адреса и т. Д.

Думаю, я ищу что-то вроде имитационного устройства, которое позволит мне запускать код пользовательского пространства под vfio-pci, а не запускать оборудование. Такое существует?


  • Интересный вопрос! 05.02.2018

Ответы:


1

Эмуляция устройств с Qemu стала впечатляюще простой. Я часто использовал его для исследования ядра Linux. В Archlinux qemu-arch-extra поставляется с несколькими машинами:

$ qemu-system-arm -machine help
Supported machines are:
[..]
cubieboard           cubietech cubieboard
emcraft-sf2          SmartFusion2 SOM kit from Emcraft (M2S010)
highbank             Calxeda Highbank (ECX-1000)
imx25-pdk            ARM i.MX25 PDK board (ARM926)
integratorcp         ARM Integrator/CP (ARM926EJ-S)
kzm                  ARM KZM Emulation Baseboard (ARM1136)
lm3s6965evb          Stellaris LM3S6965EVB
lm3s811evb           Stellaris LM3S811EVB
mainstone            Mainstone II (PXA27x)
midway               Calxeda Midway (ECX-2000)
[and more...]

Хорошим подходом к вашей задаче было бы написать эмулируемое устройство PCI для Qemu и протестировать его там.

Объяснять особо нечего, учитывая, что есть много хороших материалов по использованию и расширению Qemu. Быстрый поиск в Google показывает пару хороших ресурсов. В этом ответе есть несколько очень полезных советов, и здесь достойный учебник.

04.02.2018
  • Я надеялся, что существует что-то, что можно было бы использовать прямо из коробки, но я думаю, что нет. У вас есть какие-нибудь указания на то, что нужно, чтобы отключить устройство без qemu? Думаю, мне не хватает одного фундаментального аспекта этого процесса. 17.02.2018
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..