> Кстати, DMA уже давно нет, есть bus-mastering.Под DMA мной в общем случае подразумевается вообще любая технология которая толкает данные из RAM по шинам без участия CPU.
> А IOMMU - это ваще объеденялка памяти.
IOMMU - примерно то же что и MMU, но со стороны железа. Оно арбитрирует операции с памятью со стороны железа, как MMU - со стороны проца. Если этого не делать - девайс может с удовольствием вкатить через DMA запись в произвольный регион памяти. Сие особенно мешает на виртуалках: пробросил ты PCI девайс допустим в виртуалку, там драйвер не в курсах про виртуализацию и запрограммил свой девайс. Так как видит из своей виртуалочки. Откуда ему знать что адреса - не настоящие? Девайс выполнил то что просили. Ба-бах, запись из девайса по DMA в указанный драйвером адрес оказывается вынесла мозги хосту и все факапнулось напрочь, т.к. реально в этом адресе какой-нить кернел хоста сидел и его то и накрыло :). Вот IOMMU в подобном случае в курсе кому что принадлежит и не даст подобное делать.