mbox series

[v3,0/4] Add support for downstream port reset(DPR)

Message ID 20240106165723.3377789-1-Sanath.S@amd.com
Headers show
Series Add support for downstream port reset(DPR) | expand

Message

Sanath S Jan. 6, 2024, 4:57 p.m. UTC
Tunnels created by boot firmware results in incorrect PCI resource
allocation, which results in failure of extending daisy chain.
This series aims to resolve inconsistent tunnels or paths created
by boot firmware.

Before:
           +-03.1-[04-62]----00.0-[05-07]--+-02.0-[06]----00.0
           |                               \-04.0-[07]--
After:
           +-03.1-[04-62]----00.0-[05-62]--+-02.0-[06]----00.0
           |                               \-04.0-[07-62]-- 

This series also aligns with windows behaviour of performing a teardown
of tunnels and resetting the downstream ports using DPR during the init
sequence.

Changes since V3:
 - Remove discover_tunnel() api before resetting DPR.
 - Add lane and protocol adapters reset in tb_switch_reset()
 - Addition of tb_lc_reset_port() for TBT1, TBT2 and TBT3 routers.
 - Addition of tb_path_deactivate_hop() api to help suppport path
   reset of given hop index.
 - Addition on new patch to store and indicate host router reset 
   status of USB4 v2

Changes since V2:
 - Perform DPR only for USB4 routers.
 - Update kernel-doc and return value to -EOPNOTSUPP.
 - Limit delay range to 10-15ms.

Sanath S (4):
  thunderbolt: Introduce usb4_port_reset() and tb_lc_reset_port()
  thunderbolt: Extend tb_switch_reset() to support lane and protocol
    adapter reset
  thunderbolt: Store host router reset status in nhi_probe()
  thunderbolt: Teardown tunnels and reset downstream ports created by
    boot firmware

 drivers/thunderbolt/domain.c  |  5 +--
 drivers/thunderbolt/icm.c     |  2 +-
 drivers/thunderbolt/lc.c      | 44 +++++++++++++++++++++++++
 drivers/thunderbolt/nhi.c     | 19 +++++++----
 drivers/thunderbolt/path.c    | 13 ++++++++
 drivers/thunderbolt/switch.c  | 61 +++++++++++++++++++++++++++++++++--
 drivers/thunderbolt/tb.c      | 29 +++++++++++++----
 drivers/thunderbolt/tb.h      |  7 ++--
 drivers/thunderbolt/tb_regs.h |  4 +++
 drivers/thunderbolt/usb4.c    | 39 ++++++++++++++++++++++
 10 files changed, 202 insertions(+), 21 deletions(-)

Comments

Mika Westerberg Jan. 10, 2024, 2:31 p.m. UTC | #1
Hi,

On Sat, Jan 06, 2024 at 10:27:19PM +0530, Sanath S wrote:
> Tunnels created by boot firmware results in incorrect PCI resource
> allocation, which results in failure of extending daisy chain.
> This series aims to resolve inconsistent tunnels or paths created
> by boot firmware.
> 
> Before:
>            +-03.1-[04-62]----00.0-[05-07]--+-02.0-[06]----00.0
>            |                               \-04.0-[07]--
> After:
>            +-03.1-[04-62]----00.0-[05-62]--+-02.0-[06]----00.0
>            |                               \-04.0-[07-62]-- 
> 
> This series also aligns with windows behaviour of performing a teardown
> of tunnels and resetting the downstream ports using DPR during the init
> sequence.
> 
> Changes since V3:
>  - Remove discover_tunnel() api before resetting DPR.
>  - Add lane and protocol adapters reset in tb_switch_reset()
>  - Addition of tb_lc_reset_port() for TBT1, TBT2 and TBT3 routers.
>  - Addition of tb_path_deactivate_hop() api to help suppport path
>    reset of given hop index.
>  - Addition on new patch to store and indicate host router reset 
>    status of USB4 v2
> 
> Changes since V2:
>  - Perform DPR only for USB4 routers.
>  - Update kernel-doc and return value to -EOPNOTSUPP.
>  - Limit delay range to 10-15ms.
> 
> Sanath S (4):
>   thunderbolt: Introduce usb4_port_reset() and tb_lc_reset_port()
>   thunderbolt: Extend tb_switch_reset() to support lane and protocol
>     adapter reset
>   thunderbolt: Store host router reset status in nhi_probe()
>   thunderbolt: Teardown tunnels and reset downstream ports created by
>     boot firmware

Thanks for the series!

I will give this a try on our end too to make sure there are no issues.
If things look good I will queue these for v6.9 after v6.8-rc1 is
released.
Sanath S Jan. 10, 2024, 3:29 p.m. UTC | #2
On 1/10/2024 8:01 PM, Mika Westerberg wrote:
> Hi,
>
> On Sat, Jan 06, 2024 at 10:27:19PM +0530, Sanath S wrote:
>> Tunnels created by boot firmware results in incorrect PCI resource
>> allocation, which results in failure of extending daisy chain.
>> This series aims to resolve inconsistent tunnels or paths created
>> by boot firmware.
>>
>> Before:
>>             +-03.1-[04-62]----00.0-[05-07]--+-02.0-[06]----00.0
>>             |                               \-04.0-[07]--
>> After:
>>             +-03.1-[04-62]----00.0-[05-62]--+-02.0-[06]----00.0
>>             |                               \-04.0-[07-62]--
>>
>> This series also aligns with windows behaviour of performing a teardown
>> of tunnels and resetting the downstream ports using DPR during the init
>> sequence.
>>
>> Changes since V3:
>>   - Remove discover_tunnel() api before resetting DPR.
>>   - Add lane and protocol adapters reset in tb_switch_reset()
>>   - Addition of tb_lc_reset_port() for TBT1, TBT2 and TBT3 routers.
>>   - Addition of tb_path_deactivate_hop() api to help suppport path
>>     reset of given hop index.
>>   - Addition on new patch to store and indicate host router reset
>>     status of USB4 v2
>>
>> Changes since V2:
>>   - Perform DPR only for USB4 routers.
>>   - Update kernel-doc and return value to -EOPNOTSUPP.
>>   - Limit delay range to 10-15ms.
>>
>> Sanath S (4):
>>    thunderbolt: Introduce usb4_port_reset() and tb_lc_reset_port()
>>    thunderbolt: Extend tb_switch_reset() to support lane and protocol
>>      adapter reset
>>    thunderbolt: Store host router reset status in nhi_probe()
>>    thunderbolt: Teardown tunnels and reset downstream ports created by
>>      boot firmware
> Thanks for the series!
>
> I will give this a try on our end too to make sure there are no issues.
> If things look good I will queue these for v6.9 after v6.8-rc1 is
> released.

Thanks Mika :)
Looking forward for results at your end.