Date: Tue, 17 Mar 2020 17:34:03 +0200 From: Daniel Nicolescu <daniel.nicolescu10@gmail.com> To: Hans Petter Selasky <hps@selasky.org> Cc: freebsd-virtualization@freebsd.org, freebsd-hackers@freebsd.org, patrascu.naina14@gmail.com, Mihai Carabas <mihai.carabas@cs.pub.ro> Subject: Re: USB device passthrough implementation Message-ID: <CAG9wUUPhVg9vCihW-fqKKKYWQb05kTOgWdSY-rpJs1M%2BSRa0vw@mail.gmail.com> In-Reply-To: <f26e42e0-4419-1c88-e8b0-e97dba412c37@selasky.org> References: <CAG9wUUNFOX-nt6FP1K0hcXycE1AvfzXpa9UdD9%2BQvZeBfY5KJA@mail.gmail.com> <f26e42e0-4419-1c88-e8b0-e97dba412c37@selasky.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi, We would like to implement it in user-space. On Tue, Mar 17, 2020 at 3:13 PM Hans Petter Selasky <hps@selasky.org> wrote: > Hi, > > On 2020-03-17 13:41, Daniel Nicolescu wrote: > > Hi, > > > > We want to implement the USB pass through feature for bhyve so that users > > will be able to pass through individual USB devices like in QEMU. We are > > trying to emulate the USB controller and pass to the virtual machine only > > one port. > > > > * We need to disconnect the USB device from host: we are currently not > very > > familiar with the kernel API to perform this > > See: > libusb_detach_kernel_driver(). > > > * We need to emulate a USB device controller: we are currently looking > into > > pci_xhci.c and usb_mouse.c to reuse some of the code from there and we > > would like to know if there is some sort of in depth documentation > > regarding these. > > * We need to pass the USB device to the guest through an emulated port of > > the device controller: we know that project ACRN implements USB device > > passthrough and we are trying to figure out how they do it. > > > > Could you give us a few suggestions on how to tackle these? > > USB has four transfer types: > > 1) Control transfers > 2) Interrupt transfers > 3) Bulk transfers > 4) Isochronous transfers > > If your implementation is supposed to be fully USB compliant you need to > support and test all transfer types. > > Please also pay attention to error conditions. > > USB has different speeds, LOW, HIGH, FULL, SUPER, which impose different > characteristics on the USB wMaxPacketSize for example. > > You should know about the principle of short-terminated USB transfers. > > Is the wrapper supposed to be implemented in the kernel or in user-space? > > --HPS >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAG9wUUPhVg9vCihW-fqKKKYWQb05kTOgWdSY-rpJs1M%2BSRa0vw>