Hi All, On 7/26/23 05:20, Xiaofan Chen wrote: > On Wed, Jul 26, 2023 at 5:38 PM Oliver Neukum <oneukum@xxxxxxxx> wrote: >> >> On 26.07.23 03:37, Xiaofan Chen wrote: >>> On Tue, Jul 25, 2023 at 10:23 PM Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> wrote: >> >> Hi, >> >>>> So unless there is some actual need from userspace tools like libusb (or >>>> anything else?) that requires this new ioctl, let's not add it otherwise >>>> we are signing ourselves up to support it for forever. >>> >>> Interestingly there is PR in libusb now, which uses sysfs for 20Gbps. >> >> True. Now would you write a patch for libusb? >> This looks to be turning into a chicken and egg problem. >> >>> Maybe this new usbfs IOCTL is indeed good to have if we can not extend >> >> Looking at the code of libusb you can see that libusb has two modes >> of operation. Either it finds sysfs, then it uses it, if not it >> goes for the ioctl. >> >> Now, how well shall it work without sysfs? That is a design decision >> and we should not be having this discussion again and again. >> >> BTW, that is not aimed at anybody personally, we are just trying to >> avoid a basic decision and it will come back. >> >>> the existing IOCTL USBDEVFS_GET_SPEED (but why not?). >> >> It does not include the lane count. >> And sort of fudging this into speed is a bad idea in the long >> run because we are likely to have collisions in the future. >> >> We have a basic issue here. Do we require libusb to use sysfs or not? > > Adding Hans de Goede and Tormod Volder (libusb admins) here in the discussions > as I am more into the testing and support side of libusb and not a > real developer. > > libusb does work with or without sysfs and there are multiple commits related > to sysfs vs usbfs. > > An example commit from Hans in Sept 202 which is related to this discussion. > https://github.com/libusb/libusb/commit/f6068e83c4f5e5fba16b23b6a87f1f6d7ab7200a > ++++++++++++++++ > linux: Fix libusb_get_device_speed() not working on wrapped devices > > We don't have a sysfs_dir for wrapped devices, so we cannot read the speed > from sysfs. > > The Linux kernel has supported a new ioctl to get the speed directly from > the fd for a while now, use that when we don't have sysfs access. > > Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1871818 > Reported-by: Gerd Hoffmann <kraxel@xxxxxxxxxx> > Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx> > +++++++++++++++++ > > To Hans and Tormod: > Discussion thread for reference: > https://lore.kernel.org/linux-usb/da536c80-7398-dae0-a22c-16e521be697a@xxxxxxxx/T/#t Right, so the reason why IOCTL USBDEVFS_GET_SPEED was added is so that a confined qemu process which gets just a fd for a /dev/bus/usb/ device passed by a more privileged process can still get the speed despite it not having sysfs access. This is necessary for correct pass-through of USB devices. Since USBDEVFS_GET_SPEED now no longer tells the full story I believe that the proposed USBDEVFS_GET_SSP_RATE ioctl makes sense. The current patch however misses moving the enum usb_ssp_rate declaration from include/linux/usb/ch9.h to include/uapi/linux/usb/ch9.h so that needs to be fixed in a version 2. Assuming that with the above explanation of why this is necessary Greg and Alan are ok with adding the ioctl. Regards, Hans