public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Phil Dennis-Jordan <lists@philjordan.eu>
To: edk2-devel@lists.01.org
Cc: Phil Dennis-Jordan <phil@philjordan.eu>
Subject: [PATCH v5 0/3] OvmfPkg/QemuVideoDxe: Add VMWare SVGA framebuffer support
Date: Fri,  7 Apr 2017 18:25:55 +1200	[thread overview]
Message-ID: <1491546358-58572-1-git-send-email-lists@philjordan.eu> (raw)

From: Phil Dennis-Jordan <phil@philjordan.eu>

This extends the QemuVideoDxe driver to support the VMWare SVGA display
device implemented by Qemu. Drivers for this device exist for guest OSes
which do not support Qemu's other display adapters, so supporting it in
OVMF is useful in conjunction with those OSes.

I've tried to follow the existing pattern for device-specific code in
OVMF's QemuVideoDxe driver as much as possible, with a minimum of
additional code.

For the functionality this driver uses, 2 I/O ports are used with
32-bit wide reads and writes. Unfortunately, one of them is not 32-bit
aligned. This is fine as far as x86/x86-64 is concerned, but neither
EDK2's IoLib nor other platforms support such an access pattern.
This issue was already encountered/discussed on the edk2-devel list 4
years ago: http://edk2-devel.narkive.com/bwH3r0us/unaligned-i-o
I've therefore added UnalignedIoWrite/Read32() helper functions for 
Ia32/X64, which I've based on IoLib's aligned ones.

Because querying mode properties on the device is only possible by
actually entering the mode, all display modes are queried on startup
and saved for when they are queried.

Feature branch: https://github.com/pmj/edk2/tree/ovmf_vmware_svga_v5

v2:
- Unaligned I/O helpers are now in a separate commit. [Laszlo]
- New header file with only essential device constants [Laszlo]
- ArmVirtPkg build failures fixed [Laszlo]
- Code formatting improvements in main driver code.

v3:
- Hardware describing header definitions now prefixed [Jordan, Laszlo]
- "2" dropped from "SVGA2" wherever it made sense. [Jordan, Laszlo]
- Various formatting tweaks to the unaligned IO helpers [Laszlo]
- Mode properties are now queried and stored up front. [Laszlo]
- Lots of formatting fixes in the driver code. [Laszlo]
- PCI BAR confusion resolved. [Laszlo]
- Found & fixed a memory leak.

v4: (only patch 3/3 changed)
- Struct assignment fix, pixel mask simplified, comment & whitespace
  fixes. [Laszlo]

v5: (only patch 3/3 changed)
- Removed duplicate hardware register read. [Laszlo]
- Fixed modelist memory leak. [Laszlo]

Phil Dennis-Jordan (3):
  OvmfPkg: VMWare SVGA display device register definitions
  OvmfPkg/QemuVideoDxe: Helper functions for unaligned port I/O.
  OvmfPkg/QemuVideoDxe: VMWare SVGA device support

 OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf         |   6 +
 OvmfPkg/Include/IndustryStandard/VmwareSvga.h | 104 +++++++++++++
 OvmfPkg/QemuVideoDxe/Qemu.h                   |  29 ++++
 OvmfPkg/QemuVideoDxe/UnalignedIoInternal.h    |  59 ++++++++
 OvmfPkg/QemuVideoDxe/Driver.c                 | 134 ++++++++++++++++-
 OvmfPkg/QemuVideoDxe/Gop.c                    |  61 +++++++-
 OvmfPkg/QemuVideoDxe/Initialize.c             | 157 ++++++++++++++++++++
 OvmfPkg/QemuVideoDxe/UnalignedIoGcc.c         |  70 +++++++++
 OvmfPkg/QemuVideoDxe/UnalignedIoIcc.c         |  80 ++++++++++
 OvmfPkg/QemuVideoDxe/UnalignedIoMsc.c         |  78 ++++++++++
 OvmfPkg/QemuVideoDxe/UnalignedIoUnsupported.c |  66 ++++++++
 11 files changed, 837 insertions(+), 7 deletions(-)
 create mode 100644 OvmfPkg/Include/IndustryStandard/VmwareSvga.h
 create mode 100644 OvmfPkg/QemuVideoDxe/UnalignedIoInternal.h
 create mode 100644 OvmfPkg/QemuVideoDxe/UnalignedIoGcc.c
 create mode 100644 OvmfPkg/QemuVideoDxe/UnalignedIoIcc.c
 create mode 100644 OvmfPkg/QemuVideoDxe/UnalignedIoMsc.c
 create mode 100644 OvmfPkg/QemuVideoDxe/UnalignedIoUnsupported.c

-- 
2.3.2 (Apple Git-55)



             reply	other threads:[~2017-04-07  6:26 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-07  6:25 Phil Dennis-Jordan [this message]
2017-04-07  6:25 ` [PATCH v5 1/3] OvmfPkg: VMWare SVGA display device register definitions Phil Dennis-Jordan
2017-04-07  6:25 ` [PATCH v5 2/3] OvmfPkg/QemuVideoDxe: Helper functions for unaligned port I/O Phil Dennis-Jordan
2017-04-07  6:25 ` [PATCH v5 3/3] OvmfPkg/QemuVideoDxe: VMWare SVGA device support Phil Dennis-Jordan
2017-04-07 10:46   ` Laszlo Ersek
2017-04-12  2:47     ` Phil Dennis-Jordan

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=1491546358-58572-1-git-send-email-lists@philjordan.eu \
    --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