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

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