public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [[edk2-devel] PATH v1 0/3] Enable support for terminal resize
@ 2022-08-23  1:02 Paweł Poławski
  2022-08-23  1:02 ` [[edk2-devel] PATH v1 1/3] MdeModulePkg: TerminalDxe: set xterm resolution on mode change Paweł Poławski
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Paweł Poławski @ 2022-08-23  1:02 UTC (permalink / raw)
  To: devel
  Cc: Ard Biesheuvel, Leif Lindholm, Sami Mujawar, Jiewen Yao,
	Jordan Justen, Gerd Hoffmann, Jian J Wang, Liming Gao

This is re-submission of original patches written by Laszlo Ersek.
When mode will be changed in the EFI - xterm resolution will
change too. Tested with xterm, Gnome terminal and XFCE4 terminal.

Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
Cc: Leif Lindholm <quic_llindhol@quicinc.com>
Cc: Sami Mujawar <sami.mujawar@arm.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>

Laszlo Ersek (3):
  MdeModulePkg: TerminalDxe: set xterm resolution on mode change
  OvmfPkg: take PcdResizeXterm from the QEMU command line
  ArmVirtPkg: take PcdResizeXterm from the QEMU command line

 MdeModulePkg/MdeModulePkg.dec                                        |  4 +++
 ArmVirtPkg/ArmVirtQemu.dsc                                           |  7 +++-
 OvmfPkg/AmdSev/AmdSevX64.dsc                                         |  1 +
 OvmfPkg/CloudHv/CloudHvX64.dsc                                       |  1 +
 OvmfPkg/IntelTdx/IntelTdxX64.dsc                                     |  1 +
 OvmfPkg/Microvm/MicrovmX64.dsc                                       |  2 +-
 OvmfPkg/OvmfPkgIa32.dsc                                              |  1 +
 OvmfPkg/OvmfPkgIa32X64.dsc                                           |  1 +
 OvmfPkg/OvmfPkgX64.dsc                                               |  1 +
 ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.inf | 33 +++++++++++++++++++
 MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf           |  2 ++
 OvmfPkg/PlatformPei/PlatformPei.inf                                  |  1 +
 ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.c   | 34 ++++++++++++++++++++
 MdeModulePkg/Universal/Console/TerminalDxe/TerminalConOut.c          | 30 +++++++++++++++++
 OvmfPkg/PlatformPei/Platform.c                                       | 13 ++++++++
 15 files changed, 130 insertions(+), 2 deletions(-)
 create mode 100644 ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.inf
 create mode 100644 ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.c

-- 
2.37.2


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

* [[edk2-devel] PATH v1 1/3] MdeModulePkg: TerminalDxe: set xterm resolution on mode change
  2022-08-23  1:02 [[edk2-devel] PATH v1 0/3] Enable support for terminal resize Paweł Poławski
@ 2022-08-23  1:02 ` Paweł Poławski
  2022-08-25  9:27   ` Gerd Hoffmann
  2022-08-23  1:02 ` [[edk2-devel] PATH v1 2/3] OvmfPkg: take PcdResizeXterm from the QEMU command line Paweł Poławski
  2022-08-23  1:02 ` [[edk2-devel] PATH v1 3/3] ArmVirtPkg: " Paweł Poławski
  2 siblings, 1 reply; 7+ messages in thread
From: Paweł Poławski @ 2022-08-23  1:02 UTC (permalink / raw)
  To: devel; +Cc: Jian J Wang, Liming Gao

From: Laszlo Ersek <lersek@redhat.com>

Reference: <http://rtfm.etla.org/xterm/ctlseq.html>
Signed-off-by: Laszlo Ersek <lersek@redhat.com>

Pawel: Updated commit message for re-submission

Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>

Signed-off-by: Paweł Poławski <ppolawsk@redhat.com>
---
 MdeModulePkg/MdeModulePkg.dec                               |  4 +++
 MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf  |  2 ++
 MdeModulePkg/Universal/Console/TerminalDxe/TerminalConOut.c | 30 ++++++++++++++++++++
 3 files changed, 36 insertions(+)

diff --git a/MdeModulePkg/MdeModulePkg.dec b/MdeModulePkg/MdeModulePkg.dec
index 7d989108324a..45d793f3fddc 100644
--- a/MdeModulePkg/MdeModulePkg.dec
+++ b/MdeModulePkg/MdeModulePkg.dec
@@ -2098,6 +2098,10 @@
   # @Prompt The shared bit mask when Intel Tdx is enabled.
   gEfiMdeModulePkgTokenSpaceGuid.PcdTdxSharedBitMask|0x0|UINT64|0x10000025
 
+  ## Controls whether TerminalDxe outputs an XTerm resize sequence on terminal
+  #  mode change.
+  gEfiMdeModulePkgTokenSpaceGuid.PcdResizeXterm|FALSE|BOOLEAN|0x00010080
+
 [PcdsPatchableInModule]
   ## Specify memory size with page number for PEI code when
   #  Loading Module at Fixed Address feature is enabled.
diff --git a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
index b2a8aeba8510..eff625346539 100644
--- a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
+++ b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
@@ -55,6 +55,7 @@
   DebugLib
   PcdLib
   BaseLib
+  PrintLib
 
 [Guids]
   ## SOMETIMES_PRODUCES ## Variable:L"ConInDev"
@@ -87,6 +88,7 @@
 [Pcd]
   gEfiMdePkgTokenSpaceGuid.PcdDefaultTerminalType           ## SOMETIMES_CONSUMES
   gEfiMdeModulePkgTokenSpaceGuid.PcdErrorCodeSetVariable    ## CONSUMES
+  gEfiMdeModulePkgTokenSpaceGuid.PcdResizeXterm             ## CONSUMES
 
 # [Event]
 # # Relative timer event set by UnicodeToEfiKey(), used to be one 2 seconds input timeout.
diff --git a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConOut.c b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConOut.c
index 7809869e7d49..0ce931d6442b 100644
--- a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConOut.c
+++ b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConOut.c
@@ -7,6 +7,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
+#include <Library/PrintLib.h>
+
 #include "Terminal.h"
 
 //
@@ -80,6 +82,16 @@ CHAR16  mSetCursorPositionString[] = { ESC, '[', '0', '0', ';', '0', '0', 'H', 0
 CHAR16  mCursorForwardString[]     = { ESC, '[', '0', '0', 'C', 0 };
 CHAR16  mCursorBackwardString[]    = { ESC, '[', '0', '0', 'D', 0 };
 
+//
+// Note that this is an ASCII format string, taking two INT32 arguments:
+// rows, columns.
+//
+// A %d (INT32) format specification can expand to at most 11 characters.
+//
+CHAR8 mResizeTextAreaFormatString[] = "\x1B[8;%d;%dt";
+#define RESIZE_SEQ_SIZE (sizeof mResizeTextAreaFormatString + 2 * (11 - 2))
+
+
 //
 // Body of the ConOut functions
 //
@@ -498,6 +510,24 @@ TerminalConOutSetMode (
     return EFI_DEVICE_ERROR;
   }
 
+  if (PcdGetBool (PcdResizeXterm)) {
+    CHAR16 ResizeSequence[RESIZE_SEQ_SIZE];
+
+    UnicodeSPrintAsciiFormat (
+      ResizeSequence,
+      sizeof ResizeSequence,
+      mResizeTextAreaFormatString,
+      (INT32) TerminalDevice->TerminalConsoleModeData[ModeNumber].Rows,
+      (INT32) TerminalDevice->TerminalConsoleModeData[ModeNumber].Columns
+      );
+    TerminalDevice->OutputEscChar = TRUE;
+    Status                        = This->OutputString (This, ResizeSequence);
+    TerminalDevice->OutputEscChar = FALSE;
+    if (EFI_ERROR (Status)) {
+      return EFI_DEVICE_ERROR;
+    }
+  }
+
   This->Mode->Mode = (INT32)ModeNumber;
 
   Status = This->ClearScreen (This);
-- 
2.37.2


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

* [[edk2-devel] PATH v1 2/3] OvmfPkg: take PcdResizeXterm from the QEMU command line
  2022-08-23  1:02 [[edk2-devel] PATH v1 0/3] Enable support for terminal resize Paweł Poławski
  2022-08-23  1:02 ` [[edk2-devel] PATH v1 1/3] MdeModulePkg: TerminalDxe: set xterm resolution on mode change Paweł Poławski
@ 2022-08-23  1:02 ` Paweł Poławski
  2022-09-05 11:58   ` Ard Biesheuvel
  2022-08-23  1:02 ` [[edk2-devel] PATH v1 3/3] ArmVirtPkg: " Paweł Poławski
  2 siblings, 1 reply; 7+ messages in thread
From: Paweł Poławski @ 2022-08-23  1:02 UTC (permalink / raw)
  To: devel; +Cc: Ard Biesheuvel, Jiewen Yao, Jordan Justen, Gerd Hoffmann

From: Laszlo Ersek <lersek@redhat.com>

Signed-off-by: Laszlo Ersek <lersek@redhat.com>

Pawel: Updated commit message for re-submission

Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>

Signed-off-by: Paweł Poławski <ppolawsk@redhat.com>
---
 OvmfPkg/AmdSev/AmdSevX64.dsc        |  1 +
 OvmfPkg/CloudHv/CloudHvX64.dsc      |  1 +
 OvmfPkg/IntelTdx/IntelTdxX64.dsc    |  1 +
 OvmfPkg/Microvm/MicrovmX64.dsc      |  2 +-
 OvmfPkg/OvmfPkgIa32.dsc             |  1 +
 OvmfPkg/OvmfPkgIa32X64.dsc          |  1 +
 OvmfPkg/OvmfPkgX64.dsc              |  1 +
 OvmfPkg/PlatformPei/PlatformPei.inf |  1 +
 OvmfPkg/PlatformPei/Platform.c      | 13 +++++++++++++
 9 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/OvmfPkg/AmdSev/AmdSevX64.dsc b/OvmfPkg/AmdSev/AmdSevX64.dsc
index 90e8a213ef77..20f9f0fd2424 100644
--- a/OvmfPkg/AmdSev/AmdSevX64.dsc
+++ b/OvmfPkg/AmdSev/AmdSevX64.dsc
@@ -475,6 +475,7 @@
 [PcdsDynamicDefault]
   gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0
 
+  gEfiMdeModulePkgTokenSpaceGuid.PcdResizeXterm|FALSE
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64|0
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64|0
diff --git a/OvmfPkg/CloudHv/CloudHvX64.dsc b/OvmfPkg/CloudHv/CloudHvX64.dsc
index f0d700f14477..bac05b72f2da 100644
--- a/OvmfPkg/CloudHv/CloudHvX64.dsc
+++ b/OvmfPkg/CloudHv/CloudHvX64.dsc
@@ -573,6 +573,7 @@
   #   ($(SMM_REQUIRE) == FALSE)
   gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0
 
+  gEfiMdeModulePkgTokenSpaceGuid.PcdResizeXterm|FALSE
 !if $(SMM_REQUIRE) == FALSE
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64|0
diff --git a/OvmfPkg/IntelTdx/IntelTdxX64.dsc b/OvmfPkg/IntelTdx/IntelTdxX64.dsc
index 71b1cf8e7090..f6945f6598b6 100644
--- a/OvmfPkg/IntelTdx/IntelTdxX64.dsc
+++ b/OvmfPkg/IntelTdx/IntelTdxX64.dsc
@@ -464,6 +464,7 @@
   #   ($(SMM_REQUIRE) == FALSE)
   gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0
 
+  gEfiMdeModulePkgTokenSpaceGuid.PcdResizeXterm|FALSE
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64|0
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64|0
diff --git a/OvmfPkg/Microvm/MicrovmX64.dsc b/OvmfPkg/Microvm/MicrovmX64.dsc
index 52498bbe90a8..89c3dfce98ba 100644
--- a/OvmfPkg/Microvm/MicrovmX64.dsc
+++ b/OvmfPkg/Microvm/MicrovmX64.dsc
@@ -562,7 +562,7 @@
   # only set when
   #   ($(SMM_REQUIRE) == FALSE)
   gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0
-
+  gEfiMdeModulePkgTokenSpaceGuid.PcdResizeXterm|FALSE
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64|0
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64|0
diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc
index 725a01ae9a20..22ea7e109c21 100644
--- a/OvmfPkg/OvmfPkgIa32.dsc
+++ b/OvmfPkg/OvmfPkgIa32.dsc
@@ -584,6 +584,7 @@
   #   ($(SMM_REQUIRE) == FALSE)
   gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0
 
+  gEfiMdeModulePkgTokenSpaceGuid.PcdResizeXterm|FALSE
 !if $(SMM_REQUIRE) == FALSE
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64|0
diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc
index adc813ba2e1e..3d832080f3b9 100644
--- a/OvmfPkg/OvmfPkgIa32X64.dsc
+++ b/OvmfPkg/OvmfPkgIa32X64.dsc
@@ -592,6 +592,7 @@
   #   ($(SMM_REQUIRE) == FALSE)
   gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0
 
+  gEfiMdeModulePkgTokenSpaceGuid.PcdResizeXterm|FALSE
 !if $(SMM_REQUIRE) == FALSE
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64|0
diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc
index 6e68f60dc90f..16cfa4c362cb 100644
--- a/OvmfPkg/OvmfPkgX64.dsc
+++ b/OvmfPkg/OvmfPkgX64.dsc
@@ -611,6 +611,7 @@
   #   ($(SMM_REQUIRE) == FALSE)
   gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0
 
+  gEfiMdeModulePkgTokenSpaceGuid.PcdResizeXterm|FALSE
 !if $(SMM_REQUIRE) == FALSE
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64|0
diff --git a/OvmfPkg/PlatformPei/PlatformPei.inf b/OvmfPkg/PlatformPei/PlatformPei.inf
index 3cd83e6ec3e5..47adfd0fbb90 100644
--- a/OvmfPkg/PlatformPei/PlatformPei.inf
+++ b/OvmfPkg/PlatformPei/PlatformPei.inf
@@ -99,6 +99,7 @@
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize
   gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved
+  gEfiMdeModulePkgTokenSpaceGuid.PcdResizeXterm
   gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode
   gEfiMdeModulePkgTokenSpaceGuid.PcdUse1GPageTable
   gEfiMdeModulePkgTokenSpaceGuid.PcdSetNxForStack
diff --git a/OvmfPkg/PlatformPei/Platform.c b/OvmfPkg/PlatformPei/Platform.c
index 009db67ee60a..83d40b8a51f5 100644
--- a/OvmfPkg/PlatformPei/Platform.c
+++ b/OvmfPkg/PlatformPei/Platform.c
@@ -41,6 +41,18 @@
 
 #include "Platform.h"
 
+#define UPDATE_BOOLEAN_PCD_FROM_FW_CFG(TokenName)                   \
+          do {                                                      \
+            BOOLEAN       Setting;                                  \
+            RETURN_STATUS PcdStatus;                                \
+                                                                    \
+            if (!RETURN_ERROR (QemuFwCfgParseBool (                 \
+                              "opt/ovmf/" #TokenName, &Setting))) { \
+              PcdStatus = PcdSetBoolS (TokenName, Setting);         \
+              ASSERT_RETURN_ERROR (PcdStatus);                      \
+            }                                                       \
+          } while (0)
+
 EFI_HOB_PLATFORM_INFO  mPlatformInfoHob = { 0 };
 
 EFI_PEI_PPI_DESCRIPTOR  mPpiBootMode[] = {
@@ -387,6 +399,7 @@ InitializePlatform (
     MemTypeInfoInitialization ();
     MemMapInitialization (&mPlatformInfoHob);
     NoexecDxeInitialization ();
+    UPDATE_BOOLEAN_PCD_FROM_FW_CFG (PcdResizeXterm);
   }
 
   InstallClearCacheCallback ();
-- 
2.37.2


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

* [[edk2-devel] PATH v1 3/3] ArmVirtPkg: take PcdResizeXterm from the QEMU command line
  2022-08-23  1:02 [[edk2-devel] PATH v1 0/3] Enable support for terminal resize Paweł Poławski
  2022-08-23  1:02 ` [[edk2-devel] PATH v1 1/3] MdeModulePkg: TerminalDxe: set xterm resolution on mode change Paweł Poławski
  2022-08-23  1:02 ` [[edk2-devel] PATH v1 2/3] OvmfPkg: take PcdResizeXterm from the QEMU command line Paweł Poławski
@ 2022-08-23  1:02 ` Paweł Poławski
  2022-08-25  9:43   ` Gerd Hoffmann
  2 siblings, 1 reply; 7+ messages in thread
From: Paweł Poławski @ 2022-08-23  1:02 UTC (permalink / raw)
  To: devel; +Cc: Ard Biesheuvel, Leif Lindholm, Sami Mujawar, Gerd Hoffmann

From: Laszlo Ersek <lersek@redhat.com>

Signed-off-by: Laszlo Ersek <lersek@redhat.com>

Pawel: Updated commit message for re-submission

Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
Cc: Leif Lindholm <quic_llindhol@quicinc.com>
Cc: Sami Mujawar <sami.mujawar@arm.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>

Signed-off-by: Paweł Poławski <ppolawsk@redhat.com>
---
 ArmVirtPkg/ArmVirtQemu.dsc                                           |  7 +++-
 ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.inf | 33 +++++++++++++++++++
 ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.c   | 34 ++++++++++++++++++++
 3 files changed, 73 insertions(+), 1 deletion(-)

diff --git a/ArmVirtPkg/ArmVirtQemu.dsc b/ArmVirtPkg/ArmVirtQemu.dsc
index 9369a88858fd..7ed8870474d3 100644
--- a/ArmVirtPkg/ArmVirtQemu.dsc
+++ b/ArmVirtPkg/ArmVirtQemu.dsc
@@ -285,6 +285,8 @@
   gEfiSecurityPkgTokenSpaceGuid.PcdTpm2HashMask|0
 !endif
 
+  gEfiMdeModulePkgTokenSpaceGuid.PcdResizeXterm|FALSE
+
 [PcdsDynamicHii]
   gArmVirtTokenSpaceGuid.PcdForceNoAcpi|L"ForceNoAcpi"|gArmVirtVariableGuid|0x0|FALSE|NV,BS
 
@@ -387,7 +389,10 @@
   MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
   MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
   MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
-  MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
+  MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf {
+    <LibraryClasses>
+      NULL|ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.inf
+  }
   MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
 
   MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
diff --git a/ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.inf b/ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.inf
new file mode 100644
index 000000000000..a51dbd1670a8
--- /dev/null
+++ b/ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.inf
@@ -0,0 +1,33 @@
+## @file
+#  Plugin library for setting up dynamic PCDs for TerminalDxe, from fw_cfg
+#
+#  Copyright (C) 2015-2020, Red Hat, Inc.
+#  Copyright (c) 2014, Linaro Ltd. All rights reserved.<BR>
+#
+#  SPDX-License-Identifier: BSD-2-Clause-Patent
+##
+
+[Defines]
+  INF_VERSION                    = 0x00010005
+  BASE_NAME                      = TerminalPcdProducerLib
+  FILE_GUID                      = 4a0c5ed7-8c42-4c01-8f4c-7bf258316a96
+  MODULE_TYPE                    = BASE
+  VERSION_STRING                 = 1.0
+  LIBRARY_CLASS                  = NULL
+  CONSTRUCTOR                    = TerminalPcdProducerLibConstructor
+
+[Sources]
+  TerminalPcdProducerLib.c
+
+[Packages]
+  MdeModulePkg/MdeModulePkg.dec
+  MdePkg/MdePkg.dec
+  OvmfPkg/OvmfPkg.dec
+
+[LibraryClasses]
+  DebugLib
+  PcdLib
+  QemuFwCfgSimpleParserLib
+
+[Pcd]
+  gEfiMdeModulePkgTokenSpaceGuid.PcdResizeXterm ## SOMETIMES_PRODUCES
diff --git a/ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.c b/ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.c
new file mode 100644
index 000000000000..bfd3a6a535f9
--- /dev/null
+++ b/ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.c
@@ -0,0 +1,34 @@
+/** @file
+*  Plugin library for setting up dynamic PCDs for TerminalDxe, from fw_cfg
+*
+*  Copyright (C) 2015-2020, Red Hat, Inc.
+*  Copyright (c) 2014, Linaro Ltd. All rights reserved.<BR>
+*
+*  SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#include <Library/DebugLib.h>
+#include <Library/PcdLib.h>
+#include <Library/QemuFwCfgSimpleParserLib.h>
+
+#define UPDATE_BOOLEAN_PCD_FROM_FW_CFG(TokenName)                             \
+          do {                                                                \
+            BOOLEAN       Setting;                                            \
+            RETURN_STATUS PcdStatus;                                          \
+                                                                              \
+            if (!RETURN_ERROR (QemuFwCfgParseBool (                           \
+                    "opt/org.tianocore.edk2.aavmf/" #TokenName, &Setting))) { \
+              PcdStatus = PcdSetBoolS (TokenName, Setting);                   \
+              ASSERT_RETURN_ERROR (PcdStatus);                                \
+            }                                                                 \
+          } while (0)
+
+RETURN_STATUS
+EFIAPI
+TerminalPcdProducerLibConstructor (
+  VOID
+  )
+{
+  UPDATE_BOOLEAN_PCD_FROM_FW_CFG (PcdResizeXterm);
+  return RETURN_SUCCESS;
+}
-- 
2.37.2


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

* Re: [[edk2-devel] PATH v1 1/3] MdeModulePkg: TerminalDxe: set xterm resolution on mode change
  2022-08-23  1:02 ` [[edk2-devel] PATH v1 1/3] MdeModulePkg: TerminalDxe: set xterm resolution on mode change Paweł Poławski
@ 2022-08-25  9:27   ` Gerd Hoffmann
  0 siblings, 0 replies; 7+ messages in thread
From: Gerd Hoffmann @ 2022-08-25  9:27 UTC (permalink / raw)
  To: devel, ppolawsk; +Cc: Jian J Wang, Liming Gao

On Tue, Aug 23, 2022 at 03:02:37AM +0200, Paweł Poławski wrote:
> From: Laszlo Ersek <lersek@redhat.com>
> 
> Reference: <http://rtfm.etla.org/xterm/ctlseq.html>
> Signed-off-by: Laszlo Ersek <lersek@redhat.com>
> 
> Pawel: Updated commit message for re-submission
> 
> Cc: Jian J Wang <jian.j.wang@intel.com>
> Cc: Liming Gao <gaoliming@byosoft.com.cn>
> 
> Signed-off-by: Paweł Poławski <ppolawsk@redhat.com>
> ---
>  MdeModulePkg/MdeModulePkg.dec                               |  4 +++
>  MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf  |  2 ++
>  MdeModulePkg/Universal/Console/TerminalDxe/TerminalConOut.c | 30 ++++++++++++++++++++
>  3 files changed, 36 insertions(+)
> 
> diff --git a/MdeModulePkg/MdeModulePkg.dec b/MdeModulePkg/MdeModulePkg.dec
> index 7d989108324a..45d793f3fddc 100644
> --- a/MdeModulePkg/MdeModulePkg.dec
> +++ b/MdeModulePkg/MdeModulePkg.dec
> @@ -2098,6 +2098,10 @@
>    # @Prompt The shared bit mask when Intel Tdx is enabled.
> 
>    gEfiMdeModulePkgTokenSpaceGuid.PcdTdxSharedBitMask|0x0|UINT64|0x10000025
> 
>  
> 
> +  ## Controls whether TerminalDxe outputs an XTerm resize sequence on terminal
> 
> +  #  mode change.

Hmm, patch formating looks broken.
Did you run BaseTools/Scripts/SetupGit.py?

Otherwise the patch looks good to me.

Acked-by: Gerd Hoffmann <kraxel@redhat.com>

take care,
  Gerd


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

* Re: [[edk2-devel] PATH v1 3/3] ArmVirtPkg: take PcdResizeXterm from the QEMU command line
  2022-08-23  1:02 ` [[edk2-devel] PATH v1 3/3] ArmVirtPkg: " Paweł Poławski
@ 2022-08-25  9:43   ` Gerd Hoffmann
  0 siblings, 0 replies; 7+ messages in thread
From: Gerd Hoffmann @ 2022-08-25  9:43 UTC (permalink / raw)
  To: Paweł Poławski
  Cc: devel, Ard Biesheuvel, Leif Lindholm, Sami Mujawar

> --- /dev/null
> +++ b/ArmVirtPkg/Library/TerminalPcdProducerLib/TerminalPcdProducerLib.c
> @@ -0,0 +1,34 @@
> +/** @file
> +*  Plugin library for setting up dynamic PCDs for TerminalDxe, from fw_cfg
> +*
> +*  Copyright (C) 2015-2020, Red Hat, Inc.
> +*  Copyright (c) 2014, Linaro Ltd. All rights reserved.<BR>
> +*
> +*  SPDX-License-Identifier: BSD-2-Clause-Patent
> +**/
> +
> +#include <Library/DebugLib.h>
> +#include <Library/PcdLib.h>
> +#include <Library/QemuFwCfgSimpleParserLib.h>
> +
> +#define UPDATE_BOOLEAN_PCD_FROM_FW_CFG(TokenName)                             \
> +          do {                                                                \
> +            BOOLEAN       Setting;                                            \
> +            RETURN_STATUS PcdStatus;                                          \
> +                                                                              \
> +            if (!RETURN_ERROR (QemuFwCfgParseBool (                           \
> +                    "opt/org.tianocore.edk2.aavmf/" #TokenName, &Setting))) { \
> +              PcdStatus = PcdSetBoolS (TokenName, Setting);                   \
> +              ASSERT_RETURN_ERROR (PcdStatus);                                \
> +            }                                                                 \
> +          } while (0)
> +
> +RETURN_STATUS
> +EFIAPI
> +TerminalPcdProducerLibConstructor (
> +  VOID
> +  )
> +{
> +  UPDATE_BOOLEAN_PCD_FROM_FW_CFG (PcdResizeXterm);
> +  return RETURN_SUCCESS;
> +}

Oh, we have two variants of that code, with different fw_cfg file names
even.

I think we should:

  (1) Move this library to OvmfPkg.
  (2) Change the fw_cfg name to be consistent with other cases we have
      in the edk2 source tree (see OvmfPkg/Library/PxeBcPcdProducerLib),
      i.e.  read from 'opt/org.tianocore/ResizeXterm'.
  (3) Use the library for both OvmfPkg and ArmVirtPkg instead of having
      OVMF set the PCD in platform init code.

take care,
  Gerd


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

* Re: [[edk2-devel] PATH v1 2/3] OvmfPkg: take PcdResizeXterm from the QEMU command line
  2022-08-23  1:02 ` [[edk2-devel] PATH v1 2/3] OvmfPkg: take PcdResizeXterm from the QEMU command line Paweł Poławski
@ 2022-09-05 11:58   ` Ard Biesheuvel
  0 siblings, 0 replies; 7+ messages in thread
From: Ard Biesheuvel @ 2022-09-05 11:58 UTC (permalink / raw)
  To: Paweł Poławski
  Cc: devel, Ard Biesheuvel, Jiewen Yao, Jordan Justen, Gerd Hoffmann

On Tue, 23 Aug 2022 at 03:03, Paweł Poławski <ppolawsk@redhat.com> wrote:
>
> From: Laszlo Ersek <lersek@redhat.com>
>

<--- insert explanatory text here --->


> Signed-off-by: Laszlo Ersek <lersek@redhat.com>
>
> Pawel: Updated commit message for re-submission
>
> Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
> Cc: Jiewen Yao <jiewen.yao@intel.com>
> Cc: Jordan Justen <jordan.l.justen@intel.com>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
>
> Signed-off-by: Paweł Poławski <ppolawsk@redhat.com>
> ---
>  OvmfPkg/AmdSev/AmdSevX64.dsc        |  1 +
>  OvmfPkg/CloudHv/CloudHvX64.dsc      |  1 +
>  OvmfPkg/IntelTdx/IntelTdxX64.dsc    |  1 +
>  OvmfPkg/Microvm/MicrovmX64.dsc      |  2 +-
>  OvmfPkg/OvmfPkgIa32.dsc             |  1 +
>  OvmfPkg/OvmfPkgIa32X64.dsc          |  1 +
>  OvmfPkg/OvmfPkgX64.dsc              |  1 +
>  OvmfPkg/PlatformPei/PlatformPei.inf |  1 +
>  OvmfPkg/PlatformPei/Platform.c      | 13 +++++++++++++
>  9 files changed, 21 insertions(+), 1 deletion(-)
>
> diff --git a/OvmfPkg/AmdSev/AmdSevX64.dsc b/OvmfPkg/AmdSev/AmdSevX64.dsc
> index 90e8a213ef77..20f9f0fd2424 100644
> --- a/OvmfPkg/AmdSev/AmdSevX64.dsc
> +++ b/OvmfPkg/AmdSev/AmdSevX64.dsc
> @@ -475,6 +475,7 @@
>  [PcdsDynamicDefault]
>    gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0
>
> +  gEfiMdeModulePkgTokenSpaceGuid.PcdResizeXterm|FALSE
>    gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0
>    gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64|0
>    gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64|0
> diff --git a/OvmfPkg/CloudHv/CloudHvX64.dsc b/OvmfPkg/CloudHv/CloudHvX64.dsc
> index f0d700f14477..bac05b72f2da 100644
> --- a/OvmfPkg/CloudHv/CloudHvX64.dsc
> +++ b/OvmfPkg/CloudHv/CloudHvX64.dsc
> @@ -573,6 +573,7 @@
>    #   ($(SMM_REQUIRE) == FALSE)
>    gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0
>
> +  gEfiMdeModulePkgTokenSpaceGuid.PcdResizeXterm|FALSE
>  !if $(SMM_REQUIRE) == FALSE
>    gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0
>    gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64|0
> diff --git a/OvmfPkg/IntelTdx/IntelTdxX64.dsc b/OvmfPkg/IntelTdx/IntelTdxX64.dsc
> index 71b1cf8e7090..f6945f6598b6 100644
> --- a/OvmfPkg/IntelTdx/IntelTdxX64.dsc
> +++ b/OvmfPkg/IntelTdx/IntelTdxX64.dsc
> @@ -464,6 +464,7 @@
>    #   ($(SMM_REQUIRE) == FALSE)
>    gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0
>
> +  gEfiMdeModulePkgTokenSpaceGuid.PcdResizeXterm|FALSE
>    gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0
>    gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64|0
>    gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64|0
> diff --git a/OvmfPkg/Microvm/MicrovmX64.dsc b/OvmfPkg/Microvm/MicrovmX64.dsc
> index 52498bbe90a8..89c3dfce98ba 100644
> --- a/OvmfPkg/Microvm/MicrovmX64.dsc
> +++ b/OvmfPkg/Microvm/MicrovmX64.dsc
> @@ -562,7 +562,7 @@
>    # only set when
>    #   ($(SMM_REQUIRE) == FALSE)
>    gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0
> -
> +  gEfiMdeModulePkgTokenSpaceGuid.PcdResizeXterm|FALSE
>    gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0
>    gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64|0
>    gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64|0
> diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc
> index 725a01ae9a20..22ea7e109c21 100644
> --- a/OvmfPkg/OvmfPkgIa32.dsc
> +++ b/OvmfPkg/OvmfPkgIa32.dsc
> @@ -584,6 +584,7 @@
>    #   ($(SMM_REQUIRE) == FALSE)
>    gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0
>
> +  gEfiMdeModulePkgTokenSpaceGuid.PcdResizeXterm|FALSE
>  !if $(SMM_REQUIRE) == FALSE
>    gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0
>    gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64|0
> diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc
> index adc813ba2e1e..3d832080f3b9 100644
> --- a/OvmfPkg/OvmfPkgIa32X64.dsc
> +++ b/OvmfPkg/OvmfPkgIa32X64.dsc
> @@ -592,6 +592,7 @@
>    #   ($(SMM_REQUIRE) == FALSE)
>    gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0
>
> +  gEfiMdeModulePkgTokenSpaceGuid.PcdResizeXterm|FALSE
>  !if $(SMM_REQUIRE) == FALSE
>    gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0
>    gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64|0
> diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc
> index 6e68f60dc90f..16cfa4c362cb 100644
> --- a/OvmfPkg/OvmfPkgX64.dsc
> +++ b/OvmfPkg/OvmfPkgX64.dsc
> @@ -611,6 +611,7 @@
>    #   ($(SMM_REQUIRE) == FALSE)
>    gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0
>
> +  gEfiMdeModulePkgTokenSpaceGuid.PcdResizeXterm|FALSE
>  !if $(SMM_REQUIRE) == FALSE
>    gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0
>    gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64|0
> diff --git a/OvmfPkg/PlatformPei/PlatformPei.inf b/OvmfPkg/PlatformPei/PlatformPei.inf
> index 3cd83e6ec3e5..47adfd0fbb90 100644
> --- a/OvmfPkg/PlatformPei/PlatformPei.inf
> +++ b/OvmfPkg/PlatformPei/PlatformPei.inf
> @@ -99,6 +99,7 @@
>    gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize
>    gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize
>    gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved
> +  gEfiMdeModulePkgTokenSpaceGuid.PcdResizeXterm
>    gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode
>    gEfiMdeModulePkgTokenSpaceGuid.PcdUse1GPageTable
>    gEfiMdeModulePkgTokenSpaceGuid.PcdSetNxForStack
> diff --git a/OvmfPkg/PlatformPei/Platform.c b/OvmfPkg/PlatformPei/Platform.c
> index 009db67ee60a..83d40b8a51f5 100644
> --- a/OvmfPkg/PlatformPei/Platform.c
> +++ b/OvmfPkg/PlatformPei/Platform.c
> @@ -41,6 +41,18 @@
>
>  #include "Platform.h"
>
> +#define UPDATE_BOOLEAN_PCD_FROM_FW_CFG(TokenName)                   \
> +          do {                                                      \
> +            BOOLEAN       Setting;                                  \
> +            RETURN_STATUS PcdStatus;                                \
> +                                                                    \
> +            if (!RETURN_ERROR (QemuFwCfgParseBool (                 \
> +                              "opt/ovmf/" #TokenName, &Setting))) { \
> +              PcdStatus = PcdSetBoolS (TokenName, Setting);         \
> +              ASSERT_RETURN_ERROR (PcdStatus);                      \
> +            }                                                       \
> +          } while (0)
> +
>  EFI_HOB_PLATFORM_INFO  mPlatformInfoHob = { 0 };
>
>  EFI_PEI_PPI_DESCRIPTOR  mPpiBootMode[] = {
> @@ -387,6 +399,7 @@ InitializePlatform (
>      MemTypeInfoInitialization ();
>      MemMapInitialization (&mPlatformInfoHob);
>      NoexecDxeInitialization ();
> +    UPDATE_BOOLEAN_PCD_FROM_FW_CFG (PcdResizeXterm);
>    }
>
>    InstallClearCacheCallback ();
> --
> 2.37.2
>

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

end of thread, other threads:[~2022-09-05 11:59 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-08-23  1:02 [[edk2-devel] PATH v1 0/3] Enable support for terminal resize Paweł Poławski
2022-08-23  1:02 ` [[edk2-devel] PATH v1 1/3] MdeModulePkg: TerminalDxe: set xterm resolution on mode change Paweł Poławski
2022-08-25  9:27   ` Gerd Hoffmann
2022-08-23  1:02 ` [[edk2-devel] PATH v1 2/3] OvmfPkg: take PcdResizeXterm from the QEMU command line Paweł Poławski
2022-09-05 11:58   ` Ard Biesheuvel
2022-08-23  1:02 ` [[edk2-devel] PATH v1 3/3] ArmVirtPkg: " Paweł Poławski
2022-08-25  9:43   ` Gerd Hoffmann

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