Re: [PATCH] thunderbolt: icm: preserve USB4 proxy data-valid bit
From: Mika Westerberg
Date: Mon Jul 27 2026 - 07:07:28 EST
On Mon, Jul 13, 2026 at 05:32:37PM +0800, raoxu wrote:
> From: Xu Rao <raoxu@xxxxxxxxxxxxx>
>
> The ICM USB4 switch operation request encodes two values in
> request.data_len_valid: bit 4 marks the data payload valid, while bits
> 3:0 hold the payload length in dwords. A zero length with the valid bit
> set represents the full 16-dword data array.
>
> icm_usb4_switch_op() sets the valid bit when a transmit payload is
> present. For payloads shorter than the full 16 dwords, it then assigns
> the length to the whole field and clears the valid bit that was just set.
> The payload is still copied into the request, but the descriptor sent to
> firmware marks that data as invalid.
>
> This affects USB4 router operations that send short payloads through the
> firmware connection manager. In particular, USB4 NVM writes can send a
> short final block when the image size is not aligned to the 64-byte proxy
> payload size. Firmware may then ignore or reject that final block, while
> full 16-dword blocks are unaffected because they are encoded as length 0
> with the valid bit set.
>
> OR the short payload length into data_len_valid so the valid bit is
> preserved.
>
> Fixes: 9039387e166e ("thunderbolt: Add USB4 router operation proxy for firmware connection manager")
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Xu Rao <raoxu@xxxxxxxxxxxxx>
Applied to thunderbolt.git/fixes, thanks!