From: Anthony PERARD <anthony.perard@citrix.com>
To: Jiewen Yao <jiewen.yao@intel.com>
Cc: <edk2-devel@lists.01.org>,
Michael Kinney <michael.d.kinney@intel.com>,
Jeff Fan <jeff.fan@intel.com>
Subject: Re: [PATCH V4 1/3] UefiCpuPkg/CpuDxe: Add memory attribute setting.
Date: Thu, 9 Mar 2017 11:52:37 +0000 [thread overview]
Message-ID: <20170309115237.GK1760@perard.uk.xensource.com> (raw)
In-Reply-To: <1487660229-4820-2-git-send-email-jiewen.yao@intel.com>
On Tue, Feb 21, 2017 at 02:57:07PM +0800, Jiewen Yao wrote:
> Add memory attribute setting in CpuArch protocol.
> Previous SetMemoryAttributes() API only supports cache attribute setting.
>
> This patch updated SetMemoryAttributes() API to support memory attribute
> setting by updating CPU page table.
>
> Cc: Jeff Fan <jeff.fan@intel.com>
> Cc: Michael Kinney <michael.d.kinney@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Jiewen Yao <jiewen.yao@intel.com>
Hi,
This patch doesn't work on AMD (when running OVMF on Xen). With an AMD
cpu, reading MSR 0x1a0 cause a General Protection Fault.
> + AsmCpuid (0x80000000, &RegEax, NULL, NULL, NULL);
> + if (RegEax > 0x80000000) {
> + AsmCpuid (0x80000001, NULL, NULL, NULL, &RegEdx);
> + if ((RegEdx & BIT20) != 0) {
> + // XD supported
This next read is where the fault is taken.
> + if ((AsmReadMsr64 (0x000001A0) & BIT34) == 0) {
> + // XD enabled
> + if ((AsmReadMsr64 (0xC0000080) & BIT11) != 0) {
> + // XD activated
> + PagingContext->ContextData.Ia32.Attributes |= PAGE_TABLE_LIB_PAGING_CONTEXT_IA32_X64_ATTRIBUTES_XD_ACTIVATED;
> + }
> + }
> + }
>From OVMF output:
!!!! X64 Exception Type - 0D(#GP - General Protection) CPU Apic ID - 00000000 !!!!
RIP - 000000002F323ABE, CS - 0000000000000018, RFLAGS - 0000000000010002
ExceptionData - 0000000000000000
RAX - 0000000080000001, RCX - 00000000000001A0, RDX - 000000002FD3FBFF
RBX - 000000002F422CB8, RSP - 000000002F422C68, RBP - 000000002EE0AD98
RSI - 000000002F3AF018, RDI - 000000002F3229E4
R8 - 0000000000000000, R9 - 0000000000000000, R10 - 0000000000000000
R11 - 000000002F422BAD, R12 - 0000000000000000, R13 - 0000000000000000
R14 - 0000000000000000, R15 - 000000002F44A980
DS - 0000000000000008, ES - 0000000000000008, FS - 0000000000000008
GS - 0000000000000008, SS - 0000000000000008
CR0 - 00000000C0010033, CR2 - 0000000000000000, CR3 - 000000002F3C1000
CR4 - 0000000000000668, CR8 - 0000000000000000
DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
DR3 - 0000000000000000, DR6 - 00000000FFFF0FF0, DR7 - 0000000000000400
GDTR - 00000000FFFFFF80 000000000000001F, LDTR - 0000000000000000
IDTR - 000000002B68DD90 000000000000021F, TR - 0000000000000000
FXSAVE_STATE - 000000002F4228C0
!!!! Find PE image /home/osstest/build.106538.build-amd64/xen/tools/firmware/ovmf-dir-remote/Build/OvmfX64/DEBUG_GCC49/X64/UefiCpuPkg/CpuDxe/CpuDxe/DEBUG/CpuDxe.dll (ImageBase=000000002F321000, EntryPoint=000000002F321271) !!!!
Thanks,
--
Anthony PERARD
next prev parent reply other threads:[~2017-03-09 11:52 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-21 6:57 [PATCH V4 0/3] DXE Memory Protection Jiewen Yao
2017-02-21 6:57 ` [PATCH V4 1/3] UefiCpuPkg/CpuDxe: Add memory attribute setting Jiewen Yao
2017-03-09 11:52 ` Anthony PERARD [this message]
2017-03-10 1:02 ` Fan, Jeff
2017-03-10 15:21 ` Anthony PERARD
2017-03-13 1:58 ` Fan, Jeff
2017-02-21 6:57 ` [PATCH V4 2/3] MdeModulePkg/dec: add PcdImageProtectionPolicy Jiewen Yao
2017-02-21 6:57 ` [PATCH V4 3/3] MdeModulePkg/DxeCore: Add UEFI image protection Jiewen Yao
2017-02-21 7:23 ` [PATCH V4 0/3] DXE Memory Protection Fan, Jeff
2017-02-21 8:36 ` Ard Biesheuvel
2017-02-21 8:39 ` Yao, Jiewen
2017-02-21 17:25 ` Ard Biesheuvel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170309115237.GK1760@perard.uk.xensource.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox