FAILED: patch "[PATCH] ice: reintroduce retry mechanism for indirect AQ" failed to apply to 5.15-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 5.15-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.15.y
git checkout FETCH_HEAD
git cherry-pick -x 326256c0a72d4877cec1d4df85357da106233128
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026031702-configure-decorator-0097@gregkh' --subject-prefix 'PATCH 5.15.y' HEAD^..
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 326256c0a72d4877cec1d4df85357da106233128 Mon Sep 17 00:00:00 2001
From: Jakub Staniszewski <[email protected]>
Date: Tue, 13 Jan 2026 20:38:16 +0100
Subject: [PATCH] ice: reintroduce retry mechanism for indirect AQ
Add retry mechanism for indirect Admin Queue (AQ) commands. To do so we need to keep the command buffer.
This technically reverts commit 43a630e37e25
("ice: remove unused buffer copy code in ice_sq_send_cmd_retry()"), but combines it with a fix in the logic by using a kmemdup() call, making it more robust and less likely to break in the future due to programmer error.
drivers/net/ethernet/intel/ice/ice_common.c +9 -3
@@ -1841,6 +1841,7 @@ ice_sq_send_cmd_retry(struct ice_hw *hw, struct ice_ctl_q_info *cq, {struct libie_aq_desc desc_cpy;bool is_cmd_for_retry; +u8 *buf_cpy =NULL ;u8 idx =0 ;u16 opcode;int status;
@@ -1850,8 +1851,11 @@ ice_sq_send_cmd_retry(struct ice_hw *hw, struct ice_ctl_q_info *cq,memset (&desc_cpy,0 ,sizeof (desc_cpy));if (is_cmd_for_retry) { -/* All retryable cmds are direct, without buf. */ -WARN_ON (buf); +if (buf) { + buf_cpy =kmemdup (buf, buf_size,GFP_KERNEL ); +if (!buf_cpy) +return -ENOMEM ; + }memcpy (&desc_cpy, desc,sizeof (desc_cpy)); }
@@ -1863,12 +1867,14 @@ ice_sq_send_cmd_retry(struct ice_hw *hw, struct ice_ctl_q_info *cq, hw->adminq.sq_last_status != LIBIE_AQ_RC_EBUSY) break; +if (buf_cpy) +memcpy (buf, buf_cpy, buf_size);memcpy (desc, &desc_cpy,sizeof (desc_cpy)); -msleep (ICE_SQ_SEND_DELAY_TIME_MS ); }while (++idx <ICE_SQ_SEND_MAX_EXECUTE ); +kfree (buf_cpy);return status; }
Sasha Levin
maintainerPATCH 1/2 ice: sleep, don't busy-wait, in the SQ send retry loop
From: Michal Schmidt <[email protected]>
[ Upstream commit b488ae52ef9f74155ab358f8c68e74327b45e0e1 ]
10 ms is a lot of time to spend busy-waiting. Sleeping is clearly allowed here, because we have just returned from ice_sq_send_cmd(), which takes a mutex.
On kernels with HZ=100, this msleep may be twice as long, but I don't think it matters.
I did not actually observe any retries happening here.
Stable-dep-of: 326256c0a72d ("ice: reintroduce retry mechanism for indirect AQ")
--- drivers/net/ethernet/intel/ice/ice_common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/ethernet/intel/ice/ice_common.c +1 -1
@@ -1442,7 +1442,7 @@ ice_sq_send_cmd_retry(struct ice_hw *hw, struct ice_ctl_q_info *cq,memcpy (desc, &desc_cpy,sizeof (desc_cpy)); -mdelay (ICE_SQ_SEND_DELAY_TIME_MS ); +msleep (ICE_SQ_SEND_DELAY_TIME_MS ); }while (++idx <ICE_SQ_SEND_MAX_EXECUTE );
Signature · 1 line
2.51.0
Sasha Levin
maintainerPATCH 2/2 ice: reintroduce retry mechanism for indirect AQ
From: Jakub Staniszewski <[email protected]>
[ Upstream commit 326256c0a72d4877cec1d4df85357da106233128 ]
Add retry mechanism for indirect Admin Queue (AQ) commands. To do so we need to keep the command buffer.
This technically reverts commit 43a630e37e25
("ice: remove unused buffer copy code in ice_sq_send_cmd_retry()"), but combines it with a fix in the logic by using a kmemdup() call, making it more robust and less likely to break in the future due to programmer error.
--- drivers/net/ethernet/intel/ice/ice_common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/ethernet/intel/ice/ice_common.c +1 -1
@@ -1422,7 +1422,7 @@ ice_sq_send_cmd_retry(struct ice_hw *hw, struct ice_ctl_q_info *cq,if (is_cmd_for_retry) {if (buf) { - buf_cpy =kzalloc (buf_size,GFP_KERNEL ); + buf_cpy =kmemdup (buf, buf_size,GFP_KERNEL );if (!buf_cpy)return ICE_ERR_NO_MEMORY ; }
Signature · 1 line
2.51.0
Re: [PATCH 5.15.y 2/2] ice: reintroduce retry mechanism for indirect AQ
Quoted 26 lines · Sasha Levin
From: Jakub Staniszewski <[email protected]>
[ Upstream commit
326256c0a72d4877cec1d4df85357da106233128]Add retry mechanism for indirect Admin Queue (AQ) commands. To do so we need to keep the command buffer.
This technically reverts commit
43a630e37e25
("ice: remove unused buffer copy code inice_sq_send_cmd_retry()"), but combines it with a fix in the logic by using akmemdup()call, making it more robust and less likely to break in the future due to programmer error.Cc Michal Schmidt <[email protected]>Fixes 3056df93f7a8 ("ice: Re-send some AQ commands, as result of EBUSY AQ error")Signed-off-by Jakub Staniszewski <[email protected]>Co-developed-by Dawid Osuchowski <[email protected]>Signed-off-by Dawid Osuchowski <[email protected]>Reviewed-by Aleksandr Loktionov <[email protected]>Reviewed-by Przemek Kitszel <[email protected]>Reviewed-by Paul Menzel <[email protected]>Signed-off-by Tony Nguyen <[email protected]>[ kzalloc() => kmemdup() ]Signed-off-by Sasha Levin <[email protected]>
Quoted 1 line
---
I didn't have the time to test this, but the code itself looks sane :)
Thanks
Dawid