summary refs log tree commit diff
path: root/devices/src/pci/pci_device.rs
diff options
context:
space:
mode:
authorDylan Reid <dgreid@chromium.org>2019-03-03 00:19:52 +0000
committerchrome-bot <chrome-bot@chromium.org>2019-03-06 15:33:43 -0800
commit4a63b6876185da3027879d3c9d199d776cfe546a (patch)
tree10aa1a0150205dbec7ad8abe3b3522d364df048f /devices/src/pci/pci_device.rs
parent52c48ae54380c27683569aaf070fbd0f850f62ed (diff)
downloadcrosvm-4a63b6876185da3027879d3c9d199d776cfe546a.tar
crosvm-4a63b6876185da3027879d3c9d199d776cfe546a.tar.gz
crosvm-4a63b6876185da3027879d3c9d199d776cfe546a.tar.bz2
crosvm-4a63b6876185da3027879d3c9d199d776cfe546a.tar.lz
crosvm-4a63b6876185da3027879d3c9d199d776cfe546a.tar.xz
crosvm-4a63b6876185da3027879d3c9d199d776cfe546a.tar.zst
crosvm-4a63b6876185da3027879d3c9d199d776cfe546a.zip
PCI: Return results from pci setup functions
Enough failure cases have been added to `add_pci_bar` and
`add_pci_capabilities` that they should return unique errors instead of
an `Option`.

BUG=none
TEST=cargo test in devices

Signed-off-by: Dylan Reid <dgreid@chromium.org>
Change-Id: Ice2a06d2944011f95707f113f9d709da15c90cfe
Reviewed-on: https://chromium-review.googlesource.com/1497740
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Diffstat (limited to 'devices/src/pci/pci_device.rs')
-rw-r--r--devices/src/pci/pci_device.rs11
1 files changed, 8 insertions, 3 deletions
diff --git a/devices/src/pci/pci_device.rs b/devices/src/pci/pci_device.rs
index 3b8b93e..d5bc741 100644
--- a/devices/src/pci/pci_device.rs
+++ b/devices/src/pci/pci_device.rs
@@ -9,7 +9,7 @@ use std::fmt::{self, Display};
 use std::os::unix::io::RawFd;
 
 use kvm::Datamatch;
-use pci::pci_configuration::PciConfiguration;
+use pci::pci_configuration::{self, PciConfiguration};
 use pci::PciInterruptPin;
 use resources::SystemAllocator;
 use sys_util::EventFd;
@@ -18,10 +18,12 @@ use BusDevice;
 
 #[derive(Debug)]
 pub enum Error {
+    /// Setup of the device capabilities failed.
+    CapabilitiesSetup(pci_configuration::Error),
     /// Allocating space for an IO BAR failed.
     IoAllocationFailed(u64),
     /// Registering an IO BAR failed.
-    IoRegistrationFailed(u64),
+    IoRegistrationFailed(u64, pci_configuration::Error),
 }
 pub type Result<T> = std::result::Result<T, Error>;
 
@@ -30,10 +32,13 @@ impl Display for Error {
         use self::Error::*;
 
         match self {
+            CapabilitiesSetup(e) => write!(f, "failed to add capability {}", e),
             IoAllocationFailed(size) => {
                 write!(f, "failed to allocate space for an IO BAR, size={}", size)
             }
-            IoRegistrationFailed(addr) => write!(f, "failed to register an IO BAR, addr={}", addr),
+            IoRegistrationFailed(addr, e) => {
+                write!(f, "failed to register an IO BAR, addr={} err={}", addr, e)
+            }
         }
     }
 }