[edk2-devel] implement about virtio-keyboard

Laszlo Ersek lersek at redhat.com
Thu Feb 25 18:54:51 UTC 2021


On 02/24/21 03:55, Zhu Yijun wrote:
> Thanks for the update.
> 
> Now the usb tablet and keyboard are the only two usb devices on
> aarch64, so I want to eliminate the "qemu-xhci" controller.
> 
> I even think the situation that something more lightweight VMM instead
> of QEMU may not support any USB controller, then virtio-input support
> in UEFI is necessary.

It's not necessary for me. It may be necessary for you. Feel free to
contribute a virtio-input driver.

> So if I want to implement this feature, can you give me some advice? I
> see there are several keyboards in edk2,
> VirtualKeyboardDxe/VirtualKeyboard.c looks more simple than usbkbd,
> 
> can it be used as an example for reference?

I've not dealt with EmbeddedPkg/Drivers/VirtualKeyboardDxe before. I
don't know what kind of device this driver works with. The only
commonality that VirtualKeyboardDxe might have with a possible
virtio-input driver is that both of these drivers would be expected to
produce EFI_SIMPLE_TEXT_INPUT_PROTOCOL.

The virtio-input device is described in the virtio spec.

You can see some virtio drivers under OvmfPkg. One of the simpler
drivers there is VirtioRngDxe.

Note that virtio-input, somewhat similarly to virtio-net, allows the
host (= the device) to send events "asynchronously" to the guest (= the
driver). This means that, because virtio is a request-response protocol,
the driver would keep the virtio-input "eventq" populated with
"requests" at all times. When there is an input event, the device
"completes" a request with a "response", to inform the driver of a new
input event. Anyhow, the virtio spec does explain this.

Thanks,
Laszlo

> 
> Laszlo Ersek <lersek at redhat.com> 于2021年2月23日周二 下午10:47写道:
>>
>> On 02/23/21 09:48, Zhu Yijun wrote:
>>> Hi all,
>>>     I boot vm with the virtio keyboard on aarch64. It looks UEFI lacks
>>> support for the virtio keyboard, so I can't do any keyboard input
>>> before the linux kernel driver loads, i.e. edit the grub boot menu. Is
>>> there any plan to support it?
>>
>> Not on my side.
>>
>> My team discussed virtio-input's relevance for ArmVirtQemu in September
>> 2016.
>>
>> We decided not to bother about it, because:
>>
>> (1) XHCI was virtualization-friendly, both performance-wise and
>> configuration-wise (unlike EHCI),
>>
>> (2) QEMU and libvirt were going to gain (... or had just gained ...)
>> XHCI support, on aarch64 / "virt".
>>
>>
>> So today, just use a "qemu-xhci" controller in your domain config
>> please, in combination with a USB keyboard. (If you define a new aarch64
>> domain with libvirt, this should happen out of the box for you.)
>>
>> ArmVirtQemu includes all the edk2 drivers necessary for driving those
>> devices, and ArmVirtQemu's PlatformBootManagerLib instance will connect
>> the USB keyboard automatically. There shouldn't be a problem when typing
>> in "grub".
>>
>> Thanks
>> Laszlo
>>
>>>     I find UsbKeyboardDevice attach on UsbIO which implements its
>>> protocol interface structure(such as UsbGetInterfaceDescriptor,
>>> UsbAsyncInterruptTransfer) defined by UEFI spec, but virtio not. So is
>>> there some way to implement similar interfaces?
>>>
>>> Best regards,
>>> Cheng Mao
>>>
>>
> 



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#72205): https://edk2.groups.io/g/devel/message/72205
Mute This Topic: https://groups.io/mt/80852197/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-





More information about the edk2-devel-archive mailing list