summary refs log tree commit diff
path: root/arch
diff options
context:
space:
mode:
authorDaniel Verkamp <dverkamp@chromium.org>2019-03-15 13:13:08 -0700
committerchrome-bot <chrome-bot@chromium.org>2019-03-20 19:51:31 -0700
commitf1a01f6e635f0b2ee95a3727dbd4f6ab1042cadb (patch)
tree522e90f448a9d1e7f7889774c8bfea26b0b7ccd8 /arch
parent26d15fae1ec3b5989f2f6d21489f6140ebb35b06 (diff)
downloadcrosvm-f1a01f6e635f0b2ee95a3727dbd4f6ab1042cadb.tar
crosvm-f1a01f6e635f0b2ee95a3727dbd4f6ab1042cadb.tar.gz
crosvm-f1a01f6e635f0b2ee95a3727dbd4f6ab1042cadb.tar.bz2
crosvm-f1a01f6e635f0b2ee95a3727dbd4f6ab1042cadb.tar.lz
crosvm-f1a01f6e635f0b2ee95a3727dbd4f6ab1042cadb.tar.xz
crosvm-f1a01f6e635f0b2ee95a3727dbd4f6ab1042cadb.tar.zst
crosvm-f1a01f6e635f0b2ee95a3727dbd4f6ab1042cadb.zip
arch: handle register_device_capabilities errors
Check for failures of the PciDevice register_device_capabilities
function.  This fixes a build warning about ignoring a Result.

BUG=None
TEST=Boot Crostini on nami; cargo build without warnings

Change-Id: I48458a3a19a99a471d4c91c9761d35dc8dd2ef20
Signed-off-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1526329
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Daniel Prilik <prilik@google.com>
Reviewed-by: Dylan Reid <dgreid@chromium.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/src/lib.rs9
1 files changed, 8 insertions, 1 deletions
diff --git a/arch/src/lib.rs b/arch/src/lib.rs
index f089972..318762e 100644
--- a/arch/src/lib.rs
+++ b/arch/src/lib.rs
@@ -114,6 +114,8 @@ pub enum DeviceRegistrationError {
     IrqsExhausted,
     /// No more MMIO space available.
     AddrsExhausted,
+    /// Could not register PCI device capabilities.
+    RegisterDeviceCapabilities(PciDeviceError),
 }
 
 impl Display for DeviceRegistrationError {
@@ -133,6 +135,9 @@ impl Display for DeviceRegistrationError {
             ProxyDeviceCreation(e) => write!(f, "failed to create proxy device: {}", e),
             IrqsExhausted => write!(f, "no more IRQs are available"),
             AddrsExhausted => write!(f, "no more addresses are available"),
+            RegisterDeviceCapabilities(e) => {
+                write!(f, "could not register PCI device capabilities: {}", e)
+            }
         }
     }
 }
@@ -177,7 +182,9 @@ pub fn generate_pci_root(
         let device_ranges = device
             .allocate_device_bars(resources)
             .map_err(DeviceRegistrationError::AllocateDeviceAddrs)?;
-        device.register_device_capabilities();
+        device
+            .register_device_capabilities()
+            .map_err(DeviceRegistrationError::RegisterDeviceCapabilities)?;
         for (event, addr, datamatch) in device.ioeventfds() {
             let io_addr = IoeventAddress::Mmio(addr);
             vm.register_ioevent(&event, io_addr, datamatch)