public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [edk2-devel][RESEND][PATCH 0/2] Resend of the 2 previous RPi patches
@ 2020-03-02 14:42 Pete Batard
  2020-03-02 14:42 ` [edk2-devel][RESEND][PATCH 1/2] Platform/RPi4: allow overriding TF-A binaries during build Pete Batard
  2020-03-02 14:42 ` [edk2-devel][RESEND][PATCH 2/2] Platform/RPi4/Library/PlatformBootManagerLib: remove dead logo code Pete Batard
  0 siblings, 2 replies; 7+ messages in thread
From: Pete Batard @ 2020-03-02 14:42 UTC (permalink / raw)
  To: devel; +Cc: ard.biesheuvel, leif, awarkentin

As requested due to mangling, this is an unmodified resend of the 2 previous patches:
* https://edk2.groups.io/g/devel/message/55159
* https://edk2.groups.io/g/devel/message/55160

Andrei Warkentin (2):
  Platform/RPi4: allow overriding TF-A binaries during build
  Platform/RPi4/Library/PlatformBootManagerLib: remove dead logo code

 Platform/RaspberryPi/Library/PlatformBootManagerLib/PlatformBm.c               | 18 ------------------
 Platform/RaspberryPi/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf |  1 -
 Platform/RaspberryPi/RPi4/RPi4.dsc                                             | 14 ++++++++++++++
 Platform/RaspberryPi/RPi4/RPi4.fdf                                             |  2 +-
 4 files changed, 15 insertions(+), 20 deletions(-)

-- 
2.21.0.windows.1


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [edk2-devel][RESEND][PATCH 1/2] Platform/RPi4: allow overriding TF-A binaries during build
  2020-03-02 14:42 [edk2-devel][RESEND][PATCH 0/2] Resend of the 2 previous RPi patches Pete Batard
@ 2020-03-02 14:42 ` Pete Batard
  2020-03-02 14:54   ` Ard Biesheuvel
  2020-03-02 14:42 ` [edk2-devel][RESEND][PATCH 2/2] Platform/RPi4/Library/PlatformBootManagerLib: remove dead logo code Pete Batard
  1 sibling, 1 reply; 7+ messages in thread
From: Pete Batard @ 2020-03-02 14:42 UTC (permalink / raw)
  To: devel; +Cc: ard.biesheuvel, leif, awarkentin

From: Andrei Warkentin <awarkentin@vmware.com>

For PFTF developers working on the firmware, being able to use a
local TF-A build without extra extra copy operations ends up being
very helpful.

This can be accomplished via a TFA_BUILD_ARTIFACTS option passed
to the edk2 build tool.

If/when the Pi 3 and 4 DSC/FDFs become unified, this will be even
more important to trivially perform a full clean upstream build
for either platform, without having to worry about different TF-A
deliverables - Pi 4 uses bl31.bin, while Pi 3 uses fip.bin and bl1.bin.

A similar Pi 3 patch to follow.

The context for this is the community Raspberry Pi 4 firmware
project (https://https://rpi4-uefi.dev, https://github.com/pftf),
which you might have heard already about from Pete Batard, who
upstreamed much of my previous Pi 3 and Pi 4 enablement patches.

Signed-off-by: Andrei Warkentin <awarkentin@vmware.com>
---
 Platform/RaspberryPi/RPi4/RPi4.dsc | 14 ++++++++++++++
 Platform/RaspberryPi/RPi4/RPi4.fdf |  2 +-
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/Platform/RaspberryPi/RPi4/RPi4.dsc b/Platform/RaspberryPi/RPi4/RPi4.dsc
index c039f6df2eb4..1d38f4ab051d 100644
--- a/Platform/RaspberryPi/RPi4/RPi4.dsc
+++ b/Platform/RaspberryPi/RPi4/RPi4.dsc
@@ -40,6 +40,20 @@ [Defines]
   DEFINE DEBUG_PRINT_ERROR_LEVEL = 0x8000004F
   DEFINE ACPI_BASIC_MODE_ENABLE  = FALSE
 
+!ifndef TFA_BUILD_ARTIFACTS
+  #
+  # Default TF-A binary checked into edk2-non-osi.
+  #
+  DEFINE TFA_BUILD_BL31 = Platform/RaspberryPi/$(PLATFORM_NAME)/TrustedFirmware/bl31_pl011.bin
+!else
+  #
+  # Usually we use the checked-in binaries, but for developers working
+  # on the firmware, being able to use a local TF-A build without extra copy
+  # operations ends up being very helpful.
+  #
+  DEFINE TFA_BUILD_BL31 = $(TFA_BUILD_ARTIFACTS)/bl31.bin
+!endif
+
 ################################################################################
 #
 # Library Class section - list of all Library Classes needed by this Platform.
diff --git a/Platform/RaspberryPi/RPi4/RPi4.fdf b/Platform/RaspberryPi/RPi4/RPi4.fdf
index b2a6ac9e6c66..8e2d6fd49a9d 100644
--- a/Platform/RaspberryPi/RPi4/RPi4.fdf
+++ b/Platform/RaspberryPi/RPi4/RPi4.fdf
@@ -51,7 +51,7 @@ [FD.RPI_EFI]
 # ATF primary boot image
 #
 0x00000000|0x00020000
-FILE = Platform/RaspberryPi/$(PLATFORM_NAME)/TrustedFirmware/bl31_pl011.bin
+FILE = $(TFA_BUILD_BL31)
 
 #
 # DTB.
-- 
2.21.0.windows.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [edk2-devel][RESEND][PATCH 2/2] Platform/RPi4/Library/PlatformBootManagerLib: remove dead logo code
  2020-03-02 14:42 [edk2-devel][RESEND][PATCH 0/2] Resend of the 2 previous RPi patches Pete Batard
  2020-03-02 14:42 ` [edk2-devel][RESEND][PATCH 1/2] Platform/RPi4: allow overriding TF-A binaries during build Pete Batard
@ 2020-03-02 14:42 ` Pete Batard
  2020-03-02 14:49   ` Ard Biesheuvel
  1 sibling, 1 reply; 7+ messages in thread
From: Pete Batard @ 2020-03-02 14:42 UTC (permalink / raw)
  To: devel; +Cc: ard.biesheuvel, leif, awarkentin

From: Andrei Warkentin <awarkentin@vmware.com>

Back in RaspberryPiPkg (before upstream Pi 3) support, I wrote
some extra code in PlatformBootManagerLib and BootGraphicsResourceTableDxe
to clear out the logo/BGRT, so that Windows would always show its own
logo instead of the platform logo. It kind of made sense back in the day,
when they only portion of Windows that "ran" on Pi 3 was the part that
could display a logo before BSODing...

The code in PlatformBootManagerLib (that this patch is removing) only
worked with the matching BootGraphicsResourceTableDxe change*** that
never got upstreamed. Moreover, Windows (for logo/cert) requires BGRT
so these kinds of shennigans aren't worth the effort.

So, remove the dead code.

***https://github.com/andreiw/RaspberryPiPkg/blob/master/edk2Patches/0003-BootGraphicsResourceTableDxe-properly-handle-SetBoot.patch

Signed-off-by: Andrei Warkentin <awarkentin@vmware.com>
---
 Platform/RaspberryPi/Library/PlatformBootManagerLib/PlatformBm.c               | 18 ------------------
 Platform/RaspberryPi/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf |  1 -
 2 files changed, 19 deletions(-)

diff --git a/Platform/RaspberryPi/Library/PlatformBootManagerLib/PlatformBm.c b/Platform/RaspberryPi/Library/PlatformBootManagerLib/PlatformBm.c
index 12c3829d28f5..996ba8f39938 100644
--- a/Platform/RaspberryPi/Library/PlatformBootManagerLib/PlatformBm.c
+++ b/Platform/RaspberryPi/Library/PlatformBootManagerLib/PlatformBm.c
@@ -25,7 +25,6 @@
 #include <Protocol/LoadedImage.h>
 #include <Guid/EventGroup.h>
 #include <Guid/TtyTerm.h>
-#include <Protocol/BootLogo.h>
 
 #include "PlatformBm.h"
 
@@ -691,7 +690,6 @@ PlatformBootManagerWaitCallback (
   EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION White;
   UINT16                              Timeout;
   EFI_STATUS                          Status;
-  EFI_BOOT_LOGO_PROTOCOL *BootLogo;
 
   Timeout = PcdGet16 (PcdPlatformBootTimeOut);
 
@@ -711,22 +709,6 @@ PlatformBootManagerWaitCallback (
   } else {
     Print (L".");
   }
-
-  if (TimeoutRemain == 0) {
-    BootLogo = NULL;
-
-    //
-    // Clear out the boot logo so that Windows displays its own logo
-    // instead of ours.
-    //
-    Status = gBS->LocateProtocol (&gEfiBootLogoProtocolGuid, NULL, (VOID**)&BootLogo);
-    if (!EFI_ERROR (Status) && (BootLogo != NULL)) {
-      Status = BootLogo->SetBootLogo (BootLogo, NULL, 0, 0, 0, 0);
-      ASSERT_EFI_ERROR (Status);
-    };
-
-    gST->ConOut->ClearScreen (gST->ConOut);
-  }
 }
 
 /**
diff --git a/Platform/RaspberryPi/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf b/Platform/RaspberryPi/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
index 79b75d667f55..e40b3f096a4f 100644
--- a/Platform/RaspberryPi/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
+++ b/Platform/RaspberryPi/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
@@ -81,4 +81,3 @@ [Protocols]
   gEfiSimpleFileSystemProtocolGuid
   gEsrtManagementProtocolGuid
   gEfiUsb2HcProtocolGuid
-  gEfiBootLogoProtocolGuid
-- 
2.21.0.windows.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [edk2-devel][RESEND][PATCH 2/2] Platform/RPi4/Library/PlatformBootManagerLib: remove dead logo code
  2020-03-02 14:42 ` [edk2-devel][RESEND][PATCH 2/2] Platform/RPi4/Library/PlatformBootManagerLib: remove dead logo code Pete Batard
@ 2020-03-02 14:49   ` Ard Biesheuvel
  0 siblings, 0 replies; 7+ messages in thread
From: Ard Biesheuvel @ 2020-03-02 14:49 UTC (permalink / raw)
  To: Pete Batard; +Cc: edk2-devel-groups-io, Leif Lindholm, Andrei Warkentin

On Mon, 2 Mar 2020 at 15:42, Pete Batard <pete@akeo.ie> wrote:
>
> From: Andrei Warkentin <awarkentin@vmware.com>
>
> Back in RaspberryPiPkg (before upstream Pi 3) support, I wrote
> some extra code in PlatformBootManagerLib and BootGraphicsResourceTableDxe
> to clear out the logo/BGRT, so that Windows would always show its own
> logo instead of the platform logo. It kind of made sense back in the day,
> when they only portion of Windows that "ran" on Pi 3 was the part that
> could display a logo before BSODing...
>
> The code in PlatformBootManagerLib (that this patch is removing) only
> worked with the matching BootGraphicsResourceTableDxe change*** that
> never got upstreamed. Moreover, Windows (for logo/cert) requires BGRT
> so these kinds of shennigans aren't worth the effort.
>
> So, remove the dead code.
>
> ***https://github.com/andreiw/RaspberryPiPkg/blob/master/edk2Patches/0003-BootGraphicsResourceTableDxe-properly-handle-SetBoot.patch
>
> Signed-off-by: Andrei Warkentin <awarkentin@vmware.com>

Thanks

Pushed as f57b439e5610..30324eefb3a4 (with Pete's ack)

> ---
>  Platform/RaspberryPi/Library/PlatformBootManagerLib/PlatformBm.c               | 18 ------------------
>  Platform/RaspberryPi/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf |  1 -
>  2 files changed, 19 deletions(-)
>
> diff --git a/Platform/RaspberryPi/Library/PlatformBootManagerLib/PlatformBm.c b/Platform/RaspberryPi/Library/PlatformBootManagerLib/PlatformBm.c
> index 12c3829d28f5..996ba8f39938 100644
> --- a/Platform/RaspberryPi/Library/PlatformBootManagerLib/PlatformBm.c
> +++ b/Platform/RaspberryPi/Library/PlatformBootManagerLib/PlatformBm.c
> @@ -25,7 +25,6 @@
>  #include <Protocol/LoadedImage.h>
>  #include <Guid/EventGroup.h>
>  #include <Guid/TtyTerm.h>
> -#include <Protocol/BootLogo.h>
>
>  #include "PlatformBm.h"
>
> @@ -691,7 +690,6 @@ PlatformBootManagerWaitCallback (
>    EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION White;
>    UINT16                              Timeout;
>    EFI_STATUS                          Status;
> -  EFI_BOOT_LOGO_PROTOCOL *BootLogo;
>
>    Timeout = PcdGet16 (PcdPlatformBootTimeOut);
>
> @@ -711,22 +709,6 @@ PlatformBootManagerWaitCallback (
>    } else {
>      Print (L".");
>    }
> -
> -  if (TimeoutRemain == 0) {
> -    BootLogo = NULL;
> -
> -    //
> -    // Clear out the boot logo so that Windows displays its own logo
> -    // instead of ours.
> -    //
> -    Status = gBS->LocateProtocol (&gEfiBootLogoProtocolGuid, NULL, (VOID**)&BootLogo);
> -    if (!EFI_ERROR (Status) && (BootLogo != NULL)) {
> -      Status = BootLogo->SetBootLogo (BootLogo, NULL, 0, 0, 0, 0);
> -      ASSERT_EFI_ERROR (Status);
> -    };
> -
> -    gST->ConOut->ClearScreen (gST->ConOut);
> -  }
>  }
>
>  /**
> diff --git a/Platform/RaspberryPi/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf b/Platform/RaspberryPi/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
> index 79b75d667f55..e40b3f096a4f 100644
> --- a/Platform/RaspberryPi/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
> +++ b/Platform/RaspberryPi/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
> @@ -81,4 +81,3 @@ [Protocols]
>    gEfiSimpleFileSystemProtocolGuid
>    gEsrtManagementProtocolGuid
>    gEfiUsb2HcProtocolGuid
> -  gEfiBootLogoProtocolGuid
> --
> 2.21.0.windows.1
>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [edk2-devel][RESEND][PATCH 1/2] Platform/RPi4: allow overriding TF-A binaries during build
  2020-03-02 14:42 ` [edk2-devel][RESEND][PATCH 1/2] Platform/RPi4: allow overriding TF-A binaries during build Pete Batard
@ 2020-03-02 14:54   ` Ard Biesheuvel
  2020-03-02 17:40     ` Andrei Warkentin
  0 siblings, 1 reply; 7+ messages in thread
From: Ard Biesheuvel @ 2020-03-02 14:54 UTC (permalink / raw)
  To: Pete Batard; +Cc: edk2-devel-groups-io, Leif Lindholm, Andrei Warkentin

On Mon, 2 Mar 2020 at 15:42, Pete Batard <pete@akeo.ie> wrote:
>
> From: Andrei Warkentin <awarkentin@vmware.com>
>
> For PFTF developers working on the firmware, being able to use a
> local TF-A build without extra extra copy operations ends up being
> very helpful.
>
> This can be accomplished via a TFA_BUILD_ARTIFACTS option passed
> to the edk2 build tool.
>
> If/when the Pi 3 and 4 DSC/FDFs become unified, this will be even
> more important to trivially perform a full clean upstream build
> for either platform, without having to worry about different TF-A
> deliverables - Pi 4 uses bl31.bin, while Pi 3 uses fip.bin and bl1.bin.
>
> A similar Pi 3 patch to follow.
>
> The context for this is the community Raspberry Pi 4 firmware
> project (https://https://rpi4-uefi.dev, https://github.com/pftf),
> which you might have heard already about from Pete Batard, who
> upstreamed much of my previous Pi 3 and Pi 4 enablement patches.
>
> Signed-off-by: Andrei Warkentin <awarkentin@vmware.com>

Do we really need this patch? For development, you can put anything
you want here. For doing releases, I'd expect edk2-platforms to be in
sync with edk2-non-osi, given that there are more blobs there than
TF-A, right?



> ---
>  Platform/RaspberryPi/RPi4/RPi4.dsc | 14 ++++++++++++++
>  Platform/RaspberryPi/RPi4/RPi4.fdf |  2 +-
>  2 files changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/Platform/RaspberryPi/RPi4/RPi4.dsc b/Platform/RaspberryPi/RPi4/RPi4.dsc
> index c039f6df2eb4..1d38f4ab051d 100644
> --- a/Platform/RaspberryPi/RPi4/RPi4.dsc
> +++ b/Platform/RaspberryPi/RPi4/RPi4.dsc
> @@ -40,6 +40,20 @@ [Defines]
>    DEFINE DEBUG_PRINT_ERROR_LEVEL = 0x8000004F
>    DEFINE ACPI_BASIC_MODE_ENABLE  = FALSE
>
> +!ifndef TFA_BUILD_ARTIFACTS
> +  #
> +  # Default TF-A binary checked into edk2-non-osi.
> +  #
> +  DEFINE TFA_BUILD_BL31 = Platform/RaspberryPi/$(PLATFORM_NAME)/TrustedFirmware/bl31_pl011.bin
> +!else
> +  #
> +  # Usually we use the checked-in binaries, but for developers working
> +  # on the firmware, being able to use a local TF-A build without extra copy
> +  # operations ends up being very helpful.
> +  #
> +  DEFINE TFA_BUILD_BL31 = $(TFA_BUILD_ARTIFACTS)/bl31.bin
> +!endif
> +
>  ################################################################################
>  #
>  # Library Class section - list of all Library Classes needed by this Platform.
> diff --git a/Platform/RaspberryPi/RPi4/RPi4.fdf b/Platform/RaspberryPi/RPi4/RPi4.fdf
> index b2a6ac9e6c66..8e2d6fd49a9d 100644
> --- a/Platform/RaspberryPi/RPi4/RPi4.fdf
> +++ b/Platform/RaspberryPi/RPi4/RPi4.fdf
> @@ -51,7 +51,7 @@ [FD.RPI_EFI]
>  # ATF primary boot image
>  #
>  0x00000000|0x00020000
> -FILE = Platform/RaspberryPi/$(PLATFORM_NAME)/TrustedFirmware/bl31_pl011.bin
> +FILE = $(TFA_BUILD_BL31)
>
>  #
>  # DTB.
> --
> 2.21.0.windows.1
>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [edk2-devel][RESEND][PATCH 1/2] Platform/RPi4: allow overriding TF-A binaries during build
  2020-03-02 14:54   ` Ard Biesheuvel
@ 2020-03-02 17:40     ` Andrei Warkentin
  2020-03-02 18:13       ` Ard Biesheuvel
  0 siblings, 1 reply; 7+ messages in thread
From: Andrei Warkentin @ 2020-03-02 17:40 UTC (permalink / raw)
  To: Ard Biesheuvel, Pete Batard; +Cc: edk2-devel-groups-io, Leif Lindholm

Hi Ard,

> Do we really need this patch? For development, you can put anything
> you want here. For doing releases, I'd expect edk2-platforms to be in
> sync with edk2-non-osi, given that there are more blobs there than
> TF-A, right?

This is a developer productivity improvement that I've found to be useful and it has no impact on others for the default case of building code for release.

Sure, you can copy things around and stage/unstage files, but I like automating my work and I tend to track the upstream TF-A (for regressions, rpi4-uefi.dev work),
so being able to quickly generate builds both with internal and external TF-A and without extra hoopla has been key. The time I avoid dealing with dirty trees is time I can spend elsewhere else making Pi 4 implementation better.

There aren't really any other blobs that matter for Pi 4...The embedded DTB is going to go away as part of fixing the regression seen with  https://github.com/pftf/RPi4/issues/17 (on the Pi 4 you can't really boot anyway without passing a DTB in config.txt).

A

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [edk2-devel][RESEND][PATCH 1/2] Platform/RPi4: allow overriding TF-A binaries during build
  2020-03-02 17:40     ` Andrei Warkentin
@ 2020-03-02 18:13       ` Ard Biesheuvel
  0 siblings, 0 replies; 7+ messages in thread
From: Ard Biesheuvel @ 2020-03-02 18:13 UTC (permalink / raw)
  To: Andrei Warkentin; +Cc: Pete Batard, edk2-devel-groups-io, Leif Lindholm

On Mon, 2 Mar 2020 at 18:40, Andrei Warkentin <awarkentin@vmware.com> wrote:
>
> Hi Ard,
>
> > Do we really need this patch? For development, you can put anything
> > you want here. For doing releases, I'd expect edk2-platforms to be in
> > sync with edk2-non-osi, given that there are more blobs there than
> > TF-A, right?
>
> This is a developer productivity improvement that I've found to be useful and it has no impact on others for the default case of building code for release.
>
> Sure, you can copy things around and stage/unstage files, but I like automating my work and I tend to track the upstream TF-A (for regressions, rpi4-uefi.dev work),
> so being able to quickly generate builds both with internal and external TF-A and without extra hoopla has been key. The time I avoid dealing with dirty trees is time I can spend elsewhere else making Pi 4 implementation better.
>
> There aren't really any other blobs that matter for Pi 4...The embedded DTB is going to go away as part of fixing the regression seen with  https://github.com/pftf/RPi4/issues/17 (on the Pi 4 you can't really boot anyway without passing a DTB in config.txt).
>

Fair enough. I still don't quite see the point, but I don't really mind either.

Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>

Pushed as 30324eefb3a4..07cc442f7212

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2020-03-02 18:13 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-03-02 14:42 [edk2-devel][RESEND][PATCH 0/2] Resend of the 2 previous RPi patches Pete Batard
2020-03-02 14:42 ` [edk2-devel][RESEND][PATCH 1/2] Platform/RPi4: allow overriding TF-A binaries during build Pete Batard
2020-03-02 14:54   ` Ard Biesheuvel
2020-03-02 17:40     ` Andrei Warkentin
2020-03-02 18:13       ` Ard Biesheuvel
2020-03-02 14:42 ` [edk2-devel][RESEND][PATCH 2/2] Platform/RPi4/Library/PlatformBootManagerLib: remove dead logo code Pete Batard
2020-03-02 14:49   ` Ard Biesheuvel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox