Hi Laszlo, I did the patch mostly following the pattern of this commit: MdeModulePkg/FaultTolerantWriteDxe: factor out boot service accesses ยท tianocore/edk2@22cedf5 (github.com) ( https://github.com/tianocore/edk2/commit/22cedf5bbde616e0369e9f8649964f175a0cb95e ). The extra step I made was renaming the CpuIo2Smm.c to CpuIo2Common.c for semantic reason. The needed changes here are: 1. Replacing gSmst with gMmst. Because SmmServicesTableLib does not exist for MM_STANDALONE type drivers, but MmServicesTableLib has library instances for both MM_STANDALONE and DXE_SMM_DRIVER as is. Both MmServicesTableLib and SmmServicesTableLib retrieve services table through the same protocol GUID, reference to substantially the same data structure. 2. Abstract the driver entry point for Traditional MM and Standalone MM instances. Because these drivers have different entry point interface definitions. I will update the commit message to fix the typo. In addition, I can revert the file renaming change and break the above 2 changes into 2 patches, if that make the git history and review process cleaner. Regards, Kun