From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=209.132.183.28; helo=mx1.redhat.com; envelope-from=lersek@redhat.com; receiver=edk2-devel@lists.01.org Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) (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 A446D2215BD97 for ; Fri, 2 Feb 2018 06:34:23 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 006C63E520; Fri, 2 Feb 2018 14:40:00 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-121-50.rdu2.redhat.com [10.10.121.50]) by smtp.corp.redhat.com (Postfix) with ESMTP id A0FF367651; Fri, 2 Feb 2018 14:39:57 +0000 (UTC) From: Laszlo Ersek To: edk2-devel-01 Cc: Ard Biesheuvel , Eric Dong , Jiewen Yao , Leif Lindholm , Liming Gao , Michael D Kinney , Ruiyu Ni Date: Fri, 2 Feb 2018 15:39:40 +0100 Message-Id: <20180202143954.7357-1-lersek@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Fri, 02 Feb 2018 14:40:00 +0000 (UTC) Subject: [PATCH 00/14] rid PiSmmCpuDxeSmm of DB-encoded instructions X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Feb 2018 14:34:24 -0000 Repo: https://github.com/lersek/edk2.git Branch: patch_insn_x86 Patch 01 is a comment cleanup patch for "BaseLib.h". Patch 02 introduces PatchInstructionX86() to BaseLib, based on the recent discussion. Patch 03 removes *.S and *.asm files from PiSmmCpuDxeSmm, so that the rest of the series only needs to concern itself with *.nasm files. (The subject of removing *.S and *.asm files for x86 was broached by Liming on the list earlier; it's handy for this series.) Patches 04 through 14 replace the DB encodings of instructions in PiSmmCpuDxeSmm NASM source code. Most of the time the new PatchInstructionX86() function is utilized, but in some cases, not even PatchInstructionX86() is needed. Tested the following OSes with this series (all cases used -D SMM_REQUIRE, 2-4 VCPUs, both normal boot and S3, on KVM): - IA32 - Fedora 26 - IA32X64 - Fedora 26 - Windows 7 - Windows 8.1 - Windows 10 - Windows Server 2008 R2 - Windows Server 2012 R2 - Windows Server 2016 (normal boot only -- S3 is untestable at this time due to QXL GPU driver signing issues) Cc: Ard Biesheuvel Cc: Eric Dong Cc: Jiewen Yao Cc: Leif Lindholm Cc: Liming Gao Cc: Michael D Kinney Cc: Ruiyu Ni Thanks, Laszlo Laszlo Ersek (14): MdePkg/BaseLib.h: state preprocessing conditions in comments after #endifs MdePkg/BaseLib: add PatchInstructionX86() UefiCpuPkg/PiSmmCpuDxeSmm: remove *.S and *.asm assembly files UefiCpuPkg/PiSmmCpuDxeSmm: patch "gSmbase" with PatchInstructionX86() UefiCpuPkg/PiSmmCpuDxeSmm: patch "gSmiStack" with PatchInstructionX86() UefiCpuPkg/PiSmmCpuDxeSmm: patch "gSmiCr3" with PatchInstructionX86() UefiCpuPkg/PiSmmCpuDxeSmm: patch "XdSupported" with PatchInstructionX86() UefiCpuPkg/PiSmmCpuDxeSmm: remove unneeded DBs from X64 SmmStartup() UefiCpuPkg/PiSmmCpuDxeSmm: patch "gSmmCr3" with PatchInstructionX86() UefiCpuPkg/PiSmmCpuDxeSmm: patch "gSmmCr4" with PatchInstructionX86() UefiCpuPkg/PiSmmCpuDxeSmm: patch "gSmmCr0" with PatchInstructionX86() UefiCpuPkg/PiSmmCpuDxeSmm: eliminate "gSmmJmpAddr" and related DBs UefiCpuPkg/PiSmmCpuDxeSmm: patch "gSmmInitStack" with PatchInstructionX86() UefiCpuPkg/PiSmmCpuDxeSmm: remove DBs from SmmRelocationSemaphoreComplete32() MdePkg/Include/Library/BaseLib.h | 62 +- MdePkg/Library/BaseLib/BaseLib.inf | 2 + MdePkg/Library/BaseLib/X86PatchInstruction.c | 89 +++ UefiCpuPkg/PiSmmCpuDxeSmm/CpuS3.c | 4 +- UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/MpFuncs.S | 165 ----- UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/MpFuncs.asm | 168 ----- UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiEntry.S | 215 ------ UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiEntry.asm | 223 ------ UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiEntry.nasm | 25 +- UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiException.S | 696 ------------------- UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiException.asm | 713 -------------------- UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmmInit.S | 84 --- UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmmInit.asm | 94 --- UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmmInit.nasm | 30 +- UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c | 27 +- UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h | 21 +- UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf | 20 - UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c | 7 + UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfileInternal.h | 1 + UefiCpuPkg/PiSmmCpuDxeSmm/SmramSaveState.c | 16 +- UefiCpuPkg/PiSmmCpuDxeSmm/X64/MpFuncs.S | 204 ------ UefiCpuPkg/PiSmmCpuDxeSmm/X64/MpFuncs.asm | 206 ------ UefiCpuPkg/PiSmmCpuDxeSmm/X64/Semaphore.c | 16 +- UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiEntry.S | 243 ------- UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiEntry.asm | 242 ------- UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiEntry.nasm | 25 +- UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiException.S | 365 ---------- UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiException.asm | 383 ----------- UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmInit.S | 141 ---- UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmInit.asm | 132 ---- UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmInit.nasm | 76 +-- 31 files changed, 271 insertions(+), 4424 deletions(-) create mode 100644 MdePkg/Library/BaseLib/X86PatchInstruction.c delete mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/MpFuncs.S delete mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/MpFuncs.asm delete mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiEntry.S delete mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiEntry.asm delete mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiException.S delete mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiException.asm delete mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmmInit.S delete mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmmInit.asm delete mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/X64/MpFuncs.S delete mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/X64/MpFuncs.asm delete mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiEntry.S delete mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiEntry.asm delete mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiException.S delete mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiException.asm delete mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmInit.S delete mode 100644 UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmInit.asm -- 2.14.1.3.gb7cf6e02401b