public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable
@ 2022-02-02  7:16 Sean Rhodes
  0 siblings, 0 replies; 13+ messages in thread
From: Sean Rhodes @ 2022-02-02  7:16 UTC (permalink / raw)
  To: devel; +Cc: guo.dong, Sean Rhodes

Provide a build option to use [Esc] instead of [F2] for devices
such as Chromebooks that don't have F-keys.

Signed-off-by: Sean Rhodes <sean@starlabs.systems>
---
 .../PlatformBootManager.c                     | 44 +++++++++++++------
 .../PlatformBootManagerLib.inf                |  1 +
 UefiPayloadPkg/UefiPayloadPkg.dec             |  3 ++
 UefiPayloadPkg/UefiPayloadPkg.dsc             |  4 ++
 4 files changed, 39 insertions(+), 13 deletions(-)

diff --git a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
index a8ead775ea..0eb577313a 100644
--- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
+++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
@@ -164,7 +164,7 @@ PlatformBootManagerBeforeConsole (
   )
 {
   EFI_INPUT_KEY                 Enter;
-  EFI_INPUT_KEY                 F2;
+  EFI_INPUT_KEY                 CustomKey;
   EFI_INPUT_KEY                 Down;
   EFI_BOOT_MANAGER_LOAD_OPTION  BootOption;
   EFI_STATUS                    Status;
@@ -186,13 +186,22 @@ PlatformBootManagerBeforeConsole (
   Enter.UnicodeChar = CHAR_CARRIAGE_RETURN;
   EfiBootManagerRegisterContinueKeyOption (0, &Enter, NULL);
 
-  //
-  // Map F2 to Boot Manager Menu
-  //
-  F2.ScanCode    = SCAN_F2;
-  F2.UnicodeChar = CHAR_NULL;
+  if (FixedPcdGetBool (PcdBootManagerEscape)) {
+    //
+    // Map Esc to Boot Manager Menu
+    //
+    CustomKey.ScanCode    = SCAN_ESC;
+    CustomKey.UnicodeChar = CHAR_NULL;
+  } else {
+    //
+    // Map Esc to Boot Manager Menu
+    //
+    CustomKey.ScanCode    = SCAN_F2;
+    CustomKey.UnicodeChar = CHAR_NULL;
+  }
+
   EfiBootManagerGetBootManagerMenu (&BootOption);
-  EfiBootManagerAddKeyOptionVariable (NULL, (UINT16)BootOption.OptionNumber, 0, &F2, NULL);
+  EfiBootManagerAddKeyOptionVariable (NULL, (UINT16)BootOption.OptionNumber, 0, &CustomKey, NULL);
 
   //
   // Also add Down key to Boot Manager Menu since some serial terminals don't support F2 key.
@@ -251,12 +260,21 @@ PlatformBootManagerAfterConsole (
   //
   PlatformRegisterFvBootOption (PcdGetPtr (PcdShellFile), L"UEFI Shell", LOAD_OPTION_ACTIVE);
 
-  Print (
-    L"\n"
-    L"F2 or Down      to enter Boot Manager Menu.\n"
-    L"ENTER           to boot directly.\n"
-    L"\n"
-    );
+  if (FixedPcdGetBool (PcdBootManagerEscape)) {
+    Print (
+      L"\n"
+      L"Esc or Down      to enter Boot Manager Menu.\n"
+      L"ENTER           to boot directly.\n"
+      L"\n"
+      );
+  } else {
+    Print (
+      L"\n"
+      L"F2 or Down      to enter Boot Manager Menu.\n"
+      L"ENTER           to boot directly.\n"
+      L"\n"
+      );
+  }
 }
 
 /**
diff --git a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
index 9c4a9da943..80390e0d98 100644
--- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
+++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
@@ -73,3 +73,4 @@
   gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity
   gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits
   gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile
+  gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape
diff --git a/UefiPayloadPkg/UefiPayloadPkg.dec b/UefiPayloadPkg/UefiPayloadPkg.dec
index 551f0a4915..f2fcdf6a74 100644
--- a/UefiPayloadPkg/UefiPayloadPkg.dec
+++ b/UefiPayloadPkg/UefiPayloadPkg.dec
@@ -83,6 +83,9 @@ gUefiPayloadPkgTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x04000000|UINT32|0x
 
 gUefiPayloadPkgTokenSpaceGuid.PcdPcdDriverFile|{ 0x57, 0x72, 0xcf, 0x80, 0xab, 0x87, 0xf9, 0x47, 0xa3, 0xfe, 0xD5, 0x0B, 0x76, 0xd8, 0x95, 0x41 }|VOID*|0x00000018
 
+# Boot Manager Key
+gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape|FALSE|BOOLEAN|0x00000020
+
 ## FFS filename to find the default variable initial data file.
 # @Prompt FFS Name of variable initial data file
  gUefiPayloadPkgTokenSpaceGuid.PcdNvsDataFile |{ 0x1a, 0xf1, 0xb1, 0xae, 0x42, 0xcc, 0xcf, 0x4e, 0xac, 0x60, 0xdb, 0xab, 0xf6, 0xca, 0x69, 0xe6 }|VOID*|0x00000025
diff --git a/UefiPayloadPkg/UefiPayloadPkg.dsc b/UefiPayloadPkg/UefiPayloadPkg.dsc
index 1ce96a51c1..5e1892458e 100644
--- a/UefiPayloadPkg/UefiPayloadPkg.dsc
+++ b/UefiPayloadPkg/UefiPayloadPkg.dsc
@@ -33,6 +33,8 @@
   DEFINE UNIVERSAL_PAYLOAD            = FALSE
   DEFINE SECURITY_STUB_ENABLE         = TRUE
   DEFINE SMM_SUPPORT                  = FALSE
+  DEFINE BOOT_MANAGER_ESCAPE          = FALSE
+  DEFINE PLATFORM_BOOT_TIMEOUT        = 3
   #
   # SBL:      UEFI payload for Slim Bootloader
   # COREBOOT: UEFI payload for coreboot
@@ -399,6 +401,8 @@
   gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask       | 0x1
 !endif
 
+  gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape|$(BOOT_MANAGER_ESCAPE)
+
 [PcdsPatchableInModule.X64]
   gPcAtChipsetPkgTokenSpaceGuid.PcdRtcIndexRegister|$(RTC_INDEX_REGISTER)
   gPcAtChipsetPkgTokenSpaceGuid.PcdRtcTargetRegister|$(RTC_TARGET_REGISTER)
-- 
2.32.0


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

* [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable
@ 2022-02-03 16:26 Sean Rhodes
  2022-03-31  8:29 ` [edk2-devel] " Sheng Lean Tan
  0 siblings, 1 reply; 13+ messages in thread
From: Sean Rhodes @ 2022-02-03 16:26 UTC (permalink / raw)
  To: devel; +Cc: guo.dong, Sean Rhodes

Provide a build option to use [Esc] instead of [F2] for devices
such as Chromebooks that don't have F-keys.

Signed-off-by: Sean Rhodes <sean@starlabs.systems>
---
 .../PlatformBootManager.c                     | 44 +++++++++++++------
 .../PlatformBootManagerLib.inf                |  1 +
 UefiPayloadPkg/UefiPayloadPkg.dec             |  3 ++
 UefiPayloadPkg/UefiPayloadPkg.dsc             |  3 ++
 4 files changed, 38 insertions(+), 13 deletions(-)

diff --git a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
index a8ead775ea..0eb577313a 100644
--- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
+++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
@@ -164,7 +164,7 @@ PlatformBootManagerBeforeConsole (
   )
 {
   EFI_INPUT_KEY                 Enter;
-  EFI_INPUT_KEY                 F2;
+  EFI_INPUT_KEY                 CustomKey;
   EFI_INPUT_KEY                 Down;
   EFI_BOOT_MANAGER_LOAD_OPTION  BootOption;
   EFI_STATUS                    Status;
@@ -186,13 +186,22 @@ PlatformBootManagerBeforeConsole (
   Enter.UnicodeChar = CHAR_CARRIAGE_RETURN;
   EfiBootManagerRegisterContinueKeyOption (0, &Enter, NULL);
 
-  //
-  // Map F2 to Boot Manager Menu
-  //
-  F2.ScanCode    = SCAN_F2;
-  F2.UnicodeChar = CHAR_NULL;
+  if (FixedPcdGetBool (PcdBootManagerEscape)) {
+    //
+    // Map Esc to Boot Manager Menu
+    //
+    CustomKey.ScanCode    = SCAN_ESC;
+    CustomKey.UnicodeChar = CHAR_NULL;
+  } else {
+    //
+    // Map Esc to Boot Manager Menu
+    //
+    CustomKey.ScanCode    = SCAN_F2;
+    CustomKey.UnicodeChar = CHAR_NULL;
+  }
+
   EfiBootManagerGetBootManagerMenu (&BootOption);
-  EfiBootManagerAddKeyOptionVariable (NULL, (UINT16)BootOption.OptionNumber, 0, &F2, NULL);
+  EfiBootManagerAddKeyOptionVariable (NULL, (UINT16)BootOption.OptionNumber, 0, &CustomKey, NULL);
 
   //
   // Also add Down key to Boot Manager Menu since some serial terminals don't support F2 key.
@@ -251,12 +260,21 @@ PlatformBootManagerAfterConsole (
   //
   PlatformRegisterFvBootOption (PcdGetPtr (PcdShellFile), L"UEFI Shell", LOAD_OPTION_ACTIVE);
 
-  Print (
-    L"\n"
-    L"F2 or Down      to enter Boot Manager Menu.\n"
-    L"ENTER           to boot directly.\n"
-    L"\n"
-    );
+  if (FixedPcdGetBool (PcdBootManagerEscape)) {
+    Print (
+      L"\n"
+      L"Esc or Down      to enter Boot Manager Menu.\n"
+      L"ENTER           to boot directly.\n"
+      L"\n"
+      );
+  } else {
+    Print (
+      L"\n"
+      L"F2 or Down      to enter Boot Manager Menu.\n"
+      L"ENTER           to boot directly.\n"
+      L"\n"
+      );
+  }
 }
 
 /**
diff --git a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
index 9c4a9da943..80390e0d98 100644
--- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
+++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
@@ -73,3 +73,4 @@
   gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity
   gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits
   gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile
+  gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape
diff --git a/UefiPayloadPkg/UefiPayloadPkg.dec b/UefiPayloadPkg/UefiPayloadPkg.dec
index 551f0a4915..f2fcdf6a74 100644
--- a/UefiPayloadPkg/UefiPayloadPkg.dec
+++ b/UefiPayloadPkg/UefiPayloadPkg.dec
@@ -83,6 +83,9 @@ gUefiPayloadPkgTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x04000000|UINT32|0x
 
 gUefiPayloadPkgTokenSpaceGuid.PcdPcdDriverFile|{ 0x57, 0x72, 0xcf, 0x80, 0xab, 0x87, 0xf9, 0x47, 0xa3, 0xfe, 0xD5, 0x0B, 0x76, 0xd8, 0x95, 0x41 }|VOID*|0x00000018
 
+# Boot Manager Key
+gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape|FALSE|BOOLEAN|0x00000020
+
 ## FFS filename to find the default variable initial data file.
 # @Prompt FFS Name of variable initial data file
  gUefiPayloadPkgTokenSpaceGuid.PcdNvsDataFile |{ 0x1a, 0xf1, 0xb1, 0xae, 0x42, 0xcc, 0xcf, 0x4e, 0xac, 0x60, 0xdb, 0xab, 0xf6, 0xca, 0x69, 0xe6 }|VOID*|0x00000025
diff --git a/UefiPayloadPkg/UefiPayloadPkg.dsc b/UefiPayloadPkg/UefiPayloadPkg.dsc
index 1ce96a51c1..ee9680a2b7 100644
--- a/UefiPayloadPkg/UefiPayloadPkg.dsc
+++ b/UefiPayloadPkg/UefiPayloadPkg.dsc
@@ -33,6 +33,7 @@
   DEFINE UNIVERSAL_PAYLOAD            = FALSE
   DEFINE SECURITY_STUB_ENABLE         = TRUE
   DEFINE SMM_SUPPORT                  = FALSE
+  DEFINE BOOT_MANAGER_ESCAPE          = FALSE
   #
   # SBL:      UEFI payload for Slim Bootloader
   # COREBOOT: UEFI payload for coreboot
@@ -399,6 +400,8 @@
   gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask       | 0x1
 !endif
 
+  gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape|$(BOOT_MANAGER_ESCAPE)
+
 [PcdsPatchableInModule.X64]
   gPcAtChipsetPkgTokenSpaceGuid.PcdRtcIndexRegister|$(RTC_INDEX_REGISTER)
   gPcAtChipsetPkgTokenSpaceGuid.PcdRtcTargetRegister|$(RTC_TARGET_REGISTER)
-- 
2.32.0


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

* [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable
@ 2022-02-20 17:49 Sean Rhodes
  0 siblings, 0 replies; 13+ messages in thread
From: Sean Rhodes @ 2022-02-20 17:49 UTC (permalink / raw)
  To: devel; +Cc: guo.dong, Sean Rhodes, Ray Ni, Maurice Ma, Benjamin You

Provide a build option to use [Esc] instead of [F2] for devices
such as Chromebooks that don't have F-keys.

Cc: Guo Dong <guo.dong@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Maurice Ma <maurice.ma@intel.com>
Cc: Benjamin You <benjamin.you@intel.com>
Signed-off-by: Sean Rhodes <sean@starlabs.systems>
---
 .../Library/BrotliCustomDecompressLib/brotli  |  2 +-
 .../PlatformBootManager.c                     | 44 +++++++++++++------
 .../PlatformBootManagerLib.inf                |  1 +
 UefiPayloadPkg/UefiPayloadPkg.dec             |  3 ++
 UefiPayloadPkg/UefiPayloadPkg.dsc             |  3 ++
 5 files changed, 39 insertions(+), 14 deletions(-)

diff --git a/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli b/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
index f4153a09f8..666c3280cc 160000
--- a/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
+++ b/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
@@ -1 +1 @@
-Subproject commit f4153a09f87cbb9c826d8fc12c74642bb2d879ea
+Subproject commit 666c3280cc11dc433c303d79a83d4ffbdd12cc8d
diff --git a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
index a8ead775ea..0eb577313a 100644
--- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
+++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
@@ -164,7 +164,7 @@ PlatformBootManagerBeforeConsole (
   )
 {
   EFI_INPUT_KEY                 Enter;
-  EFI_INPUT_KEY                 F2;
+  EFI_INPUT_KEY                 CustomKey;
   EFI_INPUT_KEY                 Down;
   EFI_BOOT_MANAGER_LOAD_OPTION  BootOption;
   EFI_STATUS                    Status;
@@ -186,13 +186,22 @@ PlatformBootManagerBeforeConsole (
   Enter.UnicodeChar = CHAR_CARRIAGE_RETURN;
   EfiBootManagerRegisterContinueKeyOption (0, &Enter, NULL);
 
-  //
-  // Map F2 to Boot Manager Menu
-  //
-  F2.ScanCode    = SCAN_F2;
-  F2.UnicodeChar = CHAR_NULL;
+  if (FixedPcdGetBool (PcdBootManagerEscape)) {
+    //
+    // Map Esc to Boot Manager Menu
+    //
+    CustomKey.ScanCode    = SCAN_ESC;
+    CustomKey.UnicodeChar = CHAR_NULL;
+  } else {
+    //
+    // Map Esc to Boot Manager Menu
+    //
+    CustomKey.ScanCode    = SCAN_F2;
+    CustomKey.UnicodeChar = CHAR_NULL;
+  }
+
   EfiBootManagerGetBootManagerMenu (&BootOption);
-  EfiBootManagerAddKeyOptionVariable (NULL, (UINT16)BootOption.OptionNumber, 0, &F2, NULL);
+  EfiBootManagerAddKeyOptionVariable (NULL, (UINT16)BootOption.OptionNumber, 0, &CustomKey, NULL);
 
   //
   // Also add Down key to Boot Manager Menu since some serial terminals don't support F2 key.
@@ -251,12 +260,21 @@ PlatformBootManagerAfterConsole (
   //
   PlatformRegisterFvBootOption (PcdGetPtr (PcdShellFile), L"UEFI Shell", LOAD_OPTION_ACTIVE);
 
-  Print (
-    L"\n"
-    L"F2 or Down      to enter Boot Manager Menu.\n"
-    L"ENTER           to boot directly.\n"
-    L"\n"
-    );
+  if (FixedPcdGetBool (PcdBootManagerEscape)) {
+    Print (
+      L"\n"
+      L"Esc or Down      to enter Boot Manager Menu.\n"
+      L"ENTER           to boot directly.\n"
+      L"\n"
+      );
+  } else {
+    Print (
+      L"\n"
+      L"F2 or Down      to enter Boot Manager Menu.\n"
+      L"ENTER           to boot directly.\n"
+      L"\n"
+      );
+  }
 }
 
 /**
diff --git a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
index 9c4a9da943..80390e0d98 100644
--- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
+++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
@@ -73,3 +73,4 @@
   gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity
   gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits
   gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile
+  gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape
diff --git a/UefiPayloadPkg/UefiPayloadPkg.dec b/UefiPayloadPkg/UefiPayloadPkg.dec
index 551f0a4915..f2fcdf6a74 100644
--- a/UefiPayloadPkg/UefiPayloadPkg.dec
+++ b/UefiPayloadPkg/UefiPayloadPkg.dec
@@ -83,6 +83,9 @@ gUefiPayloadPkgTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x04000000|UINT32|0x
 
 gUefiPayloadPkgTokenSpaceGuid.PcdPcdDriverFile|{ 0x57, 0x72, 0xcf, 0x80, 0xab, 0x87, 0xf9, 0x47, 0xa3, 0xfe, 0xD5, 0x0B, 0x76, 0xd8, 0x95, 0x41 }|VOID*|0x00000018
 
+# Boot Manager Key
+gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape|FALSE|BOOLEAN|0x00000020
+
 ## FFS filename to find the default variable initial data file.
 # @Prompt FFS Name of variable initial data file
  gUefiPayloadPkgTokenSpaceGuid.PcdNvsDataFile |{ 0x1a, 0xf1, 0xb1, 0xae, 0x42, 0xcc, 0xcf, 0x4e, 0xac, 0x60, 0xdb, 0xab, 0xf6, 0xca, 0x69, 0xe6 }|VOID*|0x00000025
diff --git a/UefiPayloadPkg/UefiPayloadPkg.dsc b/UefiPayloadPkg/UefiPayloadPkg.dsc
index 1ce96a51c1..ee9680a2b7 100644
--- a/UefiPayloadPkg/UefiPayloadPkg.dsc
+++ b/UefiPayloadPkg/UefiPayloadPkg.dsc
@@ -33,6 +33,7 @@
   DEFINE UNIVERSAL_PAYLOAD            = FALSE
   DEFINE SECURITY_STUB_ENABLE         = TRUE
   DEFINE SMM_SUPPORT                  = FALSE
+  DEFINE BOOT_MANAGER_ESCAPE          = FALSE
   #
   # SBL:      UEFI payload for Slim Bootloader
   # COREBOOT: UEFI payload for coreboot
@@ -399,6 +400,8 @@
   gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask       | 0x1
 !endif
 
+  gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape|$(BOOT_MANAGER_ESCAPE)
+
 [PcdsPatchableInModule.X64]
   gPcAtChipsetPkgTokenSpaceGuid.PcdRtcIndexRegister|$(RTC_INDEX_REGISTER)
   gPcAtChipsetPkgTokenSpaceGuid.PcdRtcTargetRegister|$(RTC_TARGET_REGISTER)
-- 
2.32.0


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

* [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable
@ 2022-02-20 21:39 Sean Rhodes
  2022-02-21  5:26 ` Ni, Ray
  0 siblings, 1 reply; 13+ messages in thread
From: Sean Rhodes @ 2022-02-20 21:39 UTC (permalink / raw)
  To: devel; +Cc: guo.dong, Sean Rhodes, Ray Ni, Maurice Ma, Benjamin You

Provide a build option to use [Esc] instead of [F2] for devices
such as Chromebooks that don't have F-keys.

Cc: Guo Dong <guo.dong@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Maurice Ma <maurice.ma@intel.com>
Cc: Benjamin You <benjamin.you@intel.com>
Signed-off-by: Sean Rhodes <sean@starlabs.systems>
---
 .../Library/BrotliCustomDecompressLib/brotli  |  2 +-
 .../PlatformBootManager.c                     | 44 +++++++++++++------
 .../PlatformBootManagerLib.inf                |  1 +
 UefiPayloadPkg/UefiPayloadPkg.dec             |  3 ++
 UefiPayloadPkg/UefiPayloadPkg.dsc             |  3 ++
 5 files changed, 39 insertions(+), 14 deletions(-)

diff --git a/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli b/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
index f4153a09f8..666c3280cc 160000
--- a/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
+++ b/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
@@ -1 +1 @@
-Subproject commit f4153a09f87cbb9c826d8fc12c74642bb2d879ea
+Subproject commit 666c3280cc11dc433c303d79a83d4ffbdd12cc8d
diff --git a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
index a8ead775ea..0eb577313a 100644
--- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
+++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
@@ -164,7 +164,7 @@ PlatformBootManagerBeforeConsole (
   )
 {
   EFI_INPUT_KEY                 Enter;
-  EFI_INPUT_KEY                 F2;
+  EFI_INPUT_KEY                 CustomKey;
   EFI_INPUT_KEY                 Down;
   EFI_BOOT_MANAGER_LOAD_OPTION  BootOption;
   EFI_STATUS                    Status;
@@ -186,13 +186,22 @@ PlatformBootManagerBeforeConsole (
   Enter.UnicodeChar = CHAR_CARRIAGE_RETURN;
   EfiBootManagerRegisterContinueKeyOption (0, &Enter, NULL);
 
-  //
-  // Map F2 to Boot Manager Menu
-  //
-  F2.ScanCode    = SCAN_F2;
-  F2.UnicodeChar = CHAR_NULL;
+  if (FixedPcdGetBool (PcdBootManagerEscape)) {
+    //
+    // Map Esc to Boot Manager Menu
+    //
+    CustomKey.ScanCode    = SCAN_ESC;
+    CustomKey.UnicodeChar = CHAR_NULL;
+  } else {
+    //
+    // Map Esc to Boot Manager Menu
+    //
+    CustomKey.ScanCode    = SCAN_F2;
+    CustomKey.UnicodeChar = CHAR_NULL;
+  }
+
   EfiBootManagerGetBootManagerMenu (&BootOption);
-  EfiBootManagerAddKeyOptionVariable (NULL, (UINT16)BootOption.OptionNumber, 0, &F2, NULL);
+  EfiBootManagerAddKeyOptionVariable (NULL, (UINT16)BootOption.OptionNumber, 0, &CustomKey, NULL);
 
   //
   // Also add Down key to Boot Manager Menu since some serial terminals don't support F2 key.
@@ -251,12 +260,21 @@ PlatformBootManagerAfterConsole (
   //
   PlatformRegisterFvBootOption (PcdGetPtr (PcdShellFile), L"UEFI Shell", LOAD_OPTION_ACTIVE);
 
-  Print (
-    L"\n"
-    L"F2 or Down      to enter Boot Manager Menu.\n"
-    L"ENTER           to boot directly.\n"
-    L"\n"
-    );
+  if (FixedPcdGetBool (PcdBootManagerEscape)) {
+    Print (
+      L"\n"
+      L"Esc or Down      to enter Boot Manager Menu.\n"
+      L"ENTER           to boot directly.\n"
+      L"\n"
+      );
+  } else {
+    Print (
+      L"\n"
+      L"F2 or Down      to enter Boot Manager Menu.\n"
+      L"ENTER           to boot directly.\n"
+      L"\n"
+      );
+  }
 }
 
 /**
diff --git a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
index 9c4a9da943..80390e0d98 100644
--- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
+++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
@@ -73,3 +73,4 @@
   gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity
   gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits
   gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile
+  gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape
diff --git a/UefiPayloadPkg/UefiPayloadPkg.dec b/UefiPayloadPkg/UefiPayloadPkg.dec
index 551f0a4915..f2fcdf6a74 100644
--- a/UefiPayloadPkg/UefiPayloadPkg.dec
+++ b/UefiPayloadPkg/UefiPayloadPkg.dec
@@ -83,6 +83,9 @@ gUefiPayloadPkgTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x04000000|UINT32|0x
 
 gUefiPayloadPkgTokenSpaceGuid.PcdPcdDriverFile|{ 0x57, 0x72, 0xcf, 0x80, 0xab, 0x87, 0xf9, 0x47, 0xa3, 0xfe, 0xD5, 0x0B, 0x76, 0xd8, 0x95, 0x41 }|VOID*|0x00000018
 
+# Boot Manager Key
+gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape|FALSE|BOOLEAN|0x00000020
+
 ## FFS filename to find the default variable initial data file.
 # @Prompt FFS Name of variable initial data file
  gUefiPayloadPkgTokenSpaceGuid.PcdNvsDataFile |{ 0x1a, 0xf1, 0xb1, 0xae, 0x42, 0xcc, 0xcf, 0x4e, 0xac, 0x60, 0xdb, 0xab, 0xf6, 0xca, 0x69, 0xe6 }|VOID*|0x00000025
diff --git a/UefiPayloadPkg/UefiPayloadPkg.dsc b/UefiPayloadPkg/UefiPayloadPkg.dsc
index 1ce96a51c1..ee9680a2b7 100644
--- a/UefiPayloadPkg/UefiPayloadPkg.dsc
+++ b/UefiPayloadPkg/UefiPayloadPkg.dsc
@@ -33,6 +33,7 @@
   DEFINE UNIVERSAL_PAYLOAD            = FALSE
   DEFINE SECURITY_STUB_ENABLE         = TRUE
   DEFINE SMM_SUPPORT                  = FALSE
+  DEFINE BOOT_MANAGER_ESCAPE          = FALSE
   #
   # SBL:      UEFI payload for Slim Bootloader
   # COREBOOT: UEFI payload for coreboot
@@ -399,6 +400,8 @@
   gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask       | 0x1
 !endif
 
+  gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape|$(BOOT_MANAGER_ESCAPE)
+
 [PcdsPatchableInModule.X64]
   gPcAtChipsetPkgTokenSpaceGuid.PcdRtcIndexRegister|$(RTC_INDEX_REGISTER)
   gPcAtChipsetPkgTokenSpaceGuid.PcdRtcTargetRegister|$(RTC_TARGET_REGISTER)
-- 
2.32.0


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

* Re: [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable
  2022-02-20 21:39 Sean Rhodes
@ 2022-02-21  5:26 ` Ni, Ray
  2022-02-21  7:48   ` Sean Rhodes
  0 siblings, 1 reply; 13+ messages in thread
From: Ni, Ray @ 2022-02-21  5:26 UTC (permalink / raw)
  To: Rhodes, Sean, devel@edk2.groups.io
  Cc: Dong, Guo, Rhodes, Sean, Ma, Maurice, You, Benjamin

Can you just map both ESC and F2 to the UI? So that PCD is not needed.

Thanks,
Ray

-----Original Message-----
From: Sean Rhodes <sean@starlabs.systems> 
Sent: Monday, February 21, 2022 5:39 AM
To: devel@edk2.groups.io
Cc: Dong, Guo <guo.dong@intel.com>; Rhodes, Sean <sean@starlabs.systems>; Ni, Ray <ray.ni@intel.com>; Ma, Maurice <maurice.ma@intel.com>; You, Benjamin <benjamin.you@intel.com>
Subject: [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable

Provide a build option to use [Esc] instead of [F2] for devices
such as Chromebooks that don't have F-keys.

Cc: Guo Dong <guo.dong@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Maurice Ma <maurice.ma@intel.com>
Cc: Benjamin You <benjamin.you@intel.com>
Signed-off-by: Sean Rhodes <sean@starlabs.systems>
---
 .../Library/BrotliCustomDecompressLib/brotli  |  2 +-
 .../PlatformBootManager.c                     | 44 +++++++++++++------
 .../PlatformBootManagerLib.inf                |  1 +
 UefiPayloadPkg/UefiPayloadPkg.dec             |  3 ++
 UefiPayloadPkg/UefiPayloadPkg.dsc             |  3 ++
 5 files changed, 39 insertions(+), 14 deletions(-)

diff --git a/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli b/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
index f4153a09f8..666c3280cc 160000
--- a/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
+++ b/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
@@ -1 +1 @@
-Subproject commit f4153a09f87cbb9c826d8fc12c74642bb2d879ea
+Subproject commit 666c3280cc11dc433c303d79a83d4ffbdd12cc8d
diff --git a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
index a8ead775ea..0eb577313a 100644
--- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
+++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
@@ -164,7 +164,7 @@ PlatformBootManagerBeforeConsole (
   )

 {

   EFI_INPUT_KEY                 Enter;

-  EFI_INPUT_KEY                 F2;

+  EFI_INPUT_KEY                 CustomKey;

   EFI_INPUT_KEY                 Down;

   EFI_BOOT_MANAGER_LOAD_OPTION  BootOption;

   EFI_STATUS                    Status;

@@ -186,13 +186,22 @@ PlatformBootManagerBeforeConsole (
   Enter.UnicodeChar = CHAR_CARRIAGE_RETURN;

   EfiBootManagerRegisterContinueKeyOption (0, &Enter, NULL);

 

-  //

-  // Map F2 to Boot Manager Menu

-  //

-  F2.ScanCode    = SCAN_F2;

-  F2.UnicodeChar = CHAR_NULL;

+  if (FixedPcdGetBool (PcdBootManagerEscape)) {

+    //

+    // Map Esc to Boot Manager Menu

+    //

+    CustomKey.ScanCode    = SCAN_ESC;

+    CustomKey.UnicodeChar = CHAR_NULL;

+  } else {

+    //

+    // Map Esc to Boot Manager Menu

+    //

+    CustomKey.ScanCode    = SCAN_F2;

+    CustomKey.UnicodeChar = CHAR_NULL;

+  }

+

   EfiBootManagerGetBootManagerMenu (&BootOption);

-  EfiBootManagerAddKeyOptionVariable (NULL, (UINT16)BootOption.OptionNumber, 0, &F2, NULL);

+  EfiBootManagerAddKeyOptionVariable (NULL, (UINT16)BootOption.OptionNumber, 0, &CustomKey, NULL);

 

   //

   // Also add Down key to Boot Manager Menu since some serial terminals don't support F2 key.

@@ -251,12 +260,21 @@ PlatformBootManagerAfterConsole (
   //

   PlatformRegisterFvBootOption (PcdGetPtr (PcdShellFile), L"UEFI Shell", LOAD_OPTION_ACTIVE);

 

-  Print (

-    L"\n"

-    L"F2 or Down      to enter Boot Manager Menu.\n"

-    L"ENTER           to boot directly.\n"

-    L"\n"

-    );

+  if (FixedPcdGetBool (PcdBootManagerEscape)) {

+    Print (

+      L"\n"

+      L"Esc or Down      to enter Boot Manager Menu.\n"

+      L"ENTER           to boot directly.\n"

+      L"\n"

+      );

+  } else {

+    Print (

+      L"\n"

+      L"F2 or Down      to enter Boot Manager Menu.\n"

+      L"ENTER           to boot directly.\n"

+      L"\n"

+      );

+  }

 }

 

 /**

diff --git a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
index 9c4a9da943..80390e0d98 100644
--- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
+++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
@@ -73,3 +73,4 @@
   gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity

   gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits

   gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile

+  gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape

diff --git a/UefiPayloadPkg/UefiPayloadPkg.dec b/UefiPayloadPkg/UefiPayloadPkg.dec
index 551f0a4915..f2fcdf6a74 100644
--- a/UefiPayloadPkg/UefiPayloadPkg.dec
+++ b/UefiPayloadPkg/UefiPayloadPkg.dec
@@ -83,6 +83,9 @@ gUefiPayloadPkgTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x04000000|UINT32|0x
 

 gUefiPayloadPkgTokenSpaceGuid.PcdPcdDriverFile|{ 0x57, 0x72, 0xcf, 0x80, 0xab, 0x87, 0xf9, 0x47, 0xa3, 0xfe, 0xD5, 0x0B, 0x76, 0xd8, 0x95, 0x41 }|VOID*|0x00000018

 

+# Boot Manager Key

+gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape|FALSE|BOOLEAN|0x00000020

+

 ## FFS filename to find the default variable initial data file.

 # @Prompt FFS Name of variable initial data file

  gUefiPayloadPkgTokenSpaceGuid.PcdNvsDataFile |{ 0x1a, 0xf1, 0xb1, 0xae, 0x42, 0xcc, 0xcf, 0x4e, 0xac, 0x60, 0xdb, 0xab, 0xf6, 0xca, 0x69, 0xe6 }|VOID*|0x00000025

diff --git a/UefiPayloadPkg/UefiPayloadPkg.dsc b/UefiPayloadPkg/UefiPayloadPkg.dsc
index 1ce96a51c1..ee9680a2b7 100644
--- a/UefiPayloadPkg/UefiPayloadPkg.dsc
+++ b/UefiPayloadPkg/UefiPayloadPkg.dsc
@@ -33,6 +33,7 @@
   DEFINE UNIVERSAL_PAYLOAD            = FALSE

   DEFINE SECURITY_STUB_ENABLE         = TRUE

   DEFINE SMM_SUPPORT                  = FALSE

+  DEFINE BOOT_MANAGER_ESCAPE          = FALSE

   #

   # SBL:      UEFI payload for Slim Bootloader

   # COREBOOT: UEFI payload for coreboot

@@ -399,6 +400,8 @@
   gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask       | 0x1

 !endif

 

+  gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape|$(BOOT_MANAGER_ESCAPE)

+

 [PcdsPatchableInModule.X64]

   gPcAtChipsetPkgTokenSpaceGuid.PcdRtcIndexRegister|$(RTC_INDEX_REGISTER)

   gPcAtChipsetPkgTokenSpaceGuid.PcdRtcTargetRegister|$(RTC_TARGET_REGISTER)

-- 
2.32.0


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

* Re: [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable
  2022-02-21  5:26 ` Ni, Ray
@ 2022-02-21  7:48   ` Sean Rhodes
  2022-02-22  4:59     ` Ni, Ray
  0 siblings, 1 reply; 13+ messages in thread
From: Sean Rhodes @ 2022-02-21  7:48 UTC (permalink / raw)
  To: Ni, Ray; +Cc: devel@edk2.groups.io, Dong, Guo, Ma, Maurice, You, Benjamin

[-- Attachment #1: Type: text/plain, Size: 6782 bytes --]

We would prefer to keep PCD, as Esc can conflict with Grub on normal (not
Chromebook) devices

Thank you

On Mon, 21 Feb 2022 at 05:26, Ni, Ray <ray.ni@intel.com> wrote:

> Can you just map both ESC and F2 to the UI? So that PCD is not needed.
>
> Thanks,
> Ray
>
> -----Original Message-----
> From: Sean Rhodes <sean@starlabs.systems>
> Sent: Monday, February 21, 2022 5:39 AM
> To: devel@edk2.groups.io
> Cc: Dong, Guo <guo.dong@intel.com>; Rhodes, Sean <sean@starlabs.systems>;
> Ni, Ray <ray.ni@intel.com>; Ma, Maurice <maurice.ma@intel.com>; You,
> Benjamin <benjamin.you@intel.com>
> Subject: [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable
>
> Provide a build option to use [Esc] instead of [F2] for devices
> such as Chromebooks that don't have F-keys.
>
> Cc: Guo Dong <guo.dong@intel.com>
> Cc: Ray Ni <ray.ni@intel.com>
> Cc: Maurice Ma <maurice.ma@intel.com>
> Cc: Benjamin You <benjamin.you@intel.com>
> Signed-off-by: Sean Rhodes <sean@starlabs.systems>
> ---
>  .../Library/BrotliCustomDecompressLib/brotli  |  2 +-
>  .../PlatformBootManager.c                     | 44 +++++++++++++------
>  .../PlatformBootManagerLib.inf                |  1 +
>  UefiPayloadPkg/UefiPayloadPkg.dec             |  3 ++
>  UefiPayloadPkg/UefiPayloadPkg.dsc             |  3 ++
>  5 files changed, 39 insertions(+), 14 deletions(-)
>
> diff --git a/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
> b/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
> index f4153a09f8..666c3280cc 160000
> --- a/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
> +++ b/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
> @@ -1 +1 @@
> -Subproject commit f4153a09f87cbb9c826d8fc12c74642bb2d879ea
> +Subproject commit 666c3280cc11dc433c303d79a83d4ffbdd12cc8d
> diff --git
> a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
> b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
> index a8ead775ea..0eb577313a 100644
> --- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
> +++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
> @@ -164,7 +164,7 @@ PlatformBootManagerBeforeConsole (
>    )
>
>  {
>
>    EFI_INPUT_KEY                 Enter;
>
> -  EFI_INPUT_KEY                 F2;
>
> +  EFI_INPUT_KEY                 CustomKey;
>
>    EFI_INPUT_KEY                 Down;
>
>    EFI_BOOT_MANAGER_LOAD_OPTION  BootOption;
>
>    EFI_STATUS                    Status;
>
> @@ -186,13 +186,22 @@ PlatformBootManagerBeforeConsole (
>    Enter.UnicodeChar = CHAR_CARRIAGE_RETURN;
>
>    EfiBootManagerRegisterContinueKeyOption (0, &Enter, NULL);
>
>
>
> -  //
>
> -  // Map F2 to Boot Manager Menu
>
> -  //
>
> -  F2.ScanCode    = SCAN_F2;
>
> -  F2.UnicodeChar = CHAR_NULL;
>
> +  if (FixedPcdGetBool (PcdBootManagerEscape)) {
>
> +    //
>
> +    // Map Esc to Boot Manager Menu
>
> +    //
>
> +    CustomKey.ScanCode    = SCAN_ESC;
>
> +    CustomKey.UnicodeChar = CHAR_NULL;
>
> +  } else {
>
> +    //
>
> +    // Map Esc to Boot Manager Menu
>
> +    //
>
> +    CustomKey.ScanCode    = SCAN_F2;
>
> +    CustomKey.UnicodeChar = CHAR_NULL;
>
> +  }
>
> +
>
>    EfiBootManagerGetBootManagerMenu (&BootOption);
>
> -  EfiBootManagerAddKeyOptionVariable (NULL,
> (UINT16)BootOption.OptionNumber, 0, &F2, NULL);
>
> +  EfiBootManagerAddKeyOptionVariable (NULL,
> (UINT16)BootOption.OptionNumber, 0, &CustomKey, NULL);
>
>
>
>    //
>
>    // Also add Down key to Boot Manager Menu since some serial terminals
> don't support F2 key.
>
> @@ -251,12 +260,21 @@ PlatformBootManagerAfterConsole (
>    //
>
>    PlatformRegisterFvBootOption (PcdGetPtr (PcdShellFile), L"UEFI Shell",
> LOAD_OPTION_ACTIVE);
>
>
>
> -  Print (
>
> -    L"\n"
>
> -    L"F2 or Down      to enter Boot Manager Menu.\n"
>
> -    L"ENTER           to boot directly.\n"
>
> -    L"\n"
>
> -    );
>
> +  if (FixedPcdGetBool (PcdBootManagerEscape)) {
>
> +    Print (
>
> +      L"\n"
>
> +      L"Esc or Down      to enter Boot Manager Menu.\n"
>
> +      L"ENTER           to boot directly.\n"
>
> +      L"\n"
>
> +      );
>
> +  } else {
>
> +    Print (
>
> +      L"\n"
>
> +      L"F2 or Down      to enter Boot Manager Menu.\n"
>
> +      L"ENTER           to boot directly.\n"
>
> +      L"\n"
>
> +      );
>
> +  }
>
>  }
>
>
>
>  /**
>
> diff --git
> a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
> b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
> index 9c4a9da943..80390e0d98 100644
> ---
> a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
> +++
> b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
> @@ -73,3 +73,4 @@
>    gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity
>
>    gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits
>
>    gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile
>
> +  gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape
>
> diff --git a/UefiPayloadPkg/UefiPayloadPkg.dec
> b/UefiPayloadPkg/UefiPayloadPkg.dec
> index 551f0a4915..f2fcdf6a74 100644
> --- a/UefiPayloadPkg/UefiPayloadPkg.dec
> +++ b/UefiPayloadPkg/UefiPayloadPkg.dec
> @@ -83,6 +83,9 @@
> gUefiPayloadPkgTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x04000000|UINT32|0x
>
>
>  gUefiPayloadPkgTokenSpaceGuid.PcdPcdDriverFile|{ 0x57, 0x72, 0xcf, 0x80,
> 0xab, 0x87, 0xf9, 0x47, 0xa3, 0xfe, 0xD5, 0x0B, 0x76, 0xd8, 0x95, 0x41
> }|VOID*|0x00000018
>
>
>
> +# Boot Manager Key
>
>
> +gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape|FALSE|BOOLEAN|0x00000020
>
> +
>
>  ## FFS filename to find the default variable initial data file.
>
>  # @Prompt FFS Name of variable initial data file
>
>   gUefiPayloadPkgTokenSpaceGuid.PcdNvsDataFile |{ 0x1a, 0xf1, 0xb1, 0xae,
> 0x42, 0xcc, 0xcf, 0x4e, 0xac, 0x60, 0xdb, 0xab, 0xf6, 0xca, 0x69, 0xe6
> }|VOID*|0x00000025
>
> diff --git a/UefiPayloadPkg/UefiPayloadPkg.dsc
> b/UefiPayloadPkg/UefiPayloadPkg.dsc
> index 1ce96a51c1..ee9680a2b7 100644
> --- a/UefiPayloadPkg/UefiPayloadPkg.dsc
> +++ b/UefiPayloadPkg/UefiPayloadPkg.dsc
> @@ -33,6 +33,7 @@
>    DEFINE UNIVERSAL_PAYLOAD            = FALSE
>
>    DEFINE SECURITY_STUB_ENABLE         = TRUE
>
>    DEFINE SMM_SUPPORT                  = FALSE
>
> +  DEFINE BOOT_MANAGER_ESCAPE          = FALSE
>
>    #
>
>    # SBL:      UEFI payload for Slim Bootloader
>
>    # COREBOOT: UEFI payload for coreboot
>
> @@ -399,6 +400,8 @@
>    gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask       | 0x1
>
>  !endif
>
>
>
> +
> gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape|$(BOOT_MANAGER_ESCAPE)
>
> +
>
>  [PcdsPatchableInModule.X64]
>
>    gPcAtChipsetPkgTokenSpaceGuid.PcdRtcIndexRegister|$(RTC_INDEX_REGISTER)
>
>
>  gPcAtChipsetPkgTokenSpaceGuid.PcdRtcTargetRegister|$(RTC_TARGET_REGISTER)
>
> --
> 2.32.0
>
>

[-- Attachment #2: Type: text/html, Size: 9147 bytes --]

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

* Re: [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable
  2022-02-21  7:48   ` Sean Rhodes
@ 2022-02-22  4:59     ` Ni, Ray
  2022-02-22 19:21       ` Sean Rhodes
  0 siblings, 1 reply; 13+ messages in thread
From: Ni, Ray @ 2022-02-22  4:59 UTC (permalink / raw)
  To: Rhodes, Sean; +Cc: devel@edk2.groups.io, Dong, Guo, Ma, Maurice, You, Benjamin

[-- Attachment #1: Type: text/plain, Size: 7349 bytes --]

Grub runs later. Then what does “conflict” mean?

From: Sean Rhodes <sean@starlabs.systems>
Sent: Monday, February 21, 2022 3:48 PM
To: Ni, Ray <ray.ni@intel.com>
Cc: devel@edk2.groups.io; Dong, Guo <guo.dong@intel.com>; Ma, Maurice <maurice.ma@intel.com>; You, Benjamin <benjamin.you@intel.com>
Subject: Re: [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable

We would prefer to keep PCD, as Esc can conflict with Grub on normal (not Chromebook) devices

Thank you

On Mon, 21 Feb 2022 at 05:26, Ni, Ray <ray.ni@intel.com<mailto:ray.ni@intel.com>> wrote:
Can you just map both ESC and F2 to the UI? So that PCD is not needed.

Thanks,
Ray

-----Original Message-----
From: Sean Rhodes <sean@starlabs.systems<mailto:sean@starlabs.systems>>
Sent: Monday, February 21, 2022 5:39 AM
To: devel@edk2.groups.io<mailto:devel@edk2.groups.io>
Cc: Dong, Guo <guo.dong@intel.com<mailto:guo.dong@intel.com>>; Rhodes, Sean <sean@starlabs.systems<mailto:sean@starlabs.systems>>; Ni, Ray <ray.ni@intel.com<mailto:ray.ni@intel.com>>; Ma, Maurice <maurice.ma@intel.com<mailto:maurice.ma@intel.com>>; You, Benjamin <benjamin.you@intel.com<mailto:benjamin.you@intel.com>>
Subject: [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable

Provide a build option to use [Esc] instead of [F2] for devices
such as Chromebooks that don't have F-keys.

Cc: Guo Dong <guo.dong@intel.com<mailto:guo.dong@intel.com>>
Cc: Ray Ni <ray.ni@intel.com<mailto:ray.ni@intel.com>>
Cc: Maurice Ma <maurice.ma@intel.com<mailto:maurice.ma@intel.com>>
Cc: Benjamin You <benjamin.you@intel.com<mailto:benjamin.you@intel.com>>
Signed-off-by: Sean Rhodes <sean@starlabs.systems<mailto:sean@starlabs.systems>>
---
 .../Library/BrotliCustomDecompressLib/brotli  |  2 +-
 .../PlatformBootManager.c                     | 44 +++++++++++++------
 .../PlatformBootManagerLib.inf                |  1 +
 UefiPayloadPkg/UefiPayloadPkg.dec             |  3 ++
 UefiPayloadPkg/UefiPayloadPkg.dsc             |  3 ++
 5 files changed, 39 insertions(+), 14 deletions(-)

diff --git a/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli b/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
index f4153a09f8..666c3280cc 160000
--- a/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
+++ b/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
@@ -1 +1 @@
-Subproject commit f4153a09f87cbb9c826d8fc12c74642bb2d879ea
+Subproject commit 666c3280cc11dc433c303d79a83d4ffbdd12cc8d
diff --git a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
index a8ead775ea..0eb577313a 100644
--- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
+++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
@@ -164,7 +164,7 @@ PlatformBootManagerBeforeConsole (
   )

 {

   EFI_INPUT_KEY                 Enter;

-  EFI_INPUT_KEY                 F2;

+  EFI_INPUT_KEY                 CustomKey;

   EFI_INPUT_KEY                 Down;

   EFI_BOOT_MANAGER_LOAD_OPTION  BootOption;

   EFI_STATUS                    Status;

@@ -186,13 +186,22 @@ PlatformBootManagerBeforeConsole (
   Enter.UnicodeChar = CHAR_CARRIAGE_RETURN;

   EfiBootManagerRegisterContinueKeyOption (0, &Enter, NULL);



-  //

-  // Map F2 to Boot Manager Menu

-  //

-  F2.ScanCode    = SCAN_F2;

-  F2.UnicodeChar = CHAR_NULL;

+  if (FixedPcdGetBool (PcdBootManagerEscape)) {

+    //

+    // Map Esc to Boot Manager Menu

+    //

+    CustomKey.ScanCode    = SCAN_ESC;

+    CustomKey.UnicodeChar = CHAR_NULL;

+  } else {

+    //

+    // Map Esc to Boot Manager Menu

+    //

+    CustomKey.ScanCode    = SCAN_F2;

+    CustomKey.UnicodeChar = CHAR_NULL;

+  }

+

   EfiBootManagerGetBootManagerMenu (&BootOption);

-  EfiBootManagerAddKeyOptionVariable (NULL, (UINT16)BootOption.OptionNumber, 0, &F2, NULL);

+  EfiBootManagerAddKeyOptionVariable (NULL, (UINT16)BootOption.OptionNumber, 0, &CustomKey, NULL);



   //

   // Also add Down key to Boot Manager Menu since some serial terminals don't support F2 key.

@@ -251,12 +260,21 @@ PlatformBootManagerAfterConsole (
   //

   PlatformRegisterFvBootOption (PcdGetPtr (PcdShellFile), L"UEFI Shell", LOAD_OPTION_ACTIVE);



-  Print (

-    L"\n"

-    L"F2 or Down      to enter Boot Manager Menu.\n"

-    L"ENTER           to boot directly.\n"

-    L"\n"

-    );

+  if (FixedPcdGetBool (PcdBootManagerEscape)) {

+    Print (

+      L"\n"

+      L"Esc or Down      to enter Boot Manager Menu.\n"

+      L"ENTER           to boot directly.\n"

+      L"\n"

+      );

+  } else {

+    Print (

+      L"\n"

+      L"F2 or Down      to enter Boot Manager Menu.\n"

+      L"ENTER           to boot directly.\n"

+      L"\n"

+      );

+  }

 }



 /**

diff --git a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
index 9c4a9da943..80390e0d98 100644
--- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
+++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
@@ -73,3 +73,4 @@
   gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity

   gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits

   gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile

+  gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape

diff --git a/UefiPayloadPkg/UefiPayloadPkg.dec b/UefiPayloadPkg/UefiPayloadPkg.dec
index 551f0a4915..f2fcdf6a74 100644
--- a/UefiPayloadPkg/UefiPayloadPkg.dec
+++ b/UefiPayloadPkg/UefiPayloadPkg.dec
@@ -83,6 +83,9 @@ gUefiPayloadPkgTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x04000000|UINT32|0x


 gUefiPayloadPkgTokenSpaceGuid.PcdPcdDriverFile|{ 0x57, 0x72, 0xcf, 0x80, 0xab, 0x87, 0xf9, 0x47, 0xa3, 0xfe, 0xD5, 0x0B, 0x76, 0xd8, 0x95, 0x41 }|VOID*|0x00000018



+# Boot Manager Key

+gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape|FALSE|BOOLEAN|0x00000020

+

 ## FFS filename to find the default variable initial data file.

 # @Prompt FFS Name of variable initial data file

  gUefiPayloadPkgTokenSpaceGuid.PcdNvsDataFile |{ 0x1a, 0xf1, 0xb1, 0xae, 0x42, 0xcc, 0xcf, 0x4e, 0xac, 0x60, 0xdb, 0xab, 0xf6, 0xca, 0x69, 0xe6 }|VOID*|0x00000025

diff --git a/UefiPayloadPkg/UefiPayloadPkg.dsc b/UefiPayloadPkg/UefiPayloadPkg.dsc
index 1ce96a51c1..ee9680a2b7 100644
--- a/UefiPayloadPkg/UefiPayloadPkg.dsc
+++ b/UefiPayloadPkg/UefiPayloadPkg.dsc
@@ -33,6 +33,7 @@
   DEFINE UNIVERSAL_PAYLOAD            = FALSE

   DEFINE SECURITY_STUB_ENABLE         = TRUE

   DEFINE SMM_SUPPORT                  = FALSE

+  DEFINE BOOT_MANAGER_ESCAPE          = FALSE

   #

   # SBL:      UEFI payload for Slim Bootloader

   # COREBOOT: UEFI payload for coreboot

@@ -399,6 +400,8 @@
   gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask       | 0x1

 !endif



+  gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape|$(BOOT_MANAGER_ESCAPE)

+

 [PcdsPatchableInModule.X64]

   gPcAtChipsetPkgTokenSpaceGuid.PcdRtcIndexRegister|$(RTC_INDEX_REGISTER)

   gPcAtChipsetPkgTokenSpaceGuid.PcdRtcTargetRegister|$(RTC_TARGET_REGISTER)

--
2.32.0

[-- Attachment #2: Type: text/html, Size: 13069 bytes --]

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

* Re: [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable
  2022-02-22  4:59     ` Ni, Ray
@ 2022-02-22 19:21       ` Sean Rhodes
  2022-03-01  1:27         ` Ni, Ray
  0 siblings, 1 reply; 13+ messages in thread
From: Sean Rhodes @ 2022-02-22 19:21 UTC (permalink / raw)
  To: Ni, Ray; +Cc: devel@edk2.groups.io, Dong, Guo, Ma, Maurice, You, Benjamin

[-- Attachment #1: Type: text/plain, Size: 7926 bytes --]

True - but the experience is better with F2 (on
"normal" computers/non-Chromebooks).

We've got a lot of feedback, and for most, people turn on their computers
and start tapping Escape when they want Grub. If it's mapped, this gets
intercepted by UiApp. Even if they exit, with BGRT in the equation, it
requires fairly precise timing to access Grub.

On Tue, 22 Feb 2022 at 04:59, Ni, Ray <ray.ni@intel.com> wrote:

> Grub runs later. Then what does “conflict” mean?
>
>
>
> *From:* Sean Rhodes <sean@starlabs.systems>
> *Sent:* Monday, February 21, 2022 3:48 PM
> *To:* Ni, Ray <ray.ni@intel.com>
> *Cc:* devel@edk2.groups.io; Dong, Guo <guo.dong@intel.com>; Ma, Maurice <
> maurice.ma@intel.com>; You, Benjamin <benjamin.you@intel.com>
> *Subject:* Re: [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable
>
>
>
> We would prefer to keep PCD, as Esc can conflict with Grub on normal (not
> Chromebook) devices
>
>
>
> Thank you
>
>
>
> On Mon, 21 Feb 2022 at 05:26, Ni, Ray <ray.ni@intel.com> wrote:
>
> Can you just map both ESC and F2 to the UI? So that PCD is not needed.
>
> Thanks,
> Ray
>
> -----Original Message-----
> From: Sean Rhodes <sean@starlabs.systems>
> Sent: Monday, February 21, 2022 5:39 AM
> To: devel@edk2.groups.io
> Cc: Dong, Guo <guo.dong@intel.com>; Rhodes, Sean <sean@starlabs.systems>;
> Ni, Ray <ray.ni@intel.com>; Ma, Maurice <maurice.ma@intel.com>; You,
> Benjamin <benjamin.you@intel.com>
> Subject: [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable
>
> Provide a build option to use [Esc] instead of [F2] for devices
> such as Chromebooks that don't have F-keys.
>
> Cc: Guo Dong <guo.dong@intel.com>
> Cc: Ray Ni <ray.ni@intel.com>
> Cc: Maurice Ma <maurice.ma@intel.com>
> Cc: Benjamin You <benjamin.you@intel.com>
> Signed-off-by: Sean Rhodes <sean@starlabs.systems>
> ---
>  .../Library/BrotliCustomDecompressLib/brotli  |  2 +-
>  .../PlatformBootManager.c                     | 44 +++++++++++++------
>  .../PlatformBootManagerLib.inf                |  1 +
>  UefiPayloadPkg/UefiPayloadPkg.dec             |  3 ++
>  UefiPayloadPkg/UefiPayloadPkg.dsc             |  3 ++
>  5 files changed, 39 insertions(+), 14 deletions(-)
>
> diff --git a/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
> b/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
> index f4153a09f8..666c3280cc 160000
> --- a/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
> +++ b/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
> @@ -1 +1 @@
> -Subproject commit f4153a09f87cbb9c826d8fc12c74642bb2d879ea
> +Subproject commit 666c3280cc11dc433c303d79a83d4ffbdd12cc8d
> diff --git
> a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
> b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
> index a8ead775ea..0eb577313a 100644
> --- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
> +++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
> @@ -164,7 +164,7 @@ PlatformBootManagerBeforeConsole (
>    )
>
>  {
>
>    EFI_INPUT_KEY                 Enter;
>
> -  EFI_INPUT_KEY                 F2;
>
> +  EFI_INPUT_KEY                 CustomKey;
>
>    EFI_INPUT_KEY                 Down;
>
>    EFI_BOOT_MANAGER_LOAD_OPTION  BootOption;
>
>    EFI_STATUS                    Status;
>
> @@ -186,13 +186,22 @@ PlatformBootManagerBeforeConsole (
>    Enter.UnicodeChar = CHAR_CARRIAGE_RETURN;
>
>    EfiBootManagerRegisterContinueKeyOption (0, &Enter, NULL);
>
>
>
> -  //
>
> -  // Map F2 to Boot Manager Menu
>
> -  //
>
> -  F2.ScanCode    = SCAN_F2;
>
> -  F2.UnicodeChar = CHAR_NULL;
>
> +  if (FixedPcdGetBool (PcdBootManagerEscape)) {
>
> +    //
>
> +    // Map Esc to Boot Manager Menu
>
> +    //
>
> +    CustomKey.ScanCode    = SCAN_ESC;
>
> +    CustomKey.UnicodeChar = CHAR_NULL;
>
> +  } else {
>
> +    //
>
> +    // Map Esc to Boot Manager Menu
>
> +    //
>
> +    CustomKey.ScanCode    = SCAN_F2;
>
> +    CustomKey.UnicodeChar = CHAR_NULL;
>
> +  }
>
> +
>
>    EfiBootManagerGetBootManagerMenu (&BootOption);
>
> -  EfiBootManagerAddKeyOptionVariable (NULL,
> (UINT16)BootOption.OptionNumber, 0, &F2, NULL);
>
> +  EfiBootManagerAddKeyOptionVariable (NULL,
> (UINT16)BootOption.OptionNumber, 0, &CustomKey, NULL);
>
>
>
>    //
>
>    // Also add Down key to Boot Manager Menu since some serial terminals
> don't support F2 key.
>
> @@ -251,12 +260,21 @@ PlatformBootManagerAfterConsole (
>    //
>
>    PlatformRegisterFvBootOption (PcdGetPtr (PcdShellFile), L"UEFI Shell",
> LOAD_OPTION_ACTIVE);
>
>
>
> -  Print (
>
> -    L"\n"
>
> -    L"F2 or Down      to enter Boot Manager Menu.\n"
>
> -    L"ENTER           to boot directly.\n"
>
> -    L"\n"
>
> -    );
>
> +  if (FixedPcdGetBool (PcdBootManagerEscape)) {
>
> +    Print (
>
> +      L"\n"
>
> +      L"Esc or Down      to enter Boot Manager Menu.\n"
>
> +      L"ENTER           to boot directly.\n"
>
> +      L"\n"
>
> +      );
>
> +  } else {
>
> +    Print (
>
> +      L"\n"
>
> +      L"F2 or Down      to enter Boot Manager Menu.\n"
>
> +      L"ENTER           to boot directly.\n"
>
> +      L"\n"
>
> +      );
>
> +  }
>
>  }
>
>
>
>  /**
>
> diff --git
> a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
> b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
> index 9c4a9da943..80390e0d98 100644
> ---
> a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
> +++
> b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
> @@ -73,3 +73,4 @@
>    gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity
>
>    gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits
>
>    gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile
>
> +  gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape
>
> diff --git a/UefiPayloadPkg/UefiPayloadPkg.dec
> b/UefiPayloadPkg/UefiPayloadPkg.dec
> index 551f0a4915..f2fcdf6a74 100644
> --- a/UefiPayloadPkg/UefiPayloadPkg.dec
> +++ b/UefiPayloadPkg/UefiPayloadPkg.dec
> @@ -83,6 +83,9 @@
> gUefiPayloadPkgTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x04000000|UINT32|0x
>
>
>  gUefiPayloadPkgTokenSpaceGuid.PcdPcdDriverFile|{ 0x57, 0x72, 0xcf, 0x80,
> 0xab, 0x87, 0xf9, 0x47, 0xa3, 0xfe, 0xD5, 0x0B, 0x76, 0xd8, 0x95, 0x41
> }|VOID*|0x00000018
>
>
>
> +# Boot Manager Key
>
>
> +gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape|FALSE|BOOLEAN|0x00000020
>
> +
>
>  ## FFS filename to find the default variable initial data file.
>
>  # @Prompt FFS Name of variable initial data file
>
>   gUefiPayloadPkgTokenSpaceGuid.PcdNvsDataFile |{ 0x1a, 0xf1, 0xb1, 0xae,
> 0x42, 0xcc, 0xcf, 0x4e, 0xac, 0x60, 0xdb, 0xab, 0xf6, 0xca, 0x69, 0xe6
> }|VOID*|0x00000025
>
> diff --git a/UefiPayloadPkg/UefiPayloadPkg.dsc
> b/UefiPayloadPkg/UefiPayloadPkg.dsc
> index 1ce96a51c1..ee9680a2b7 100644
> --- a/UefiPayloadPkg/UefiPayloadPkg.dsc
> +++ b/UefiPayloadPkg/UefiPayloadPkg.dsc
> @@ -33,6 +33,7 @@
>    DEFINE UNIVERSAL_PAYLOAD            = FALSE
>
>    DEFINE SECURITY_STUB_ENABLE         = TRUE
>
>    DEFINE SMM_SUPPORT                  = FALSE
>
> +  DEFINE BOOT_MANAGER_ESCAPE          = FALSE
>
>    #
>
>    # SBL:      UEFI payload for Slim Bootloader
>
>    # COREBOOT: UEFI payload for coreboot
>
> @@ -399,6 +400,8 @@
>    gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask       | 0x1
>
>  !endif
>
>
>
> +
> gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape|$(BOOT_MANAGER_ESCAPE)
>
> +
>
>  [PcdsPatchableInModule.X64]
>
>    gPcAtChipsetPkgTokenSpaceGuid.PcdRtcIndexRegister|$(RTC_INDEX_REGISTER)
>
>
>  gPcAtChipsetPkgTokenSpaceGuid.PcdRtcTargetRegister|$(RTC_TARGET_REGISTER)
>
> --
> 2.32.0
>
>

[-- Attachment #2: Type: text/html, Size: 11714 bytes --]

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

* Re: [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable
  2022-02-22 19:21       ` Sean Rhodes
@ 2022-03-01  1:27         ` Ni, Ray
  2022-03-05  3:47           ` Guo Dong
  0 siblings, 1 reply; 13+ messages in thread
From: Ni, Ray @ 2022-03-01  1:27 UTC (permalink / raw)
  To: Rhodes, Sean; +Cc: devel@edk2.groups.io, Dong, Guo, Ma, Maurice, You, Benjamin

[-- Attachment #1: Type: text/plain, Size: 8335 bytes --]

Reviewed-by: Ray Ni <ray.ni@Intel.com>

From: Sean Rhodes <sean@starlabs.systems>
Sent: Wednesday, February 23, 2022 3:22 AM
To: Ni, Ray <ray.ni@intel.com>
Cc: devel@edk2.groups.io; Dong, Guo <guo.dong@intel.com>; Ma, Maurice <maurice.ma@intel.com>; You, Benjamin <benjamin.you@intel.com>
Subject: Re: [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable

True - but the experience is better with F2 (on "normal" computers/non-Chromebooks).

We've got a lot of feedback, and for most, people turn on their computers and start tapping Escape when they want Grub. If it's mapped, this gets intercepted by UiApp. Even if they exit, with BGRT in the equation, it requires fairly precise timing to access Grub.

On Tue, 22 Feb 2022 at 04:59, Ni, Ray <ray.ni@intel.com<mailto:ray.ni@intel.com>> wrote:
Grub runs later. Then what does “conflict” mean?

From: Sean Rhodes <sean@starlabs.systems<mailto:sean@starlabs.systems>>
Sent: Monday, February 21, 2022 3:48 PM
To: Ni, Ray <ray.ni@intel.com<mailto:ray.ni@intel.com>>
Cc: devel@edk2.groups.io<mailto:devel@edk2.groups.io>; Dong, Guo <guo.dong@intel.com<mailto:guo.dong@intel.com>>; Ma, Maurice <maurice.ma@intel.com<mailto:maurice.ma@intel.com>>; You, Benjamin <benjamin.you@intel.com<mailto:benjamin.you@intel.com>>
Subject: Re: [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable

We would prefer to keep PCD, as Esc can conflict with Grub on normal (not Chromebook) devices

Thank you

On Mon, 21 Feb 2022 at 05:26, Ni, Ray <ray.ni@intel.com<mailto:ray.ni@intel.com>> wrote:
Can you just map both ESC and F2 to the UI? So that PCD is not needed.

Thanks,
Ray

-----Original Message-----
From: Sean Rhodes <sean@starlabs.systems<mailto:sean@starlabs.systems>>
Sent: Monday, February 21, 2022 5:39 AM
To: devel@edk2.groups.io<mailto:devel@edk2.groups.io>
Cc: Dong, Guo <guo.dong@intel.com<mailto:guo.dong@intel.com>>; Rhodes, Sean <sean@starlabs.systems<mailto:sean@starlabs.systems>>; Ni, Ray <ray.ni@intel.com<mailto:ray.ni@intel.com>>; Ma, Maurice <maurice.ma@intel.com<mailto:maurice.ma@intel.com>>; You, Benjamin <benjamin.you@intel.com<mailto:benjamin.you@intel.com>>
Subject: [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable

Provide a build option to use [Esc] instead of [F2] for devices
such as Chromebooks that don't have F-keys.

Cc: Guo Dong <guo.dong@intel.com<mailto:guo.dong@intel.com>>
Cc: Ray Ni <ray.ni@intel.com<mailto:ray.ni@intel.com>>
Cc: Maurice Ma <maurice.ma@intel.com<mailto:maurice.ma@intel.com>>
Cc: Benjamin You <benjamin.you@intel.com<mailto:benjamin.you@intel.com>>
Signed-off-by: Sean Rhodes <sean@starlabs.systems<mailto:sean@starlabs.systems>>
---
 .../Library/BrotliCustomDecompressLib/brotli  |  2 +-
 .../PlatformBootManager.c                     | 44 +++++++++++++------
 .../PlatformBootManagerLib.inf                |  1 +
 UefiPayloadPkg/UefiPayloadPkg.dec             |  3 ++
 UefiPayloadPkg/UefiPayloadPkg.dsc             |  3 ++
 5 files changed, 39 insertions(+), 14 deletions(-)

diff --git a/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli b/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
index f4153a09f8..666c3280cc 160000
--- a/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
+++ b/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
@@ -1 +1 @@
-Subproject commit f4153a09f87cbb9c826d8fc12c74642bb2d879ea
+Subproject commit 666c3280cc11dc433c303d79a83d4ffbdd12cc8d
diff --git a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
index a8ead775ea..0eb577313a 100644
--- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
+++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
@@ -164,7 +164,7 @@ PlatformBootManagerBeforeConsole (
   )

 {

   EFI_INPUT_KEY                 Enter;

-  EFI_INPUT_KEY                 F2;

+  EFI_INPUT_KEY                 CustomKey;

   EFI_INPUT_KEY                 Down;

   EFI_BOOT_MANAGER_LOAD_OPTION  BootOption;

   EFI_STATUS                    Status;

@@ -186,13 +186,22 @@ PlatformBootManagerBeforeConsole (
   Enter.UnicodeChar = CHAR_CARRIAGE_RETURN;

   EfiBootManagerRegisterContinueKeyOption (0, &Enter, NULL);



-  //

-  // Map F2 to Boot Manager Menu

-  //

-  F2.ScanCode    = SCAN_F2;

-  F2.UnicodeChar = CHAR_NULL;

+  if (FixedPcdGetBool (PcdBootManagerEscape)) {

+    //

+    // Map Esc to Boot Manager Menu

+    //

+    CustomKey.ScanCode    = SCAN_ESC;

+    CustomKey.UnicodeChar = CHAR_NULL;

+  } else {

+    //

+    // Map Esc to Boot Manager Menu

+    //

+    CustomKey.ScanCode    = SCAN_F2;

+    CustomKey.UnicodeChar = CHAR_NULL;

+  }

+

   EfiBootManagerGetBootManagerMenu (&BootOption);

-  EfiBootManagerAddKeyOptionVariable (NULL, (UINT16)BootOption.OptionNumber, 0, &F2, NULL);

+  EfiBootManagerAddKeyOptionVariable (NULL, (UINT16)BootOption.OptionNumber, 0, &CustomKey, NULL);



   //

   // Also add Down key to Boot Manager Menu since some serial terminals don't support F2 key.

@@ -251,12 +260,21 @@ PlatformBootManagerAfterConsole (
   //

   PlatformRegisterFvBootOption (PcdGetPtr (PcdShellFile), L"UEFI Shell", LOAD_OPTION_ACTIVE);



-  Print (

-    L"\n"

-    L"F2 or Down      to enter Boot Manager Menu.\n"

-    L"ENTER           to boot directly.\n"

-    L"\n"

-    );

+  if (FixedPcdGetBool (PcdBootManagerEscape)) {

+    Print (

+      L"\n"

+      L"Esc or Down      to enter Boot Manager Menu.\n"

+      L"ENTER           to boot directly.\n"

+      L"\n"

+      );

+  } else {

+    Print (

+      L"\n"

+      L"F2 or Down      to enter Boot Manager Menu.\n"

+      L"ENTER           to boot directly.\n"

+      L"\n"

+      );

+  }

 }



 /**

diff --git a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
index 9c4a9da943..80390e0d98 100644
--- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
+++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
@@ -73,3 +73,4 @@
   gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity

   gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits

   gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile

+  gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape

diff --git a/UefiPayloadPkg/UefiPayloadPkg.dec b/UefiPayloadPkg/UefiPayloadPkg.dec
index 551f0a4915..f2fcdf6a74 100644
--- a/UefiPayloadPkg/UefiPayloadPkg.dec
+++ b/UefiPayloadPkg/UefiPayloadPkg.dec
@@ -83,6 +83,9 @@ gUefiPayloadPkgTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x04000000|UINT32|0x


 gUefiPayloadPkgTokenSpaceGuid.PcdPcdDriverFile|{ 0x57, 0x72, 0xcf, 0x80, 0xab, 0x87, 0xf9, 0x47, 0xa3, 0xfe, 0xD5, 0x0B, 0x76, 0xd8, 0x95, 0x41 }|VOID*|0x00000018



+# Boot Manager Key

+gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape|FALSE|BOOLEAN|0x00000020

+

 ## FFS filename to find the default variable initial data file.

 # @Prompt FFS Name of variable initial data file

  gUefiPayloadPkgTokenSpaceGuid.PcdNvsDataFile |{ 0x1a, 0xf1, 0xb1, 0xae, 0x42, 0xcc, 0xcf, 0x4e, 0xac, 0x60, 0xdb, 0xab, 0xf6, 0xca, 0x69, 0xe6 }|VOID*|0x00000025

diff --git a/UefiPayloadPkg/UefiPayloadPkg.dsc b/UefiPayloadPkg/UefiPayloadPkg.dsc
index 1ce96a51c1..ee9680a2b7 100644
--- a/UefiPayloadPkg/UefiPayloadPkg.dsc
+++ b/UefiPayloadPkg/UefiPayloadPkg.dsc
@@ -33,6 +33,7 @@
   DEFINE UNIVERSAL_PAYLOAD            = FALSE

   DEFINE SECURITY_STUB_ENABLE         = TRUE

   DEFINE SMM_SUPPORT                  = FALSE

+  DEFINE BOOT_MANAGER_ESCAPE          = FALSE

   #

   # SBL:      UEFI payload for Slim Bootloader

   # COREBOOT: UEFI payload for coreboot

@@ -399,6 +400,8 @@
   gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask       | 0x1

 !endif



+  gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape|$(BOOT_MANAGER_ESCAPE)

+

 [PcdsPatchableInModule.X64]

   gPcAtChipsetPkgTokenSpaceGuid.PcdRtcIndexRegister|$(RTC_INDEX_REGISTER)

   gPcAtChipsetPkgTokenSpaceGuid.PcdRtcTargetRegister|$(RTC_TARGET_REGISTER)

--
2.32.0

[-- Attachment #2: Type: text/html, Size: 15912 bytes --]

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

* Re: [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable
  2022-03-01  1:27         ` Ni, Ray
@ 2022-03-05  3:47           ` Guo Dong
  0 siblings, 0 replies; 13+ messages in thread
From: Guo Dong @ 2022-03-05  3:47 UTC (permalink / raw)
  To: Ni, Ray, Rhodes, Sean; +Cc: devel@edk2.groups.io, Ma, Maurice, You, Benjamin

[-- Attachment #1: Type: text/plain, Size: 8961 bytes --]


Could you re-send the patch without  .../Library/BrotliCustomDecompressLib/brotli?

Thanks,
Guo

From: Ni, Ray <ray.ni@intel.com>
Sent: Monday, February 28, 2022 6:28 PM
To: Rhodes, Sean <sean@starlabs.systems>
Cc: devel@edk2.groups.io; Dong, Guo <guo.dong@intel.com>; Ma, Maurice <maurice.ma@intel.com>; You, Benjamin <benjamin.you@intel.com>
Subject: RE: [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable

Reviewed-by: Ray Ni <ray.ni@Intel.com<mailto:ray.ni@Intel.com>>

From: Sean Rhodes <sean@starlabs.systems<mailto:sean@starlabs.systems>>
Sent: Wednesday, February 23, 2022 3:22 AM
To: Ni, Ray <ray.ni@intel.com<mailto:ray.ni@intel.com>>
Cc: devel@edk2.groups.io<mailto:devel@edk2.groups.io>; Dong, Guo <guo.dong@intel.com<mailto:guo.dong@intel.com>>; Ma, Maurice <maurice.ma@intel.com<mailto:maurice.ma@intel.com>>; You, Benjamin <benjamin.you@intel.com<mailto:benjamin.you@intel.com>>
Subject: Re: [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable

True - but the experience is better with F2 (on "normal" computers/non-Chromebooks).

We've got a lot of feedback, and for most, people turn on their computers and start tapping Escape when they want Grub. If it's mapped, this gets intercepted by UiApp. Even if they exit, with BGRT in the equation, it requires fairly precise timing to access Grub.

On Tue, 22 Feb 2022 at 04:59, Ni, Ray <ray.ni@intel.com<mailto:ray.ni@intel.com>> wrote:
Grub runs later. Then what does “conflict” mean?

From: Sean Rhodes <sean@starlabs.systems<mailto:sean@starlabs.systems>>
Sent: Monday, February 21, 2022 3:48 PM
To: Ni, Ray <ray.ni@intel.com<mailto:ray.ni@intel.com>>
Cc: devel@edk2.groups.io<mailto:devel@edk2.groups.io>; Dong, Guo <guo.dong@intel.com<mailto:guo.dong@intel.com>>; Ma, Maurice <maurice.ma@intel.com<mailto:maurice.ma@intel.com>>; You, Benjamin <benjamin.you@intel.com<mailto:benjamin.you@intel.com>>
Subject: Re: [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable

We would prefer to keep PCD, as Esc can conflict with Grub on normal (not Chromebook) devices

Thank you

On Mon, 21 Feb 2022 at 05:26, Ni, Ray <ray.ni@intel.com<mailto:ray.ni@intel.com>> wrote:
Can you just map both ESC and F2 to the UI? So that PCD is not needed.

Thanks,
Ray

-----Original Message-----
From: Sean Rhodes <sean@starlabs.systems<mailto:sean@starlabs.systems>>
Sent: Monday, February 21, 2022 5:39 AM
To: devel@edk2.groups.io<mailto:devel@edk2.groups.io>
Cc: Dong, Guo <guo.dong@intel.com<mailto:guo.dong@intel.com>>; Rhodes, Sean <sean@starlabs.systems<mailto:sean@starlabs.systems>>; Ni, Ray <ray.ni@intel.com<mailto:ray.ni@intel.com>>; Ma, Maurice <maurice.ma@intel.com<mailto:maurice.ma@intel.com>>; You, Benjamin <benjamin.you@intel.com<mailto:benjamin.you@intel.com>>
Subject: [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable

Provide a build option to use [Esc] instead of [F2] for devices
such as Chromebooks that don't have F-keys.

Cc: Guo Dong <guo.dong@intel.com<mailto:guo.dong@intel.com>>
Cc: Ray Ni <ray.ni@intel.com<mailto:ray.ni@intel.com>>
Cc: Maurice Ma <maurice.ma@intel.com<mailto:maurice.ma@intel.com>>
Cc: Benjamin You <benjamin.you@intel.com<mailto:benjamin.you@intel.com>>
Signed-off-by: Sean Rhodes <sean@starlabs.systems<mailto:sean@starlabs.systems>>
---
 .../Library/BrotliCustomDecompressLib/brotli  |  2 +-
 .../PlatformBootManager.c                     | 44 +++++++++++++------
 .../PlatformBootManagerLib.inf                |  1 +
 UefiPayloadPkg/UefiPayloadPkg.dec             |  3 ++
 UefiPayloadPkg/UefiPayloadPkg.dsc             |  3 ++
 5 files changed, 39 insertions(+), 14 deletions(-)

diff --git a/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli b/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
index f4153a09f8..666c3280cc 160000
--- a/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
+++ b/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
@@ -1 +1 @@
-Subproject commit f4153a09f87cbb9c826d8fc12c74642bb2d879ea
+Subproject commit 666c3280cc11dc433c303d79a83d4ffbdd12cc8d
diff --git a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
index a8ead775ea..0eb577313a 100644
--- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
+++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
@@ -164,7 +164,7 @@ PlatformBootManagerBeforeConsole (
   )

 {

   EFI_INPUT_KEY                 Enter;

-  EFI_INPUT_KEY                 F2;

+  EFI_INPUT_KEY                 CustomKey;

   EFI_INPUT_KEY                 Down;

   EFI_BOOT_MANAGER_LOAD_OPTION  BootOption;

   EFI_STATUS                    Status;

@@ -186,13 +186,22 @@ PlatformBootManagerBeforeConsole (
   Enter.UnicodeChar = CHAR_CARRIAGE_RETURN;

   EfiBootManagerRegisterContinueKeyOption (0, &Enter, NULL);



-  //

-  // Map F2 to Boot Manager Menu

-  //

-  F2.ScanCode    = SCAN_F2;

-  F2.UnicodeChar = CHAR_NULL;

+  if (FixedPcdGetBool (PcdBootManagerEscape)) {

+    //

+    // Map Esc to Boot Manager Menu

+    //

+    CustomKey.ScanCode    = SCAN_ESC;

+    CustomKey.UnicodeChar = CHAR_NULL;

+  } else {

+    //

+    // Map Esc to Boot Manager Menu

+    //

+    CustomKey.ScanCode    = SCAN_F2;

+    CustomKey.UnicodeChar = CHAR_NULL;

+  }

+

   EfiBootManagerGetBootManagerMenu (&BootOption);

-  EfiBootManagerAddKeyOptionVariable (NULL, (UINT16)BootOption.OptionNumber, 0, &F2, NULL);

+  EfiBootManagerAddKeyOptionVariable (NULL, (UINT16)BootOption.OptionNumber, 0, &CustomKey, NULL);



   //

   // Also add Down key to Boot Manager Menu since some serial terminals don't support F2 key.

@@ -251,12 +260,21 @@ PlatformBootManagerAfterConsole (
   //

   PlatformRegisterFvBootOption (PcdGetPtr (PcdShellFile), L"UEFI Shell", LOAD_OPTION_ACTIVE);



-  Print (

-    L"\n"

-    L"F2 or Down      to enter Boot Manager Menu.\n"

-    L"ENTER           to boot directly.\n"

-    L"\n"

-    );

+  if (FixedPcdGetBool (PcdBootManagerEscape)) {

+    Print (

+      L"\n"

+      L"Esc or Down      to enter Boot Manager Menu.\n"

+      L"ENTER           to boot directly.\n"

+      L"\n"

+      );

+  } else {

+    Print (

+      L"\n"

+      L"F2 or Down      to enter Boot Manager Menu.\n"

+      L"ENTER           to boot directly.\n"

+      L"\n"

+      );

+  }

 }



 /**

diff --git a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
index 9c4a9da943..80390e0d98 100644
--- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
+++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
@@ -73,3 +73,4 @@
   gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity

   gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits

   gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile

+  gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape

diff --git a/UefiPayloadPkg/UefiPayloadPkg.dec b/UefiPayloadPkg/UefiPayloadPkg.dec
index 551f0a4915..f2fcdf6a74 100644
--- a/UefiPayloadPkg/UefiPayloadPkg.dec
+++ b/UefiPayloadPkg/UefiPayloadPkg.dec
@@ -83,6 +83,9 @@ gUefiPayloadPkgTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x04000000|UINT32|0x


 gUefiPayloadPkgTokenSpaceGuid.PcdPcdDriverFile|{ 0x57, 0x72, 0xcf, 0x80, 0xab, 0x87, 0xf9, 0x47, 0xa3, 0xfe, 0xD5, 0x0B, 0x76, 0xd8, 0x95, 0x41 }|VOID*|0x00000018



+# Boot Manager Key

+gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape|FALSE|BOOLEAN|0x00000020

+

 ## FFS filename to find the default variable initial data file.

 # @Prompt FFS Name of variable initial data file

  gUefiPayloadPkgTokenSpaceGuid.PcdNvsDataFile |{ 0x1a, 0xf1, 0xb1, 0xae, 0x42, 0xcc, 0xcf, 0x4e, 0xac, 0x60, 0xdb, 0xab, 0xf6, 0xca, 0x69, 0xe6 }|VOID*|0x00000025

diff --git a/UefiPayloadPkg/UefiPayloadPkg.dsc b/UefiPayloadPkg/UefiPayloadPkg.dsc
index 1ce96a51c1..ee9680a2b7 100644
--- a/UefiPayloadPkg/UefiPayloadPkg.dsc
+++ b/UefiPayloadPkg/UefiPayloadPkg.dsc
@@ -33,6 +33,7 @@
   DEFINE UNIVERSAL_PAYLOAD            = FALSE

   DEFINE SECURITY_STUB_ENABLE         = TRUE

   DEFINE SMM_SUPPORT                  = FALSE

+  DEFINE BOOT_MANAGER_ESCAPE          = FALSE

   #

   # SBL:      UEFI payload for Slim Bootloader

   # COREBOOT: UEFI payload for coreboot

@@ -399,6 +400,8 @@
   gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask       | 0x1

 !endif



+  gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape|$(BOOT_MANAGER_ESCAPE)

+

 [PcdsPatchableInModule.X64]

   gPcAtChipsetPkgTokenSpaceGuid.PcdRtcIndexRegister|$(RTC_INDEX_REGISTER)

   gPcAtChipsetPkgTokenSpaceGuid.PcdRtcTargetRegister|$(RTC_TARGET_REGISTER)

--
2.32.0

[-- Attachment #2: Type: text/html, Size: 17157 bytes --]

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

* [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable
@ 2022-03-05 10:14 Sean Rhodes
  2022-03-07 20:23 ` Guo Dong
  0 siblings, 1 reply; 13+ messages in thread
From: Sean Rhodes @ 2022-03-05 10:14 UTC (permalink / raw)
  To: devel; +Cc: Sean Rhodes, Guo Dong, Ray Ni, Maurice Ma, Benjamin You

Provide a build option to use [Esc] instead of [F2] for devices
such as Chromebooks that don't have F-keys.

Cc: Guo Dong <guo.dong@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Maurice Ma <maurice.ma@intel.com>
Cc: Benjamin You <benjamin.you@intel.com>
Signed-off-by: Sean Rhodes <sean@starlabs.systems>
---
 .../PlatformBootManager.c                     | 44 +++++++++++++------
 .../PlatformBootManagerLib.inf                |  1 +
 UefiPayloadPkg/UefiPayloadPkg.dec             |  3 ++
 UefiPayloadPkg/UefiPayloadPkg.dsc             |  2 +
 4 files changed, 37 insertions(+), 13 deletions(-)

diff --git a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
index a8ead775ea..0eb577313a 100644
--- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
+++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
@@ -164,7 +164,7 @@ PlatformBootManagerBeforeConsole (
   )
 {
   EFI_INPUT_KEY                 Enter;
-  EFI_INPUT_KEY                 F2;
+  EFI_INPUT_KEY                 CustomKey;
   EFI_INPUT_KEY                 Down;
   EFI_BOOT_MANAGER_LOAD_OPTION  BootOption;
   EFI_STATUS                    Status;
@@ -186,13 +186,22 @@ PlatformBootManagerBeforeConsole (
   Enter.UnicodeChar = CHAR_CARRIAGE_RETURN;
   EfiBootManagerRegisterContinueKeyOption (0, &Enter, NULL);
 
-  //
-  // Map F2 to Boot Manager Menu
-  //
-  F2.ScanCode    = SCAN_F2;
-  F2.UnicodeChar = CHAR_NULL;
+  if (FixedPcdGetBool (PcdBootManagerEscape)) {
+    //
+    // Map Esc to Boot Manager Menu
+    //
+    CustomKey.ScanCode    = SCAN_ESC;
+    CustomKey.UnicodeChar = CHAR_NULL;
+  } else {
+    //
+    // Map Esc to Boot Manager Menu
+    //
+    CustomKey.ScanCode    = SCAN_F2;
+    CustomKey.UnicodeChar = CHAR_NULL;
+  }
+
   EfiBootManagerGetBootManagerMenu (&BootOption);
-  EfiBootManagerAddKeyOptionVariable (NULL, (UINT16)BootOption.OptionNumber, 0, &F2, NULL);
+  EfiBootManagerAddKeyOptionVariable (NULL, (UINT16)BootOption.OptionNumber, 0, &CustomKey, NULL);
 
   //
   // Also add Down key to Boot Manager Menu since some serial terminals don't support F2 key.
@@ -251,12 +260,21 @@ PlatformBootManagerAfterConsole (
   //
   PlatformRegisterFvBootOption (PcdGetPtr (PcdShellFile), L"UEFI Shell", LOAD_OPTION_ACTIVE);
 
-  Print (
-    L"\n"
-    L"F2 or Down      to enter Boot Manager Menu.\n"
-    L"ENTER           to boot directly.\n"
-    L"\n"
-    );
+  if (FixedPcdGetBool (PcdBootManagerEscape)) {
+    Print (
+      L"\n"
+      L"Esc or Down      to enter Boot Manager Menu.\n"
+      L"ENTER           to boot directly.\n"
+      L"\n"
+      );
+  } else {
+    Print (
+      L"\n"
+      L"F2 or Down      to enter Boot Manager Menu.\n"
+      L"ENTER           to boot directly.\n"
+      L"\n"
+      );
+  }
 }
 
 /**
diff --git a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
index 9c4a9da943..80390e0d98 100644
--- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
+++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
@@ -73,3 +73,4 @@
   gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity
   gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits
   gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile
+  gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape
diff --git a/UefiPayloadPkg/UefiPayloadPkg.dec b/UefiPayloadPkg/UefiPayloadPkg.dec
index e9204d1168..4051172caf 100644
--- a/UefiPayloadPkg/UefiPayloadPkg.dec
+++ b/UefiPayloadPkg/UefiPayloadPkg.dec
@@ -86,6 +86,9 @@ gUefiPayloadPkgTokenSpaceGuid.PcdPcdDriverFile|{ 0x57, 0x72, 0xcf, 0x80, 0xab, 0
 # Above 4G Memory
 gUefiPayloadPkgTokenSpaceGuid.PcdDispatchModuleAbove4GMemory|TRUE|BOOLEAN|0x00000019
 
+# Boot Manager Key
+gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape|FALSE|BOOLEAN|0x00000020
+
 ## FFS filename to find the default variable initial data file.
 # @Prompt FFS Name of variable initial data file
  gUefiPayloadPkgTokenSpaceGuid.PcdNvsDataFile |{ 0x1a, 0xf1, 0xb1, 0xae, 0x42, 0xcc, 0xcf, 0x4e, 0xac, 0x60, 0xdb, 0xab, 0xf6, 0xca, 0x69, 0xe6 }|VOID*|0x00000025
diff --git a/UefiPayloadPkg/UefiPayloadPkg.dsc b/UefiPayloadPkg/UefiPayloadPkg.dsc
index 4fe81a61d6..558513baf1 100644
--- a/UefiPayloadPkg/UefiPayloadPkg.dsc
+++ b/UefiPayloadPkg/UefiPayloadPkg.dsc
@@ -34,6 +34,7 @@
   DEFINE SECURITY_STUB_ENABLE         = TRUE
   DEFINE SMM_SUPPORT                  = FALSE
   DEFINE ABOVE_4G_MEMORY              = TRUE
+  DEFINE BOOT_MANAGER_ESCAPE          = FALSE
   #
   # SBL:      UEFI payload for Slim Bootloader
   # COREBOOT: UEFI payload for coreboot
@@ -401,6 +402,7 @@
 !endif
 
   gUefiPayloadPkgTokenSpaceGuid.PcdDispatchModuleAbove4GMemory|$(ABOVE_4G_MEMORY)
+  gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape|$(BOOT_MANAGER_ESCAPE)
 
 [PcdsPatchableInModule.X64]
   gPcAtChipsetPkgTokenSpaceGuid.PcdRtcIndexRegister|$(RTC_INDEX_REGISTER)
-- 
2.32.0


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

* Re: [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable
  2022-03-05 10:14 Sean Rhodes
@ 2022-03-07 20:23 ` Guo Dong
  0 siblings, 0 replies; 13+ messages in thread
From: Guo Dong @ 2022-03-07 20:23 UTC (permalink / raw)
  To: Rhodes, Sean, devel@edk2.groups.io
  Cc: Rhodes, Sean, Ni, Ray, Ma, Maurice, You, Benjamin


Reviewed-by: Guo Dong <guo.dong@intel.com>

-----Original Message-----
From: Sean Rhodes <sean@starlabs.systems> 
Sent: Saturday, March 5, 2022 3:15 AM
To: devel@edk2.groups.io
Cc: Rhodes, Sean <sean@starlabs.systems>; Dong, Guo <guo.dong@intel.com>; Ni, Ray <ray.ni@intel.com>; Ma, Maurice <maurice.ma@intel.com>; You, Benjamin <benjamin.you@intel.com>
Subject: [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable

Provide a build option to use [Esc] instead of [F2] for devices such as Chromebooks that don't have F-keys.

Cc: Guo Dong <guo.dong@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Maurice Ma <maurice.ma@intel.com>
Cc: Benjamin You <benjamin.you@intel.com>
Signed-off-by: Sean Rhodes <sean@starlabs.systems>
---
 .../PlatformBootManager.c                     | 44 +++++++++++++------
 .../PlatformBootManagerLib.inf                |  1 +
 UefiPayloadPkg/UefiPayloadPkg.dec             |  3 ++
 UefiPayloadPkg/UefiPayloadPkg.dsc             |  2 +
 4 files changed, 37 insertions(+), 13 deletions(-)

diff --git a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
index a8ead775ea..0eb577313a 100644
--- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
+++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.
+++ c
@@ -164,7 +164,7 @@ PlatformBootManagerBeforeConsole (
   ) {   EFI_INPUT_KEY                 Enter;-  EFI_INPUT_KEY                 F2;+  EFI_INPUT_KEY                 CustomKey;   EFI_INPUT_KEY                 Down;   EFI_BOOT_MANAGER_LOAD_OPTION  BootOption;   EFI_STATUS                    Status;@@ -186,13 +186,22 @@ PlatformBootManagerBeforeConsole (
   Enter.UnicodeChar = CHAR_CARRIAGE_RETURN;   EfiBootManagerRegisterContinueKeyOption (0, &Enter, NULL); -  //-  // Map F2 to Boot Manager Menu-  //-  F2.ScanCode    = SCAN_F2;-  F2.UnicodeChar = CHAR_NULL;+  if (FixedPcdGetBool (PcdBootManagerEscape)) {+    //+    // Map Esc to Boot Manager Menu+    //+    CustomKey.ScanCode    = SCAN_ESC;+    CustomKey.UnicodeChar = CHAR_NULL;+  } else {+    //+    // Map Esc to Boot Manager Menu+    //+    CustomKey.ScanCode    = SCAN_F2;+    CustomKey.UnicodeChar = CHAR_NULL;+  }+   EfiBootManagerGetBootManagerMenu (&BootOption);-  EfiBootManagerAddKeyOptionVariable (NULL, (UINT16)BootOption.OptionNumber, 0, &F2, NULL);+  EfiBootManagerAddKeyOptionVariable (NULL, (UINT16)BootOption.OptionNumber, 0, &CustomKey, NULL);    //   // Also add Down key to Boot Manager Menu since some serial terminals don't support F2 key.@@ -251,12 +260,21 @@ PlatformBootManagerAfterConsole (
   //   PlatformRegisterFvBootOption (PcdGetPtr (PcdShellFile), L"UEFI Shell", LOAD_OPTION_ACTIVE); -  Print (-    L"\n"-    L"F2 or Down      to enter Boot Manager Menu.\n"-    L"ENTER           to boot directly.\n"-    L"\n"-    );+  if (FixedPcdGetBool (PcdBootManagerEscape)) {+    Print (+      L"\n"+      L"Esc or Down      to enter Boot Manager Menu.\n"+      L"ENTER           to boot directly.\n"+      L"\n"+      );+  } else {+    Print (+      L"\n"+      L"F2 or Down      to enter Boot Manager Menu.\n"+      L"ENTER           to boot directly.\n"+      L"\n"+      );+  } }  /**diff --git a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
index 9c4a9da943..80390e0d98 100644
--- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
+++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerL
+++ ib.inf
@@ -73,3 +73,4 @@
   gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity   gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits   gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile+  gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscapediff --git a/UefiPayloadPkg/UefiPayloadPkg.dec b/UefiPayloadPkg/UefiPayloadPkg.dec
index e9204d1168..4051172caf 100644
--- a/UefiPayloadPkg/UefiPayloadPkg.dec
+++ b/UefiPayloadPkg/UefiPayloadPkg.dec
@@ -86,6 +86,9 @@ gUefiPayloadPkgTokenSpaceGuid.PcdPcdDriverFile|{ 0x57, 0x72, 0xcf, 0x80, 0xab, 0  # Above 4G Memory gUefiPayloadPkgTokenSpaceGuid.PcdDispatchModuleAbove4GMemory|TRUE|BOOLEAN|0x00000019 +# Boot Manager Key+gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape|FALSE|BOOLEAN|0x00000020+ ## FFS filename to find the default variable initial data file. # @Prompt FFS Name of variable initial data file  gUefiPayloadPkgTokenSpaceGuid.PcdNvsDataFile |{ 0x1a, 0xf1, 0xb1, 0xae, 0x42, 0xcc, 0xcf, 0x4e, 0xac, 0x60, 0xdb, 0xab, 0xf6, 0xca, 0x69, 0xe6 }|VOID*|0x00000025diff --git a/UefiPayloadPkg/UefiPayloadPkg.dsc b/UefiPayloadPkg/UefiPayloadPkg.dsc
index 4fe81a61d6..558513baf1 100644
--- a/UefiPayloadPkg/UefiPayloadPkg.dsc
+++ b/UefiPayloadPkg/UefiPayloadPkg.dsc
@@ -34,6 +34,7 @@
   DEFINE SECURITY_STUB_ENABLE         = TRUE   DEFINE SMM_SUPPORT                  = FALSE   DEFINE ABOVE_4G_MEMORY              = TRUE+  DEFINE BOOT_MANAGER_ESCAPE          = FALSE   #   # SBL:      UEFI payload for Slim Bootloader   # COREBOOT: UEFI payload for coreboot@@ -401,6 +402,7 @@
 !endif    gUefiPayloadPkgTokenSpaceGuid.PcdDispatchModuleAbove4GMemory|$(ABOVE_4G_MEMORY)+  gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape|$(BOOT_MANAGER_ESCAPE)  [PcdsPatchableInModule.X64]   gPcAtChipsetPkgTokenSpaceGuid.PcdRtcIndexRegister|$(RTC_INDEX_REGISTER)-- 
2.32.0


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

* Re: [edk2-devel] [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable
  2022-02-03 16:26 [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable Sean Rhodes
@ 2022-03-31  8:29 ` Sheng Lean Tan
  0 siblings, 0 replies; 13+ messages in thread
From: Sheng Lean Tan @ 2022-03-31  8:29 UTC (permalink / raw)
  To: Sean Rhodes, devel

[-- Attachment #1: Type: text/plain, Size: 56 bytes --]

Merged:

https://github.com/tianocore/edk2/pull/2596

[-- Attachment #2: Type: text/html, Size: 68 bytes --]

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

end of thread, other threads:[~2022-03-31  8:29 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-02-03 16:26 [PATCH] UefiPayloadPkg: Make Boot Manager Key configurable Sean Rhodes
2022-03-31  8:29 ` [edk2-devel] " Sheng Lean Tan
  -- strict thread matches above, loose matches on Subject: below --
2022-03-05 10:14 Sean Rhodes
2022-03-07 20:23 ` Guo Dong
2022-02-20 21:39 Sean Rhodes
2022-02-21  5:26 ` Ni, Ray
2022-02-21  7:48   ` Sean Rhodes
2022-02-22  4:59     ` Ni, Ray
2022-02-22 19:21       ` Sean Rhodes
2022-03-01  1:27         ` Ni, Ray
2022-03-05  3:47           ` Guo Dong
2022-02-20 17:49 Sean Rhodes
2022-02-02  7:16 Sean Rhodes

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