2012-12-28 186 views
2

我腦子裏有幾個假設,請糾正我,如果我錯了:KVM - DMA與直通設備

  1. 沒有一個真正的IOMMU支持DMA傳輸將是一個安全風險,因爲客人可能轉移垃圾在主機內存中。
  2. 在客戶機內存和直通設備之間沒有真實IOMMU的有效DMA傳輸是不可能的。
  3. 主機操作系統是不知道相關的直通設備

的現在,任何DMA有關的東西一些問題:

    到點3相關
  • :有什麼辦法通過直通設備獲取有關DMA傳輸的任何信息?
  • 如果我沒有DMA重新映射,KVM會抱怨嗎?
  • 是否有可能通過直通設備拒絕客人的任何與DMA有關的東西?

回答

2

在進行一些研究的同時,遇到了這個老問題,並認爲我會爲任何感興趣的人發佈答案。

關於要點1.沒有IOMMU,你根本無法透過。 I/O設備位於內核空間中。來賓內核是一個只認爲它在內核空間中運行的用戶進程。

至於問題:

隨着仿真設備仿真器代碼攔截所有的DMA設置,並可以確保它們是有效的。藉助PCI直通,寄存器讀取和寫入操作將直接發送到設備或設備上的SR-IOV的音頻設備,因此KVM或其他客戶端外部代碼無法驗證,發出錯誤或抱怨。