Re: Question to hv_vtl_real_mode_header in hv_vtl.c

From: Yunhong Jiang
Date: Tue Aug 13 2024 - 17:36:37 EST


On Tue, Aug 13, 2024 at 10:28:19AM -0700, Yunhong Jiang wrote:
> Hi, Srinivasan and Dexuan,
> I have a question to the hv_vtl_real_mode_header in
> arch/x86//hyperv/hv_vtl.c when addressing one patch review comment.
> In hv_vtl_early_init(), the real_mode_header is set to
> hv_vtl_real_mode_header, but there is no setup to the real_mode_header, since
> the realmode_init() is marked x86_init_noop in hv_vtl_init_platform.
> How is the real_mode_header(in another word, hv_vtl_real_mode_header)
> used? Is it to meet the access requirement from do_boot_cpu(), so that
> real_mode_header->trampoline_start64 will work, although the start_ip is not
> used?
> If it's really to support the do_boot_cpu() requirement, how does the
> non-VTL guest meet the access requirement? The hv_vtl_init_platform() is
> unconditionally called from ms_hyperv_init_platform(), so I assume all hyperv
> guest will have the realmode_init() set as x86_init_noop.

The patch review mentioned above is
https://lore.kernel.org/lkml/87a5ho2q6x.ffs@tglx/ . Can we set real_mode_header
to hv_vtl_real_mode_header in hv_vtl_init_platform(), instead of
hv_vtl_early_init()? I'm not sure if such move is safe, because
hv_vtl_early_init() is invoked only for vtl!=0 guest while
hv_vtl_init_platform() is invoked for all the hyperv guest.

>
> Thank you
> --jyh
>