Представлен открытый проект PCIem для синтетической эмуляции устройств PCIe полностью в пользовательском пространстве
Разработчик Джойел Буэно выпустил открытый проект под названием PCIem. Это инструмент для синтетической эмуляции устройств PCIe полностью в пользовательском пространстве.
Исходный код решения написан на C и опубликован на GitHub под лицензией MIT.PCIem — это фреймворк, который создаёт виртуальные устройства PCIe в ядре Linux, используя несколько новых методов для преобразования синтетических карт в легитимные устройства PCI для хост-системы без необходимости использования реального оборудования.Текущие возможности проекта:поддержка BAR: программная регистрация и управление BAR;точки наблюдения: архитектура, управляемая событиями, с использованием точек наблюдения ЦП для обнаружения доступа;поддержка устаревших IRQ/MSI/MSI-X: полная поддержка прерываний с динамическим запуском;структура возможностей PCI: модульная система возможностей PCI (связанный список в основе); система DMA: операции DMA с поддержкой IOMMU и атомарных операций с памятью;P2P DMA: одноранговый DMA между устройствами с контролем доступа на основе белого списка;определяется пользовательским пространством: возможность реализовать свои прототипы PCIe где угодно.
habr.com