Thanks Gerd. I will switch over to using tracepoints, wait a few days to
see if there are any more comments, then resubmit.

Thanks,
Paul

On Mon, Mar 23, 2020 at 4:10 AM Gerd Hoffmann <kra...@redhat.com> wrote:

>   Hi,
>
> > 1) I have used printf-based debug statements while developing the
> >    code, and have not implemented any tracing statements. I'm not
> >    sure if that is considered acceptable for new code?
>
> Please use tracepoints.  I'd suggest to use the "log" trace backend
> which comes very close to printf-debugging; effectively all trace
> points are turned into runtime-switchable printf's.
>
> Mixing (temporary) debug printfs and tracepoints works.
>
> > 2) I have imported the register description file from the Linux
> >    kernel. This file is licensed GPL-2 only, is this OK?
>
> Yes.  There even is a script to keep things in sync and apply some
> tweaks like replacing linux kernel types with standard C types
> (s/u32/uint32_t/ etc).
>
> See scripts/update-linux-headers.sh
>
> You might consider hooking up your file there, but probably this is
> overkill given that the register descriptions are unlikely to see
> frequent updates.
>
> > 3) The emulation does not respect the max-packet size when
> >    transferring packets. Since the dwc-hsotg controller only has
> >    one root port, and the Qemu USB hub is only full-speed, that
> >    means every device connected has to run at full speed. That
> >    makes mass-storage devices in particular run very slowly. Using
> >    transfers greater than max-packet size alleviates this. Is this
> >    OK? I think the EHCI emulation does the same thing, since its
> >    transfers seem to run at greater than real world transfer rates.
>
> I don't think ehci uses larger packets.  I think it simply does more
> transfers than physical hardware would be able to do.
>
> uhci is pretty strict here, it counts bytes transfered and simply stops
> processing queues when it has transfered enough data for the current
> frame.  On the next frame timer tick it resumes work.  There is a
> bandwidth= property to tweak the transfer limit, you can use that to
> make uhci emulation run at the speed you want ;)
>
> ehci and xhci simply don't count bytes and don't have a limit, they go
> process queues as long as there is work to do (and they don't have to
> wait for host block I/O).
>
> > 4) I have only implemented host mode for now. Would there be any
> >    benefit to implementing gadget mode as well? It seems it could
> >    be useful to emulate gadget devices in Qemu, but I am not sure
> >    if Qemu currently offers any support for that?
>
> No, there isn't any gadget support yet.
>
> cheers,
>   Gerd
>
>

Reply via email to