public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Michael Zimmermann <sigmaepsilon92@gmail.com>
To: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: edk2-devel-01 <edk2-devel@lists.01.org>,
	Laszlo Ersek <lersek@redhat.com>
Subject: Re: SetMemorySpaceAttributes with EFI_MEMORY_XP
Date: Mon, 20 Mar 2017 12:16:55 +0100	[thread overview]
Message-ID: <CAN9vWDJw9cS1JanP9qrx4GubOEM9Bsvdv16PCcczoxNRDXVang@mail.gmail.com> (raw)
In-Reply-To: <CAKv+Gu_dZLToVfGmmhiOQiUhh4NW-fQEram-G-Byp3eAnAmcUw@mail.gmail.com>

Ard, why is SetMSetMemorySpaceAttributes being called in first place?
(ignoring the recent NX patch)
Looking at the initial GCD, it looks like unused memory usually
doesn't have any attributes set anyway.

Thanks
Michael

On Mon, Mar 20, 2017 at 12:04 PM, Ard Biesheuvel
<ard.biesheuvel@linaro.org> wrote:
> On 20 March 2017 at 10:32, Michael Zimmermann <sigmaepsilon92@gmail.com> wrote:
>> Hi,
>>
>> I didn't test ArmVirtQemuKernel but I'm trying to use some of the code
>> for another platform.
>> So does this call ever succeed with PcdDxeNxMemoryProtectionPolicy
>> being enabled?
>> https://github.com/tianocore/edk2/blob/76874be3d411bf8daac051718e20932e0bf97d70/ArmVirtPkg/HighMemDxe/HighMemDxe.c#L95
>> Status = gDS->SetMemorySpaceAttributes (CurBase, CurSize, Attributes);
>>
>> Neither the memory that was added by this Dxe nor the one added
>> automatically by GCD has the EFI_MEMORY_XP capability which causes
>> SetMemorySpaceAttributes to return EFI_UNSUPPORTED.
>>
>
> That is a very good point. I have been caught by this more than once
> already (and I did test this, but not as thoroughly as I should have,
> apparently)
>
> This is caused by the unfortunate situation in EDK2 that GCD
> permission attributes are ambiguous: it does not distinguish between
> 'the memory controller allows this range to be configured as
> non-executable' and 'the nature of the contents of this memory region
> allows it to be mapped without executable attributes', and therefore,
> RO/XP are never used in the GCD memory space map.
>
> The solution is to use the CPU_ARCH_PROTOCOL interface explicitly to
> set the XP attribute on the memory itself (but not on the descriptors
> in the GCD or UEFI memory maps). I will spin a patch to fix this.
>
> Thanks,
> Ard.


  reply	other threads:[~2017-03-20 11:16 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-20 10:32 SetMemorySpaceAttributes with EFI_MEMORY_XP Michael Zimmermann
2017-03-20 11:04 ` Ard Biesheuvel
2017-03-20 11:16   ` Michael Zimmermann [this message]
2017-03-20 11:20     ` Ard Biesheuvel
2017-03-20 11:38       ` Laszlo Ersek
2017-03-20 14:08         ` Ard Biesheuvel
2017-03-20 15:22           ` Yao, Jiewen
2017-03-20 15:24           ` Laszlo Ersek
2017-03-20 19:31             ` Ard Biesheuvel
2017-03-20 11:06 ` Laszlo Ersek
2017-03-20 11:10   ` Michael Zimmermann

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=CAN9vWDJw9cS1JanP9qrx4GubOEM9Bsvdv16PCcczoxNRDXVang@mail.gmail.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