NestedInterruptTplLib provides a way for timer interrupt handlers (which must support nested interrupts) to prevent unbounded stack consumption.
The underlying issue was first observed in OvmfPkg, since interrupt storms can arise more easily in virtual machines due to CPU starvation. However, careful investigation shows that the unbounded stack consumption can also occur in physical machines. Move NestedInterruptTplLib from OvmfPkg to MdeModulePkg so that it can more easily be consumed by drivers outside of OvmfPkg, adding a self-test capability and support for Arm CPUs. Changes since v1: - Add missing Iret.h to NestedInterruptTplLib sources list Changes since v2: - Remove obsolete dependency of LocalApicTimerDxe on OvmfPkg - Add to MdeModulePkg.dsc for build coverage - Add self-tests - Add support for Arm CPUs Michael Brown (5): MdeModulePkg: Move NestedInterruptTplLib to MdeModulePkg MdeModulePkg: Add missing Iret.h to NestedInterruptTplLib sources list MdeModulePkg: Do nothing on NestedInterruptRestoreTPL(TPL_HIGH_LEVEL) MdeModulePkg: Add self-tests for NestedInterruptTplLib MdeModulePkg: Extend NestedInterruptTplLib to support Arm CPUs MdeModulePkg/MdeModulePkg.dec | 8 + OvmfPkg/OvmfPkg.dec | 4 - MdeModulePkg/MdeModulePkg.dsc | 1 + OvmfPkg/AmdSev/AmdSevX64.dsc | 2 +- OvmfPkg/CloudHv/CloudHvX64.dsc | 2 +- OvmfPkg/IntelTdx/IntelTdxX64.dsc | 2 +- OvmfPkg/Microvm/MicrovmX64.dsc | 2 +- OvmfPkg/OvmfPkgIa32.dsc | 2 +- OvmfPkg/OvmfPkgIa32X64.dsc | 2 +- OvmfPkg/OvmfPkgX64.dsc | 2 +- OvmfPkg/OvmfXen.dsc | 2 +- UefiPayloadPkg/UefiPayloadPkg.dsc | 2 +- .../NestedInterruptTplLib.inf | 9 +- .../LocalApicTimerDxe/LocalApicTimerDxe.inf | 2 +- .../Include/Library/NestedInterruptTplLib.h | 4 + .../Library/NestedInterruptTplLib/Iret.h | 0 .../Library/NestedInterruptTplLib/Iret.c | 18 +++ .../Library/NestedInterruptTplLib/Tpl.c | 142 ++++++++++++++++++ 18 files changed, 191 insertions(+), 15 deletions(-) rename {OvmfPkg => MdeModulePkg}/Library/NestedInterruptTplLib/NestedInterruptTplLib.inf (78%) rename {OvmfPkg => MdeModulePkg}/Include/Library/NestedInterruptTplLib.h (94%) rename {OvmfPkg => MdeModulePkg}/Library/NestedInterruptTplLib/Iret.h (100%) rename {OvmfPkg => MdeModulePkg}/Library/NestedInterruptTplLib/Iret.c (72%) rename {OvmfPkg => MdeModulePkg}/Library/NestedInterruptTplLib/Tpl.c (64%) -- 2.43.0 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#114206): https://edk2.groups.io/g/devel/message/114206 Mute This Topic: https://groups.io/mt/103911600/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-