On Tue, 12 May 2026 17:32:09 +0200, Paul Menzel wrote:
> As a further data point, adding `ppc_pci_reset_phbs` to the command line 
> also gets xhci_hcd to initialize the TI xHCI host controller:
> 
>      $ lspci -nn -s 0021:0d:00.0
>      0021:0d:00.0 USB controller [0c03]: Texas Instruments TUSB73x0 
> SuperSpeed USB 3.0 xHCI Host Controller [104c:8241] (rev 02)
> 
> 
>      [   14.050249]   Issue PHB reset ...
>      […]
>      [   19.339822] ehci_hcd: block sizes: qh 144 qtd 96 itd 192 sitd 96
>      [   19.339919] ohci_hcd: block sizes: ed 112 td 96
>      [   19.340538] xhci_hcd 0021:0d:00.0: xHCI Host Controller

Hi Paul,

Are you still interested in this issue, or happy with your workaround?
Maybe both?

I have some updates:

We learned that the kernel does dodgy things with the FW handoff
protocol, particularly with TI chips. This may possibly matter if
FW is involved. I could supply patches to test this hypothesis.

A suspiciously similar case has been reported here:
https://lore.kernel.org/linux-usb/[email protected]/T/

There is a new workaround: PCI device reset before kexec. Weird.

> No log `xHCI HW did not halt within 32000 usec status = 0x0` (or 0x10 
> with the other patch). In `arch/powerpc/platforms/powernv/pci-ioda.c`, 
> reading the comment in `pnv_pci_init_ioda_phb()` suggests, that PHB 
> should be reset also in the kexec case:
> 
>          /*
>           * If we're running in kdump kernel, the previous kernel never
>           * shutdown PCI devices correctly. We already got IODA table
>           * cleaned out. So we have to issue PHB reset to stop all PCI
>           * transactions from previous kernel. The ppc_pci_reset_phbs
>           * kernel parameter will force this reset too. Additionally,
>           * if the IODA reset above failed then use a bigger hammer.
>           * This can happen if we get a PHB fatal error in very early
>           * boot.
>           */
>          if (is_kdump_kernel() || pci_reset_phbs || rc) {
>                  pr_info("  Issue PHB reset ...\n");
>                  pnv_eeh_phb_reset(hose, EEH_RESET_FUNDAMENTAL);
>                  pnv_eeh_phb_reset(hose, EEH_RESET_DEACTIVATE);
>          }
> 
> At least, I’d assume that kdump and kexec are similar, that both do not 
> shut down PCI devices? (Commit 361f2a2a1536 (powrpc/powernv: Reset PHB 
> in kdump kernel) from 2024 adds (some) the code above.)

Apparently, we try to shut down PCI devices on kexec, unless loading a
crash dump kernel on panic. So as I wrote in the new thread, we already
call xhci_halt() before kexec, the xHC should be halted, and for new
kernel xhci_halt() should be almost a no-op with guaranteed success.

It seems that we are failing to actually halt it, or something (FW?)
touches the chip during kexec, or something else is quite weird.

Regards,
Michal

Reply via email to