From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web12.2081.1608840265446455769 for ; Thu, 24 Dec 2020 12:04:25 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.151, mailfrom: guo.dong@intel.com) IronPort-SDR: LdfLN9Lg53GtGImvsDqfZFuqMxbDAOR5Wiao7/8mplUu60TLicMQrPDgMa4Z00+u71mEiW1Mze NF5HgLZYioFw== X-IronPort-AV: E=McAfee;i="6000,8403,9845"; a="155965742" X-IronPort-AV: E=Sophos;i="5.78,444,1599548400"; d="scan'208";a="155965742" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Dec 2020 12:04:24 -0800 IronPort-SDR: JtSsHE090NPAxGcokW3fsxYeeQkJ70wzwv4safcOVYVJc7O9Mr7gublX1XVmmd8tYY7HITM774 EL2wJ9sBmUIw== X-IronPort-AV: E=Sophos;i="5.78,444,1599548400"; d="scan'208";a="345752249" Received: from gdong1-mobl.amr.corp.intel.com ([10.212.176.23]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Dec 2020 12:04:23 -0800 From: "Guo Dong" To: devel@edk2.groups.io Cc: eric.dong@intel.com, ray.ni@intel.com, lersek@redhat.com, rahul1.kumar@intel.com Subject: [edk2-devel] [PATCH] UefiCpuPkg/CpuDxe: Fix boot error Date: Thu, 24 Dec 2020 13:04:20 -0700 Message-Id: <20201224200420.15692-1-guo.dong@intel.com> X-Mailer: git-send-email 2.16.2.windows.1 REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3084 When DXE drivers are dispatched above 4GB memory in 64bit mode, the address setCodeSelectorLongJump in stack will be override by parameter. Jump to Qword is not supported by some processors. So use retfq instead. Signed-off-by: Guo Dong --- UefiCpuPkg/CpuDxe/X64/CpuAsm.nasm | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/UefiCpuPkg/CpuDxe/X64/CpuAsm.nasm b/UefiCpuPkg/CpuDxe/X64/CpuAsm.nasm index c3489bcc3e..e33ddb2784 100644 --- a/UefiCpuPkg/CpuDxe/X64/CpuAsm.nasm +++ b/UefiCpuPkg/CpuDxe/X64/CpuAsm.nasm @@ -20,13 +20,11 @@ ;------------------------------------------------------------------------------ global ASM_PFX(SetCodeSelector) ASM_PFX(SetCodeSelector): - sub rsp, 0x10 + push rcx, lea rax, [setCodeSelectorLongJump] - mov [rsp], rax - mov [rsp+4], cx - jmp dword far [rsp] + push rax + DB 0x48, 0xcb ; retfq setCodeSelectorLongJump: - add rsp, 0x10 ret ;------------------------------------------------------------------------------ -- 2.16.2.windows.1