mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2026-08-05 02:19:16 +00:00
virtio-devices: pci_device: Remove Option<..> around VirtioInterrupt
The VirtioInterrupt is now always created so the Option<..> can always be removed. As a side effect the interrupt_source_group can also be removed from the struct. Signed-off-by: Rob Bradford <rbradford@meta.com>
This commit is contained in:
@@ -359,8 +359,7 @@ pub struct VirtioPciDevice {
|
|||||||
|
|
||||||
// PCI interrupts.
|
// PCI interrupts.
|
||||||
interrupt_status: Arc<AtomicUsize>,
|
interrupt_status: Arc<AtomicUsize>,
|
||||||
virtio_interrupt: Option<Arc<dyn VirtioInterrupt>>,
|
virtio_interrupt: Arc<dyn VirtioInterrupt>,
|
||||||
interrupt_source_group: MaybeMutInterruptSourceGroup,
|
|
||||||
|
|
||||||
// virtio queues
|
// virtio queues
|
||||||
queues: Vec<Queue>,
|
queues: Vec<Queue>,
|
||||||
@@ -592,6 +591,13 @@ impl VirtioPciDevice {
|
|||||||
// prevents from a subtle deadlock.
|
// prevents from a subtle deadlock.
|
||||||
std::mem::drop(locked_device);
|
std::mem::drop(locked_device);
|
||||||
|
|
||||||
|
let virtio_interrupt = Arc::new(VirtioInterruptMsix::new(
|
||||||
|
msix_config.clone(),
|
||||||
|
common_config.msix_config.clone(),
|
||||||
|
common_config.msix_queues.clone(),
|
||||||
|
interrupt_source_group.clone(),
|
||||||
|
));
|
||||||
|
|
||||||
let mut virtio_pci_device = VirtioPciDevice {
|
let mut virtio_pci_device = VirtioPciDevice {
|
||||||
id,
|
id,
|
||||||
configuration,
|
configuration,
|
||||||
@@ -601,13 +607,12 @@ impl VirtioPciDevice {
|
|||||||
device,
|
device,
|
||||||
device_activated: Arc::new(AtomicBool::new(device_activated)),
|
device_activated: Arc::new(AtomicBool::new(device_activated)),
|
||||||
interrupt_status: Arc::new(AtomicUsize::new(interrupt_status)),
|
interrupt_status: Arc::new(AtomicUsize::new(interrupt_status)),
|
||||||
virtio_interrupt: None,
|
virtio_interrupt,
|
||||||
queues,
|
queues,
|
||||||
queue_evts,
|
queue_evts,
|
||||||
memory,
|
memory,
|
||||||
settings_bar: 0,
|
settings_bar: 0,
|
||||||
use_64bit_bar,
|
use_64bit_bar,
|
||||||
interrupt_source_group: interrupt_source_group.clone(),
|
|
||||||
cap_pci_cfg_info,
|
cap_pci_cfg_info,
|
||||||
bar_regions: vec![],
|
bar_regions: vec![],
|
||||||
activate_evt,
|
activate_evt,
|
||||||
@@ -615,13 +620,6 @@ impl VirtioPciDevice {
|
|||||||
pending_activations,
|
pending_activations,
|
||||||
};
|
};
|
||||||
|
|
||||||
virtio_pci_device.virtio_interrupt = Some(Arc::new(VirtioInterruptMsix::new(
|
|
||||||
virtio_pci_device.msix_config.clone(),
|
|
||||||
virtio_pci_device.common_config.msix_config.clone(),
|
|
||||||
virtio_pci_device.common_config.msix_queues.clone(),
|
|
||||||
virtio_pci_device.interrupt_source_group.clone(),
|
|
||||||
)));
|
|
||||||
|
|
||||||
// In case of a restore, we can activate the device, as we know at
|
// In case of a restore, we can activate the device, as we know at
|
||||||
// this point the virtqueues are in the right state and the device is
|
// this point the virtqueues are in the right state and the device is
|
||||||
// ready to be activated, which will spawn each virtio worker thread.
|
// ready to be activated, which will spawn each virtio worker thread.
|
||||||
@@ -820,7 +818,7 @@ impl VirtioPciDevice {
|
|||||||
}
|
}
|
||||||
|
|
||||||
VirtioPciDeviceActivator {
|
VirtioPciDeviceActivator {
|
||||||
interrupt: self.virtio_interrupt.as_ref().unwrap().clone(),
|
interrupt: self.virtio_interrupt.clone(),
|
||||||
memory: Some(self.memory.clone()),
|
memory: Some(self.memory.clone()),
|
||||||
device: self.device.clone(),
|
device: self.device.clone(),
|
||||||
queues: Some(queues),
|
queues: Some(queues),
|
||||||
|
|||||||
Reference in New Issue
Block a user