From 349247860c8a738e0fc9aac2b8db83144f8d5481 Mon Sep 17 00:00:00 2001 From: Tina Zhang Date: Fri, 22 Apr 2022 15:42:12 +0800 Subject: [PATCH] devices: virtio: iommu: assign a sensible default value to page_size_mask Assign a sensible default value to page_size_mask and reject the empty page_size_mask case. BUG=b:185084350 TEST=Boot a crosvm guest with vIOMMU enabled Change-Id: Id711c9ff25265f707618a58eb212fd5ca16383e8 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3580372 Reviewed-by: David Stevens Tested-by: kokoro Reviewed-by: Keiichi Watanabe Commit-Queue: David Stevens --- devices/src/virtio/iommu.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/devices/src/virtio/iommu.rs b/devices/src/virtio/iommu.rs index 80bcc202a3..27ede3ebc5 100644 --- a/devices/src/virtio/iommu.rs +++ b/devices/src/virtio/iommu.rs @@ -753,7 +753,7 @@ impl Iommu { translate_request_rx: Option, iommu_device_tube: Option, ) -> SysResult { - let mut page_size_mask = !0_u64; + let mut page_size_mask = !((pagesize() as u64) - 1); for (_, container) in endpoints.iter() { page_size_mask &= container .lock() @@ -762,9 +762,7 @@ impl Iommu { } if page_size_mask == 0 { - // In case no endpoints bounded to vIOMMU during system booting, - // assume IOVA page size is the same as page_size - page_size_mask = (pagesize() as u64) - 1; + return Err(SysError::new(libc::EIO)); } let input_range = virtio_iommu_range_64 {