summary refs log tree commit diff
path: root/src/linux.rs
diff options
context:
space:
mode:
authorXiong Zhang <xiong.y.zhang@intel.corp-partner.google.com>2019-04-23 17:14:55 +0800
committerCommit Bot <commit-bot@chromium.org>2019-10-01 03:59:49 +0000
commitc554fff2064cf04fe89121ec86889b32a56bf195 (patch)
tree401d34e0e0927158c45feb8ba7252ec82504b025 /src/linux.rs
parent17b0daf88c97be0ace69d4b19b3352053668e96b (diff)
downloadcrosvm-c554fff2064cf04fe89121ec86889b32a56bf195.tar
crosvm-c554fff2064cf04fe89121ec86889b32a56bf195.tar.gz
crosvm-c554fff2064cf04fe89121ec86889b32a56bf195.tar.bz2
crosvm-c554fff2064cf04fe89121ec86889b32a56bf195.tar.lz
crosvm-c554fff2064cf04fe89121ec86889b32a56bf195.tar.xz
crosvm-c554fff2064cf04fe89121ec86889b32a56bf195.tar.zst
crosvm-c554fff2064cf04fe89121ec86889b32a56bf195.zip
vfio: Setup dma map for vfio device
For each guest memory region, setup the corresponding gpa to hva map
in the kernel vfio iommu table. Then the kernel vfio driver could
get the hpa through gpa. Device could use this gpa for dma also.

BUG=chromium:992270
TEST=none

Change-Id: I04008d68ab2ed182a789d6ee8c97a0ed9e1e4756
Signed-off-by: Xiong Zhang <xiong.y.zhang@intel.corp-partner.google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1581141
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Zach Reizner <zachr@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
Diffstat (limited to 'src/linux.rs')
-rw-r--r--src/linux.rs3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/linux.rs b/src/linux.rs
index f2433f7..5133a7c 100644
--- a/src/linux.rs
+++ b/src/linux.rs
@@ -986,7 +986,8 @@ fn create_devices(
 
     if cfg.vfio.is_some() {
         let vfio_path = cfg.vfio.as_ref().unwrap().as_path();
-        let vfiodevice = Box::new(VfioDevice::new(vfio_path, vm).map_err(Error::CreateVfioDevice)?);
+        let vfiodevice =
+            Box::new(VfioDevice::new(vfio_path, vm, mem.clone()).map_err(Error::CreateVfioDevice)?);
         let vfiopcidevice = Box::new(VfioPciDevice::new(vfiodevice));
         pci_devices.push((vfiopcidevice, simple_jail(&cfg, "vfio_device.policy")?));
     }