static int init_transition_pgtable(struct kimage *image, pgd_t *pgd)
 {
+       pgprot_t prot = PAGE_KERNEL_EXEC_NOENC;
+       unsigned long vaddr, paddr;
+       int result = -ENOMEM;
        p4d_t *p4d;
        pud_t *pud;
        pmd_t *pmd;
        pte_t *pte;
-       unsigned long vaddr, paddr;
-       int result = -ENOMEM;
 
        vaddr = (unsigned long)relocate_kernel;
        paddr = __pa(page_address(image->control_code_page)+PAGE_SIZE);
                set_pmd(pmd, __pmd(__pa(pte) | _KERNPG_TABLE));
        }
        pte = pte_offset_kernel(pmd, vaddr);
-       set_pte(pte, pfn_pte(paddr >> PAGE_SHIFT, PAGE_KERNEL_EXEC_NOENC));
+
+       if (sev_active())
+               prot = PAGE_KERNEL_EXEC;
+
+       set_pte(pte, pfn_pte(paddr >> PAGE_SHIFT, prot));
        return 0;
 err:
        return result;
        level4p = (pgd_t *)__va(start_pgtable);
        clear_page(level4p);
 
+       if (sev_active()) {
+               info.page_flag   |= _PAGE_ENC;
+               info.kernpg_flag |= _PAGE_ENC;
+       }
+
        if (direct_gbpages)
                info.direct_gbpages = true;