diff --git a/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.c b/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.c index adb14a7568..799211118e 100644 --- a/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.c +++ b/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.c @@ -86,7 +86,7 @@ TERMINAL_DEV mTerminalDevTemplate = { NULL, // ControllerNameTable NULL, // TimerEvent - NULL, // TwoSecondTimeOut + NULL, // EscapeTimeout INPUT_STATE_DEFAULT, RESET_STATE_DEFAULT, { @@ -359,7 +359,7 @@ StopTerminalStateMachine ( OriginalTpl = gBS->RaiseTPL (TPL_NOTIFY); gBS->CloseEvent (TerminalDevice->TimerEvent); - gBS->CloseEvent (TerminalDevice->TwoSecondTimeOut); + gBS->CloseEvent (TerminalDevice->EscapeTimeout); gBS->RestoreTPL (OriginalTpl); } @@ -397,7 +397,7 @@ StartTerminalStateMachine ( TPL_CALLBACK, NULL, NULL, - &TerminalDevice->TwoSecondTimeOut + &TerminalDevice->EscapeTimeout ); ASSERT_EFI_ERROR (Status); } diff --git a/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.h b/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.h index 4238f8420e..08a23db41e 100644 --- a/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.h +++ b/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.h @@ -103,7 +103,7 @@ typedef struct { EFI_KEY_FIFO *EfiKeyFiFoForNotify; EFI_UNICODE_STRING_TABLE *ControllerNameTable; EFI_EVENT TimerEvent; - EFI_EVENT TwoSecondTimeOut; + EFI_EVENT EscapeTimeout; UINT32 InputState; UINT32 ResetState; UINT16 TtyEscapeStr[3]; diff --git a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c index 2286264b29..a0e271c451 100644 --- a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c +++ b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c @@ -1238,7 +1238,7 @@ UnicodeToEfiKeyFlushState ( // Cancel the timer. // gBS->SetTimer ( - TerminalDevice->TwoSecondTimeOut, + TerminalDevice->EscapeTimeout, TimerCancel, 0 ); @@ -1345,7 +1345,7 @@ UnicodeToEfiKey ( EFI_INPUT_KEY Key; BOOLEAN SetDefaultResetState; - TimerStatus = gBS->CheckEvent (TerminalDevice->TwoSecondTimeOut); + TimerStatus = gBS->CheckEvent (TerminalDevice->EscapeTimeout); if (!EFI_ERROR (TimerStatus)) { UnicodeToEfiKeyFlushState (TerminalDevice); @@ -1357,7 +1357,7 @@ UnicodeToEfiKey ( // // Check to see if the 2 seconds timer has expired // - TimerStatus = gBS->CheckEvent (TerminalDevice->TwoSecondTimeOut); + TimerStatus = gBS->CheckEvent (TerminalDevice->EscapeTimeout); if (!EFI_ERROR (TimerStatus)) { UnicodeToEfiKeyFlushState (TerminalDevice); TerminalDevice->ResetState = RESET_STATE_DEFAULT; @@ -2092,9 +2092,9 @@ UnicodeToEfiKey ( if (TerminalDevice->InputState != INPUT_STATE_DEFAULT) { Status = gBS->SetTimer ( - TerminalDevice->TwoSecondTimeOut, + TerminalDevice->EscapeTimeout, TimerRelative, - (UINT64)20000000 + PcdGet64 (PcdEscapeTimeout) ); ASSERT_EFI_ERROR (Status); continue; diff --git a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf index fe7fce636f..a5dc77d5ad 100644 --- a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf +++ b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf @@ -87,6 +87,7 @@ [Pcd] gEfiMdePkgTokenSpaceGuid.PcdDefaultTerminalType ## SOMETIMES_CONSUMES + gEfiMdePkgTokenSpaceGuid.PcdEscapeTimeout ## CONSUMES gEfiMdeModulePkgTokenSpaceGuid.PcdErrorCodeSetVariable ## CONSUMES # [Event] diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec index 0459418906..9c2240b0cf 100644 --- a/MdePkg/MdePkg.dec +++ b/MdePkg/MdePkg.dec @@ -2510,5 +2510,9 @@ # @Prompt Memory encryption attribute gEfiMdePkgTokenSpaceGuid.PcdConfidentialComputingGuestAttr|0|UINT64|0x0000002e + ## This dynamic PCD configures the escape sequence delay after Escape keypress. + # @Prompt Escape sequence timeout + gEfiMdePkgTokenSpaceGuid.PcdEscapeTimeout|5000000|UINT64|0x0000002f + [UserExtensions.TianoCore."ExtraFiles"] MdePkgExtra.uni