MdeModulePkg/BdsDxe: Initialize gConnectConInEvent earlier

PlatformBootManagerBeforeConsole() might want to trigger this event
to connect ConIn so BdsDxe initializes this event before
PlatformBootManagerBeforeConsole().

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Sunny Wang <sunnywang@hpe.com>
Cc: Chao B Zhang <chao.b.zhang@intel.com>
diff --git a/MdeModulePkg/Universal/BdsDxe/BdsEntry.c b/MdeModulePkg/Universal/BdsDxe/BdsEntry.c
index 98b3931..b5e6ef6 100644
--- a/MdeModulePkg/Universal/BdsDxe/BdsEntry.c
+++ b/MdeModulePkg/Universal/BdsDxe/BdsEntry.c
@@ -874,6 +874,23 @@
     );

 

   //

+  // Initialize ConnectConIn event before calling platform code.

+  //

+  if (PcdGetBool (PcdConInConnectOnDemand)) {

+    Status = gBS->CreateEventEx (

+                    EVT_NOTIFY_SIGNAL,

+                    TPL_CALLBACK,

+                    BdsDxeOnConnectConInCallBack,

+                    NULL,

+                    &gConnectConInEventGuid,

+                    &gConnectConInEvent

+                    );

+    if (EFI_ERROR (Status)) {

+      gConnectConInEvent = NULL;

+    }

+  }

+

+  //

   // Do the platform init, can be customized by OEM/IBV

   // Possible things that can be done in PlatformBootManagerBeforeConsole:

   // > Update console variable: 1. include hot-plug devices; 2. Clear ConIn and add SOL for AMT

@@ -905,21 +922,9 @@
   if (PcdGetBool (PcdConInConnectOnDemand)) {

     EfiBootManagerConnectConsoleVariable (ConOut);

     EfiBootManagerConnectConsoleVariable (ErrOut);

-

     //

-    // Initialize ConnectConIn event

+    // Do not connect ConIn devices when lazy ConIn feature is ON.

     //

-    Status = gBS->CreateEventEx (

-                    EVT_NOTIFY_SIGNAL,

-                    TPL_CALLBACK,

-                    BdsDxeOnConnectConInCallBack,

-                    NULL,

-                    &gConnectConInEventGuid,

-                    &gConnectConInEvent

-                    );

-    if (EFI_ERROR (Status)) {

-      gConnectConInEvent = NULL;

-    }

   } else {

     EfiBootManagerConnectAllDefaultConsoles ();

   }