summary refs log tree commit diff
path: root/devices/src/pci/pci_device.rs
diff options
context:
space:
mode:
authorDaniel Prilik <prilik@google.com>2019-02-26 17:28:26 -0800
committerchrome-bot <chrome-bot@chromium.org>2019-03-11 19:52:59 -0700
commit7374f32ba47633af33ac6c3981cdee60e6f75671 (patch)
treeb7cd8f826eda0c691a68c7373ab9925d77cba840 /devices/src/pci/pci_device.rs
parentbe034264082fd17b7d8f256a51b0753bbd5e8148 (diff)
downloadcrosvm-7374f32ba47633af33ac6c3981cdee60e6f75671.tar
crosvm-7374f32ba47633af33ac6c3981cdee60e6f75671.tar.gz
crosvm-7374f32ba47633af33ac6c3981cdee60e6f75671.tar.bz2
crosvm-7374f32ba47633af33ac6c3981cdee60e6f75671.tar.lz
crosvm-7374f32ba47633af33ac6c3981cdee60e6f75671.tar.xz
crosvm-7374f32ba47633af33ac6c3981cdee60e6f75671.tar.zst
crosvm-7374f32ba47633af33ac6c3981cdee60e6f75671.zip
devices: PCI: add capabilities callback
virtio devices should be able to specify capabilities

BUG=chromium:936567
TEST=boot vm

Change-Id: I049f9967eb59a7904528fff5aea844e30c636e28
Reviewed-on: https://chromium-review.googlesource.com/1493012
Commit-Ready: Daniel Prilik <prilik@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Stephen Barber <smbarber@chromium.org>
Diffstat (limited to 'devices/src/pci/pci_device.rs')
-rw-r--r--devices/src/pci/pci_device.rs8
1 files changed, 8 insertions, 0 deletions
diff --git a/devices/src/pci/pci_device.rs b/devices/src/pci/pci_device.rs
index d5bc741..bd811b5 100644
--- a/devices/src/pci/pci_device.rs
+++ b/devices/src/pci/pci_device.rs
@@ -76,6 +76,11 @@ pub trait PciDevice: Send {
         Ok(Vec::new())
     }
 
+    /// Register any capabilties specified by the device.
+    fn register_device_capabilities(&mut self) -> Result<()> {
+        Ok(())
+    }
+
     /// Gets a list of ioeventfds that should be registered with the running VM. The list is
     /// returned as a Vec of (eventfd, addr, datamatch) tuples.
     fn ioeventfds(&self) -> Vec<(&EventFd, u64, Datamatch)> {
@@ -160,6 +165,9 @@ impl<T: PciDevice + ?Sized> PciDevice for Box<T> {
     fn allocate_device_bars(&mut self, resources: &mut SystemAllocator) -> Result<Vec<(u64, u64)>> {
         (**self).allocate_device_bars(resources)
     }
+    fn register_device_capabilities(&mut self) -> Result<()> {
+        (**self).register_device_capabilities()
+    }
     fn ioeventfds(&self) -> Vec<(&EventFd, u64, Datamatch)> {
         (**self).ioeventfds()
     }