On 10/22/14 18:24, Gabriel Somlo wrote:
> I managed to add (and write to) a dynamic PCD from OVMF PEI:
> 
> 
> OvmfPkg/OvmfPkg.dec:
>  [PcdsDynamic, PcdsDynamicEx]
>    gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId|0|UINT16|0x1b
> 
> 
> OvmfPkg/OvmfPkgX64.dsc:
>  [PcdsDynamicDefault]
>    gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId|0
> 
> 
> OvmfPkg/PlatformPei/PlatformPei.inf
>  [Pcd]
>    gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId
> 
> 
> OvmfPkg/PlatformPei/Platform.c
> 
>   UINT16 HostBridgeDevId;
>   ...
>   PcdSet16 (PcdOvmfHostBridgePciDevId, HostBridgeDevId);
> 
> 
> 
> After doing this, things build just fine. But after further adding:
> 
> 
> OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf:
>  [Pcd]
>    gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId
> 
> 
> OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.c:
>   ...
>   HostBridgeDevId = PcdGet16 (PcdOvmfHostBridgePciDevId);
>   ...
> 
> 
> I now get this error:
> 
> /home/somlo/KVM-OSX/SCRATCH/edk2/OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.c:
> In function `AcpiTimerLibConstructor':
> /home/somlo/KVM-OSX/SCRATCH/edk2/MdePkg/Include/Library/PcdLib.h:377:45:
> error: `_PCD_GET_MODE_16_PcdOvmfHostBridgePciDevId' undeclared (first
> use in this function)
>  #define PcdGet16(TokenName)
> _PCD_GET_MODE_16_##TokenName
>                                              ^
> /home/somlo/KVM-OSX/SCRATCH/edk2/OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.c:61:21:
> note: in expansion of macro `PcdGet16'
>    HostBridgeDevId = PcdGet16 (PcdOvmfHostBridgePciDevId);
>                      ^
> /home/somlo/KVM-OSX/SCRATCH/edk2/MdePkg/Include/Library/PcdLib.h:377:45:
> note: each undeclared identifier is reported only once for each
> function it appears in
>  #define PcdGet16(TokenName)
> _PCD_GET_MODE_16_##TokenName
>                                              ^
> /home/somlo/KVM-OSX/SCRATCH/edk2/OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.c:61:21:
> note: in expansion of macro `PcdGet16'
>    HostBridgeDevId = PcdGet16 (PcdOvmfHostBridgePciDevId);
>                      ^
> make: ***
> [/home/somlo/KVM-OSX/SCRATCH/edk2/Build/OvmfX64/DEBUG_GCC48/X64/OvmfPkg/Library/AcpiTimerLib/BaseAcpiTimerLib/OUTPUT/DxeAcpiTimerLib.obj]
> Error 1
> 
> 
> build.py...
>  : error 7000: Failed to execute command
>         make tbuild
> [/home/somlo/KVM-OSX/SCRATCH/edk2/Build/OvmfX64/DEBUG_GCC48/X64/OvmfPkg/Library/AcpiTimerLib/BaseAcpiTimerLib]
> 
> 
> 
> 
> Any idea what I might be missing ?

Did you add PcdLib under [LibraryClasses] in
"OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf"?

The PcdGet16() macro should expand to a library call -- LibPcdGet16() --
which would internally use the PCD protocol. This macro definition would
be generated by "BaseTools/Source/Python/AutoGen/GenC.py" during the build.

Thanks
Laszlo


------------------------------------------------------------------------------
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to