grub-devel
[Top][All Lists]
Advanced

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

Re: [PATCH v2 0/7] Add xHCI USB support


From: Glenn Washburn
Subject: Re: [PATCH v2 0/7] Add xHCI USB support
Date: Fri, 26 Feb 2021 10:53:29 -0600

Good day Patrick,

On Wed, 24 Feb 2021 07:46:48 +0100
Patrick Rudolph <patrick.rudolph@9elements.com> wrote:

> Hi Glenn,
> yes it's the same patch series, but has been cleaned and improved a
> lot. I've addressed most of the comments received earlier.

I see that I implied that you hadn't and I didn't mean to. I only meant
to suggest that there were possible unaddressed issues. Glad to hear
those were already taken care of.

> As stated in the commit message, USB 3.1 and USB 3.2 are not
> tested, as I lack hardware to test this. I'm not going to look into
> this any further into this as it works fine with USB 3.0 compliant
> xhci controllers.
> 
> I'l fix the remaining issues and publish a new patch series.

Great. Are you thinking of adding in some tests? If not, I would
appreciate knowing the qemu opts used to create the virtual machine (I'm
unsure how to turn on xHCI in qemu).

Glenn

> 
> On Fri, Feb 19, 2021 at 7:11 PM Glenn Washburn
> <development@efficientek.com> wrote:
> >
> > Hi Patrick,
> >
> > Thanks for the contribution. I think this would be a great addition
> > to GRUB. However, there are a few issues I see at the moment.
> >
> > On Mon,  7 Dec 2020 08:41:20 +0100
> > Patrick Rudolph <patrick.rudolph@9elements.com> wrote:
> >
> > > Add basic support for xHCI USB controllers and non root xHCI hubs.
> > > The motivation is to use this code on platforms that do not
> > > provide user input by runtime services (like BIOS or UEFI
> > > platform) do. This is the case when GRUB is used as coreboot
> > > payload for example.
> > >
> > > The code is based on seabios implementation, but has been heavily
> > > modified to match grubs internals.
> >
> > Are these the same changes as in
> > https://github.com/Nitrokey/grub.git referenced in a previous
> > email? I'm asking because there were some comments that were
> > unaddressed. So, if it is, could you please address Thomas's email
> > (I haven't checked to see if they are still relevant if so)? (see:
> > https://marc.info/?l=grub-devel&m=159769164332293)
> >
> > Searching in the mailing list, I found this attempt in early 2017.
> > Having not looked at the code at all, could this help in addressing
> > some of Thomas's concerns?
> > https://github.com/bjornfor/grub/tree/add-coreboot-xhci-driver-2nd-attempt-v2
> >
> > I've run your code through the GitLab CI I've configured, and there
> > was a build failure on x86_64-efi. Looks like some implicit type
> > casting issues. I believe it failed for both gcc 8.1 and 10.1. Here
> > is the error log when using gcc 10.1:
> > https://gitlab.com/gwashburn/grub/-/jobs/1025317154#L594
> >
> > Also, I think that any xhci support should be accompanied by passing
> > make check tests.  See uhci_test for an example of how this might be
> > done. Since you've already tested on qemu, I think you're 90% of the
> > way there in making some tests. Both of the ones listed before
> > would be nice. If you'd like some guidance or help, let me know.
> >
> > Glenn
> >
> > > Changes done in version 2:
> > >  * Code cleanup
> > >  * Code style fixes
> > >  * Don't leak memory buffers
> > >  * Compile without warnings
> > >  * Add more defines
> > >  * Add more helper functions
> > >  * Don't assume a 1:1 virtual to physical mapping
> > >  * Flush cachelines after writing buffers
> > >  * Don't use hardcoded page size
> > >  * Proper scratchpad register setup
> > >  * xHCI bios ownership handoff
> > >
> > > Changes done in version 3:
> > >  * Several bug fixes for real hardware
> > >  * Fixed a race condition detecting events, which doesn't appear
> > > on qemu based xHCI controllers
> > >  * Don't accidently disable USB3.0 devices after first command
> > >  * Support arbitrary protocol speed IDs
> > >  * Coding style cleanup
> > >  * Support for non root SuperSpeed hubs
> > >
> > > Changes Tested:
> > >  * Qemu system x86_64
> > >    * virtual USB HID keyboard (usb-kbd)
> > >    * virtual USB HID mass storage (usb-storage)
> > >  * Intel C246 integrated xHCI (Supermicro X11SSH-F)
> > >    * iKVM HID keyboard
> > >    * USB3 HID mass storage (controller root port)
> > >    * External USB HID keyboard
> > >
> > > TODO:
> > >  * Test on more hardware
> > >  * Test on USB3 hubs
> > >  * Support for USB 3.1 and USB 3.2 controllers
> > >
> > > Patrick Rudolph (7):
> > >   grub-core/bus/usb: Parse SuperSpeed companion descriptors
> > >   usb: Add enum for xHCI
> > >   usbtrans: Set default maximum packet size
> > >   grub-core/bus/usb: Add function pointer for attach/detach events
> > >   grub-core/bus/usb/usbhub: Add new private fields for xHCI
> > > controller grub-core/bus/usb: Add xhci support
> > >   grub-core/bus/usb/usbhub: Add xHCI non root hub support
> > >
> > >  Makefile.am                       |    2 +-
> > >  grub-core/Makefile.core.def       |    7 +
> > >  grub-core/bus/usb/ehci.c          |    2 +
> > >  grub-core/bus/usb/ohci.c          |    2 +
> > >  grub-core/bus/usb/serial/common.c |    2 +-
> > >  grub-core/bus/usb/uhci.c          |    2 +
> > >  grub-core/bus/usb/usb.c           |   44 +-
> > >  grub-core/bus/usb/usbhub.c        |   95 +-
> > >  grub-core/bus/usb/usbtrans.c      |    6 +-
> > >  grub-core/bus/usb/xhci-pci.c      |  195 +++
> > >  grub-core/bus/usb/xhci.c          | 2496
> > > +++++++++++++++++++++++++++++ grub-core/commands/usbtest.c      |
> > > 2 +- grub-core/disk/usbms.c            |    2 +-
> > >  grub-core/term/usb_keyboard.c     |    2 +-
> > >  include/grub/usb.h                |   18 +-
> > >  include/grub/usbdesc.h            |   12 +-
> > >  include/grub/usbtrans.h           |    4 +
> > >  17 files changed, 2852 insertions(+), 41 deletions(-)
> > >  create mode 100644 grub-core/bus/usb/xhci-pci.c
> > >  create mode 100644 grub-core/bus/usb/xhci.c
> > >



reply via email to

[Prev in Thread] Current Thread [Next in Thread]