entry->eax = entry->ebx = entry->ecx = 0;
                break;
        case 0x80000008: {
-               unsigned g_phys_as = (entry->eax >> 16) & 0xff;
-               unsigned virt_as = max((entry->eax >> 8) & 0xff, 48U);
-               unsigned phys_as = entry->eax & 0xff;
+               unsigned int virt_as = max((entry->eax >> 8) & 0xff, 48U);
+               unsigned int phys_as;
 
                /*
                 * If TDP (NPT) is disabled use the adjusted host MAXPHYADDR as
                 * reductions in MAXPHYADDR for memory encryption affect shadow
                 * paging, too.
                 *
-                * If TDP is enabled but an explicit guest MAXPHYADDR is not
-                * provided, use the raw bare metal MAXPHYADDR as reductions to
-                * the HPAs do not affect GPAs.
+                * If TDP is enabled, use the raw bare metal MAXPHYADDR as
+                * reductions to the HPAs do not affect GPAs.
                 */
-               if (!tdp_enabled)
-                       g_phys_as = boot_cpu_data.x86_phys_bits;
-               else if (!g_phys_as)
-                       g_phys_as = phys_as;
+               if (!tdp_enabled) {
+                       phys_as = boot_cpu_data.x86_phys_bits;
+               } else {
+                       phys_as = entry->eax & 0xff;
+               }
 
-               entry->eax = g_phys_as | (virt_as << 8);
+               entry->eax = phys_as | (virt_as << 8);
                entry->ecx &= ~(GENMASK(31, 16) | GENMASK(11, 8));
                entry->edx = 0;
                cpuid_entry_override(entry, CPUID_8000_0008_EBX);