Blame SOURCES/0013-ArmVirtPkg-take-PcdResizeXterm-from-the-QEMU-command.patch

1dc609
From 8338545260fbb423f796d5196faaaf8ff6e1ed99 Mon Sep 17 00:00:00 2001
7fdf80
From: Laszlo Ersek <lersek@redhat.com>
7fdf80
Date: Sun, 26 Jul 2015 08:02:50 +0000
7fdf80
Subject: ArmVirtPkg: take PcdResizeXterm from the QEMU command line (RH only)
7fdf80
1dc609
Notes about the RHEL-8.1/20190308-89910a39dcfd [edk2-stable201903] ->
1dc609
RHEL-8.2/20190904-37eef91017ad [edk2-stable201908] rebase:
1dc609
1dc609
- no change
1dc609
7fdf80
Notes about the RHEL-8.0/20180508-ee3198e672e2 ->
7fdf80
RHEL-8.1/20190308-89910a39dcfd rebase:
7fdf80
7fdf80
- no change
7fdf80
7fdf80
Notes about the RHEL-7.6/ovmf-20180508-2.gitee3198e672e2.el7 ->
7fdf80
RHEL-8.0/20180508-ee3198e672e2 rebase:
7fdf80
7fdf80
- reorder the rebase changelog in the commit message so that it reads like
7fdf80
  a blog: place more recent entries near the top
7fdf80
- no changes to the patch body
7fdf80
7fdf80
Notes about the 20171011-92d07e48907f -> 20180508-ee3198e672e2 rebase:
7fdf80
7fdf80
- no change
7fdf80
7fdf80
Notes about the 20170228-c325e41585e3 -> 20171011-92d07e48907f rebase:
7fdf80
7fdf80
- Refresh downstream-only commit d4564d39dfdb against context changes in
7fdf80
  "ArmVirtPkg/ArmVirtQemu.dsc" from upstream commit 7e5f1b673870
7fdf80
  ("ArmVirtPkg/PlatformHasAcpiDtDxe: allow guest level ACPI disable
7fdf80
  override", 2017-03-29).
7fdf80
7fdf80
Notes about the 20160608b-988715a -> 20170228-c325e41585e3 rebase:
7fdf80
7fdf80
- Adapt commit 6b97969096a3 to the fact that upstream has deprecated such
7fdf80
  setter functions for dynamic PCDs that don't return a status code (such
7fdf80
  as PcdSetBool()). Employ PcdSetBoolS(), and assert that it succeeds --
7fdf80
  there's really no circumstance in this case when it could fail.
7fdf80
7fdf80
Contributed-under: TianoCore Contribution Agreement 1.0
7fdf80
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
7fdf80
(cherry picked from commit d4564d39dfdbf74e762af43314005a2c026cb262)
7fdf80
(cherry picked from commit c9081ebe3bcd28e5cce4bf58bd8d4fca12f9af7c)
7fdf80
(cherry picked from commit 8e92730c8e1cdb642b3b3e680e643ff774a90c65)
7fdf80
(cherry picked from commit 9448b6b46267d8d807fac0c648e693171bb34806)
1dc609
(cherry picked from commit 232fcf06f6b3048b7c2ebd6931f23186b3852f04)
7fdf80
---
7fdf80
 ArmVirtPkg/ArmVirtQemu.dsc                    |  7 +-
7fdf80
 .../TerminalPcdProducerLib.c                  | 87 +++++++++++++++++++
7fdf80
 .../TerminalPcdProducerLib.inf                | 41 +++++++++
7fdf80
 3 files changed, 134 insertions(+), 1 deletion(-)
7fdf80
 create mode 100644 ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.c
7fdf80
 create mode 100644 ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.inf
7fdf80
7fdf80
diff --git a/ArmVirtPkg/ArmVirtQemu.dsc b/ArmVirtPkg/ArmVirtQemu.dsc
1dc609
index a3cc3f26ec..696b0b5bcd 100644
7fdf80
--- a/ArmVirtPkg/ArmVirtQemu.dsc
7fdf80
+++ b/ArmVirtPkg/ArmVirtQemu.dsc
1dc609
@@ -237,6 +237,8 @@
7fdf80
   gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosDocRev|0x0
7fdf80
   gUefiOvmfPkgTokenSpaceGuid.PcdQemuSmbiosValidated|FALSE
7fdf80
 
7fdf80
+  gEfiMdeModulePkgTokenSpaceGuid.PcdResizeXterm|FALSE
7fdf80
+
7fdf80
 [PcdsDynamicHii]
7fdf80
   gArmVirtTokenSpaceGuid.PcdForceNoAcpi|L"ForceNoAcpi"|gArmVirtVariableGuid|0x0|FALSE|NV,BS
7fdf80
 
1dc609
@@ -314,7 +316,10 @@
7fdf80
   MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
7fdf80
   MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
7fdf80
   MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
7fdf80
-  MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
7fdf80
+  MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf {
7fdf80
+    <LibraryClasses>
7fdf80
+      NULL|ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.inf
7fdf80
+  }
7fdf80
   MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
7fdf80
 
7fdf80
   MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
7fdf80
diff --git a/ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.c b/ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.c
7fdf80
new file mode 100644
7fdf80
index 0000000000..814ad48199
7fdf80
--- /dev/null
7fdf80
+++ b/ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.c
7fdf80
@@ -0,0 +1,87 @@
7fdf80
+/** @file
7fdf80
+*  Plugin library for setting up dynamic PCDs for TerminalDxe, from fw_cfg
7fdf80
+*
7fdf80
+*  Copyright (C) 2015-2016, Red Hat, Inc.
7fdf80
+*  Copyright (c) 2014, Linaro Ltd. All rights reserved.
7fdf80
+*
7fdf80
+*  This program and the accompanying materials are licensed and made available
7fdf80
+*  under the terms and conditions of the BSD License which accompanies this
7fdf80
+*  distribution.  The full text of the license may be found at
7fdf80
+*  http://opensource.org/licenses/bsd-license.php
7fdf80
+*
7fdf80
+*  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
7fdf80
+*  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR
7fdf80
+*  IMPLIED.
7fdf80
+*
7fdf80
+**/
7fdf80
+
7fdf80
+#include <Library/DebugLib.h>
7fdf80
+#include <Library/PcdLib.h>
7fdf80
+#include <Library/QemuFwCfgLib.h>
7fdf80
+
7fdf80
+STATIC
7fdf80
+RETURN_STATUS
7fdf80
+GetNamedFwCfgBoolean (
7fdf80
+  IN  CONST CHAR8 *FwCfgFileName,
7fdf80
+  OUT BOOLEAN     *Setting
7fdf80
+  )
7fdf80
+{
7fdf80
+  RETURN_STATUS        Status;
7fdf80
+  FIRMWARE_CONFIG_ITEM FwCfgItem;
7fdf80
+  UINTN                FwCfgSize;
7fdf80
+  UINT8                Value[3];
7fdf80
+
7fdf80
+  Status = QemuFwCfgFindFile (FwCfgFileName, &FwCfgItem, &FwCfgSize);
7fdf80
+  if (RETURN_ERROR (Status)) {
7fdf80
+    return Status;
7fdf80
+  }
7fdf80
+  if (FwCfgSize > sizeof Value) {
7fdf80
+    return RETURN_BAD_BUFFER_SIZE;
7fdf80
+  }
7fdf80
+  QemuFwCfgSelectItem (FwCfgItem);
7fdf80
+  QemuFwCfgReadBytes (FwCfgSize, Value);
7fdf80
+
7fdf80
+  if ((FwCfgSize == 1) ||
7fdf80
+      (FwCfgSize == 2 && Value[1] == '\n') ||
7fdf80
+      (FwCfgSize == 3 && Value[1] == '\r' && Value[2] == '\n')) {
7fdf80
+    switch (Value[0]) {
7fdf80
+      case '0':
7fdf80
+      case 'n':
7fdf80
+      case 'N':
7fdf80
+        *Setting = FALSE;
7fdf80
+        return RETURN_SUCCESS;
7fdf80
+
7fdf80
+      case '1':
7fdf80
+      case 'y':
7fdf80
+      case 'Y':
7fdf80
+        *Setting = TRUE;
7fdf80
+        return RETURN_SUCCESS;
7fdf80
+
7fdf80
+      default:
7fdf80
+        break;
7fdf80
+    }
7fdf80
+  }
7fdf80
+  return RETURN_PROTOCOL_ERROR;
7fdf80
+}
7fdf80
+
7fdf80
+#define UPDATE_BOOLEAN_PCD_FROM_FW_CFG(TokenName)                             \
7fdf80
+          do {                                                                \
7fdf80
+            BOOLEAN       Setting;                                            \
7fdf80
+            RETURN_STATUS PcdStatus;                                          \
7fdf80
+                                                                              \
7fdf80
+            if (!RETURN_ERROR (GetNamedFwCfgBoolean (                         \
7fdf80
+                    "opt/org.tianocore.edk2.aavmf/" #TokenName, &Setting))) { \
7fdf80
+              PcdStatus = PcdSetBoolS (TokenName, Setting);                   \
7fdf80
+              ASSERT_RETURN_ERROR (PcdStatus);                                \
7fdf80
+            }                                                                 \
7fdf80
+          } while (0)
7fdf80
+
7fdf80
+RETURN_STATUS
7fdf80
+EFIAPI
7fdf80
+TerminalPcdProducerLibConstructor (
7fdf80
+  VOID
7fdf80
+  )
7fdf80
+{
7fdf80
+  UPDATE_BOOLEAN_PCD_FROM_FW_CFG (PcdResizeXterm);
7fdf80
+  return RETURN_SUCCESS;
7fdf80
+}
7fdf80
diff --git a/ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.inf b/ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.inf
7fdf80
new file mode 100644
7fdf80
index 0000000000..fecb37bcdf
7fdf80
--- /dev/null
7fdf80
+++ b/ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.inf
7fdf80
@@ -0,0 +1,41 @@
7fdf80
+## @file
7fdf80
+#  Plugin library for setting up dynamic PCDs for TerminalDxe, from fw_cfg
7fdf80
+#
7fdf80
+#  Copyright (C) 2015-2016, Red Hat, Inc.
7fdf80
+#  Copyright (c) 2014, Linaro Ltd. All rights reserved.
7fdf80
+#
7fdf80
+#  This program and the accompanying materials are licensed and made available
7fdf80
+#  under the terms and conditions of the BSD License which accompanies this
7fdf80
+#  distribution.  The full text of the license may be found at
7fdf80
+#  http://opensource.org/licenses/bsd-license.php
7fdf80
+#
7fdf80
+#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
7fdf80
+#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR
7fdf80
+#  IMPLIED.
7fdf80
+#
7fdf80
+##
7fdf80
+
7fdf80
+[Defines]
7fdf80
+  INF_VERSION                    = 0x00010005
7fdf80
+  BASE_NAME                      = TerminalPcdProducerLib
7fdf80
+  FILE_GUID                      = 4a0c5ed7-8c42-4c01-8f4c-7bf258316a96
7fdf80
+  MODULE_TYPE                    = BASE
7fdf80
+  VERSION_STRING                 = 1.0
7fdf80
+  LIBRARY_CLASS                  = TerminalPcdProducerLib|DXE_DRIVER
7fdf80
+  CONSTRUCTOR                    = TerminalPcdProducerLibConstructor
7fdf80
+
7fdf80
+[Sources]
7fdf80
+  TerminalPcdProducerLib.c
7fdf80
+
7fdf80
+[Packages]
7fdf80
+  MdePkg/MdePkg.dec
7fdf80
+  OvmfPkg/OvmfPkg.dec
7fdf80
+  MdeModulePkg/MdeModulePkg.dec
7fdf80
+
7fdf80
+[LibraryClasses]
7fdf80
+  DebugLib
7fdf80
+  PcdLib
7fdf80
+  QemuFwCfgLib
7fdf80
+
7fdf80
+[Pcd]
7fdf80
+  gEfiMdeModulePkgTokenSpaceGuid.PcdResizeXterm
7fdf80
-- 
7fdf80
2.18.1
7fdf80