Hello, Until now no regressions have been observed. I'll provide a full test description using a wide variety of platforms soon.
Kind Regards, Patrick Rudolph On Thu, Jan 28, 2021 at 3:14 AM Wu, Hao A <hao.a...@intel.com> wrote: > > > -----Original Message----- > > From: Patrick Rudolph <patrick.rudo...@9elements.com> > > Sent: Wednesday, January 20, 2021 11:59 PM > > To: devel@edk2.groups.io > > Cc: Wang, Jian J <jian.j.w...@intel.com>; Wu, Hao A <hao.a...@intel.com>; > > Ni, Ray <ray...@intel.com> > > Subject: [PATCH 2/2] MdeModulePkg/Usb/Keyboard.c: don't request > > protocol before setting > > > > From: Matt DeVillier <matt.devill...@gmail.com> > > > > No need to check the interface protocol then conditionally setting, just > > set it > > to BOOT_PROTOCOL and check for error. > > > > This is what Linux does for HID devices as some don't follow the USB spec. > > One example is the Aspeed BMC HID keyboard device, which adds a massive > > boot delay without this patch as it doesn't respond to 'GetProtocolRequest'. > > > I am okay with the code change. > > But since the current logic is here for a long time, I am not sure whether > other USB keyboard device will have functional/performance impact for this > change. > > Besides the above mentioned Aspeed BMC HID keyboard device (which has a > performance issue for the Get_Protocol request that the patch is going to > drop), could you at least try one USB keyboard device that works fine with > the origin code logic to see if there is any side effect for this patch? > > Thanks in advance. > > Best Regards, > Hao Wu > > > > > > Signed-off-by: Matt DeVillier <matt.devill...@gmail.com> > > Signed-off-by: Patrick Rudolph <patrick.rudo...@9elements.com> > > --- > > MdeModulePkg/Bus/Usb/UsbKbDxe/KeyBoard.c | 28 ++++++++++++------- > > - > > 1 file changed, 17 insertions(+), 11 deletions(-) > > > > diff --git a/MdeModulePkg/Bus/Usb/UsbKbDxe/KeyBoard.c > > b/MdeModulePkg/Bus/Usb/UsbKbDxe/KeyBoard.c > > index 77e20b203f..5914174b4d 100644 > > --- a/MdeModulePkg/Bus/Usb/UsbKbDxe/KeyBoard.c > > +++ b/MdeModulePkg/Bus/Usb/UsbKbDxe/KeyBoard.c > > @@ -801,7 +801,6 @@ InitUSBKeyboard ( > > IN OUT USB_KB_DEV *UsbKeyboardDevice ) {- UINT8 > > Protocol; > > EFI_STATUS Status; REPORT_STATUS_CODE_WITH_DEVICE_PATH (@@ > > -814,21 +813,28 @@ InitUSBKeyboard ( > > InitQueue (&UsbKeyboardDevice->EfiKeyQueue, sizeof (EFI_KEY_DATA)); > > InitQueue (&UsbKeyboardDevice->EfiKeyQueueForNotify, sizeof > > (EFI_KEY_DATA)); - UsbGetProtocolRequest (- UsbKeyboardDevice- > > >UsbIo,- UsbKeyboardDevice->InterfaceDescriptor.InterfaceNumber,- > > &Protocol- ); // // Set boot protocol for the USB Keyboard. // > > This driver > > only supports boot protocol. //- if (Protocol != BOOT_PROTOCOL) {- > > UsbSetProtocolRequest (- UsbKeyboardDevice->UsbIo,- > > UsbKeyboardDevice->InterfaceDescriptor.InterfaceNumber,- > > BOOT_PROTOCOL+ Status = UsbSetProtocolRequest (+ > > UsbKeyboardDevice->UsbIo,+ UsbKeyboardDevice- > > >InterfaceDescriptor.InterfaceNumber,+ BOOT_PROTOCOL+ > > > );+ > > if (EFI_ERROR (Status)) {+ //+ // If protocol could not be set here, > > it > > means+ // the keyboard interface has some errors and could+ // not be > > initialized+ //+ REPORT_STATUS_CODE_WITH_DEVICE_PATH (+ > > EFI_ERROR_CODE | EFI_ERROR_MINOR,+ (EFI_PERIPHERAL_KEYBOARD | > > EFI_P_EC_INTERFACE_ERROR),+ UsbKeyboardDevice->DevicePath );++ > > return EFI_DEVICE_ERROR; } UsbKeyboardDevice->CtrlOn = FALSE;-- > > 2.26.2 > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#70842): https://edk2.groups.io/g/devel/message/70842 Mute This Topic: https://groups.io/mt/79981645/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-