IOMMU proteggerà non a meno che non sia combinato con un avvio misurato. Mentre un IOMMU proteggerà da DMA canaglia, ciò si applica solo dopo che è stato inizializzato. In particolare, poiché sarebbe necessario abilitare l'avvio misurato, è necessario un TPM. Esistono due tipi di avvio misurati, denominati SRTM e DRTM . Il primo misura il firmware una volta mentre il sistema sta avviando, mentre il secondo misura una parte del software in fase di runtime. Per proteggere da un primo attacco DMA , è necessario utilizzare DRTM, anziché solo SRTM, per la misurazione. Questo di solito richiede la configurazione manuale.
IOMMU è vulnerabile durante l'avvio iniziale poiché le tabelle di configurazione IOMMU (DMAR) vengono inizializzate in un'area di memoria non protetta. Durante il breve periodo tra il caricamento della configurazione e l'abilitazione di IOMMU, un dispositivo malintenzionato potrebbe modificarli, annullando la protezione che dovrebbe fornire. Questo è spiegato in un documento di ricerca su bypassando le protezioni IOMMU .
Questo è solo un rischio se si avvia il sistema con una scheda PCIe dannosa o compromessa già installata. Se uno è collegato mentre il sistema è acceso o una scheda esistente viene compromessa (ad esempio tramite JTAG) mentre il sistema è acceso, un IOMMU configurato correttamente dovrebbe essere sufficiente per impedire al dispositivo di emettere richieste DMA dannose. Ciò richiede tabelle DMA Remapping funzionali o DMAR, che è una tabella ACPI inclusa nel BIOS. Se il DMAR è rotto, come accade spesso con alcuni laptop, il sistema potrebbe non avviarsi correttamente con IOMMU abilitato tramite intel_iommu=on
o amd_iommu=on
.