public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Laszlo Ersek <lersek@redhat.com>
To: Jordan Justen <jordan.l.justen@intel.com>,
	edk2-devel-01 <edk2-devel@ml01.01.org>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Subject: Re: [PATCH 00/11] OvmfPkg, ArmVirtPkg: GOP driver for the VirtIo GPU (virtio-gpu-pci)
Date: Thu, 1 Sep 2016 23:07:33 +0200	[thread overview]
Message-ID: <46e52c90-f6e3-b64f-29b1-6b3fcb376719@redhat.com> (raw)
In-Reply-To: <147276194919.22123.5557877246569164251@jljusten-ivb>

On 09/01/16 22:32, Jordan Justen wrote:
> Series Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

Thank you!

Series committed as b10d5ddc0385..3ef3209d3028.

Cheers,
Laszlo

> On 2016-08-19 05:49:21, Laszlo Ersek wrote:
>> This series solves
>> <https://tianocore.acgmultimedia.com/show_bug.cgi?id=66>. In particular,
>> it gives AARCH64 guests running on KVM a clean, uncorrupted graphical
>> console.
>>
>> Anatomy of the series:
>>
>> - Patches 01 and 02 fix small bugs in QemuVideoDxe and Virtio10Dxe, so
>>   that virtio-vga is bound only by QemuVideoDxe, and virtio-gpu-pci is
>>   bound only by Virtio10Dxe (and then, on top, by the driver being
>>   posted).
>>
>> - Patch 03 makes OVMF' BDS pick up virtio-gpu-pci automatically as
>>   ConOut. (ArmVirtPkg already has the necessary code.) A small tweak.
>>
>> - Patch 04 adds the VirtIo GPU stuff to IndustryStandard, using Gerd's
>>   WIP additions to the VirtIo 1.0 spec, at
>>   <https://www.kraxel.org/virtio>. (See the "GPU Device" section.) The
>>   URLs are also captured in the code.
>>
>> - Patches 05 through 07 add the basic (= UEFI driver model) skeleton of
>>   the driver, and include it in OvmfPkg and ArmVirtPkg.
>>
>>   In this series I managed to erect the driver in such a way that the
>>   series doesn't only build at every stage, the driver even runs at
>>   every stage (and the then-present functionality is testable). I used
>>   this to test each layer of functionality in separation, during
>>   development.
>>
>> - Patch 08 implements the basic VirtIo GPU initialization.
>>
>> - Patch 09 implements VirtIo GPU command primitives ("remote procedure
>>   calls"), for performing graphics operations.
>>
>> - Patch 10 implements the Graphics Output Protocol.
>>
>> - Patch 11 drops PcdKludgeMapPciMmioAsCached from ArmVirtPkg.
>>
>> Tests done:
>>
>> - Virtio-vga regression testing on x86_64 KVM (OvmfPkgIa32X64 build).
>>
>> - Repeated "disconnect" and "connect -r" checks in the UEFI shell,
>>   issued (also) from the serial console (ArmVirtQemu build on AARCH64
>>   KVM, OvmfPkgIa32X64 build on x86_64 KVM).
>>
>> - Repeated mode switches with the "mode" command in the UEFI shell (same
>>   platforms).
>>
>> - Changing the preferred resolution in the Device Manager, then
>>   verifying with "mode" in the UEFI shell after reboot (same platforms).
>>
>> - Tested GRUB, using Fedora 23 / Fedora 24 installer ISOs (both
>>   platforms).
>>
>> - Also tested loading and launching Linux from GRUB. Here the results
>>   differ of course: x86_64 Fedora 24 drives virtio-gpu-pci with its
>>   native driver without problems, whereas AARCH64 Fedora 23 doesn't even
>>   look for virtio-gpu-pci, apparently.
>>
>> - Standard VGA continues to work in AARCH64 guests with TCG (tested on
>>   x86_64 host). In addition, I've verified that the display corruption
>>   readily reproduces when using standard VGA in AARCH64/KVM guests, at
>>   the end of the series.
>>
>> - Verified Driver Name and Controller Name in the UEFI shell, issuing
>>   "devices", "drivers", and "dh" commands.
>>
>>   Interestingly, they work perfectly with OVMF, but in ArmVirtQemu, the
>>   formatted names are not displayed for *any* driver or device. Likely a
>>   general problem with the ArmVirtQemu (or more generally, AARCH64)
>>   build of the shell.
>>
>>   I also ran into a couple of UEFI shell crashes with "devtree" and "dh
>>   -d -v" (when listing all devices in the system). However, those
>>   crashes reproduce identically when the series is not applied.
>>
>> Testing instructions:
>>
>> * OVMF guests: just add
>>
>>     -device virtio-gpu-pci
>>
>>   to the QEMU command line.
>>
>>   For the host display, I prefer SDL when I use the raw QEMU command
>>   line:
>>
>>     -display sdl
>>
>>   but that's entirely up to the user.
>>
>> * ArmVirtQemu guests: again, add
>>
>>     -device virtio-gpu-pci
>>
>>   I ran my AARCH64/KVM tests on my Mustang, and for host display, there
>>   I prefer VNC (when using the raw QEMU command line):
>>
>>     -display vnc=:0
>>
>>   Connect with "vncviewer" or another VNC client, optionally forwarded
>>   over SSH.
>>
>>   If you'd even like to type on the graphical console, I recommend
>>   adding a USB 3.0 keyboard:
>>
>>     -device nec-usb-xhci -device usb-kbd
>>
>> * On both guest arches, check out the nice graphical progress bar (five
>>   seconds, and you can enter the Setup utility with F2 or ESC):
>>
>>     -boot menu=on,splash-time=5000
>>
>>
>> ... This got to be one of my longest blurbs. Sorry about that :)
>>
>> Ard: I haven't forgotten about the beer you promised! ;)
>>
>> Public branch: <https://github.com/lersek/edk2/commits/virtio_gpu>.
>>
>> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
>> Cc: Jordan Justen <jordan.l.justen@intel.com>
>>
>> Thanks
>> Laszlo
>>
>> Laszlo Ersek (11):
>>   OvmfPkg/QemuVideoDxe: don't incorrectly bind virtio-gpu-pci
>>   OvmfPkg/Virtio10Dxe: don't bind virtio-vga
>>   OvmfPkg/PlatformBootManagerLib: relax device class requirement for
>>     ConOut
>>   OvmfPkg/IndustryStandard: add type definitions for the virtio GPU
>>     device
>>   OvmfPkg/VirtioGpuDxe: introduce with Component Name 2 and Driver
>>     Binding
>>   OvmfPkg: include VirtioGpuDxe in the platform DSC/FDF files
>>   ArmVirtPkg/ArmVirtQemu: include VirtioGpuDxe in the platform DSC/FDF
>>     files
>>   OvmfPkg/VirtioGpuDxe: initialize and tear down VirtIo GPU device
>>   OvmfPkg/VirtioGpuDxe: provide functions for sending VirtIo GPU
>>     commands
>>   OvmfPkg/VirtioGpuDxe: implement EFI_GRAPHICS_OUTPUT_PROTOCOL
>>   ArmVirtPkg: remove PcdKludgeMapPciMmioAsCached
>>
>>  ArmVirtPkg/ArmVirtPkg.dec                            |  24 -
>>  ArmVirtPkg/ArmVirtQemu.dsc                           |   4 +-
>>  ArmVirtPkg/ArmVirtQemuFvMain.fdf.inc                 |   1 +
>>  ArmVirtPkg/ArmVirtQemuKernel.dsc                     |   4 +-
>>  ArmVirtPkg/PciHostBridgeDxe/PciHostBridge.c          |   3 +-
>>  ArmVirtPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf     |   1 -
>>  OvmfPkg/Include/IndustryStandard/Virtio10.h          |   5 +
>>  OvmfPkg/Include/IndustryStandard/VirtioGpu.h         | 216 +++++
>>  OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c |  10 +-
>>  OvmfPkg/OvmfPkgIa32.dsc                              |   1 +
>>  OvmfPkg/OvmfPkgIa32.fdf                              |   1 +
>>  OvmfPkg/OvmfPkgIa32X64.dsc                           |   1 +
>>  OvmfPkg/OvmfPkgIa32X64.fdf                           |   1 +
>>  OvmfPkg/OvmfPkgX64.dsc                               |   1 +
>>  OvmfPkg/OvmfPkgX64.fdf                               |   1 +
>>  OvmfPkg/QemuVideoDxe/Driver.c                        |   3 +
>>  OvmfPkg/Virtio10Dxe/Virtio10.c                       |  18 +-
>>  OvmfPkg/VirtioGpuDxe/Commands.c                      | 559 +++++++++++++
>>  OvmfPkg/VirtioGpuDxe/DriverBinding.c                 | 844 ++++++++++++++++++++
>>  OvmfPkg/VirtioGpuDxe/Gop.c                           | 647 +++++++++++++++
>>  OvmfPkg/VirtioGpuDxe/VirtioGpu.h                     | 327 ++++++++
>>  OvmfPkg/VirtioGpuDxe/VirtioGpu.inf                   |  51 ++
>>  22 files changed, 2682 insertions(+), 41 deletions(-)
>>  create mode 100644 OvmfPkg/VirtioGpuDxe/VirtioGpu.inf
>>  create mode 100644 OvmfPkg/Include/IndustryStandard/VirtioGpu.h
>>  create mode 100644 OvmfPkg/VirtioGpuDxe/VirtioGpu.h
>>  create mode 100644 OvmfPkg/VirtioGpuDxe/Commands.c
>>  create mode 100644 OvmfPkg/VirtioGpuDxe/DriverBinding.c
>>  create mode 100644 OvmfPkg/VirtioGpuDxe/Gop.c
>>
>> -- 
>> 2.9.2
>>



  reply	other threads:[~2016-09-01 21:07 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-19 12:49 [PATCH 00/11] OvmfPkg, ArmVirtPkg: GOP driver for the VirtIo GPU (virtio-gpu-pci) Laszlo Ersek
2016-08-19 12:49 ` [PATCH 01/11] OvmfPkg/QemuVideoDxe: don't incorrectly bind virtio-gpu-pci Laszlo Ersek
2016-08-19 12:49 ` [PATCH 02/11] OvmfPkg/Virtio10Dxe: don't bind virtio-vga Laszlo Ersek
2016-08-19 12:49 ` [PATCH 03/11] OvmfPkg/PlatformBootManagerLib: relax device class requirement for ConOut Laszlo Ersek
2016-08-19 12:49 ` [PATCH 04/11] OvmfPkg/IndustryStandard: add type definitions for the virtio GPU device Laszlo Ersek
2016-08-19 12:49 ` [PATCH 05/11] OvmfPkg/VirtioGpuDxe: introduce with Component Name 2 and Driver Binding Laszlo Ersek
2016-08-19 12:49 ` [PATCH 06/11] OvmfPkg: include VirtioGpuDxe in the platform DSC/FDF files Laszlo Ersek
2016-08-19 12:49 ` [PATCH 07/11] ArmVirtPkg/ArmVirtQemu: " Laszlo Ersek
2016-08-19 13:14   ` Ard Biesheuvel
2016-08-19 12:49 ` [PATCH 08/11] OvmfPkg/VirtioGpuDxe: initialize and tear down VirtIo GPU device Laszlo Ersek
2016-08-19 12:49 ` [PATCH 09/11] OvmfPkg/VirtioGpuDxe: provide functions for sending VirtIo GPU commands Laszlo Ersek
2016-08-19 12:49 ` [PATCH 10/11] OvmfPkg/VirtioGpuDxe: implement EFI_GRAPHICS_OUTPUT_PROTOCOL Laszlo Ersek
2016-08-19 12:49 ` [PATCH 11/11] ArmVirtPkg: remove PcdKludgeMapPciMmioAsCached Laszlo Ersek
2016-08-19 13:16   ` Ard Biesheuvel
2016-08-19 13:06 ` [PATCH 00/11] OvmfPkg, ArmVirtPkg: GOP driver for the VirtIo GPU (virtio-gpu-pci) Ard Biesheuvel
2016-08-19 14:25   ` Laszlo Ersek
2016-08-31 20:43     ` Jordan Justen
2016-09-01  7:44       ` Ard Biesheuvel
2016-09-01 16:48         ` Laszlo Ersek
2016-09-01 16:29       ` Laszlo Ersek
2016-09-01 18:03         ` Jordan Justen
2016-09-01 18:46           ` Laszlo Ersek
2016-09-01 19:52             ` Jordan Justen
2016-09-01 20:23               ` Ard Biesheuvel
2016-09-01 20:26                 ` Ard Biesheuvel
2016-09-01 20:52                 ` Jordan Justen
2016-09-01 20:44               ` Laszlo Ersek
2016-09-05 14:17               ` Gerd Hoffmann
2016-08-30 15:07 ` Laszlo Ersek
2016-09-01 20:32 ` Jordan Justen
2016-09-01 21:07   ` Laszlo Ersek [this message]
2016-09-01 22:02 ` Laszlo Ersek
     [not found]   ` <57CD6463.90903@suse.de>
2016-09-05 12:56     ` Laszlo Ersek
     [not found]       ` <57CD6C25.7000406@suse.de>
2016-09-05 13:17         ` Laszlo Ersek

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=46e52c90-f6e3-b64f-29b1-6b3fcb376719@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