Laszlo, Do you think that another API is also needed: GetPhysicalAddressWidth() that returns number 36/52? physical address width is needed by (besides those that rely on the width for mask calculation): UefiCpuPkg\CpuMpPei\CpuPaging.c UefiCpuPkg\PiSmmCpuDxeSmm\X64\PageTbl.c MdeModulePkg\Core\DxeIplPeim\X64\VirtualMemory.c MdeModulePkg\Universal\Acpi\S3SaveStateDxe\AcpiS3ContextSave.c MdeModulePkg\Universal\CapsulePei\UefiCapsule.c MdePkg\Library\SmmIoLib\SmmIoLib.c OvmfPkg\XenPlatformPei\MemDetect.c UefiCpuPkg\Universal\Acpi\S3Resume2Pei\S3Resume.c UefiPayloadPkg\UefiPayloadEntry\X64\VirtualMemory.c

GetPhysicalAddressMask() can call GetPhysicalAddressWidth().

Since it's a large-scale change but the SMM high MMIO access bug is critical/urgent, I prefer to firstly push this bug fix change and then work on the new APIs.

https://bugzilla.tianocore.org/show_bug.cgi?id=3394 was submitted to capture this.