Commit 026a3ef
committed
dmaengine: sdxi: Context management overhaul
This survives booting through dmatest and unbinding the device with
kasan and kmemleak enabled in a VM.
Some key points:
* Define a class for tracking contexts in the device's client_cxts
xarray, allocating the context IDs, and automatically unwinding on
early return.
* Ensure valid bit updates for CXT_CTL and CXT_L1_ENT occur after the
entry is fully programmed, preceded by a barrier.
* Use intermediate logical representations of control structure subfields
that are passed to the serialization functions.
* More clearly separate treatment of admin and client contexts. Do not
allocate context ID 0 from sdxi_dev->client_cxts any more.
* Do away with goto-based error unwinding in favor of a robust
sdxi_cxt destructor that handles partially-allocated contexts.
Signed-off-by: Nathan Lynch <nathan.lynch@amd.com>1 parent dec9231 commit 026a3ef
4 files changed
Lines changed: 307 additions & 264 deletions
0 commit comments