mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
Do not hold locks around hardware context reads.
MFC after: 3 days
This commit is contained in:
parent
c3400997c4
commit
bf3db9ebd8
1 changed files with 11 additions and 10 deletions
|
|
@ -5161,23 +5161,24 @@ get_sge_context(struct adapter *sc, struct t4_sge_context *cntxt)
|
|||
cntxt->mem_id != CTXT_FLM && cntxt->mem_id != CTXT_CNM)
|
||||
return (EINVAL);
|
||||
|
||||
rc = begin_synchronized_op(sc, NULL, SLEEP_OK | INTR_OK, "t4ctxt");
|
||||
if (rc)
|
||||
return (rc);
|
||||
|
||||
if (sc->flags & FW_OK) {
|
||||
rc = begin_synchronized_op(sc, NULL, HOLD_LOCK, "t4ctxt");
|
||||
if (rc == 0) {
|
||||
rc = -t4_sge_ctxt_rd(sc, sc->mbox, cntxt->cid,
|
||||
cntxt->mem_id, &cntxt->data[0]);
|
||||
end_synchronized_op(sc, LOCK_HELD);
|
||||
if (rc == 0)
|
||||
return (0);
|
||||
}
|
||||
rc = -t4_sge_ctxt_rd(sc, sc->mbox, cntxt->cid, cntxt->mem_id,
|
||||
&cntxt->data[0]);
|
||||
if (rc == 0)
|
||||
goto done;
|
||||
}
|
||||
|
||||
/*
|
||||
* Read via firmware failed or wasn't even attempted. Read directly via
|
||||
* the backdoor.
|
||||
*/
|
||||
rc = -t4_sge_ctxt_rd_bd(sc, cntxt->cid, cntxt->mem_id,
|
||||
&cntxt->data[0]);
|
||||
rc = -t4_sge_ctxt_rd_bd(sc, cntxt->cid, cntxt->mem_id, &cntxt->data[0]);
|
||||
done:
|
||||
end_synchronized_op(sc, 0);
|
||||
return (rc);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue