init: Call mem_encrypt_init() after Hyper-V hypercall init is done
authorMichael Kelley <mikelley@microsoft.com>
Thu, 9 Mar 2023 02:40:06 +0000 (18:40 -0800)
committerBorislav Petkov (AMD) <bp@alien8.de>
Mon, 27 Mar 2023 07:24:01 +0000 (09:24 +0200)
commite45e761b77bc0739e7e23258c4394013bbb919c7
tree8e88128fefa0a8ffa27c89c32ad11be02cb027b3
parentc7b5254bd802ee3868f1c59333545272dc700d6d
init: Call mem_encrypt_init() after Hyper-V hypercall init is done

Full Hyper-V initialization, including support for hypercalls, is done
as an apic_post_init callback via late_time_init().  mem_encrypt_init()
needs to make hypercalls when it marks swiotlb memory as decrypted.
But mem_encrypt_init() is currently called a few lines before
late_time_init(), so the hypercalls don't work.

Fix this by moving mem_encrypt_init() after late_time_init() and
related clock initializations. The intervening initializations don't
do any I/O that requires the swiotlb, so moving mem_encrypt_init()
slightly later has no impact.

Signed-off-by: Michael Kelley <mikelley@microsoft.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
Link: https://lore.kernel.org/r/1678329614-3482-6-git-send-email-mikelley@microsoft.com
init/main.c