Blame SOURCES/0015-OvmfPkg-allow-exclusion-of-the-shell-from-the-firmwa.patch

75d8e7
From ed122866ad1a15f29e0ba570ddb9309917cb0370 Mon Sep 17 00:00:00 2001
c4e3b2
From: Laszlo Ersek <lersek@redhat.com>
c4e3b2
Date: Tue, 4 Nov 2014 23:02:53 +0100
c4e3b2
Subject: OvmfPkg: allow exclusion of the shell from the firmware image (RH
c4e3b2
 only)
c4e3b2
c4e3b2
Notes about the RHEL-8.3/20200603-ca407c7246bf [edk2-stable202005] ->
c4e3b2
RHEL-8.5/20210520-e1999b264f1f [edk2-stable202105] rebase:
c4e3b2
c4e3b2
- No manual / explicit code change is necessary, because the newly
c4e3b2
  inherited OvmfPkg/AmdSev platform already has its own BUILD_SHELL
c4e3b2
  build-time macro (feature test flag), with default value FALSE -- from
c4e3b2
  upstream commit b261a30c900a ("OvmfPkg/AmdSev: add Grub Firmware Volume
c4e3b2
  Package", 2020-12-14).
c4e3b2
c4e3b2
- Contextual differences from new upstream commits 2d8ca4f90eae ("OvmfPkg:
c4e3b2
  enable HttpDynamicCommand", 2020-10-01) and 5ab6a0e1c8e9 ("OvmfPkg:
c4e3b2
  introduce VirtioFsDxe", 2020-12-21) have been auto-resolved by
c4e3b2
  git-cherry-pick.
c4e3b2
c4e3b2
- Remove obsolete commit message tags related to downstream patch
c4e3b2
  management: Message-id, Patchwork-id, O-Subject, Acked-by
c4e3b2
  (RHBZ#1846481).
c4e3b2
c4e3b2
Notes about the RHEL-8.2/20190904-37eef91017ad [edk2-stable201908] ->
c4e3b2
RHEL-8.3/20200603-ca407c7246bf [edk2-stable202005] rebase:
c4e3b2
c4e3b2
- context difference from upstream commit ec41733cfd10 ("OvmfPkg: add the
c4e3b2
  'initrd' dynamic shell command", 2020-03-04) correctly auto-resolved
c4e3b2
c4e3b2
Notes about the RHEL-8.1/20190308-89910a39dcfd [edk2-stable201903] ->
c4e3b2
RHEL-8.2/20190904-37eef91017ad [edk2-stable201908] rebase:
c4e3b2
c4e3b2
- no change
c4e3b2
c4e3b2
Notes about the RHEL-8.0/20180508-ee3198e672e2 ->
c4e3b2
RHEL-8.1/20190308-89910a39dcfd rebase:
c4e3b2
c4e3b2
- update the patch against the following upstream commits:
c4e3b2
  - 4b888334d234 ("OvmfPkg: Remove EdkShellBinPkg in FDF", 2018-11-19)
c4e3b2
  - 277a3958d93a ("OvmfPkg: Don't include TftpDynamicCommand in XCODE5
c4e3b2
                  tool chain", 2018-11-27)
c4e3b2
c4e3b2
Notes about the RHEL-7.6/ovmf-20180508-2.gitee3198e672e2.el7 ->
c4e3b2
RHEL-8.0/20180508-ee3198e672e2 rebase:
c4e3b2
c4e3b2
- reorder the rebase changelog in the commit message so that it reads like
c4e3b2
  a blog: place more recent entries near the top
c4e3b2
- no changes to the patch body
c4e3b2
c4e3b2
Notes about the 20171011-92d07e48907f -> 20180508-ee3198e672e2 rebase:
c4e3b2
c4e3b2
- no change
c4e3b2
c4e3b2
Notes about the 20170228-c325e41585e3 -> 20171011-92d07e48907f rebase:
c4e3b2
c4e3b2
- no changes
c4e3b2
c4e3b2
Notes about the 20160608b-988715a -> 20170228-c325e41585e3 rebase:
c4e3b2
c4e3b2
- no changes
c4e3b2
c4e3b2
Bugzilla: 1147592
c4e3b2
c4e3b2
When '-D EXCLUDE_SHELL_FROM_FD' is passed to 'build', exclude the shell
c4e3b2
binary from the firmware image.
c4e3b2
c4e3b2
Peter Jones advised us that firmware vendors for physical systems disable
c4e3b2
the memory-mapped, firmware image-contained UEFI shell in
c4e3b2
SecureBoot-enabled builds. The reason being that the memory-mapped shell
c4e3b2
can always load, it may have direct access to various hardware in the
c4e3b2
system, and it can run UEFI shell scripts (which cannot be signed at all).
c4e3b2
c4e3b2
Intended use of the new build option:
c4e3b2
c4e3b2
- In-tree builds: don't pass '-D EXCLUDE_SHELL_FROM_FD'. The resultant
c4e3b2
  firmware image will contain a shell binary, independently of SecureBoot
c4e3b2
  enablement, which is flexible for interactive development. (Ie. no
c4e3b2
  change for in-tree builds.)
c4e3b2
c4e3b2
- RPM builds: pass both '-D SECURE_BOOT_ENABLE' and
c4e3b2
  '-D EXCLUDE_SHELL_FROM_FD'. The resultant RPM will provide:
c4e3b2
c4e3b2
  - OVMF_CODE.fd: SecureBoot-enabled firmware, without builtin UEFI shell,
c4e3b2
c4e3b2
  - OVMF_VARS.fd: variable store template matching OVMF_CODE.fd,
c4e3b2
c4e3b2
  - UefiShell.iso: a bootable ISO image with the shell on it as default
c4e3b2
    boot loader. The shell binary will load when SecureBoot is turned off,
c4e3b2
    and won't load when SecureBoot is turned on (because it is not
c4e3b2
    signed).
c4e3b2
c4e3b2
    UefiShell.iso is the reason we're not excluding the shell from the DSC
c4e3b2
    files as well, only the FDF files -- when '-D EXCLUDE_SHELL_FROM_FD'
c4e3b2
    is specified, the shell binary needs to be built the same, only it
c4e3b2
    will be included in UefiShell.iso.
c4e3b2
c4e3b2
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
c4e3b2
(cherry picked from commit 9c391def70366cabae08e6008814299c3372fafd)
c4e3b2
(cherry picked from commit d9dd9ee42937b2611fe37183cc9ec7f62d946933)
c4e3b2
(cherry picked from commit 23df46ebbe7b09451d3a05034acd4d3a25e7177b)
c4e3b2
(cherry picked from commit f0303f71d576c51b01c4ff961b429d0e0e707245)
c4e3b2
(cherry picked from commit bbd64eb8658e9a33eab4227d9f4e51ad78d9f687)
c4e3b2
(cherry picked from commit 8628ef1b8d675ebec39d83834abbe3c8c8c42cf4)
c4e3b2
(cherry picked from commit 229c88dc3ded9baeaca8b87767dc5c41c05afd6e)
c4e3b2
(cherry picked from commit c2812d7189dee06c780f05a5880eb421c359a687)
c4e3b2
---
c4e3b2
 OvmfPkg/OvmfPkgIa32.fdf    | 2 ++
c4e3b2
 OvmfPkg/OvmfPkgIa32X64.fdf | 2 ++
c4e3b2
 OvmfPkg/OvmfPkgX64.fdf     | 2 ++
c4e3b2
 3 files changed, 6 insertions(+)
c4e3b2
c4e3b2
diff --git a/OvmfPkg/OvmfPkgIa32.fdf b/OvmfPkg/OvmfPkgIa32.fdf
75d8e7
index 775ea2d710..00ea14adf0 100644
c4e3b2
--- a/OvmfPkg/OvmfPkgIa32.fdf
c4e3b2
+++ b/OvmfPkg/OvmfPkgIa32.fdf
75d8e7
@@ -290,12 +290,14 @@ INF  FatPkg/EnhancedFatDxe/Fat.inf
c4e3b2
 INF  MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf
c4e3b2
 INF  OvmfPkg/VirtioFsDxe/VirtioFsDxe.inf
c4e3b2
 
c4e3b2
+!ifndef $(EXCLUDE_SHELL_FROM_FD)
c4e3b2
 !if $(TOOL_CHAIN_TAG) != "XCODE5"
c4e3b2
 INF  ShellPkg/DynamicCommand/TftpDynamicCommand/TftpDynamicCommand.inf
c4e3b2
 INF  ShellPkg/DynamicCommand/HttpDynamicCommand/HttpDynamicCommand.inf
c4e3b2
 INF  OvmfPkg/LinuxInitrdDynamicShellCommand/LinuxInitrdDynamicShellCommand.inf
c4e3b2
 !endif
c4e3b2
 INF  ShellPkg/Application/Shell/Shell.inf
c4e3b2
+!endif
c4e3b2
 
75d8e7
 INF MdeModulePkg/Logo/LogoDxe.inf
c4e3b2
 
c4e3b2
diff --git a/OvmfPkg/OvmfPkgIa32X64.fdf b/OvmfPkg/OvmfPkgIa32X64.fdf
75d8e7
index 9d8695922f..e33a40c44e 100644
c4e3b2
--- a/OvmfPkg/OvmfPkgIa32X64.fdf
c4e3b2
+++ b/OvmfPkg/OvmfPkgIa32X64.fdf
c4e3b2
@@ -294,12 +294,14 @@ INF  FatPkg/EnhancedFatDxe/Fat.inf
c4e3b2
 INF  MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf
c4e3b2
 INF  OvmfPkg/VirtioFsDxe/VirtioFsDxe.inf
c4e3b2
 
c4e3b2
+!ifndef $(EXCLUDE_SHELL_FROM_FD)
c4e3b2
 !if $(TOOL_CHAIN_TAG) != "XCODE5"
c4e3b2
 INF  ShellPkg/DynamicCommand/TftpDynamicCommand/TftpDynamicCommand.inf
c4e3b2
 INF  ShellPkg/DynamicCommand/HttpDynamicCommand/HttpDynamicCommand.inf
c4e3b2
 INF  OvmfPkg/LinuxInitrdDynamicShellCommand/LinuxInitrdDynamicShellCommand.inf
c4e3b2
 !endif
c4e3b2
 INF  ShellPkg/Application/Shell/Shell.inf
c4e3b2
+!endif
c4e3b2
 
75d8e7
 INF MdeModulePkg/Logo/LogoDxe.inf
c4e3b2
 
c4e3b2
diff --git a/OvmfPkg/OvmfPkgX64.fdf b/OvmfPkg/OvmfPkgX64.fdf
75d8e7
index b6cc3cabdd..85b4b23857 100644
c4e3b2
--- a/OvmfPkg/OvmfPkgX64.fdf
c4e3b2
+++ b/OvmfPkg/OvmfPkgX64.fdf
75d8e7
@@ -310,12 +310,14 @@ INF  FatPkg/EnhancedFatDxe/Fat.inf
c4e3b2
 INF  MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf
c4e3b2
 INF  OvmfPkg/VirtioFsDxe/VirtioFsDxe.inf
c4e3b2
 
c4e3b2
+!ifndef $(EXCLUDE_SHELL_FROM_FD)
c4e3b2
 !if $(TOOL_CHAIN_TAG) != "XCODE5"
c4e3b2
 INF  ShellPkg/DynamicCommand/TftpDynamicCommand/TftpDynamicCommand.inf
c4e3b2
 INF  ShellPkg/DynamicCommand/HttpDynamicCommand/HttpDynamicCommand.inf
c4e3b2
 INF  OvmfPkg/LinuxInitrdDynamicShellCommand/LinuxInitrdDynamicShellCommand.inf
c4e3b2
 !endif
c4e3b2
 INF  ShellPkg/Application/Shell/Shell.inf
c4e3b2
+!endif
c4e3b2
 
75d8e7
 INF MdeModulePkg/Logo/LogoDxe.inf
c4e3b2
 
c4e3b2
-- 
c4e3b2
2.27.0
c4e3b2