Hi Alan, On Tue, Oct 5, 2021 at 7:56 AM Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote: > > On Mon, Oct 04, 2021 at 03:42:46PM -0700, Rajat Jain wrote: > > +Dmitry Torokhov > > > > Hi Greg, Oliver, > > > > Thanks for taking a look. > > > > On Wed, Sep 29, 2021 at 10:31 PM Greg Kroah-Hartman > > <gregkh@xxxxxxxxxxxxxxxxxxx> wrote: > > > > > > On Wed, Sep 29, 2021 at 03:48:23PM -0700, Rajat Jain wrote: > > > > If a usb device sits below a removable hub, mark the device also as > > > > removable. This helps with devices inserted on a standard removable hub or > > > > also thunderbold docks, to be shown as removable. > > > > > > > > Signed-off-by: Rajat Jain <rajatja@xxxxxxxxxx> > > > > --- > > > > drivers/usb/core/hub.c | 7 +++++++ > > > > 1 file changed, 7 insertions(+) > > > > > > Combined with the previous patch, you are now marking all devices that > > > happen to be attached to a root hub that is on a thunderbolt controller > > > as removable. So all USB devices inside of a docking station are now > > > removable? > > > > With this patch, yes that was my intent. I think what we are debating > > here is should the "removable" attribute imply possibility of removal > > from "the system" or just the "local immediate box" (e.g. thunderbolt > > dock). In my mind, the removable property was analogous to imply an > > "external device", i.e a device that may be removed from the system, > > perhaps as a result of its parent devices being removed from the > > system. I guess this definition doesn't match what you believe it > > should be? > > As I understand it, the "removable" property refers specifically to > the device's upstream link, not to whether _any_ of the links leading > from the device to the computer could be removed. No, that is not what it means. I'll cite our sysfs ABI: What: /sys/devices/.../removable Date: May 2021 Contact: Rajat Jain <rajatxjain@xxxxxxxxx> Description: Information about whether a given device can be removed from the platform by the user. This is determined by its subsystem in a bus / platform-specific way. This attribute is only present for devices that can support determining such information: "removable": device can be removed from the platform by the user "fixed": device is fixed to the platform / cannot be removed by the user. "unknown": The information is unavailable / cannot be deduced. Currently this is only supported by USB (which infers the information from a combination of hub descriptor bits and platform-specific data such as ACPI) and PCI (which gets this from ACPI / device tree). It specifically talks about _platform_, not about properties of some peripheral attached to a system. Note that the wording is very similar to what we had for USB devices that originally implemented "removable" attribute: > > This is probably what Oliver meant when he complained about losing > information. With the knowledge of whether each individual link is > removable, you can easily tell whether there's some way to remove a > device from the system. But if you only know whether the device is > removable from the system overall, you generally can't tell whether > the link to the device's parent is removable. If we need this data then we need to establish some new attribute to convey this info. Thanks, Dmitry