summaryrefslogtreecommitdiffstats
path: root/src/drivers/net/intel.c
diff options
context:
space:
mode:
authorMichael Brown2014-05-06 23:53:33 +0200
committerMichael Brown2014-05-06 23:53:33 +0200
commitabf875a2e59c699b503c7272515dac3cdaffb7c1 (patch)
tree34ec892a984f63958bafaf6fa8c6e182b41652ea /src/drivers/net/intel.c
parent[profile] Allow interrupts to be excluded from profiling results (diff)
downloadipxe-abf875a2e59c699b503c7272515dac3cdaffb7c1.tar.gz
ipxe-abf875a2e59c699b503c7272515dac3cdaffb7c1.tar.xz
ipxe-abf875a2e59c699b503c7272515dac3cdaffb7c1.zip
[intel] Exclude time spent in hypervisor from profiling
When profiling, exclude any time spent inside the hypervisor responding to our MMIO accesses. This substantially reduces the variance accumulated on many other profilers. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/drivers/net/intel.c')
-rw-r--r--src/drivers/net/intel.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/drivers/net/intel.c b/src/drivers/net/intel.c
index 6684bdbd..771a4c82 100644
--- a/src/drivers/net/intel.c
+++ b/src/drivers/net/intel.c
@@ -496,6 +496,7 @@ void intel_refill_rx ( struct intel_nic *intel ) {
profile_start ( &intel_vm_refill_profiler );
writel ( rx_tail, intel->regs + intel->rx.reg + INTEL_xDT );
profile_stop ( &intel_vm_refill_profiler );
+ profile_exclude ( &intel_vm_refill_profiler );
}
}
@@ -634,6 +635,7 @@ int intel_transmit ( struct net_device *netdev, struct io_buffer *iobuf ) {
profile_start ( &intel_vm_tx_profiler );
writel ( tx_tail, intel->regs + intel->tx.reg + INTEL_xDT );
profile_stop ( &intel_vm_tx_profiler );
+ profile_exclude ( &intel_vm_tx_profiler );
DBGC2 ( intel, "INTEL %p TX %d is [%llx,%llx)\n", intel, tx_idx,
( ( unsigned long long ) address ),
@@ -728,6 +730,7 @@ static void intel_poll ( struct net_device *netdev ) {
profile_start ( &intel_vm_poll_profiler );
icr = readl ( intel->regs + INTEL_ICR );
profile_stop ( &intel_vm_poll_profiler );
+ profile_exclude ( &intel_vm_poll_profiler );
if ( ! icr )
return;