public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Heyi Guo <heyi.guo@linaro.org>
To: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: "edk2-devel@lists.01.org" <edk2-devel@lists.01.org>,
	Linaro UEFI Mailman List <Linaro-uefi@lists.linaro.org>,
	Leif Lindholm <leif.lindholm@linaro.org>,
	"Ni, Ruiyu" <ruiyu.ni@intel.com>
Subject: Re: [RFC] MdeModulePkg/NonDiscoverablePciDeviceDxe: NonCoherentPciIoAllocateBuffer issue with AArch64
Date: Mon, 30 Oct 2017 23:13:39 +0800	[thread overview]
Message-ID: <d33a2eab-9304-393d-37bf-edd56215f0bd@linaro.org> (raw)
In-Reply-To: <CAKv+Gu-tnh1Ly9+se5M+r5EmAfwuRbw=eNMraUnXyGn8Ptk1wg@mail.gmail.com>

Hi Ard,


On 10/30/2017 04:21 PM, Ard Biesheuvel wrote:
> On 30 October 2017 at 03:52, Heyi Guo <heyi.guo@linaro.org> wrote:
>> Hi folks,
>>
>> In NonDiscoverablePciDeviceDxe driver, NonCoherentPciIoAllocateBuffer may
>> allocate EFI_MEMORY_UC buffer depending on input Attributes and GCD
>> capabilities. If it does, it actually allocates memory of "device" type in
>> AArch64, but not "normal uncacheable" memory. For "device" memory type, it
>> requires restrict access alignment and it may trigger alignment fault
>> exception with BaseMemoryLibOptDxe in which read/write alignment is not
>> guaranteed.
>>
>> Is EFI_MOMORY_WC enough for AArch64 platforms? How about other platforms,
>> like X86?
>>
> Hello Heyi,
>
> Do you mean EFI_MEMORY_UC in the last sentence? If not, I don't
> understand the question.
I actually meant EFI_MOMORY_WC for I supposed EFI_MOMORY_WC should be 
enough for AArch64 non cacheable DMA access.

>
> Anyway, in reality, this code will only allocate EFI_MEMORY_UC memory
> if any memory already exists in the memory map with that capability,
> otherwise it will fall back to EFI_MEMORY_WC. On most arm64 platforms,
> we no longer add this capability to system memoryEFI_MOMORY_WC by default, so you
> should be getting EFI_MEMORY_WC in most cases.

Oh, I supposed we always have UC capability for system memory and we 
actually still do that on D0x platforms. Does it mean we'd better remove 
this capability to get the issue fixed? Is there any architectural 
reason for not setting UC capability on system memory?

Thanks,

Heyi

>
> So the question is actually the opposite: does this interfere with
> correct operation in cases where the shared mapping between the CPU
> and the device should be strongly ordered, and EFI_MEMORY_WC doesn't
> give sufficient guarantees.
>



  reply	other threads:[~2017-10-30 15:09 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-30  3:52 [RFC] MdeModulePkg/NonDiscoverablePciDeviceDxe: NonCoherentPciIoAllocateBuffer issue with AArch64 Heyi Guo
2017-10-30  8:21 ` Ard Biesheuvel
2017-10-30 15:13   ` Heyi Guo [this message]
2017-10-30 15:17     ` Ard Biesheuvel
2017-10-31 15:25       ` Heyi Guo

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=d33a2eab-9304-393d-37bf-edd56215f0bd@linaro.org \
    --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