public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Laszlo Ersek" <lersek@redhat.com>
To: Zhu Yijun <lovemrd@gmail.com>
Cc: devel@edk2.groups.io, Ruiyu Ni <ruiyu.ni@intel.com>,
	Ard Biesheuvel <ard.biesheuvel@linaro.org>
Subject: Re: implement about virtio-keyboard
Date: Thu, 25 Feb 2021 19:54:51 +0100	[thread overview]
Message-ID: <7e60715f-7b06-9751-8efb-fffba363959b@redhat.com> (raw)
In-Reply-To: <CAF_Z_jrkoLiJ1-p=qDc-1M5DtmosZ-5KYDCv1GJGCvrcACwjdQ@mail.gmail.com>

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@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
>>>
>>
> 


  reply	other threads:[~2021-02-25 18:54 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-23  8:48 implement about virtio-keyboard Zhu Yijun
2021-02-23 14:46 ` Laszlo Ersek
2021-02-24  2:55   ` Zhu Yijun
2021-02-25 18:54     ` Laszlo Ersek [this message]
2021-02-26  7:59       ` Zhu Yijun

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7e60715f-7b06-9751-8efb-fffba363959b@redhat.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox