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
>
prev parent 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