> + // Allocate GHCB and per-CPU variable pages. > + // > + GhcbPageCount = mMaxCpuCount * 2; > + GhcbBase = AllocatePages (GhcbPageCount); > + ASSERT (GhcbBase != NULL); > + > + GhcbBasePa = (PHYSICAL_ADDRESS)(UINTN) GhcbBase; > + > + DecryptStatus = MemEncryptSevClearPageEncMask ( > + 0, > + GhcbBasePa, > + GhcbPageCount, > + TRUE > + ); > + ASSERT_RETURN_ERROR (DecryptStatus); > + > + ZeroMem (GhcbBase, EFI_PAGES_TO_SIZE (GhcbPageCount)); > + > + PcdStatus = PcdSet64S (PcdGhcbBase, GhcbBasePa); > + ASSERT_RETURN_ERROR (PcdStatus); > + PcdStatus = PcdSet64S (PcdGhcbSize, EFI_PAGES_TO_SIZE (GhcbPageCount)); > + ASSERT_RETURN_ERROR (PcdStatus); > + > + DEBUG ((DEBUG_INFO, > + "SEV-ES is enabled, %lu GHCB pages allocated starting at 0x%p\n", > + (UINT64)GhcbPageCount, GhcbBase)); > + > + AsmWriteMsr64 (MSR_SEV_ES_GHCB, GhcbBasePa);
As I said in the comments to PcdGhcbBase/Size, can all PCD consumers read the GHCB MSR instead? Does the GHCB buffer contains size information? If no, how does CPU know the GHCB buffer size? I am asking this because I want to see a way to remove the PcdGhcbSize. Thanks, Ray -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#52150): https://edk2.groups.io/g/devel/message/52150 Mute This Topic: https://groups.io/mt/60973127/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-