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 <tn@semihalf.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2961214
Tested-by: kokoro <noreply+kokoro@google.com>
Commit-Queue: Micah Morton <mortonm@chromium.org>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
This commit is contained in:
Tomasz Nowicki 2021-06-09 20:28:47 +00:00 committed by Commit Bot
parent d7cbad7707
commit 348e32451a

View file

@ -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<vfio_region_sparse_mmap_area> {
match self.regions.get(index as usize) {