The ResetSystem() runtime service is marked as optional after ExitBootServices().
With UEFI 2.8 Erratum A the OS would be able to detect that it is not implemented by inspecting the configuration table EFI_RT_PROPERTIES_TABLE. Linux before patch 9b42f76ad58b3f6 does not check this table.
So it is unclear what an unimplemented ResetSystem() should do:
simply return (as EDK II mentions in comments)
hang in an endless loop (as U-Boot v2020.07 does)
ResetShutdown() has this comment in EDK II: "System shutdown should not return, if
it returns, it means the system does not support shut down reset."
ResetWarm() has this comment in EDK II: "System reset should not return, if it
returns, it means the system does not support warm reset."
If ResetSystem() returns, Linux will try to reset the board by its own means which makes more sense than hanging in an endless loop.
The ResetSystem() runtime service is marked as optional after ExitBootServices().
With UEFI 2.8 Erratum A the OS would be able to detect that it is not implemented by inspecting the configuration table EFI_RT_PROPERTIES_TABLE. Linux before patch 9b42f76ad58b3f6 does not check this table.
So it is unclear what an unimplemented ResetSystem() should do:
ResetShutdown() has this comment in EDK II: "System shutdown should not return, if it returns, it means the system does not support shut down reset."
ResetWarm() has this comment in EDK II: "System reset should not return, if it returns, it means the system does not support warm reset."
If ResetSystem() returns, Linux will try to reset the board by its own means which makes more sense than hanging in an endless loop.
Best regards
Heinrich
cc. @agraf