From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
To: Achin Gupta <achin.gupta@arm.com>
Cc: "edk2-devel@lists.01.org" <edk2-devel@lists.01.org>,
Leif Lindholm <leif.lindholm@linaro.org>,
nd@arm.com
Subject: Re: [PATCH] ArmPlatformPkg/NorFlashDxe: Change Flash memory attributes before writes
Date: Fri, 20 Jan 2017 11:58:12 +0000 [thread overview]
Message-ID: <CAKv+Gu_XgnXRqR-3_P2AOdmzc+78cJh=+07E1gy8zfSXzxv6OA@mail.gmail.com> (raw)
In-Reply-To: <fea47cc1f665cd657e52c7ac78fcc0de17776a90.1484913233.git.achin.gupta@arm.com>
On 20 January 2017 at 11:54, <achin.gupta@arm.com> wrote:
> From: Achin Gupta <achin.gupta@arm.com>
>
> In NorFlashFvbInitialize() if a valid Firmware Volume header is not found at the
> start of NOR Flash, the Flash memory is written before it has been remapped with
> EFI_MEMORY_UC attributes to allow write commands. Since the flash memory was
> previously mapped with Normal and possibly cacheable memory attributes, the
> Flash commands might never reach the device.
>
> This patch fixes this issue by remapping the Flash memory region with correct
> memory attributes before writing to it.
>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Achin Gupta <achin.gupta@arm.com>
Thanks Achin!
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Pushed as 90d1f671cdad
> ---
> .../Drivers/NorFlashDxe/NorFlashFvbDxe.c | 45 +++++++++++-----------
> 1 file changed, 23 insertions(+), 22 deletions(-)
>
> diff --git a/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashFvbDxe.c b/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashFvbDxe.c
> index 42be5c2..12a8612 100644
> --- a/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashFvbDxe.c
> +++ b/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashFvbDxe.c
> @@ -719,6 +719,29 @@ NorFlashFvbInitialize (
> UINTN RuntimeMmioRegionSize;
>
> DEBUG((DEBUG_BLKIO,"NorFlashFvbInitialize\n"));
> + ASSERT((Instance != NULL));
> +
> + //
> + // Declare the Non-Volatile storage as EFI_MEMORY_RUNTIME
> + //
> +
> + // Note: all the NOR Flash region needs to be reserved into the UEFI Runtime memory;
> + // even if we only use the small block region at the top of the NOR Flash.
> + // The reason is when the NOR Flash memory is set into program mode, the command
> + // is written as the base of the flash region (ie: Instance->DeviceBaseAddress)
> + RuntimeMmioRegionSize = (Instance->RegionBaseAddress - Instance->DeviceBaseAddress) + Instance->Size;
> +
> + Status = gDS->AddMemorySpace (
> + EfiGcdMemoryTypeMemoryMappedIo,
> + Instance->DeviceBaseAddress, RuntimeMmioRegionSize,
> + EFI_MEMORY_UC | EFI_MEMORY_RUNTIME
> + );
> + ASSERT_EFI_ERROR (Status);
> +
> + Status = gDS->SetMemorySpaceAttributes (
> + Instance->DeviceBaseAddress, RuntimeMmioRegionSize,
> + EFI_MEMORY_UC | EFI_MEMORY_RUNTIME);
> + ASSERT_EFI_ERROR (Status);
>
> Instance->Initialized = TRUE;
> mFlashNvStorageVariableBase = FixedPcdGet32 (PcdFlashNvStorageVariableBase);
> @@ -757,28 +780,6 @@ NorFlashFvbInitialize (
> }
>
> //
> - // Declare the Non-Volatile storage as EFI_MEMORY_RUNTIME
> - //
> -
> - // Note: all the NOR Flash region needs to be reserved into the UEFI Runtime memory;
> - // even if we only use the small block region at the top of the NOR Flash.
> - // The reason is when the NOR Flash memory is set into program mode, the command
> - // is written as the base of the flash region (ie: Instance->DeviceBaseAddress)
> - RuntimeMmioRegionSize = (Instance->RegionBaseAddress - Instance->DeviceBaseAddress) + Instance->Size;
> -
> - Status = gDS->AddMemorySpace (
> - EfiGcdMemoryTypeMemoryMappedIo,
> - Instance->DeviceBaseAddress, RuntimeMmioRegionSize,
> - EFI_MEMORY_UC | EFI_MEMORY_RUNTIME
> - );
> - ASSERT_EFI_ERROR (Status);
> -
> - Status = gDS->SetMemorySpaceAttributes (
> - Instance->DeviceBaseAddress, RuntimeMmioRegionSize,
> - EFI_MEMORY_UC | EFI_MEMORY_RUNTIME);
> - ASSERT_EFI_ERROR (Status);
> -
> - //
> // Register for the virtual address change event
> //
> Status = gBS->CreateEventEx (
> --
> 1.9.1
>
prev parent reply other threads:[~2017-01-20 11:58 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-20 11:54 [PATCH] ArmPlatformPkg/NorFlashDxe: Change Flash memory attributes before writes achin.gupta
2017-01-20 11:58 ` Ard Biesheuvel [this message]
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='CAKv+Gu_XgnXRqR-3_P2AOdmzc+78cJh=+07E1gy8zfSXzxv6OA@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