KVM - DMA с проходным устройством

У меня есть несколько предположений, пожалуйста, поправьте меня, если я ошибаюсь:

  1. Без настоящего IOMMU DMA-передача была бы угрозой безопасности, потому что гость мог бы передать мусор в памяти хоста.
  2. Действительная передача DMA между гостевой памятью и транзитным устройством без реального IOMMU невозможна.
  3. Хост-ОС не знает о каких-либо вещах, связанных с DMA, связанных с транзитным устройством.

А теперь несколько вопросов:

  • относится к пункту 3: есть ли способ получить какую-либо информацию о DMA-Transfer с помощью транзитного устройства?
  • Если у меня не включено DMA-Remapping, будет ли KVM жаловаться на это?
  • Есть ли возможность запретить какие-либо действия, связанные с DMA, для гостя с транзитным устройством?

person Max Mustermann    schedule 28.12.2012    source источник


Ответы (1)


Наткнулся на этот старый вопрос, проводя некоторое исследование, и решил, что опубликую ответ для всех, кто заинтересован.

По поводу пункта 1. Без IOMMU вообще не сделать проход. Устройства ввода-вывода находятся в пространстве ядра. Гостевое ядро ​​— это пользовательский процесс, который только думает, что работает в пространстве ядра.

Что касается вопросов:

С эмулируемым устройством код эмулятора перехватывает все настройки DMA и может убедиться, что они действительны. При сквозном прохождении PCI чтение и запись регистра выполняются непосредственно на устройстве или в VF на устройстве для SR-IOV, поэтому у KVM или любого другого кода вне гостевой системы нет возможности проверять, выдавать ошибки или жаловаться.

person stark    schedule 29.03.2013