From: Leif Lindholm <leif.lindholm@linaro.org>
To: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: edk2-devel@lists.01.org, lersek@redhat.com, ryan.harkin@linaro.org
Subject: Re: [PATCH 2/2] ArmPkg/CpuDxe: remove VirtualUncachedPages protocol and implementation
Date: Thu, 23 Feb 2017 17:50:08 +0000 [thread overview]
Message-ID: <20170223175008.GY16034@bivouac.eciton.net> (raw)
In-Reply-To: <1487864885-13485-2-git-send-email-ard.biesheuvel@linaro.org>
On Thu, Feb 23, 2017 at 03:48:05PM +0000, Ard Biesheuvel wrote:
> Virtual uncached pages are simply pages that are aliased using mismatched
> attributes, which is not allowed by the ARM architecture. So remove the
> protocol and its implementation.
>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Nuke it from orbit:
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
> ---
> ArmPkg/ArmPkg.dec | 3 -
> ArmPkg/Drivers/CpuDxe/CpuDxe.c | 1 -
> ArmPkg/Drivers/CpuDxe/CpuDxe.h | 3 -
> ArmPkg/Drivers/CpuDxe/CpuDxe.inf | 1 -
> ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c | 70 --------------------
> ArmPkg/Include/Protocol/VirtualUncachedPages.h | 60 -----------------
> 6 files changed, 138 deletions(-)
>
> diff --git a/ArmPkg/ArmPkg.dec b/ArmPkg/ArmPkg.dec
> index 8e9cf199becc..4fd7a5be5158 100644
> --- a/ArmPkg/ArmPkg.dec
> +++ b/ArmPkg/ArmPkg.dec
> @@ -52,9 +52,6 @@ [Ppis]
> ## Include/Ppi/ArmMpCoreInfo.h
> gArmMpCoreInfoPpiGuid = { 0x6847cc74, 0xe9ec, 0x4f8f, {0xa2, 0x9d, 0xab, 0x44, 0xe7, 0x54, 0xa8, 0xfc} }
>
> -[Protocols.common]
> - gVirtualUncachedPagesProtocolGuid = { 0xAD651C7D, 0x3C22, 0x4DBF, { 0x92, 0xe8, 0x38, 0xa7, 0xcd, 0xae, 0x87, 0xb2 } }
> -
> [PcdsFeatureFlag.common]
> gArmTokenSpaceGuid.PcdCpuDxeProduceDebugSupport|FALSE|BOOLEAN|0x00000001
>
> diff --git a/ArmPkg/Drivers/CpuDxe/CpuDxe.c b/ArmPkg/Drivers/CpuDxe/CpuDxe.c
> index 7d328d096b1e..5aa5b874144a 100644
> --- a/ArmPkg/Drivers/CpuDxe/CpuDxe.c
> +++ b/ArmPkg/Drivers/CpuDxe/CpuDxe.c
> @@ -253,7 +253,6 @@ CpuDxeInitialize (
> Status = gBS->InstallMultipleProtocolInterfaces (
> &mCpuHandle,
> &gEfiCpuArchProtocolGuid, &mCpu,
> - &gVirtualUncachedPagesProtocolGuid, &gVirtualUncachedPages,
> NULL
> );
>
> diff --git a/ArmPkg/Drivers/CpuDxe/CpuDxe.h b/ArmPkg/Drivers/CpuDxe/CpuDxe.h
> index 80c305d53dd1..a00fc3064362 100644
> --- a/ArmPkg/Drivers/CpuDxe/CpuDxe.h
> +++ b/ArmPkg/Drivers/CpuDxe/CpuDxe.h
> @@ -35,7 +35,6 @@
> #include <Protocol/Cpu.h>
> #include <Protocol/DebugSupport.h>
> #include <Protocol/DebugSupportPeriodicCallback.h>
> -#include <Protocol/VirtualUncachedPages.h>
> #include <Protocol/LoadedImage.h>
>
>
> @@ -169,6 +168,4 @@ SetGcdMemorySpaceAttributes (
> IN UINT64 Attributes
> );
>
> -extern VIRTUAL_UNCACHED_PAGES_PROTOCOL gVirtualUncachedPages;
> -
> #endif // __CPU_DXE_ARM_EXCEPTION_H__
> diff --git a/ArmPkg/Drivers/CpuDxe/CpuDxe.inf b/ArmPkg/Drivers/CpuDxe/CpuDxe.inf
> index b31c994f43e2..d068e06803ed 100644
> --- a/ArmPkg/Drivers/CpuDxe/CpuDxe.inf
> +++ b/ArmPkg/Drivers/CpuDxe/CpuDxe.inf
> @@ -61,7 +61,6 @@ [LibraryClasses]
> [Protocols]
> gEfiCpuArchProtocolGuid
> gEfiDebugSupportPeriodicCallbackProtocolGuid
> - gVirtualUncachedPagesProtocolGuid
>
> [Guids]
> gEfiDebugImageInfoTableGuid
> diff --git a/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c b/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c
> index 54d9b0163331..ebe593d1c325 100644
> --- a/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c
> +++ b/ArmPkg/Drivers/CpuDxe/CpuMmuCommon.c
> @@ -211,73 +211,3 @@ CpuSetMemoryAttributes (
> return EFI_SUCCESS;
> }
> }
> -
> -EFI_STATUS
> -EFIAPI
> -CpuConvertPagesToUncachedVirtualAddress (
> - IN VIRTUAL_UNCACHED_PAGES_PROTOCOL *This,
> - IN EFI_PHYSICAL_ADDRESS Address,
> - IN UINTN Length,
> - IN EFI_PHYSICAL_ADDRESS VirtualMask,
> - OUT UINT64 *Attributes OPTIONAL
> - )
> -{
> - EFI_STATUS Status;
> - EFI_GCD_MEMORY_SPACE_DESCRIPTOR GcdDescriptor;
> -
> - if (Attributes != NULL) {
> - Status = gDS->GetMemorySpaceDescriptor (Address, &GcdDescriptor);
> - if (!EFI_ERROR (Status)) {
> - *Attributes = GcdDescriptor.Attributes;
> - }
> - }
> -
> - //
> - // Make this address range page fault if accessed. If it is a DMA buffer than this would
> - // be the PCI address. Code should always use the CPU address, and we will or in VirtualMask
> - // to that address.
> - //
> - Status = SetMemoryAttributes (Address, Length, EFI_MEMORY_RO, 0);
> - if (!EFI_ERROR (Status)) {
> - Status = SetMemoryAttributes (Address | VirtualMask, Length, EFI_MEMORY_UC, VirtualMask);
> - }
> -
> - DEBUG ((DEBUG_INFO | DEBUG_LOAD, "CpuConvertPagesToUncachedVirtualAddress()\n Unmapped 0x%08lx Mapped 0x%08lx 0x%x bytes\n", Address, Address | VirtualMask, Length));
> -
> - return Status;
> -}
> -
> -
> -EFI_STATUS
> -EFIAPI
> -CpuReconvertPages (
> - IN VIRTUAL_UNCACHED_PAGES_PROTOCOL *This,
> - IN EFI_PHYSICAL_ADDRESS Address,
> - IN UINTN Length,
> - IN EFI_PHYSICAL_ADDRESS VirtualMask,
> - IN UINT64 Attributes
> - )
> -{
> - EFI_STATUS Status;
> -
> - DEBUG ((DEBUG_INFO | DEBUG_LOAD, "CpuReconvertPages(%lx, %x, %lx, %lx)\n", Address, Length, VirtualMask, Attributes));
> -
> - //
> - // Unmap the aliased Address
> - //
> - Status = SetMemoryAttributes (Address | VirtualMask, Length, EFI_MEMORY_RO, 0);
> - if (!EFI_ERROR (Status)) {
> - //
> - // Restore atttributes
> - //
> - Status = SetMemoryAttributes (Address, Length, Attributes, 0);
> - }
> -
> - return Status;
> -}
> -
> -
> -VIRTUAL_UNCACHED_PAGES_PROTOCOL gVirtualUncachedPages = {
> - CpuConvertPagesToUncachedVirtualAddress,
> - CpuReconvertPages
> -};
> diff --git a/ArmPkg/Include/Protocol/VirtualUncachedPages.h b/ArmPkg/Include/Protocol/VirtualUncachedPages.h
> deleted file mode 100644
> index 0822184b8931..000000000000
> --- a/ArmPkg/Include/Protocol/VirtualUncachedPages.h
> +++ /dev/null
> @@ -1,60 +0,0 @@
> -/** @file
> -
> - Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
> -
> - This program and the accompanying materials
> - are licensed and made available under the terms and conditions of the BSD License
> - which accompanies this distribution. The full text of the license may be found at
> - http://opensource.org/licenses/bsd-license.php
> -
> - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -
> -**/
> -
> -#ifndef __VIRTUAL_UNCACHED_PAGES_ROTOCOL_H__
> -#define __VIRTUAL_UNCACHED_PAGES_ROTOCOL_H__
> -
> -//
> -// Protocol GUID
> -//
> -#define VIRTUAL_UNCACHED_PAGES_PROTOCOL_GUID { 0xAD651C7D, 0x3C22, 0x4DBF, { 0x92, 0xe8, 0x38, 0xa7, 0xcd, 0xae, 0x87, 0xb2 } }
> -
> -
> -
> -//
> -// Protocol interface structure
> -//
> -typedef struct _VIRTUAL_UNCACHED_PAGES_PROTOCOL VIRTUAL_UNCACHED_PAGES_PROTOCOL;
> -
> -
> -typedef
> -EFI_STATUS
> -(EFIAPI *CONVERT_PAGES_TO_UNCACHED_VIRTUAL_ADDRESS) (
> - IN VIRTUAL_UNCACHED_PAGES_PROTOCOL *This,
> - IN EFI_PHYSICAL_ADDRESS Address,
> - IN UINTN Length,
> - IN EFI_PHYSICAL_ADDRESS VirtualMask,
> - OUT UINT64 *Attributes OPTIONAL
> - );
> -
> -typedef
> -EFI_STATUS
> -(EFIAPI *FREE_CONVERTED_PAGES) (
> - IN VIRTUAL_UNCACHED_PAGES_PROTOCOL *This,
> - IN EFI_PHYSICAL_ADDRESS Address,
> - IN UINTN Length,
> - IN EFI_PHYSICAL_ADDRESS VirtualMask,
> - IN UINT64 Attributes
> - );
> -
> -
> -
> -struct _VIRTUAL_UNCACHED_PAGES_PROTOCOL {
> - CONVERT_PAGES_TO_UNCACHED_VIRTUAL_ADDRESS ConvertPages;
> - FREE_CONVERTED_PAGES RevertPages;
> -};
> -
> -extern EFI_GUID gVirtualUncachedPagesProtocolGuid;
> -
> -#endif
> --
> 2.7.4
>
next prev parent reply other threads:[~2017-02-23 17:50 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-23 15:48 [PATCH 1/2] ArmPkg: remove DebugUncachedMemoryAllocationLib Ard Biesheuvel
2017-02-23 15:48 ` [PATCH 2/2] ArmPkg/CpuDxe: remove VirtualUncachedPages protocol and implementation Ard Biesheuvel
2017-02-23 17:50 ` Leif Lindholm [this message]
2017-02-23 16:19 ` [PATCH 1/2] ArmPkg: remove DebugUncachedMemoryAllocationLib Laszlo Ersek
2017-02-23 17:49 ` Leif Lindholm
2017-02-23 17:58 ` 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=20170223175008.GY16034@bivouac.eciton.net \
--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