
Разработчик Джойел Буэно выпустил открытый проект под названием PCIem. Это инструмент для синтетической эмуляции устройств PCIe полностью в пользовательском пространстве. Исходный код решения написан на C и опубликован на GitHub под лицензией MIT.
PCIem — это фреймворк, который создаёт виртуальные устройства PCIe в ядре Linux, используя несколько новых методов для преобразования синтетических карт в легитимные устройства PCI для хост-системы без необходимости использования реального оборудования.

Текущие возможности проекта:
поддержка BAR: программная регистрация и управление BAR;
точки наблюдения: архитектура, управляемая событиями, с использованием точек наблюдения ЦП для обнаружения доступа;
поддержка устаревших IRQ/MSI/MSI-X: полная поддержка прерываний с динамическим запуском;
структура возможностей PCI: модульная система возможностей PCI (связанный список в основе);
система DMA: операции DMA с поддержкой IOMMU и атомарных операций с памятью;
P2P DMA: одноранговый DMA между устройствами с контролем доступа на основе белого списка;
определяется пользовательским пространством: возможность реализовать свои прототипы PCIe где угодно.
