continue;
        }
        /* Store status of the boot CPU */
-       mcesa = (struct mcesa *)(S390_lowcore.mcesad & MCESA_ORIGIN_MASK);
+       mcesa = __va(S390_lowcore.mcesad & MCESA_ORIGIN_MASK);
        if (MACHINE_HAS_VX)
                save_vx_regs((__vector128 *) mcesa->vector_save_area);
        if (MACHINE_HAS_GS) {
 
 {
        if (!nmi_needs_mcesa())
                return;
-       lc->mcesad = (unsigned long) &boot_mcesa;
+       lc->mcesad = __pa(&boot_mcesa);
        if (MACHINE_HAS_GS)
                lc->mcesad |= ilog2(MCESA_MAX_SIZE);
 }
        __ctl_store(cr0, 0, 0);
        __ctl_clear_bit(0, 28); /* disable lowcore protection */
        /* Replace boot_mcesa on the boot CPU */
-       S390_lowcore.mcesad = origin | mcesa_origin_lc;
+       S390_lowcore.mcesad = __pa(origin) | mcesa_origin_lc;
        __ctl_load(cr0, 0, 0);
        return 0;
 }
                return -ENOMEM;
        /* The pointer is stored with mcesa_bits ORed in */
        kmemleak_not_leak((void *) origin);
-       lc->mcesad = origin | mcesa_origin_lc;
+       lc->mcesad = __pa(origin) | mcesa_origin_lc;
        return 0;
 }
 
 {
        if (!nmi_needs_mcesa())
                return;
-       kmem_cache_free(mcesa_cache, (void *)(lc->mcesad & MCESA_ORIGIN_MASK));
+       kmem_cache_free(mcesa_cache, __va(lc->mcesad & MCESA_ORIGIN_MASK));
 }
 
 static notrace void s390_handle_damage(void)
                        : "Q" (S390_lowcore.fpt_creg_save_area));
        }
 
-       mcesa = (struct mcesa *)(S390_lowcore.mcesad & MCESA_ORIGIN_MASK);
+       mcesa = __va(S390_lowcore.mcesad & MCESA_ORIGIN_MASK);
        if (!MACHINE_HAS_VX) {
                /* Validate floating point registers */
                asm volatile(
 
                return -EIO;
        if (!MACHINE_HAS_VX && !MACHINE_HAS_GS)
                return 0;
-       pa = __pa(lc->mcesad & MCESA_ORIGIN_MASK);
+       pa = lc->mcesad & MCESA_ORIGIN_MASK;
        if (MACHINE_HAS_GS)
                pa |= lc->mcesad & MCESA_LC_MASK;
        if (__pcpu_sigp_relax(pcpu->address, SIGP_STORE_ADDITIONAL_STATUS,