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 <stevensd@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Commit-Queue: David Stevens <stevensd@chromium.org>
This commit is contained in:
Tina Zhang 2022-04-22 15:42:12 +08:00 committed by Chromeos LUCI
parent b5a2771f6c
commit 349247860c

View file

@ -753,7 +753,7 @@ impl Iommu {
translate_request_rx: Option<Tube>,
iommu_device_tube: Option<Tube>,
) -> SysResult<Iommu> {
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 {