From 348e32451af5c31e6eb6888c330a7c84bb38b6f4 Mon Sep 17 00:00:00 2001 From: Tomasz Nowicki Date: Wed, 9 Jun 2021 20:28:47 +0000 Subject: [PATCH] devices: vfio: Extend MMIO region queries In preparation for adding VFIO platform support add function which allows to get number of regions and size of specific region. BUG=b:185504618 TEST=trogdor64-manatee SDHCI and GENIQUP device passthrough boots/works Change-Id: I4ad99d7658d5b76cae4aa686b2b1f772e2bc3e44 Signed-off-by: Tomasz Nowicki Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2961214 Tested-by: kokoro Commit-Queue: Micah Morton Reviewed-by: Daniel Verkamp --- devices/src/vfio.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/devices/src/vfio.rs b/devices/src/vfio.rs index b291a7fae6..18b32aa5ca 100644 --- a/devices/src/vfio.rs +++ b/devices/src/vfio.rs @@ -813,6 +813,24 @@ impl VfioDevice { } } + /// get a region's size + /// return: Region size from the start of vfio device descriptor + pub fn get_region_size(&self, index: u32) -> u64 { + match self.regions.get(index as usize) { + Some(v) => v.size, + None => { + warn!("get_region_size with invalid index: {}", index); + 0 + } + } + } + + /// get a number of regions + /// return: Number of regions of vfio device descriptor + pub fn get_region_count(&self) -> u32 { + self.regions.len() as u32 + } + /// get a region's mmap info vector pub fn get_region_mmap(&self, index: u32) -> Vec { match self.regions.get(index as usize) {