Issue cache flush before FWU reset in Shell
Since the commit below was reverted
24f5aa59b5
. The cache flush
need to be moved into the place where data consistency
across warm reset is required. The patch added the WBINVD
to flush the cache before "fwupdate" command issues warm
reset.
Signed-off-by: Maurice Ma <maurice.ma@intel.com>
This commit is contained in:
parent
50e5c23594
commit
9aa774f635
|
@ -178,6 +178,7 @@ ShellCommandFwUpdateFunc (
|
||||||
//
|
//
|
||||||
PlatformService = (PLATFORM_SERVICE *) GetServiceBySignature (PLATFORM_SERVICE_SIGNATURE);
|
PlatformService = (PLATFORM_SERVICE *) GetServiceBySignature (PLATFORM_SERVICE_SIGNATURE);
|
||||||
if (PlatformService != NULL && PlatformService->ResetSystem != NULL) {
|
if (PlatformService != NULL && PlatformService->ResetSystem != NULL) {
|
||||||
|
AsmWbinvd ();
|
||||||
PlatformService->ResetSystem(EfiResetWarm);
|
PlatformService->ResetSystem(EfiResetWarm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -78,6 +78,7 @@ ShellCommandFwUpdateFunc (
|
||||||
//
|
//
|
||||||
PlatformService = (PLATFORM_SERVICE *) GetServiceBySignature (PLATFORM_SERVICE_SIGNATURE);
|
PlatformService = (PLATFORM_SERVICE *) GetServiceBySignature (PLATFORM_SERVICE_SIGNATURE);
|
||||||
if (PlatformService != NULL && PlatformService->ResetSystem != NULL) {
|
if (PlatformService != NULL && PlatformService->ResetSystem != NULL) {
|
||||||
|
AsmWbinvd ();
|
||||||
PlatformService->ResetSystem(EfiResetWarm);
|
PlatformService->ResetSystem(EfiResetWarm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -78,6 +78,7 @@ ShellCommandFwUpdateFunc (
|
||||||
//
|
//
|
||||||
PlatformService = (PLATFORM_SERVICE *) GetServiceBySignature (PLATFORM_SERVICE_SIGNATURE);
|
PlatformService = (PLATFORM_SERVICE *) GetServiceBySignature (PLATFORM_SERVICE_SIGNATURE);
|
||||||
if (PlatformService != NULL && PlatformService->ResetSystem != NULL) {
|
if (PlatformService != NULL && PlatformService->ResetSystem != NULL) {
|
||||||
|
AsmWbinvd ();
|
||||||
PlatformService->ResetSystem(EfiResetWarm);
|
PlatformService->ResetSystem(EfiResetWarm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -78,6 +78,7 @@ ShellCommandFwUpdateFunc (
|
||||||
//
|
//
|
||||||
PlatformService = (PLATFORM_SERVICE *) GetServiceBySignature (PLATFORM_SERVICE_SIGNATURE);
|
PlatformService = (PLATFORM_SERVICE *) GetServiceBySignature (PLATFORM_SERVICE_SIGNATURE);
|
||||||
if (PlatformService != NULL && PlatformService->ResetSystem != NULL) {
|
if (PlatformService != NULL && PlatformService->ResetSystem != NULL) {
|
||||||
|
AsmWbinvd ();
|
||||||
PlatformService->ResetSystem(EfiResetWarm);
|
PlatformService->ResetSystem(EfiResetWarm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -75,6 +75,7 @@ ShellCommandFwUpdateFunc (
|
||||||
//
|
//
|
||||||
PlatformService = (PLATFORM_SERVICE *) GetServiceBySignature (PLATFORM_SERVICE_SIGNATURE);
|
PlatformService = (PLATFORM_SERVICE *) GetServiceBySignature (PLATFORM_SERVICE_SIGNATURE);
|
||||||
if (PlatformService != NULL && PlatformService->ResetSystem != NULL) {
|
if (PlatformService != NULL && PlatformService->ResetSystem != NULL) {
|
||||||
|
AsmWbinvd ();
|
||||||
PlatformService->ResetSystem(EfiResetWarm);
|
PlatformService->ResetSystem(EfiResetWarm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -78,6 +78,7 @@ ShellCommandFwUpdateFunc (
|
||||||
//
|
//
|
||||||
PlatformService = (PLATFORM_SERVICE *) GetServiceBySignature (PLATFORM_SERVICE_SIGNATURE);
|
PlatformService = (PLATFORM_SERVICE *) GetServiceBySignature (PLATFORM_SERVICE_SIGNATURE);
|
||||||
if (PlatformService != NULL && PlatformService->ResetSystem != NULL) {
|
if (PlatformService != NULL && PlatformService->ResetSystem != NULL) {
|
||||||
|
AsmWbinvd ();
|
||||||
PlatformService->ResetSystem(EfiResetWarm);
|
PlatformService->ResetSystem(EfiResetWarm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue