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

eb7fe6
From d4564d39dfdbf74e762af43314005a2c026cb262 Mon Sep 17 00:00:00 2001
eb7fe6
From: Laszlo Ersek <lersek@redhat.com>
eb7fe6
Date: Sun, 26 Jul 2015 08:02:50 +0000
eb7fe6
Subject: ArmVirtPkg: take PcdResizeXterm from the QEMU command line (RH only)
eb7fe6
eb7fe6
Notes about the 20160608b-988715a -> 20170228-c325e41585e3 rebase:
eb7fe6
eb7fe6
- Adapt commit 6b97969096a3 to the fact that upstream has deprecated such
eb7fe6
  setter functions for dynamic PCDs that don't return a status code (such
eb7fe6
  as PcdSetBool()). Employ PcdSetBoolS(), and assert that it succeeds --
eb7fe6
  there's really no circumstance in this case when it could fail.
eb7fe6
eb7fe6
Contributed-under: TianoCore Contribution Agreement 1.0
eb7fe6
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
eb7fe6
---
eb7fe6
 ArmVirtPkg/ArmVirtQemu.dsc                         |  7 +-
eb7fe6
 .../TerminalPcdProducerLib.c                       | 87 ++++++++++++++++++++++
eb7fe6
 .../TerminalPcdProducerLib.inf                     | 41 ++++++++++
eb7fe6
 3 files changed, 134 insertions(+), 1 deletion(-)
eb7fe6
 create mode 100644 ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.c
eb7fe6
 create mode 100644 ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.inf
eb7fe6
eb7fe6
diff --git a/ArmVirtPkg/ArmVirtQemu.dsc b/ArmVirtPkg/ArmVirtQemu.dsc
eb7fe6
index 186ae1d..12070d9 100644
eb7fe6
--- a/ArmVirtPkg/ArmVirtQemu.dsc
eb7fe6
+++ b/ArmVirtPkg/ArmVirtQemu.dsc
eb7fe6
@@ -218,6 +218,8 @@
eb7fe6
   gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosDocRev|0x0
eb7fe6
   gUefiOvmfPkgTokenSpaceGuid.PcdQemuSmbiosValidated|FALSE
eb7fe6
 
eb7fe6
+  gEfiMdeModulePkgTokenSpaceGuid.PcdResizeXterm|FALSE
eb7fe6
+
eb7fe6
 ################################################################################
eb7fe6
 #
eb7fe6
 # Components Section - list of all EDK II Modules needed by this Platform
eb7fe6
@@ -287,7 +289,10 @@
eb7fe6
   MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
eb7fe6
   MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
eb7fe6
   MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
eb7fe6
-  MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
eb7fe6
+  MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf {
eb7fe6
+    <LibraryClasses>
eb7fe6
+      NULL|ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.inf
eb7fe6
+  }
eb7fe6
   MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
eb7fe6
 
eb7fe6
   MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
eb7fe6
diff --git a/ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.c b/ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.c
eb7fe6
new file mode 100644
eb7fe6
index 0000000..814ad48
eb7fe6
--- /dev/null
eb7fe6
+++ b/ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.c
eb7fe6
@@ -0,0 +1,87 @@
eb7fe6
+/** @file
eb7fe6
+*  Plugin library for setting up dynamic PCDs for TerminalDxe, from fw_cfg
eb7fe6
+*
eb7fe6
+*  Copyright (C) 2015-2016, Red Hat, Inc.
eb7fe6
+*  Copyright (c) 2014, Linaro Ltd. All rights reserved.
eb7fe6
+*
eb7fe6
+*  This program and the accompanying materials are licensed and made available
eb7fe6
+*  under the terms and conditions of the BSD License which accompanies this
eb7fe6
+*  distribution.  The full text of the license may be found at
eb7fe6
+*  http://opensource.org/licenses/bsd-license.php
eb7fe6
+*
eb7fe6
+*  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
eb7fe6
+*  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR
eb7fe6
+*  IMPLIED.
eb7fe6
+*
eb7fe6
+**/
eb7fe6
+
eb7fe6
+#include <Library/DebugLib.h>
eb7fe6
+#include <Library/PcdLib.h>
eb7fe6
+#include <Library/QemuFwCfgLib.h>
eb7fe6
+
eb7fe6
+STATIC
eb7fe6
+RETURN_STATUS
eb7fe6
+GetNamedFwCfgBoolean (
eb7fe6
+  IN  CONST CHAR8 *FwCfgFileName,
eb7fe6
+  OUT BOOLEAN     *Setting
eb7fe6
+  )
eb7fe6
+{
eb7fe6
+  RETURN_STATUS        Status;
eb7fe6
+  FIRMWARE_CONFIG_ITEM FwCfgItem;
eb7fe6
+  UINTN                FwCfgSize;
eb7fe6
+  UINT8                Value[3];
eb7fe6
+
eb7fe6
+  Status = QemuFwCfgFindFile (FwCfgFileName, &FwCfgItem, &FwCfgSize);
eb7fe6
+  if (RETURN_ERROR (Status)) {
eb7fe6
+    return Status;
eb7fe6
+  }
eb7fe6
+  if (FwCfgSize > sizeof Value) {
eb7fe6
+    return RETURN_BAD_BUFFER_SIZE;
eb7fe6
+  }
eb7fe6
+  QemuFwCfgSelectItem (FwCfgItem);
eb7fe6
+  QemuFwCfgReadBytes (FwCfgSize, Value);
eb7fe6
+
eb7fe6
+  if ((FwCfgSize == 1) ||
eb7fe6
+      (FwCfgSize == 2 && Value[1] == '\n') ||
eb7fe6
+      (FwCfgSize == 3 && Value[1] == '\r' && Value[2] == '\n')) {
eb7fe6
+    switch (Value[0]) {
eb7fe6
+      case '0':
eb7fe6
+      case 'n':
eb7fe6
+      case 'N':
eb7fe6
+        *Setting = FALSE;
eb7fe6
+        return RETURN_SUCCESS;
eb7fe6
+
eb7fe6
+      case '1':
eb7fe6
+      case 'y':
eb7fe6
+      case 'Y':
eb7fe6
+        *Setting = TRUE;
eb7fe6
+        return RETURN_SUCCESS;
eb7fe6
+
eb7fe6
+      default:
eb7fe6
+        break;
eb7fe6
+    }
eb7fe6
+  }
eb7fe6
+  return RETURN_PROTOCOL_ERROR;
eb7fe6
+}
eb7fe6
+
eb7fe6
+#define UPDATE_BOOLEAN_PCD_FROM_FW_CFG(TokenName)                             \
eb7fe6
+          do {                                                                \
eb7fe6
+            BOOLEAN       Setting;                                            \
eb7fe6
+            RETURN_STATUS PcdStatus;                                          \
eb7fe6
+                                                                              \
eb7fe6
+            if (!RETURN_ERROR (GetNamedFwCfgBoolean (                         \
eb7fe6
+                    "opt/org.tianocore.edk2.aavmf/" #TokenName, &Setting))) { \
eb7fe6
+              PcdStatus = PcdSetBoolS (TokenName, Setting);                   \
eb7fe6
+              ASSERT_RETURN_ERROR (PcdStatus);                                \
eb7fe6
+            }                                                                 \
eb7fe6
+          } while (0)
eb7fe6
+
eb7fe6
+RETURN_STATUS
eb7fe6
+EFIAPI
eb7fe6
+TerminalPcdProducerLibConstructor (
eb7fe6
+  VOID
eb7fe6
+  )
eb7fe6
+{
eb7fe6
+  UPDATE_BOOLEAN_PCD_FROM_FW_CFG (PcdResizeXterm);
eb7fe6
+  return RETURN_SUCCESS;
eb7fe6
+}
eb7fe6
diff --git a/ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.inf b/ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.inf
eb7fe6
new file mode 100644
eb7fe6
index 0000000..fecb37b
eb7fe6
--- /dev/null
eb7fe6
+++ b/ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.inf
eb7fe6
@@ -0,0 +1,41 @@
eb7fe6
+## @file
eb7fe6
+#  Plugin library for setting up dynamic PCDs for TerminalDxe, from fw_cfg
eb7fe6
+#
eb7fe6
+#  Copyright (C) 2015-2016, Red Hat, Inc.
eb7fe6
+#  Copyright (c) 2014, Linaro Ltd. All rights reserved.
eb7fe6
+#
eb7fe6
+#  This program and the accompanying materials are licensed and made available
eb7fe6
+#  under the terms and conditions of the BSD License which accompanies this
eb7fe6
+#  distribution.  The full text of the license may be found at
eb7fe6
+#  http://opensource.org/licenses/bsd-license.php
eb7fe6
+#
eb7fe6
+#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
eb7fe6
+#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR
eb7fe6
+#  IMPLIED.
eb7fe6
+#
eb7fe6
+##
eb7fe6
+
eb7fe6
+[Defines]
eb7fe6
+  INF_VERSION                    = 0x00010005
eb7fe6
+  BASE_NAME                      = TerminalPcdProducerLib
eb7fe6
+  FILE_GUID                      = 4a0c5ed7-8c42-4c01-8f4c-7bf258316a96
eb7fe6
+  MODULE_TYPE                    = BASE
eb7fe6
+  VERSION_STRING                 = 1.0
eb7fe6
+  LIBRARY_CLASS                  = TerminalPcdProducerLib|DXE_DRIVER
eb7fe6
+  CONSTRUCTOR                    = TerminalPcdProducerLibConstructor
eb7fe6
+
eb7fe6
+[Sources]
eb7fe6
+  TerminalPcdProducerLib.c
eb7fe6
+
eb7fe6
+[Packages]
eb7fe6
+  MdePkg/MdePkg.dec
eb7fe6
+  OvmfPkg/OvmfPkg.dec
eb7fe6
+  MdeModulePkg/MdeModulePkg.dec
eb7fe6
+
eb7fe6
+[LibraryClasses]
eb7fe6
+  DebugLib
eb7fe6
+  PcdLib
eb7fe6
+  QemuFwCfgLib
eb7fe6
+
eb7fe6
+[Pcd]
eb7fe6
+  gEfiMdeModulePkgTokenSpaceGuid.PcdResizeXterm
eb7fe6
-- 
eb7fe6
1.8.3.1
eb7fe6