lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAAhV-H41kwndL+oz2Gcfpe3-MCagaQd2X21gK9kMO2vpw_thhA@mail.gmail.com>
Date: Sat, 10 Jan 2026 12:05:19 +0800
From: Huacai Chen <chenhuacai@...nel.org>
To: Alan Stern <stern@...land.harvard.edu>
Cc: Diederik de Haas <diederik@...ow-tech.com>, 
	Greg Kroah-Hartman <gregkh@...uxfoundation.org>, Huacai Chen <chenhuacai@...ngson.cn>, 
	linux-usb@...r.kernel.org, linux-kernel@...r.kernel.org, 
	stable@...r.kernel.org, Shengwen Xiao <atzlinux@...a.com>, 
	linux-rockchip@...ts.infradead.org
Subject: Re: [PATCH] USB: OHCI/UHCI: Add soft dependencies on ehci_hcd

On Sun, Jan 4, 2026 at 12:41 AM Alan Stern <stern@...land.harvard.edu> wrote:
>
> On Sat, Jan 03, 2026 at 11:57:47AM +0800, Huacai Chen wrote:
> > On Sat, Jan 3, 2026 at 11:33 AM Alan Stern <stern@...land.harvard.edu> wrote:
> > > Since these systems don't use PCI, the question I raised earlier still
> > > needs to be answered: How do they route connections between the ports
> > > and the two controllers?
> > >
> > > There may be some exceptions, but for the most part, the code in
> > > ehci-hcd was written assuming that only PCI-based controllers will have
> > > companions.  If you want to make an exception for loongson-2k0500, you
> > > will need to figure out how to get it to work.
> > Loongson-2K0500 use EHCI/OHCI with platform bus, while
> > Loongson-2K1000/2000 use EHCI/OHCI with PCI bus. They use the same USB
> > IP cores, so the route connections are probably the same.
>
> With PCI we know exactly which companion controller each port is
> connected to.  Is that true in your situation?
>
> Or do you have only one companion controller?
>
> For that matter, how many USB ports do these systems have?  Are some of
> them USB-1 only or USB-2 only?
>
> > > Have you tested any of those systems to see how they behave if a USB-1
> > > device is already plugged in and running when the ehci-hcd driver gets
> > > loaded?
>
> You did not answer this question.
On Loongson-2K0500 (OHCI/EHCI with platform bus).

If ohci-platform loaded before ehci-platform:

[   30.530103] ohci-platform 1f058000.usb: Generic Platform OHCI controller
[   30.555362] ohci-platform 1f058000.usb: new USB bus registered,
assigned bus number 1
[   30.583586] ohci-platform 1f058000.usb: irq 28, io mem 0x1f058000
[   30.671500] hub 1-0:1.0: USB hub found
[   30.687929] hub 1-0:1.0: 4 ports detected
[   30.798553] Warning! ehci_hcd should always be loaded before
uhci_hcd and ohci_hcd, not after
[   31.015178] usb 1-4: new low-speed USB device number 2 using ohci-platform
[   31.090527] ehci-platform 1f050000.usb: EHCI Host Controller
[   31.107968] ehci-platform 1f050000.usb: new USB bus registered,
assigned bus number 2
[   31.143813] ehci-platform 1f050000.usb: irq 29, io mem 0x1f050000
[   31.227286] ehci-platform 1f050000.usb: USB 2.0 started, EHCI 1.00
[   31.248271] usb 1-4: device descriptor read/all, error -62
[   31.256845] hub 2-0:1.0: USB hub found
[   31.279310] hub 2-0:1.0: 4 ports detected
[   31.915149] usb 1-4: new low-speed USB device number 3 using ohci-platform
[   32.264765] input: YSPRINGTECH USB OPTICAL MOUSE as
/devices/platform/bus@...00000/1f058000.usb/usb1/1-4/1-4:1.0/0003:10C4:8105.0001/input/input0
[   32.374306] hid-generic 0003:10C4:8105.0001: input,hidraw0: USB HID
v1.11 Mouse [YSPRINGTECH USB OPTICAL MOUSE] on
usb-1f058000.usb-4/input0

If ehci-platform loaded before ohci-platform:

[   30.724394] ehci-platform 1f050000.usb: EHCI Host Controller
[   30.743839] ehci-platform 1f050000.usb: new USB bus registered,
assigned bus number 1
[   30.775857] ehci-platform 1f050000.usb: irq 28, io mem 0x1f050000
[   30.811297] ehci-platform 1f050000.usb: USB 2.0 started, EHCI 1.00
[   30.829172] hub 1-0:1.0: USB hub found
[   30.847397] hub 1-0:1.0: 4 ports detected
[   30.934190] ohci-platform 1f058000.usb: Generic Platform OHCI controller
[   30.959877] ohci-platform 1f058000.usb: new USB bus registered,
assigned bus number 2
[   30.987617] ohci-platform 1f058000.usb: irq 29, io mem 0x1f058000
[   31.080419] hub 2-0:1.0: USB hub found
[   31.092038] hub 2-0:1.0: 4 ports detected
[   31.407288] usb 2-4: new low-speed USB device number 2 using ohci-platform
[   31.741276] input: YSPRINGTECH USB OPTICAL MOUSE as
/devices/platform/bus@...00000/1f058000.usb/usb2/2-4/2-4:1.0/0003:10C4:8105.0001/input/input0
[   31.815422] hid-generic 0003:10C4:8105.0001: input,hidraw0: USB HID
v1.11 Mouse [YSPRINGTECH USB OPTICAL MOUSE] on
usb-1f058000.usb-4/input0

"new low-speed USB device number 3 using ohci-platform" only displayed
once and "usb 1-4: device descriptor read/all, error -62" disappears
in this case.

So I think we need a softdep between ohci-platform/uhci-platform and
ehci-platform, which is similar to the PCI case.

>
> There are other issues involving companion controllers, connected with
> hibernation.  You should take a look at commit 6d19c009cc78 ("USB:
> implement non-tree resume ordering constraints for PCI host
> controllers"), which was later modified by commit 05768918b9a1 ("USB:
> improve port transitions when EHCI starts up") and a few others.
>
> Also, read through the current code in hcd-pci.c (for_each_companion(),
> ehci_pre_add(), ehci_post_add(), non_ehci_add(), ehci_remove(), and
> ehci_wait_for_companions()).  Your non-PCI system will need to implement
> some sort of equivalent to all these things.
At least for the device probe, a softdep seems enough.

Huacai

>
> Alan Stern

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ