diff --git a/IntelFrameworkModulePkg/Csm/BiosThunk/KeyboardDxe/BiosKeyboard.c b/IntelFrameworkModulePkg/Csm/BiosThunk/KeyboardDxe/BiosKeyboard.c index ebf03d30c1..ec525891dc 100644 --- a/IntelFrameworkModulePkg/Csm/BiosThunk/KeyboardDxe/BiosKeyboard.c +++ b/IntelFrameworkModulePkg/Csm/BiosThunk/KeyboardDxe/BiosKeyboard.c @@ -1732,98 +1732,6 @@ CheckKeyboardConnect ( } } -/** - Disable NULL pointer detection. -**/ -VOID -DisableNullDetection ( - VOID - ) -{ - EFI_STATUS Status; - EFI_GCD_MEMORY_SPACE_DESCRIPTOR Desc; - - if ((PcdGet8 (PcdNullPointerDetectionPropertyMask) & BIT0) == 0) { - return; - } - - // - // Check current capabilities and attributes - // - Status = gDS->GetMemorySpaceDescriptor (0, &Desc); - ASSERT_EFI_ERROR (Status); - - // - // Try to add EFI_MEMORY_RP support if necessary - // - if ((Desc.Capabilities & EFI_MEMORY_RP) == 0) { - Desc.Capabilities |= EFI_MEMORY_RP; - Status = gDS->SetMemorySpaceCapabilities (0, EFI_PAGES_TO_SIZE(1), - Desc.Capabilities); - ASSERT_EFI_ERROR (Status); - if (EFI_ERROR (Status)) { - return; - } - } - - // - // Don't bother if EFI_MEMORY_RP is already cleared. - // - if ((Desc.Attributes & EFI_MEMORY_RP) != 0) { - Desc.Attributes &= ~EFI_MEMORY_RP; - Status = gDS->SetMemorySpaceAttributes (0, EFI_PAGES_TO_SIZE(1), - Desc.Attributes); - ASSERT_EFI_ERROR (Status); - } else { - DEBUG ((DEBUG_WARN, "!!! Page 0 is supposed to be disabled !!!\r\n")); - } -} - -/** - Enable NULL pointer detection. -**/ -VOID -EnableNullDetection ( - VOID - ) -{ - EFI_STATUS Status; - EFI_GCD_MEMORY_SPACE_DESCRIPTOR Desc; - - if ((PcdGet8 (PcdNullPointerDetectionPropertyMask) & BIT0) == 0) { - return; - } - - // - // Check current capabilities and attributes - // - Status = gDS->GetMemorySpaceDescriptor (0, &Desc); - ASSERT_EFI_ERROR (Status); - - // - // Try to add EFI_MEMORY_RP support if necessary - // - if ((Desc.Capabilities & EFI_MEMORY_RP) == 0) { - Desc.Capabilities |= EFI_MEMORY_RP; - Status = gDS->SetMemorySpaceCapabilities (0, EFI_PAGES_TO_SIZE(1), - Desc.Capabilities); - ASSERT_EFI_ERROR (Status); - if (EFI_ERROR (Status)) { - return; - } - } - - // - // Don't bother if EFI_MEMORY_RP is already set. - // - if ((Desc.Attributes & EFI_MEMORY_RP) == 0) { - Desc.Attributes |= EFI_MEMORY_RP; - Status = gDS->SetMemorySpaceAttributes (0, EFI_PAGES_TO_SIZE(1), - Desc.Attributes); - ASSERT_EFI_ERROR (Status); - } -} - /** Timer event handler: read a series of key stroke from 8042 and put them into memory key buffer. @@ -1931,16 +1839,13 @@ BiosKeyboardTimerHandler ( // 0 Right Shift pressed - // - // Disable NULL pointer detection temporarily - // - DisableNullDetection (); - // // Clear the CTRL and ALT BDA flag // - KbFlag1 = *((UINT8 *) (UINTN) 0x417); // read the STATUS FLAGS 1 - KbFlag2 = *((UINT8 *) (UINTN) 0x418); // read STATUS FLAGS 2 + ACCESS_PAGE0_CODE ( + KbFlag1 = *((UINT8 *) (UINTN) 0x417); // read the STATUS FLAGS 1 + KbFlag2 = *((UINT8 *) (UINTN) 0x418); // read STATUS FLAGS 2 + ); DEBUG_CODE ( { @@ -2008,15 +1913,12 @@ BiosKeyboardTimerHandler ( // // Clear left alt and left ctrl BDA flag // - KbFlag2 &= ~(KB_LEFT_ALT_PRESSED | KB_LEFT_CTRL_PRESSED); - *((UINT8 *) (UINTN) 0x418) = KbFlag2; - KbFlag1 &= ~0x0C; - *((UINT8 *) (UINTN) 0x417) = KbFlag1; - - // - // Restore NULL pointer detection - // - EnableNullDetection (); + ACCESS_PAGE0_CODE ( + KbFlag2 &= ~(KB_LEFT_ALT_PRESSED | KB_LEFT_CTRL_PRESSED); + *((UINT8 *) (UINTN) 0x418) = KbFlag2; + KbFlag1 &= ~0x0C; + *((UINT8 *) (UINTN) 0x417) = KbFlag1; + ); // // Output EFI input key and shift/toggle state diff --git a/IntelFrameworkModulePkg/Csm/BiosThunk/KeyboardDxe/KeyboardDxe.inf b/IntelFrameworkModulePkg/Csm/BiosThunk/KeyboardDxe/KeyboardDxe.inf index 596f4ced44..eaaedbfa9c 100644 --- a/IntelFrameworkModulePkg/Csm/BiosThunk/KeyboardDxe/KeyboardDxe.inf +++ b/IntelFrameworkModulePkg/Csm/BiosThunk/KeyboardDxe/KeyboardDxe.inf @@ -74,7 +74,6 @@ [Pcd] gEfiMdeModulePkgTokenSpaceGuid.PcdFastPS2Detection ## SOMETIMES_CONSUMES - gEfiMdeModulePkgTokenSpaceGuid.PcdNullPointerDetectionPropertyMask ## CONSUMES [UserExtensions.TianoCore."ExtraFiles"] KeyboardDxeExtra.uni