soc/amd/common/pi: Ensure AGESA S3 resume called before SMM lock
AGESA S3 restore needs to occur before SMM finalization/locking, but it's a crapshoot as to which runs first since both use the same BS_OS_RESUME/BS_ON_ENTRY boot state callback, and there's no way to prioritize/force ordering. To work around this, move the AGESA S3 resume call to the preceding boot state (BS_OS_RESUME_CHECK) to ensure it runs first, and guard it to ensure it only runs on the S3 resume path. BUG=none TEST=build/boot google/liara, verify S3 resume successful. Change-Id: I765db140c6708a0b129f79fb7d3dc8a4ab3095bd Signed-off-by: Matt DeVillier <matt.devillier@amd.corp-partner.google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/76592 Reviewed-by: Fred Reitberger <reitbergerfred@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Marshall Dawson <marshalldawson3rd@gmail.com>
This commit is contained in:
		
				
					committed by
					
						 Felix Held
						Felix Held
					
				
			
			
				
	
			
			
			
						parent
						
							cecb7a75b8
						
					
				
				
					commit
					0a96a1ca06
				
			| @@ -1,12 +1,14 @@ | ||||
| /* SPDX-License-Identifier: GPL-2.0-only */ | ||||
|  | ||||
| #include <acpi/acpi.h> | ||||
| #include <bootstate.h> | ||||
| #include <amdblocks/agesawrapper_call.h> | ||||
|  | ||||
| static void agesawrapper_s3finalrestore(void *unused) | ||||
| { | ||||
| 	/* Needed since running on BS_OS_RESUME_CHECK to ensure execution before SMM lock */ | ||||
| 	if (acpi_is_wakeup_s3()) | ||||
| 		do_agesawrapper(AMD_S3FINAL_RESTORE, "amds3finalrestore"); | ||||
| } | ||||
|  | ||||
| BOOT_STATE_INIT_ENTRY(BS_OS_RESUME, BS_ON_ENTRY, | ||||
| 			agesawrapper_s3finalrestore, NULL); | ||||
| BOOT_STATE_INIT_ENTRY(BS_OS_RESUME_CHECK, BS_ON_EXIT, agesawrapper_s3finalrestore, NULL); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user