mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2025-03-20 07:58:55 +00:00
vm-virtio: Add some info! level debugging interrupt generation
This was very helpful when debugging interrupt issues and will be useful for the future. Signed-off-by: Rob Bradford <robert.bradford@intel.com>
This commit is contained in:
parent
cc51fdb8a7
commit
a5596020b3
@ -78,6 +78,7 @@ impl NetQueuePair {
|
||||
)
|
||||
.map_err(DeviceError::UnregisterListener)?;
|
||||
self.rx_tap_listening = false;
|
||||
info!("Listener unregistered");
|
||||
}
|
||||
return Ok(false);
|
||||
}
|
||||
@ -128,6 +129,7 @@ impl NetQueuePair {
|
||||
)
|
||||
.map_err(DeviceError::RegisterListener)?;
|
||||
self.rx_tap_listening = true;
|
||||
info!("Listener registered");
|
||||
}
|
||||
if self.rx.deferred_frame {
|
||||
if self.rx_single_frame(queue)? {
|
||||
@ -207,7 +209,10 @@ impl NetEpollHandler {
|
||||
}
|
||||
|
||||
if self.net.resume_rx(&mut queue)? {
|
||||
self.signal_used_queue(queue)?
|
||||
self.signal_used_queue(queue)?;
|
||||
info!("Signalling RX queue");
|
||||
} else {
|
||||
info!("Not signalling RX queue");
|
||||
}
|
||||
|
||||
Ok(())
|
||||
@ -221,16 +226,21 @@ impl NetEpollHandler {
|
||||
if let Err(e) = queue_evt.read() {
|
||||
error!("Failed to get tx queue event: {:?}", e);
|
||||
}
|
||||
|
||||
if self.net.process_tx(&mut queue)? {
|
||||
self.signal_used_queue(queue)?
|
||||
self.signal_used_queue(queue)?;
|
||||
info!("Signalling TX queue");
|
||||
} else {
|
||||
info!("Not signalling TX queue");
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn handle_rx_tap_event(&mut self, queue: &mut Queue) -> result::Result<(), DeviceError> {
|
||||
if self.net.process_rx_tap(queue)? {
|
||||
self.signal_used_queue(queue)?
|
||||
if self.net.process_rx_tap(queue)? || !self.driver_awake {
|
||||
self.signal_used_queue(queue)?;
|
||||
info!("Signalling RX queue");
|
||||
} else {
|
||||
info!("Not signalling RX queue");
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
@ -291,6 +301,7 @@ impl NetEpollHandler {
|
||||
)
|
||||
.map_err(DeviceError::EpollCtl)?;
|
||||
self.net.rx_tap_listening = true;
|
||||
error!("Listener registered at start");
|
||||
}
|
||||
|
||||
let mut events = vec![epoll::Event::new(epoll::Events::empty(), 0); NET_EVENTS_COUNT];
|
||||
|
@ -702,6 +702,10 @@ impl Queue {
|
||||
|
||||
if let Some(old_idx) = self.signalled_used {
|
||||
if let Some(used_event) = self.get_used_event(&mem) {
|
||||
info!(
|
||||
"used_event = {:?} used_idx = {:?} old_idx = {:?}",
|
||||
used_event, used_idx, old_idx
|
||||
);
|
||||
if (used_idx - used_event - Wrapping(1u16)) >= (used_idx - old_idx) {
|
||||
notify = false;
|
||||
}
|
||||
@ -709,6 +713,7 @@ impl Queue {
|
||||
}
|
||||
|
||||
self.signalled_used = Some(used_idx);
|
||||
info!("Needs notification: {:?}", notify);
|
||||
notify
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user