(&self)
| 1105 | } |
| 1106 | |
| 1107 | pub(crate) fn enable_msi(&self) -> Result<(), VfioPciError> { |
| 1108 | if let Some(msi) = &self.interrupt.msi { |
| 1109 | let mut irq_fds: Vec<EventFd> = Vec::new(); |
| 1110 | for i in 0..msi.cfg.num_enabled_vectors() { |
| 1111 | if let Some(eventfd) = msi.interrupt_source_group.notifier(i as InterruptIndex) { |
| 1112 | irq_fds.push(eventfd); |
| 1113 | } else { |
| 1114 | return Err(VfioPciError::MissingNotifier); |
| 1115 | } |
| 1116 | } |
| 1117 | |
| 1118 | self.vfio_wrapper |
| 1119 | .enable_msi(irq_fds.iter().collect()) |
| 1120 | .map_err(VfioPciError::EnableMsi)?; |
| 1121 | } |
| 1122 | |
| 1123 | Ok(()) |
| 1124 | } |
| 1125 | |
| 1126 | pub(crate) fn disable_msi(&self) { |
| 1127 | if let Err(e) = self.vfio_wrapper.disable_msi() { |
no test coverage detected