From: Greg KH <gregkh@linuxfoundation.org>
To: Ricky Niu <rickyniu@google.com>
Cc: stern@rowland.harvard.edu, erosca@de.adit-jv.com,
gustavoars@kernel.org, a.darwish@linutronix.de, oneukum@suse.com,
kyletso@google.com, linux-usb@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] ANDROID: usb: core: Send uevent when USB TOPO layer over 6
Date: Fri, 26 Feb 2021 10:31:37 +0100 [thread overview]
Message-ID: <YDi/+TN6AYXropf7@kroah.com> (raw)
In-Reply-To: <20210226091612.508639-1-rickyniu@google.com>
On Fri, Feb 26, 2021 at 05:16:12PM +0800, Ricky Niu wrote:
> When the topology of the nested hubs are over 6 layers
> Send uevent to user space when USB TOPO layer over 6.
> Let end user more understand what happened.
>
> Signed-off-by: Ricky Niu <rickyniu@google.com>
> ---
> drivers/usb/core/hub.c | 22 ++++++++++++++++++++++
> 1 file changed, 22 insertions(+)
>
> diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
> index 7f71218cc1e5..e5e924526822 100644
> --- a/drivers/usb/core/hub.c
> +++ b/drivers/usb/core/hub.c
> @@ -55,6 +55,10 @@ static DEFINE_SPINLOCK(device_state_lock);
> static struct workqueue_struct *hub_wq;
> static void hub_event(struct work_struct *work);
>
> +/* struct to notify userspace of hub events */
> +static struct class *hub_class;
> +static struct device *hub_device;
Wait, how did you even test this code? This will not work if you have
more than one hub in the system at a single time, right?
That's going to be really rough, given here's the output of just my
desktop system, count the number of hubs in it:rdevmgmt.msc
$ lsusb -t
/: Bus 10.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 10000M
/: Bus 09.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 480M
|__ Port 5: Dev 2, If 0, Class=Wireless, Driver=btusb, 12M
|__ Port 5: Dev 2, If 1, Class=Wireless, Driver=btusb, 12M
|__ Port 6: Dev 3, If 0, Class=Hub, Driver=hub/4p, 480M
/: Bus 08.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 10000M
|__ Port 2: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 3: Dev 3, If 0, Class=Mass Storage, Driver=uas, 10000M
/: Bus 07.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 480M
|__ Port 2: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 2: Dev 4, If 0, Class=Hub, Driver=hub/2p, 12M
|__ Port 2: Dev 5, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 2: Dev 5, If 1, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 2: Dev 5, If 2, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 5: Dev 3, If 3, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 5: Dev 3, If 1, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 5: Dev 3, If 6, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 5: Dev 3, If 4, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 5: Dev 3, If 2, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 5: Dev 3, If 0, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 5: Dev 3, If 7, Class=Human Interface Device, Driver=usbhid, 480M
|__ Port 5: Dev 3, If 5, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 6: Dev 6, If 0, Class=Human Interface Device, Driver=usbhid, 12M
/: Bus 06.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 10000M/x2
/: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480M
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 10000M
|__ Port 1: Dev 11, If 0, Class=Hub, Driver=hub/3p, 5000M
|__ Port 3: Dev 12, If 0, Class=Hub, Driver=hub/3p, 5000M
|__ Port 1: Dev 13, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M
|__ Port 1: Dev 14, If 0, Class=Hub, Driver=hub/3p, 480M
|__ Port 3: Dev 15, If 0, Class=Hub, Driver=hub/3p, 480M
|__ Port 2: Dev 17, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 3: Dev 18, If 3, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 3: Dev 18, If 1, Class=Audio, Driver=snd-usb-audio, 12M
|__ Port 3: Dev 18, If 2, Class=Audio, Driver=snd-usb-audio, 12M
|__ Port 3: Dev 18, If 0, Class=Audio, Driver=snd-usb-audio, 12M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 10000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M
So, proof that this works? How did you test this?
Also, you have a memory leak in this submission :(
greg k-h
next prev parent reply other threads:[~2021-02-26 9:33 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-26 9:16 [PATCH] ANDROID: usb: core: Send uevent when USB TOPO layer over 6 Ricky Niu
2021-02-26 9:24 ` Greg KH
2021-02-26 9:31 ` Greg KH [this message]
2021-03-03 9:03 ` Chien Kun Niu
2021-03-03 9:09 ` Greg KH
2021-03-05 7:17 ` Chien Kun Niu
2021-03-05 7:37 ` Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YDi/+TN6AYXropf7@kroah.com \
--to=gregkh@linuxfoundation.org \
--cc=a.darwish@linutronix.de \
--cc=erosca@de.adit-jv.com \
--cc=gustavoars@kernel.org \
--cc=kyletso@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=oneukum@suse.com \
--cc=rickyniu@google.com \
--cc=stern@rowland.harvard.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.