public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Leif Lindholm" <leif.lindholm@linaro.org>
To: Pete Batard <pete@akeo.ie>
Cc: devel@edk2.groups.io, ard.biesheuvel@linaro.org, philmd@redhat.com
Subject: Re: [edk2-platforms][PATCH 6/6] Platform/RPi4: Add ACPI basic mode build option
Date: Wed, 18 Dec 2019 12:10:39 +0000	[thread overview]
Message-ID: <20191218121039.GT7359@bivouac.eciton.net> (raw)
In-Reply-To: <20191218114156.9036-7-pete@akeo.ie>

On Wed, Dec 18, 2019 at 11:41:56 +0000, Pete Batard wrote:
> From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> 
> Add an ACPI_BASIC_MODE_ENABLE flag to produces builds intended to run in
> ACPI mode without any additional requirements (memory limits, acpi=force,
> etc).
> 
> This flag is disabled by default.
> 
> Signed-off-by: Pete Batard <pete@akeo.ie>

Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>

> ---
>  Platform/RaspberryPi/Library/PlatformLib/PlatformLib.inf  | 3 +++
>  Platform/RaspberryPi/Library/PlatformLib/RaspberryPiMem.c | 8 ++++++++
>  Platform/RaspberryPi/RPi4/RPi4.dsc                        | 6 ++++++
>  Platform/RaspberryPi/RPi4/RPi4.fdf                        | 3 +++
>  Platform/RaspberryPi/RPi4/Readme.md                       | 9 +++++++--
>  Platform/RaspberryPi/RaspberryPi.dec                      | 3 +++
>  6 files changed, 30 insertions(+), 2 deletions(-)
> 
> diff --git a/Platform/RaspberryPi/Library/PlatformLib/PlatformLib.inf b/Platform/RaspberryPi/Library/PlatformLib/PlatformLib.inf
> index 77cdbe399a06..9abcc2cc0075 100644
> --- a/Platform/RaspberryPi/Library/PlatformLib/PlatformLib.inf
> +++ b/Platform/RaspberryPi/Library/PlatformLib/PlatformLib.inf
> @@ -59,5 +59,8 @@ [FixedPcd]
>    gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize
>    gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize
>  
> +[FeaturePcd]
> +  gRaspberryPiTokenSpaceGuid.PcdAcpiBasicMode
> +
>  [Ppis]
>    gArmMpCoreInfoPpiGuid
> diff --git a/Platform/RaspberryPi/Library/PlatformLib/RaspberryPiMem.c b/Platform/RaspberryPi/Library/PlatformLib/RaspberryPiMem.c
> index f8223d1b94e8..4b388465cdde 100644
> --- a/Platform/RaspberryPi/Library/PlatformLib/RaspberryPiMem.c
> +++ b/Platform/RaspberryPi/Library/PlatformLib/RaspberryPiMem.c
> @@ -155,6 +155,14 @@ ArmPlatformGetVirtualMemoryMap (
>    VirtualMemoryInfo[Index].Type             = RPI_MEM_UNMAPPED_REGION;
>    VirtualMemoryInfo[Index++].Name           = L"SoC Reserved (283x)";
>  
> +  if (FeaturePcdGet (PcdAcpiBasicMode)) {
> +    //
> +    // Limit the memory to 3 GB to work around the DMA bugs in the SoC without
> +    // having to rely on IORT or _DMA descriptions.
> +    //
> +    SystemMemorySize = MIN(SystemMemorySize, 3U * SIZE_1GB);
> +  }
> +
>    // If we have RAM above the 1 GB mark, declare it
>    if (SystemMemorySize - SIZE_1GB > 0) {
>      VirtualMemoryTable[Index].PhysicalBase  = FixedPcdGet64 (PcdExtendedMemoryBase);
> diff --git a/Platform/RaspberryPi/RPi4/RPi4.dsc b/Platform/RaspberryPi/RPi4/RPi4.dsc
> index ccf5bd5b9ef3..02de104df5bf 100644
> --- a/Platform/RaspberryPi/RPi4/RPi4.dsc
> +++ b/Platform/RaspberryPi/RPi4/RPi4.dsc
> @@ -39,6 +39,7 @@ [Defines]
>    DEFINE INCLUDE_TFTP_COMMAND    = FALSE
>    DEFINE DEBUG_PRINT_ERROR_LEVEL = 0x8000004F
>    DEFINE PL011_ENABLE            = FALSE
> +  DEFINE ACPI_BASIC_MODE_ENABLE  = FALSE
>  
>  ################################################################################
>  #
> @@ -263,6 +264,8 @@ [PcdsFeatureFlag.common]
>    gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE
>    gEfiMdeModulePkgTokenSpaceGuid.PcdConOutUgaSupport|FALSE
>  
> +  gRaspberryPiTokenSpaceGuid.PcdAcpiBasicMode|$(ACPI_BASIC_MODE_ENABLE)
> +
>  [PcdsFixedAtBuild.common]
>    gEfiMdePkgTokenSpaceGuid.PcdMaximumUnicodeStringLength|1000000
>    gEfiMdePkgTokenSpaceGuid.PcdMaximumAsciiStringLength|1000000
> @@ -558,12 +561,15 @@ [Components.common]
>    MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
>    MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
>    Platform/RaspberryPi/Drivers/DisplayDxe/DisplayDxe.inf
> +  EmbeddedPkg/Drivers/ConsolePrefDxe/ConsolePrefDxe.inf
>  
>    MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
>  
>    ArmPkg/Drivers/ArmGic/ArmGicDxe.inf
>    Platform/RaspberryPi/Drivers/RpiFirmwareDxe/RpiFirmwareDxe.inf
> +!if $(ACPI_BASIC_MODE_ENABLE) == FALSE
>    Platform/RaspberryPi/Drivers/FdtDxe/FdtDxe.inf
> +!endif
>    Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxe.inf
>    ArmPkg/Drivers/TimerDxe/TimerDxe.inf
>    MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf
> diff --git a/Platform/RaspberryPi/RPi4/RPi4.fdf b/Platform/RaspberryPi/RPi4/RPi4.fdf
> index 50fe554ec9ec..2bcfdb3244f6 100644
> --- a/Platform/RaspberryPi/RPi4/RPi4.fdf
> +++ b/Platform/RaspberryPi/RPi4/RPi4.fdf
> @@ -208,10 +208,13 @@ [FV.FvMain]
>    INF MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
>    INF MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
>    INF Platform/RaspberryPi/Drivers/DisplayDxe/DisplayDxe.inf
> +  INF EmbeddedPkg/Drivers/ConsolePrefDxe/ConsolePrefDxe.inf
>  
>    INF ArmPkg/Drivers/ArmGic/ArmGicDxe.inf
>    INF Platform/RaspberryPi/Drivers/RpiFirmwareDxe/RpiFirmwareDxe.inf
> +!if $(ACPI_BASIC_MODE_ENABLE) == FALSE
>    INF Platform/RaspberryPi/Drivers/FdtDxe/FdtDxe.inf
> +!endif
>    INF Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxe.inf
>    INF ArmPkg/Drivers/TimerDxe/TimerDxe.inf
>    INF MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf
> diff --git a/Platform/RaspberryPi/RPi4/Readme.md b/Platform/RaspberryPi/RPi4/Readme.md
> index 2ef38d1b2062..83e901c57b08 100644
> --- a/Platform/RaspberryPi/RPi4/Readme.md
> +++ b/Platform/RaspberryPi/RPi4/Readme.md
> @@ -16,8 +16,9 @@ Raspberry Pi is a trademark of the [Raspberry Pi Foundation](https://www.raspber
>  This firmware is still in development stage, meaning that it comes with the
>  following __major__ limitations:
>  
> -- USB is likely to work only in pre-OS phase at this stage (nonstandard ECAM,
> -  missing ACPI tables).
> +- USB may only work in pre-OS phase at this stage due to nonstandard ECAM,
> +  missing/incomplete ACPI tables as well as other factors. For Linux, using
> +  the `ACPI_BASIC_MODE_ENABLE` build option may help.
>  - Serial I/O from the OS may not work due to CPU throttling affecting the
>    miniUART baudrate. This can be worked around by using the `PL011_ENABLE`
>    compilation option.
> @@ -27,6 +28,10 @@ following __major__ limitations:
>  Build instructions from the top level edk2-platforms Readme.md apply.
>  
>  The following additional build options are also available:
> +- `-D ACPI_BASIC_MODE_ENABLE=1`: Limits OS visible memory to 3 GB and forces
> +  ACPI (by disabling the Device Tree driver altogether). This may be required
> +  to boot Operating Systems such as Linux on account of the current PCIe/xHCI
> +  limitations.
>  - `-D PL011_ENABLE=1`: Selects PL011 for the serial console instead of the
>    miniUART (default). This doesn't change the GPIO pinout for the UART but
>    can be useful if you find that the miniUART baud rate changes when the
> diff --git a/Platform/RaspberryPi/RaspberryPi.dec b/Platform/RaspberryPi/RaspberryPi.dec
> index c7e17350544a..bc378ffbfb8d 100644
> --- a/Platform/RaspberryPi/RaspberryPi.dec
> +++ b/Platform/RaspberryPi/RaspberryPi.dec
> @@ -57,3 +57,6 @@ [PcdsFixedAtBuild, PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx]
>    gRaspberryPiTokenSpaceGuid.PcdCustomCpuClock|0|UINT32|0x00000016
>    gRaspberryPiTokenSpaceGuid.PcdDisplayEnableScaledVModes|0|UINT8|0x00000017
>    gRaspberryPiTokenSpaceGuid.PcdDisplayEnableSShot|0|UINT32|0x00000018
> +
> +[PcdsFeatureFlag.common]
> +  gRaspberryPiTokenSpaceGuid.PcdAcpiBasicMode|FALSE|BOOLEAN|0x00000019
> -- 
> 2.21.0.windows.1
> 

      reply	other threads:[~2019-12-18 12:10 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-18 11:41 [edk2-platforms][PATCH 0/6] Platform/RPi4: ACPI improvements Pete Batard
2019-12-18 11:41 ` [edk2-platforms][PATCH 1/6] Platform/RPi4: Clean up ACPI definitions Pete Batard
2019-12-18 11:41 ` [edk2-platforms][PATCH 2/6] Platform/RPi4: Improve FADT ACPI table generation Pete Batard
2019-12-18 14:46   ` Ard Biesheuvel
2019-12-18 16:31     ` Pete Batard
2019-12-18 11:41 ` [edk2-platforms][PATCH 3/6] Platform/RPi4: Improve SPCR and DBG2 " Pete Batard
2019-12-18 15:57   ` Philippe Mathieu-Daudé
2019-12-18 16:36     ` Pete Batard
2019-12-18 17:00       ` Philippe Mathieu-Daudé
2019-12-18 17:10         ` Pete Batard
2019-12-18 11:41 ` [edk2-platforms][PATCH 4/6] Platform/RPi4: Add switch to select between PL011 and miniUART Pete Batard
2019-12-18 16:05   ` Philippe Mathieu-Daudé
2019-12-18 16:59     ` [edk2-devel] " Pete Batard
2019-12-18 17:05       ` Philippe Mathieu-Daudé
2019-12-18 11:41 ` [edk2-platforms][PATCH 5/6] Platform/RPi4: Add XHCI and MCFG ACPI tables Pete Batard
2019-12-18 14:55   ` Ard Biesheuvel
2019-12-18 16:31     ` Pete Batard
2019-12-18 11:41 ` [edk2-platforms][PATCH 6/6] Platform/RPi4: Add ACPI basic mode build option Pete Batard
2019-12-18 12:10   ` Leif Lindholm [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=20191218121039.GT7359@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