From patchwork Mon Jun 20 23:36:20 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laszlo Ersek X-Patchwork-Id: 70485 Delivered-To: patch@linaro.org Received: by 10.140.28.4 with SMTP id 4csp1743895qgy; Mon, 20 Jun 2016 16:36:31 -0700 (PDT) X-Received: by 10.98.210.66 with SMTP id c63mr24922602pfg.25.1466465791177; Mon, 20 Jun 2016 16:36:31 -0700 (PDT) Return-Path: Received: from ml01.01.org (ml01.01.org. [2001:19d0:306:5::1]) by mx.google.com with ESMTPS id s13si67629472pag.207.2016.06.20.16.36.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 20 Jun 2016 16:36:31 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) client-ip=2001:19d0:306:5::1; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 104651A1E34; Mon, 20 Jun 2016 16:37:00 -0700 (PDT) X-Original-To: edk2-devel@ml01.01.org Delivered-To: edk2-devel@ml01.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 CE9971A1E02 for ; Mon, 20 Jun 2016 16:36:58 -0700 (PDT) Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 2A46B7F08F; Mon, 20 Jun 2016 23:36:29 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-116-97.phx2.redhat.com [10.3.116.97]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u5KNaNSk014735; Mon, 20 Jun 2016 19:36:28 -0400 From: Laszlo Ersek To: edk2-devel-01 Date: Tue, 21 Jun 2016 01:36:20 +0200 Message-Id: <1466465780-21614-3-git-send-email-lersek@redhat.com> In-Reply-To: <1466465780-21614-1-git-send-email-lersek@redhat.com> References: <1466465780-21614-1-git-send-email-lersek@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Mon, 20 Jun 2016 23:36:29 +0000 (UTC) Subject: [edk2] [FIXUP 2/2] UefiCpuPkg/PiSmmCpuDxeSmm/X64/MpFuncs.nasm: add 0x67 prefixes to far jumps X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Jordan Justen , Liming Gao MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" Without the a32 modifier under FLAT32_JUMP, and the a16 modifier under LONG_JUMP, nasm doesn't generate the 0x67 prefixes, and the far jumps don't work. (For the former, KVM returns an emulation failure. For the latter, KVM performs a triple fault (guest reboot).) By forcing the 0x67 prefixes we end up with the same machine code as the one open-coded in "MpFuncs.asm". This bug breaks S3 resume in the Ia32X64 + SMM_REQUIRE build of OVMF. Cc: Liming Gao Cc: Jordan Justen Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek --- UefiCpuPkg/PiSmmCpuDxeSmm/X64/MpFuncs.nasm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- 1.8.3.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/X64/MpFuncs.nasm b/UefiCpuPkg/PiSmmCpuDxeSmm/X64/MpFuncs.nasm index 3efc4c3642b9..702233d6e49d 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/X64/MpFuncs.nasm +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/X64/MpFuncs.nasm @@ -83,7 +83,7 @@ o32 lidt [cs:si] FLAT32_JUMP: - jmp dword 0x20:0x0 +a32 jmp dword 0x20:0x0 BITS 32 PMODE_ENTRY: ; protected mode entry point @@ -114,7 +114,7 @@ o16 mov ss, ax ; Flat mode setup. LONG_JUMP: - jmp dword 0x38:0x0 +a16 jmp dword 0x38:0x0 BITS 64 LongModeStart: