Re: [PATCH iwl-next v4] libie: log more info when virtchnl fails
From: Li Li
Date: Fri May 08 2026 - 19:07:05 EST
Friendly ping on this patch.
Please let me know if you have any questions regarding this patch, thank you!
Li
On Thu, Apr 30, 2026 at 6:25 PM Li Li <boolli@xxxxxxxxxx> wrote:
>
> Virtchnl failures can be hard to debug without logs. Logging the details
> of virtchnl transactions can be useful for debugging virtchnl-related
> issues.
>
> Tested: Built & booted on a test machine and synthetically produced a
> virtual failure to produce the following log:
>
> idpf 0000:01:00.0: Non-zero virtchnl ret val 6 (msg op: 1, data_len: 8);
> xn id: 0, cookie: 0
> idpf 0000:01:00.0: Transaction failed (op 1, xn state:
> 3, id: 0, cookie: 0, size: 8)
>
> Signed-off-by: Li Li <boolli@xxxxxxxxxx>
> ---
> v4:
> - Simplify logging to reduce redundant "ret val"s.
> - Use %u for xn->state.
> v3:
> - Use dev_err_ratelimited in both logs.
> - Move log placement to after virtchnl field validation.
> - Remove redundant op/cookie fields since they were validated.
> v2:
> - Use dev_warn_ratelimited instead of dev_notice_ratelimited based on
> reviewer feedback.
> drivers/net/ethernet/intel/libie/controlq.c | 13 +++++++++++++
> 1 file changed, 13 insertions(+)
>
> diff --git a/drivers/net/ethernet/intel/libie/controlq.c b/drivers/net/ethernet/intel/libie/controlq.c
> index ebc05355e39d..e1bc19d6cdbf 100644
> --- a/drivers/net/ethernet/intel/libie/controlq.c
> +++ b/drivers/net/ethernet/intel/libie/controlq.c
> @@ -766,6 +766,14 @@ libie_ctlq_xn_process_recv(struct libie_ctlq_xn_recv_params *params,
> msg_cookie != xn->cookie)
> return false;
>
> + if (ctlq_msg->chnl_retval) {
> + dev_err_ratelimited(
> + params->ctlq->dev,
> + "Non-zero virtchnl ret val %u (msg op: %u, data_len: %u); xn id: %u, cookie: %u\n",
> + ctlq_msg->chnl_retval, ctlq_msg->chnl_opcode,
> + ctlq_msg->data_len, xn->index, xn->cookie);
> + }
> +
> spin_lock(&xn->xn_lock);
> if (xn->state != LIBIE_CTLQ_XN_ASYNC &&
> xn->state != LIBIE_CTLQ_XN_WAITING) {
> @@ -1011,6 +1019,11 @@ int libie_ctlq_xn_send(struct libie_ctlq_xn_send_params *params)
> params->recv_mem = xn->recv_mem;
> break;
> default:
> + dev_err_ratelimited(
> + params->ctlq->dev,
> + "Transaction failed (op %u, xn state: %u, id: %u, cookie: %u, size: %zu)\n",
> + params->chnl_opcode, xn->state, xn->index, xn->cookie,
> + xn->recv_mem.iov_len);
> ret = -EBADMSG;
> break;
> }
> --
> 2.54.0.545.g6539524ca2-goog
>