From: yuchenlin <[email protected]>

This reverts commit 05a5379458725234de8a05780fcb5da2c12680e4.

The VMWare SVGA display device implemented by Qemu (-vga vmware) uses
an I/O-type BAR which is laid out such that some register offsets are
not aligned to the read/write width with which they are expected to be
accessed. However, we reverted the initialization of VMWare SVGA device,
we don't need such unaligned I/O.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: yuchenlin <[email protected]>
---
 OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf         |  6 --
 OvmfPkg/QemuVideoDxe/UnalignedIoGcc.c         | 70 ----------------
 OvmfPkg/QemuVideoDxe/UnalignedIoIcc.c         | 80 -------------------
 OvmfPkg/QemuVideoDxe/UnalignedIoInternal.h    | 59 --------------
 OvmfPkg/QemuVideoDxe/UnalignedIoMsc.c         | 78 ------------------
 OvmfPkg/QemuVideoDxe/UnalignedIoUnsupported.c | 66 ---------------
 6 files changed, 359 deletions(-)
 delete mode 100644 OvmfPkg/QemuVideoDxe/UnalignedIoGcc.c
 delete mode 100644 OvmfPkg/QemuVideoDxe/UnalignedIoIcc.c
 delete mode 100644 OvmfPkg/QemuVideoDxe/UnalignedIoInternal.h
 delete mode 100644 OvmfPkg/QemuVideoDxe/UnalignedIoMsc.c
 delete mode 100644 OvmfPkg/QemuVideoDxe/UnalignedIoUnsupported.c

diff --git a/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf 
b/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
index 895e6b8dbd..e5575622dc 100644
--- a/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
+++ b/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
@@ -41,15 +41,9 @@
   Qemu.h
 
 [Sources.Ia32, Sources.X64]
-  UnalignedIoGcc.c    | GCC
-  UnalignedIoIcc.c    | INTEL
-  UnalignedIoMsc.c    | MSFT
   VbeShim.c
   VbeShim.h
 
-[Sources.EBC]
-  UnalignedIoUnsupported.c
-
 [Packages]
   MdePkg/MdePkg.dec
   MdeModulePkg/MdeModulePkg.dec
diff --git a/OvmfPkg/QemuVideoDxe/UnalignedIoGcc.c 
b/OvmfPkg/QemuVideoDxe/UnalignedIoGcc.c
deleted file mode 100644
index 105d55d3b9..0000000000
--- a/OvmfPkg/QemuVideoDxe/UnalignedIoGcc.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/** @file
-  Unaligned Port I/O. This file has compiler specifics for GCC as there is no
-  ANSI C standard for doing IO.
-
-  Based on IoLibGcc.c.
-
-  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials are licensed and made available
-  under the terms and conditions of the BSD License which accompanies this
-  distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php.
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-
-#include "UnalignedIoInternal.h"
-
-/**
-  Performs a 32-bit write to the specified, possibly unaligned I/O-type
-  address.
-
-  Writes the 32-bit I/O port specified by Port with the value specified by
-  Value and returns Value. This function must guarantee that all I/O read and
-  write operations are serialized.
-
-  If 32-bit unaligned I/O port operations are not supported, then ASSERT().
-
-  @param[in]  Port   I/O port address
-  @param[in]  Value  32-bit word to write
-
-  @return The value written to the I/O port.
-
-**/
-UINT32
-UnalignedIoWrite32 (
-  IN      UINTN                     Port,
-  IN      UINT32                    Value
-  )
-{
-  __asm__ __volatile__ ( "outl %0, %1" : : "a" (Value), "d" ((UINT16)Port) );
-  return Value;
-}
-
-/**
-  Reads a 32-bit word from the specified, possibly unaligned I/O-type address.
-
-  Reads the 32-bit I/O port specified by Port. The 32-bit read value is
-  returned. This function must guarantee that all I/O read and write operations
-  are serialized.
-
-  If 32-bit unaligned I/O port operations are not supported, then ASSERT().
-
-  @param[in]  Port  The I/O port to read.
-
-  @return The value read.
-
-**/
-UINT32
-UnalignedIoRead32 (
-  IN      UINTN                     Port
-  )
-{
-  UINT32 Data;
-  __asm__ __volatile__ ( "inl %1, %0" : "=a" (Data) : "d" ((UINT16)Port) );
-  return Data;
-}
-
diff --git a/OvmfPkg/QemuVideoDxe/UnalignedIoIcc.c 
b/OvmfPkg/QemuVideoDxe/UnalignedIoIcc.c
deleted file mode 100644
index 79f3e446dd..0000000000
--- a/OvmfPkg/QemuVideoDxe/UnalignedIoIcc.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/** @file
-  Unaligned port I/O. This file has compiler specifics for ICC as there
-  is no ANSI C standard for doing IO.
-
-  Based on IoLibIcc.c.
-
-  Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials are licensed and made available
-  under the terms and conditions of the BSD License which accompanies this
-  distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php.
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-
-#include "UnalignedIoInternal.h"
-
-/**
-  Performs a 32-bit write to the specified, possibly unaligned I/O-type
-  address.
-
-  Writes the 32-bit I/O port specified by Port with the value specified by
-  Value and returns Value. This function must guarantee that all I/O read and
-  write operations are serialized.
-
-  If 32-bit unaligned I/O port operations are not supported, then ASSERT().
-
-  @param[in]  Port   I/O port address
-  @param[in]  Value  32-bit word to write
-
-  @return The value written to the I/O port.
-
-**/
-UINT32
-UnalignedIoWrite32 (
-  IN      UINTN                     Port,
-  IN      UINT32                    Value
-  )
-{
-  __asm {
-    mov eax, dword ptr [Value]
-    mov dx, word ptr [Port]
-    out dx, eax
-  }
-
-  return Value;
-}
-
-/**
-  Reads a 32-bit word from the specified, possibly unaligned I/O-type address.
-
-  Reads the 32-bit I/O port specified by Port. The 32-bit read value is
-  returned. This function must guarantee that all I/O read and write operations
-  are serialized.
-
-  If 32-bit unaligned I/O port operations are not supported, then ASSERT().
-
-  @param[in]  Port  The I/O port to read.
-
-  @return The value read.
-
-**/
-UINT32
-UnalignedIoRead32 (
-  IN      UINTN                     Port
-  )
-{
-  UINT32 Data;
-
-  __asm {
-    mov dx, word ptr [Port]
-    in  eax, dx
-    mov dword ptr [Data], eax
-  }
-
-  return Data;
-}
diff --git a/OvmfPkg/QemuVideoDxe/UnalignedIoInternal.h 
b/OvmfPkg/QemuVideoDxe/UnalignedIoInternal.h
deleted file mode 100644
index 234de6c21b..0000000000
--- a/OvmfPkg/QemuVideoDxe/UnalignedIoInternal.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/** @file
-  Unaligned port I/O, with implementations for various x86 compilers and a
-  dummy for platforms which do not support unaligned port I/O.
-
-  Copyright (c) 2017, Phil Dennis-Jordan.<BR>
-  This program and the accompanying materials are licensed and made available
-  under the terms and conditions of the BSD License which accompanies this
-  distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php.
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#ifndef _UNALIGNED_IO_INTERNAL_H_
-#define _UNALIGNED_IO_INTERNAL_H_
-
-/**
-  Performs a 32-bit write to the specified, possibly unaligned I/O-type 
address.
-
-  Writes the 32-bit I/O port specified by Port with the value specified by 
Value
-  and returns Value. This function must guarantee that all I/O read and write
-  operations are serialized.
-
-  If 32-bit unaligned I/O port operations are not supported, then ASSERT().
-
-  @param[in]  Port   I/O port address
-  @param[in]  Value  32-bit word to write
-
-  @return The value written to the I/O port.
-
-**/
-UINT32
-UnalignedIoWrite32 (
-  IN      UINTN                     Port,
-  IN      UINT32                    Value
-  );
-
-/**
-  Reads a 32-bit word from the specified, possibly unaligned I/O-type address.
-
-  Reads the 32-bit I/O port specified by Port. The 32-bit read value is
-  returned. This function must guarantee that all I/O read and write operations
-  are serialized.
-
-  If 32-bit unaligned I/O port operations are not supported, then ASSERT().
-
-  @param[in]  Port  The I/O port to read.
-
-  @return The value read.
-
-**/
-UINT32
-UnalignedIoRead32 (
-  IN      UINTN                     Port
-  );
-
-#endif
diff --git a/OvmfPkg/QemuVideoDxe/UnalignedIoMsc.c 
b/OvmfPkg/QemuVideoDxe/UnalignedIoMsc.c
deleted file mode 100644
index a466baee84..0000000000
--- a/OvmfPkg/QemuVideoDxe/UnalignedIoMsc.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/** @file
-  Unaligned port I/O. This file has compiler specifics for Microsoft C as there
-  is no ANSI C standard for doing IO.
-
-  Based on IoLibMsc.c
-
-  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials are licensed and made available
-  under the terms and conditions of the BSD License which accompanies this
-  distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php.
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-
-#include "UnalignedIoInternal.h"
-
-unsigned long  _inpd (unsigned short port);
-unsigned long  _outpd (unsigned short port, unsigned long dataword );
-void          _ReadWriteBarrier (void);
-
-/**
-  Performs a 32-bit write to the specified, possibly unaligned I/O-type
-  address.
-
-  Writes the 32-bit I/O port specified by Port with the value specified by
-  Value and returns Value. This function must guarantee that all I/O read and
-  write operations are serialized.
-
-  If 32-bit unaligned I/O port operations are not supported, then ASSERT().
-
-  @param[in]  Port   I/O port address
-  @param[in]  Value  32-bit word to write
-
-  @return The value written to the I/O port.
-
-**/
-UINT32
-UnalignedIoWrite32 (
-  IN      UINTN                     Port,
-  IN      UINT32                    Value
-  )
-{
-  _ReadWriteBarrier ();
-  _outpd ((UINT16)Port, Value);
-  _ReadWriteBarrier ();
-  return Value;
-}
-
-/**
-  Reads a 32-bit word from the specified, possibly unaligned I/O-type address.
-
-  Reads the 32-bit I/O port specified by Port. The 32-bit read value is
-  returned. This function must guarantee that all I/O read and write operations
-  are serialized.
-
-  If 32-bit unaligned I/O port operations are not supported, then ASSERT().
-
-  @param[in]  Port  The I/O port to read.
-
-  @return The value read.
-
-**/
-UINT32
-UnalignedIoRead32 (
-  IN      UINTN                     Port
-  )
-{
-  UINT32                            Value;
-
-  _ReadWriteBarrier ();
-  Value = _inpd ((UINT16)Port);
-  _ReadWriteBarrier ();
-  return Value;
-}
diff --git a/OvmfPkg/QemuVideoDxe/UnalignedIoUnsupported.c 
b/OvmfPkg/QemuVideoDxe/UnalignedIoUnsupported.c
deleted file mode 100644
index 57560ab38f..0000000000
--- a/OvmfPkg/QemuVideoDxe/UnalignedIoUnsupported.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/** @file
-  Unaligned port I/O dummy implementation for platforms which do not support 
it.
-
-  Copyright (c) 2017, Phil Dennis-Jordan.<BR>
-  This program and the accompanying materials are licensed and made available
-  under the terms and conditions of the BSD License which accompanies this
-  distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php.
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-
-#include <Library/DebugLib.h>
-#include "UnalignedIoInternal.h"
-
-/**
-  Performs a 32-bit write to the specified, possibly unaligned I/O-type
-  address.
-
-  Writes the 32-bit I/O port specified by Port with the value specified by
-  Value and returns Value. This function must guarantee that all I/O read and
-  write operations are serialized.
-
-  If 32-bit unaligned I/O port operations are not supported, then ASSERT().
-
-  @param[in]  Port   I/O port address
-  @param[in]  Value  32-bit word to write
-
-  @return The value written to the I/O port.
-
-**/
-UINT32
-UnalignedIoWrite32 (
-  IN      UINTN                     Port,
-  IN      UINT32                    Value
-  )
-{
-  ASSERT (FALSE);
-  return Value;
-}
-
-/**
-  Reads a 32-bit word from the specified, possibly unaligned I/O-type address.
-
-  Reads the 32-bit I/O port specified by Port. The 32-bit read value is
-  returned. This function must guarantee that all I/O read and write operations
-  are serialized.
-
-  If 32-bit unaligned I/O port operations are not supported, then ASSERT().
-
-  @param[in]  Port  The I/O port to read.
-
-  @return The value read.
-
-**/
-UINT32
-UnalignedIoRead32 (
-  IN      UINTN                     Port
-  )
-{
-  ASSERT (FALSE);
-  return 0;
-}
-- 
2.18.0

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to