On 10/08/15 09:39, Star Zeng wrote:
> PcdSet## has no error status returned, then the caller has no idea about 
> whether the set operation is successful or not.
> PcdSet##S were added to return error status and PcdSet## APIs were put in 
> ifndef DISABLE_NEW_DEPRECATED_INTERFACES condition.
> To adopt PcdSet##S and further code development with 
> DISABLE_NEW_DEPRECATED_INTERFACES defined, we need to Replace PcdSet## usage 
> with PcdSet##S.
> 
> Normally, DynamicDefault PCD set is expected to be success, but DynamicHii 
> PCD set failure is a legal case.

I almost had a question here ("why?"), but looking at
"MdeModulePkg/Universal/PCD/Dxe/Pcd.inf", I know why -- because
PcdsDynamicHii is stored in the non-volatile varstore.

> For this case, PcdS3BootScriptTablePrivateDataPtr and 
> PcdS3BootScriptTablePrivateSmmDataPtr are expected to be DynamicDefault,
> so use PcdSet64S to instead of PcdSet64 and assert when set failure.

Okay, so this I don't understand.

First, I don't think that any platform would like to store S3
bootscript-related stuff in nv variables.

Second, "MdeModulePkg/MdeModulePkg.dec" restricts these PCDs to
[PcdsDynamic, PcdsDynamicEx], so no platform DSC can make them
PcdsDynamicHii.

Therefore, I guess the patch is correct, but why is it necessary? Is it
just to be compatible with DISABLE_NEW_DEPRECATED_INTERFACES?

Ah, I see. The commit message has three parts / arguments actually:

(1) general description of status checking vs. non-checking interfaces
(2) argument why we should move to checked interfaces
(3) argument why the check will always succeed.

Thanks
Laszlo


> 
> Cc: Jiewen Yao <jiewen....@intel.com>
> Cc: Liming Gao <liming....@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Star Zeng <star.z...@intel.com>
> ---
>  MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptSave.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptSave.c 
> b/MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptSave.c
> index 24c6798..e7d2a24 100644
> --- a/MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptSave.c
> +++ b/MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptSave.c
> @@ -454,7 +454,8 @@ S3BootScriptLibInitialize (
>      }
>      S3TablePtr = (VOID *) (UINTN) Buffer;
>  
> -    PcdSet64 (PcdS3BootScriptTablePrivateDataPtr, (UINT64) 
> (UINTN)S3TablePtr); 
> +    Status = PcdSet64S (PcdS3BootScriptTablePrivateDataPtr, (UINT64) 
> (UINTN)S3TablePtr);
> +    ASSERT_EFI_ERROR (Status);
>      ZeroMem (S3TablePtr, sizeof(SCRIPT_TABLE_PRIVATE_DATA));  
>      //
>      // Create event to notify the library system enter the SmmLocked phase.
> @@ -506,7 +507,8 @@ S3BootScriptLibInitialize (
>        return RETURN_OUT_OF_RESOURCES;
>      }
>  
> -    PcdSet64 (PcdS3BootScriptTablePrivateSmmDataPtr, (UINT64) 
> (UINTN)S3TableSmmPtr);
> +    Status = PcdSet64S (PcdS3BootScriptTablePrivateSmmDataPtr, (UINT64) 
> (UINTN)S3TableSmmPtr);
> +    ASSERT_EFI_ERROR (Status);
>      ZeroMem (S3TableSmmPtr, sizeof(SCRIPT_TABLE_PRIVATE_DATA));
>  
>      //
> 

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to