audk/ArmPkg
Ard Biesheuvel 6556224e1f ArmPkg/ArmSmcPsciResetSystemLib: add missing call to ExitBootServices()
Our poor man's implementation of EnterS3WithImmediateWake () currently
sets a high TPL level to disable interrupts, and simply calls the
PEI entrypoint again after disabling the MMU.

Unfortunately, this is not sufficient: DMA capable devices such as
network controllers or USB controllers may still be enabled and
writing to memory, e.g., in response to incoming network packets.

So instead, do the full ExitBootServices() dance: allocate space and
get the memory map, call ExitBootServices(), and in case it fails, get
the memory map again and call ExitBootServices() again. This ensures
that all cleanup related to DMA capable devices is performed before
doing the warm reset.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
2018-11-21 12:02:34 +01:00
..
Drivers ArmPkg/ArmGicDxe ARM: fix encoding for GICv3 interrupt acknowledge 2018-11-15 04:33:07 -08:00
Filesystem/SemihostFs ArmPkg/SemihostFs: eliminate calls to deprecated string functions 2016-10-28 12:04:04 +01:00
Include ArmPkg/OpteeLib: Add APIs to communicate with OP-TEE 2018-10-30 14:21:45 +00:00
Library ArmPkg/ArmSmcPsciResetSystemLib: add missing call to ExitBootServices() 2018-11-21 12:02:34 +01:00
ArmPkg.dec ArmPkg: Add initial OpteeLib implementation 2018-08-01 11:03:45 +02:00
ArmPkg.dsc ArmPkg: Add initial OpteeLib implementation 2018-08-01 11:03:45 +02:00