[edk2] [PATCH v2 0/3] OvmfPkg/QemuVideoDxe: Add VMWare SVGA2 framebuffer support

Phil Dennis-Jordan posted 3 patches 7 years, 7 months ago
Only 2 patches received!
OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf          |   6 ++
OvmfPkg/Include/IndustryStandard/VMWareSVGA2.h | 102 +++++++++++++++++++
OvmfPkg/QemuVideoDxe/Qemu.h                    |  37 +++++++
OvmfPkg/QemuVideoDxe/UnalignedIoInternal.h     |  59 +++++++++++
OvmfPkg/QemuVideoDxe/Driver.c                  |  76 ++++++++++++++
OvmfPkg/QemuVideoDxe/Gop.c                     |  74 +++++++++++++-
OvmfPkg/QemuVideoDxe/Initialize.c              | 107 ++++++++++++++++++++
OvmfPkg/QemuVideoDxe/UnalignedIoGcc.c          |  69 +++++++++++++
OvmfPkg/QemuVideoDxe/UnalignedIoIcc.c          |  79 +++++++++++++++
OvmfPkg/QemuVideoDxe/UnalignedIoMsc.c          |  81 +++++++++++++++
OvmfPkg/QemuVideoDxe/UnalignedIoUnsupported.c  |  65 ++++++++++++
11 files changed, 754 insertions(+), 1 deletion(-)
create mode 100644 OvmfPkg/Include/IndustryStandard/VMWareSVGA2.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
[edk2] [PATCH v2 0/3] OvmfPkg/QemuVideoDxe: Add VMWare SVGA2 framebuffer support
Posted by Phil Dennis-Jordan 7 years, 7 months ago
This extends the QemuVideoDxe driver to support the VMWare SVGA2 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.

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.

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

 OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf          |   6 ++
 OvmfPkg/Include/IndustryStandard/VMWareSVGA2.h | 102 +++++++++++++++++++
 OvmfPkg/QemuVideoDxe/Qemu.h                    |  37 +++++++
 OvmfPkg/QemuVideoDxe/UnalignedIoInternal.h     |  59 +++++++++++
 OvmfPkg/QemuVideoDxe/Driver.c                  |  76 ++++++++++++++
 OvmfPkg/QemuVideoDxe/Gop.c                     |  74 +++++++++++++-
 OvmfPkg/QemuVideoDxe/Initialize.c              | 107 ++++++++++++++++++++
 OvmfPkg/QemuVideoDxe/UnalignedIoGcc.c          |  69 +++++++++++++
 OvmfPkg/QemuVideoDxe/UnalignedIoIcc.c          |  79 +++++++++++++++
 OvmfPkg/QemuVideoDxe/UnalignedIoMsc.c          |  81 +++++++++++++++
 OvmfPkg/QemuVideoDxe/UnalignedIoUnsupported.c  |  65 ++++++++++++
 11 files changed, 754 insertions(+), 1 deletion(-)
 create mode 100644 OvmfPkg/Include/IndustryStandard/VMWareSVGA2.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)

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] [PATCH v2 0/3] OvmfPkg/QemuVideoDxe: Add VMWare SVGA2 framebuffer support
Posted by Phil Dennis-Jordan 7 years, 7 months ago
Looks like I missed off the branch link, sorry:

https://github.com/pmj/edk2/commits/ovmf_vmware_svga2_v2

On Mon, Apr 3, 2017 at 10:44 AM, Phil Dennis-Jordan <lists@philjordan.eu> wrote:
> This extends the QemuVideoDxe driver to support the VMWare SVGA2 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.
>
> 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.
>
> Phil Dennis-Jordan (3):
>   OvmfPkg: VMWare SVGA2 display device register definitions
>   OvmfPkg/QemuVideoDxe: Helper functions for unaligned port I/O.
>   OvmfPkg/QemuVideoDxe: VMWare SVGA II device support.
>
>  OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf          |   6 ++
>  OvmfPkg/Include/IndustryStandard/VMWareSVGA2.h | 102 +++++++++++++++++++
>  OvmfPkg/QemuVideoDxe/Qemu.h                    |  37 +++++++
>  OvmfPkg/QemuVideoDxe/UnalignedIoInternal.h     |  59 +++++++++++
>  OvmfPkg/QemuVideoDxe/Driver.c                  |  76 ++++++++++++++
>  OvmfPkg/QemuVideoDxe/Gop.c                     |  74 +++++++++++++-
>  OvmfPkg/QemuVideoDxe/Initialize.c              | 107 ++++++++++++++++++++
>  OvmfPkg/QemuVideoDxe/UnalignedIoGcc.c          |  69 +++++++++++++
>  OvmfPkg/QemuVideoDxe/UnalignedIoIcc.c          |  79 +++++++++++++++
>  OvmfPkg/QemuVideoDxe/UnalignedIoMsc.c          |  81 +++++++++++++++
>  OvmfPkg/QemuVideoDxe/UnalignedIoUnsupported.c  |  65 ++++++++++++
>  11 files changed, 754 insertions(+), 1 deletion(-)
>  create mode 100644 OvmfPkg/Include/IndustryStandard/VMWareSVGA2.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)
>
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel