* memory boundary and map it here.
         */
        rdmsrl(MSR_AMD64_SEV_ES_GHCB, ghcb_gpa);
-       ghcb_va = memremap(ghcb_gpa, HV_HYP_PAGE_SIZE, MEMREMAP_WB);
+
+       /* Mask out vTOM bit. ioremap_cache() maps decrypted */
+       ghcb_gpa &= ~ms_hyperv.shared_gpa_boundary;
+       ghcb_va = (void *)ioremap_cache(ghcb_gpa, HV_HYP_PAGE_SIZE);
        if (!ghcb_va)
                return -ENOMEM;
 
        if (hv_ghcb_pg) {
                ghcb_va = (void **)this_cpu_ptr(hv_ghcb_pg);
                if (*ghcb_va)
-                       memunmap(*ghcb_va);
+                       iounmap(*ghcb_va);
                *ghcb_va = NULL;
        }
 
 
        simp.simp_enabled = 1;
 
        if (hv_isolation_type_snp() || hv_root_partition) {
+               /* Mask out vTOM bit. ioremap_cache() maps decrypted */
+               u64 base = (simp.base_simp_gpa << HV_HYP_PAGE_SHIFT) &
+                               ~ms_hyperv.shared_gpa_boundary;
                hv_cpu->synic_message_page
-                       = memremap(simp.base_simp_gpa << HV_HYP_PAGE_SHIFT,
-                                  HV_HYP_PAGE_SIZE, MEMREMAP_WB);
+                       = (void *)ioremap_cache(base, HV_HYP_PAGE_SIZE);
                if (!hv_cpu->synic_message_page)
-                       pr_err("Fail to map syinc message page.\n");
+                       pr_err("Fail to map synic message page.\n");
        } else {
                simp.base_simp_gpa = virt_to_phys(hv_cpu->synic_message_page)
                        >> HV_HYP_PAGE_SHIFT;
        siefp.siefp_enabled = 1;
 
        if (hv_isolation_type_snp() || hv_root_partition) {
-               hv_cpu->synic_event_page =
-                       memremap(siefp.base_siefp_gpa << HV_HYP_PAGE_SHIFT,
-                                HV_HYP_PAGE_SIZE, MEMREMAP_WB);
-
+               /* Mask out vTOM bit. ioremap_cache() maps decrypted */
+               u64 base = (siefp.base_siefp_gpa << HV_HYP_PAGE_SHIFT) &
+                               ~ms_hyperv.shared_gpa_boundary;
+               hv_cpu->synic_event_page
+                       = (void *)ioremap_cache(base, HV_HYP_PAGE_SIZE);
                if (!hv_cpu->synic_event_page)
-                       pr_err("Fail to map syinc event page.\n");
+                       pr_err("Fail to map synic event page.\n");
        } else {
                siefp.base_siefp_gpa = virt_to_phys(hv_cpu->synic_event_page)
                        >> HV_HYP_PAGE_SHIFT;
         */
        simp.simp_enabled = 0;
        if (hv_isolation_type_snp() || hv_root_partition) {
-               memunmap(hv_cpu->synic_message_page);
+               iounmap(hv_cpu->synic_message_page);
                hv_cpu->synic_message_page = NULL;
        } else {
                simp.base_simp_gpa = 0;
        siefp.siefp_enabled = 0;
 
        if (hv_isolation_type_snp() || hv_root_partition) {
-               memunmap(hv_cpu->synic_event_page);
+               iounmap(hv_cpu->synic_event_page);
                hv_cpu->synic_event_page = NULL;
        } else {
                siefp.base_siefp_gpa = 0;