lkml.org 
[lkml]   [2022]   [Nov]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [Patch v3 06/14] init: Call mem_encrypt_init() after Hyper-V hypercall init is done
    From
    On 11/16/22 12:41, Michael Kelley wrote:
    > 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>

    Some quick testing with mem_encrypt_init() in the new location hasn't
    shown any problems under SME/SEV.

    Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>

    > ---
    > init/main.c | 19 +++++++++++--------
    > 1 file changed, 11 insertions(+), 8 deletions(-)
    >
    > diff --git a/init/main.c b/init/main.c
    > index e1c3911..5a7c466 100644
    > --- a/init/main.c
    > +++ b/init/main.c
    > @@ -1088,14 +1088,6 @@ asmlinkage __visible void __init __no_sanitize_address start_kernel(void)
    > */
    > locking_selftest();
    >
    > - /*
    > - * This needs to be called before any devices perform DMA
    > - * operations that might use the SWIOTLB bounce buffers. It will
    > - * mark the bounce buffers as decrypted so that their usage will
    > - * not cause "plain-text" data to be decrypted when accessed.
    > - */
    > - mem_encrypt_init();
    > -
    > #ifdef CONFIG_BLK_DEV_INITRD
    > if (initrd_start && !initrd_below_start_ok &&
    > page_to_pfn(virt_to_page((void *)initrd_start)) < min_low_pfn) {
    > @@ -1112,6 +1104,17 @@ asmlinkage __visible void __init __no_sanitize_address start_kernel(void)
    > late_time_init();
    > sched_clock_init();
    > calibrate_delay();
    > +
    > + /*
    > + * This needs to be called before any devices perform DMA
    > + * operations that might use the SWIOTLB bounce buffers. It will
    > + * mark the bounce buffers as decrypted so that their usage will
    > + * not cause "plain-text" data to be decrypted when accessed. It
    > + * must be called after late_time_init() so that Hyper-V x86/x64
    > + * hypercalls work when the SWIOTLB bounce buffers are decrypted.
    > + */
    > + mem_encrypt_init();
    > +
    > pid_idr_init();
    > anon_vma_init();
    > #ifdef CONFIG_X86

    \
     
     \ /
      Last update: 2022-11-16 22:15    [W:4.394 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site