ioat(4): Add additional CTR tracing during reset
This commit is contained in:
parent
7c69072a6d
commit
cff403ac84
@ -1831,6 +1831,9 @@ ioat_reset_hw(struct ioat_softc *ioat)
|
|||||||
ioat->resetting_cleanup = TRUE;
|
ioat->resetting_cleanup = TRUE;
|
||||||
mtx_unlock(&ioat->cleanup_lock);
|
mtx_unlock(&ioat->cleanup_lock);
|
||||||
|
|
||||||
|
CTR2(KTR_IOAT, "%s channel=%u quiesced and drained", __func__,
|
||||||
|
ioat->chan_idx);
|
||||||
|
|
||||||
status = ioat_get_chansts(ioat);
|
status = ioat_get_chansts(ioat);
|
||||||
if (is_ioat_active(status) || is_ioat_idle(status))
|
if (is_ioat_active(status) || is_ioat_idle(status))
|
||||||
ioat_suspend(ioat);
|
ioat_suspend(ioat);
|
||||||
@ -1851,6 +1854,9 @@ ioat_reset_hw(struct ioat_softc *ioat)
|
|||||||
chanerr = ioat_read_4(ioat, IOAT_CHANERR_OFFSET);
|
chanerr = ioat_read_4(ioat, IOAT_CHANERR_OFFSET);
|
||||||
ioat_write_4(ioat, IOAT_CHANERR_OFFSET, chanerr);
|
ioat_write_4(ioat, IOAT_CHANERR_OFFSET, chanerr);
|
||||||
|
|
||||||
|
CTR2(KTR_IOAT, "%s channel=%u hardware suspended", __func__,
|
||||||
|
ioat->chan_idx);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* IOAT v3 workaround - CHANERRMSK_INT with 3E07h to masks out errors
|
* IOAT v3 workaround - CHANERRMSK_INT with 3E07h to masks out errors
|
||||||
* that can cause stability issues for IOAT v3.
|
* that can cause stability issues for IOAT v3.
|
||||||
@ -1870,6 +1876,8 @@ ioat_reset_hw(struct ioat_softc *ioat)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ioat_reset(ioat);
|
ioat_reset(ioat);
|
||||||
|
CTR2(KTR_IOAT, "%s channel=%u hardware reset", __func__,
|
||||||
|
ioat->chan_idx);
|
||||||
|
|
||||||
/* Wait at most 20 ms */
|
/* Wait at most 20 ms */
|
||||||
for (timeout = 0; ioat_reset_pending(ioat) && timeout < 20; timeout++)
|
for (timeout = 0; ioat_reset_pending(ioat) && timeout < 20; timeout++)
|
||||||
@ -1919,11 +1927,16 @@ ioat_reset_hw(struct ioat_softc *ioat)
|
|||||||
ioat_write_chancmp(ioat, ioat->comp_update_bus_addr);
|
ioat_write_chancmp(ioat, ioat->comp_update_bus_addr);
|
||||||
ioat_write_chainaddr(ioat, ioat->ring[0]->hw_desc_bus_addr);
|
ioat_write_chainaddr(ioat, ioat->ring[0]->hw_desc_bus_addr);
|
||||||
error = 0;
|
error = 0;
|
||||||
|
CTR2(KTR_IOAT, "%s channel=%u configured channel", __func__,
|
||||||
|
ioat->chan_idx);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
/* Enqueues a null operation and ensures it completes. */
|
/* Enqueues a null operation and ensures it completes. */
|
||||||
if (error == 0)
|
if (error == 0) {
|
||||||
error = ioat_start_channel(ioat);
|
error = ioat_start_channel(ioat);
|
||||||
|
CTR2(KTR_IOAT, "%s channel=%u started channel", __func__,
|
||||||
|
ioat->chan_idx);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Resume completions now that ring state is consistent.
|
* Resume completions now that ring state is consistent.
|
||||||
@ -1943,6 +1956,7 @@ out:
|
|||||||
if (ioat->is_completion_pending)
|
if (ioat->is_completion_pending)
|
||||||
callout_reset(&ioat->poll_timer, 1, ioat_poll_timer_callback,
|
callout_reset(&ioat->poll_timer, 1, ioat_poll_timer_callback,
|
||||||
ioat);
|
ioat);
|
||||||
|
CTR2(KTR_IOAT, "%s channel=%u reset done", __func__, ioat->chan_idx);
|
||||||
mtx_unlock(IOAT_REFLK);
|
mtx_unlock(IOAT_REFLK);
|
||||||
|
|
||||||
return (error);
|
return (error);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user