Commit 56007972 authored by Alexander Koskovich's avatar Alexander Koskovich Committed by Paolo Abeni
Browse files

net: ipa: fix event ring index not programmed for IPA v5.0+



For IPA v5.0+, the event ring index field moved from CH_C_CNTXT_0 to
CH_C_CNTXT_1. The v5.0 register definition intended to define this
field in the CH_C_CNTXT_1 fmask array but used the old identifier of
ERINDEX instead of CH_ERINDEX.

Without a valid event ring, GSI channels could never signal transfer
completions. This caused gsi_channel_trans_quiesce() to block
forever in wait_for_completion().

At least for IPA v5.2 this resolves an issue seen where runtime
suspend, system suspend, and remoteproc stop all hanged forever. It
also meant the IPA data path was completely non functional.

Fixes: faf0678e ("net: ipa: add IPA v5.0 GSI register definitions")
Signed-off-by: default avatarAlexander Koskovich <akoskovich@pm.me>
Signed-off-by: default avatarLuca Weiss <luca.weiss@fairphone.com>
Reviewed-by: default avatarSimon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20260403-milos-ipa-v1-2-01e9e4e03d3e@fairphone.com


Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent 9709b56d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -30,7 +30,7 @@ REG_STRIDE_FIELDS(CH_C_CNTXT_0, ch_c_cntxt_0,

static const u32 reg_ch_c_cntxt_1_fmask[] = {
	[CH_R_LENGTH]					= GENMASK(23, 0),
	[ERINDEX]					= GENMASK(31, 24),
	[CH_ERINDEX]					= GENMASK(31, 24),
};

REG_STRIDE_FIELDS(CH_C_CNTXT_1, ch_c_cntxt_1,