From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=59.124.61.242; helo=synology.com; envelope-from=yuchenlin@synology.com; receiver=edk2-devel@lists.01.org Received: from synology.com (synology.com [59.124.61.242]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 6FD1321180F4F for ; Thu, 1 Nov 2018 20:24:19 -0700 (PDT) From: yuchenlin@synology.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synology.com; s=123; t=1541129058; bh=wmvnbsJcHEKwXpuON5nlWSkA1PLkYiaaLBdSNC+Qi0Y=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=O3n0KtkvzAoPsO+TyrU34DvCJxuAyBcdAsdTZbWaJAuR24Hu8yu0fWNeOAHlye3oZ qqmh7fiihP2vE1P4jVsSI6wmzLo0f8LnYTenF3YcjH/y2Oag/6+tErOwIzlLy3TAzm 9DQvNw6+KjxZbsmfwwCZcU/O6tygPP3J5ObzLIyU= To: edk2-devel@lists.01.org Cc: jordan.l.justen@intel.com, lersek@redhat.com, ard.biesheuvel@linaro.org, anthony.perard@citrix.com, julien.grall@linaro.org, phil@philjordan.eu, kraxel@redhat.com, philmd@redhat.com, yuchenlin Date: Fri, 2 Nov 2018 11:24:00 +0800 Message-Id: <20181102032402.19686-4-yuchenlin@synology.com> In-Reply-To: <20181102032402.19686-1-yuchenlin@synology.com> References: <20181102032402.19686-1-yuchenlin@synology.com> X-Synology-MCP-Status: no X-Synology-Spam-Flag: no X-Synology-Spam-Status: score=0, required 6, WHITELIST_FROM_ADDRESS 0 X-Synology-Virus-Status: no Subject: [PATCH v2 3/5] Revert "OvmfPkg/QemuVideoDxe: Helper functions for unaligned port I/O." X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Nov 2018 03:24:19 -0000 From: yuchenlin 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 --- 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.
- 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.
- 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.
- 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.
- 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.
- 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 -#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