From db9f9b78201f2e83519f13e6f299acd14dc8ad49 Mon Sep 17 00:00:00 2001 From: Sebastien Boeuf Date: Wed, 29 Jan 2020 17:16:33 +0100 Subject: [PATCH] pci: Make self mutable when reading from PCI config space In order to anticipate the need to support more features related to the access of a device's PCI config space, this commits changes the self reference in the function read_config_register() to be mutable. This also brings some more flexibility for any implementation of the PciDevice trait. Signed-off-by: Sebastien Boeuf --- pci/src/bus.rs | 2 +- pci/src/device.rs | 2 +- vfio/src/vfio_pci.rs | 2 +- vm-virtio/src/transport/pci_device.rs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pci/src/bus.rs b/pci/src/bus.rs index 94f2adb41..d55047e30 100644 --- a/pci/src/bus.rs +++ b/pci/src/bus.rs @@ -67,7 +67,7 @@ impl PciDevice for PciRoot { self.config.write_config_register(reg_idx, offset, data); } - fn read_config_register(&self, reg_idx: usize) -> u32 { + fn read_config_register(&mut self, reg_idx: usize) -> u32 { self.config.read_reg(reg_idx) } diff --git a/pci/src/device.rs b/pci/src/device.rs index 16fda6f18..570043d36 100755 --- a/pci/src/device.rs +++ b/pci/src/device.rs @@ -61,7 +61,7 @@ pub trait PciDevice: BusDevice { fn write_config_register(&mut self, reg_idx: usize, offset: u64, data: &[u8]); /// Gets a register from the configuration space. /// * `reg_idx` - The index of the config register to read. - fn read_config_register(&self, reg_idx: usize) -> u32; + fn read_config_register(&mut self, reg_idx: usize) -> u32; /// Detects if a BAR is being reprogrammed. fn detect_bar_reprogramming( &mut self, diff --git a/vfio/src/vfio_pci.rs b/vfio/src/vfio_pci.rs index d41ddb35b..280cc9191 100644 --- a/vfio/src/vfio_pci.rs +++ b/vfio/src/vfio_pci.rs @@ -852,7 +852,7 @@ impl PciDevice for VfioPciDevice { .region_write(VFIO_PCI_CONFIG_REGION_INDEX, data, reg + offset); } - fn read_config_register(&self, reg_idx: usize) -> u32 { + fn read_config_register(&mut self, reg_idx: usize) -> u32 { // When reading the BARs, we trap it and return what comes // from our local configuration space. We want the guest to // use that and not the VFIO device BARs as it does not map diff --git a/vm-virtio/src/transport/pci_device.rs b/vm-virtio/src/transport/pci_device.rs index bb81a9faa..e9bcf1b79 100755 --- a/vm-virtio/src/transport/pci_device.rs +++ b/vm-virtio/src/transport/pci_device.rs @@ -556,7 +556,7 @@ impl PciDevice for VirtioPciDevice { .write_config_register(reg_idx, offset, data); } - fn read_config_register(&self, reg_idx: usize) -> u32 { + fn read_config_register(&mut self, reg_idx: usize) -> u32 { self.configuration.read_reg(reg_idx) }