pci: Give PCI device ID back when removing a device

Upon removal of a PCI device, make sure we don't hold onto the device ID
as it could be reused for another device later.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
This commit is contained in:
Sebastien Boeuf
2020-03-09 16:32:27 +01:00
committed by Rob Bradford
parent df71aaee3f
commit b50cbe5064
2 changed files with 21 additions and 0 deletions

View File

@@ -31,6 +31,8 @@ pub enum PciRootError {
MmioInsert(devices::BusError),
/// Could not find an available device slot on the PCI bus.
NoPciDeviceSlotAvailable,
/// Invalid PCI device identifier provided.
InvalidPciDeviceSlot(usize),
}
pub type Result<T> = std::result::Result<T, PciRootError>;
@@ -146,6 +148,15 @@ impl PciBus {
Err(PciRootError::NoPciDeviceSlotAvailable)
}
pub fn put_device_id(&mut self, id: usize) -> Result<()> {
if id < NUM_DEVICE_IDS {
self.device_ids[id] = false;
Ok(())
} else {
Err(PciRootError::InvalidPciDeviceSlot(id))
}
}
}
pub struct PciConfigIo {