Re: [PATCH 1/2] usb: hub: Mark root hubs on removable devices, as removable.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Sep 29, 2021 at 03:48:22PM -0700, Rajat Jain wrote:
> Currently all usb root hubs are always marked as DEVICE_REMOVABLE_UNKNOWN
> unconditionally. Let us try to help the users to identify the removable
> root hubs, by checking the device on which the root hub sits. If the base
> (parent) device on which the root hub sits, is removable (e.g. on
> thunderbolt docks), then the roothub is also marked as removable.
> 
> Signed-off-by: Rajat Jain <rajatja@xxxxxxxxxx>
> ---
>  drivers/usb/core/hub.c | 10 +++++++++-
>  1 file changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
> index 86658a81d284..45d1c81b121d 100644
> --- a/drivers/usb/core/hub.c
> +++ b/drivers/usb/core/hub.c
> @@ -2440,8 +2440,16 @@ static void set_usb_port_removable(struct usb_device *udev)
>  
>  	dev_set_removable(&udev->dev, DEVICE_REMOVABLE_UNKNOWN);
>  
> -	if (!hdev)
> +	if (!hdev) {
> +		/*
> +		 * If the root hub sits on a removable device, mark the root hub
> +		 * removable as well. This helps with the USB root hubs sitting
> +		 * on the thunderbolt docks.
> +		 */
> +		if (udev->dev.parent && dev_is_removable(udev->dev.parent))
> +			dev_set_removable(&udev->dev, DEVICE_REMOVABLE);
>  		return;
> +	}

How far "up the chain" are you going to go here?  What if the
thunderbolt device is on a PCI device that can be removed?  What if that
PCI device is on a PCI bus that can be removed?

Is a USB controller on a docking device really "removable"?

The goal here is to say if this device itself is removable in the sense
of "I can yank this out", and a roothub is not that type of device.

What problem are you trying to solve with this series?

thanks,

greg k-h



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux