On 9/2/2026 12:37 AM, Wei Liu wrote:
> On Tue, Sep 01, 2026 at 09:55:21AM -0700, Thara Gopinath wrote:
>> LVBS bring-up requires loading a secure kernel image into VTL1 before
>> starting it. Add the VTL0-side loader that stages the image in the
>> memory region reserved by hv_vsm_securekernel, in preparation for the
>> VTL1 bring-up.
>>
>> The image is a 64-bit ELF fetched via request_firmware("vsm_sk"). It
>> is expected to ship inside the signed UKI/initramfs so it is
>> authenticated end-to-end via Secure Boot before the loader consumes
>> it; sourcing it from an unauthenticated location would break the LVBS
>> trust model.
>>
>> The loader validates the ELF header, stages the PT_LOAD segments into
>> the reserved region and records the entry point as a physical address
>> for use at VTL1 start time.
>>
>> If VSM support has been advertised to the hypervisor but no secure
>> kernel region was reserved on the command line, panic: LVBS bring-up
>> is committed at this point and there is no safe way to continue.
> 
> This conflicts with the memory reservation patch, in which there is an
> automatic allocation when no kernel command line is specified.

Ah no.. So securekernel= has to be specified in the command line for
__setup() to be invoked . It can be left blank without parameters like
securekernel= or with parameters like securekernel=256M@0x80000000. The
reservation logic will take care of reserving the correct memory if there
are no parameters but if there is no command line specified __setup will
not be  called. The other way of solving this and invoking the reservations
unconditionally will be to call it from setup_arch like how reserve_crashkernel
is invoked. I am not sure if we want to do that now ?? What do you think ?

But I will reword this and state that the panic happens if there is no
securekernel memory allocated (either because securekernel= was not
specified or because memory reservation itself failed)

> 
>>
>> Signed-off-by: Stanislav Kinsburskii <[email protected]>
>> Signed-off-by: Thara Gopinath <[email protected]>
>> ---
>>  drivers/hv/hv_vsm.h      |  17 ++++
>>  drivers/hv/hv_vsm_boot.c | 201 ++++++++++++++++++++++++++++++++++++++-
>>  include/hyperv/vsm.h     |  21 ++++
>>  3 files changed, 238 insertions(+), 1 deletion(-)
>>  create mode 100644 drivers/hv/hv_vsm.h
>>  create mode 100644 include/hyperv/vsm.h
> [...]
>> +
>> +static void __init hv_vsm_get_sk_mem(void)
>> +{
>> +    /*
>> +     * The reserved secure kernel region is mandatory once VSM support has
>> +     * been advertised. Without it we cannot load the secure kernel and
>> +     * bringing up VTL1 is impossible, so fail hard rather than continuing
>> +     * in an unusable state.
>> +     */
>> +    if (!sk_res.start)
>> +            panic("No memory reserved in cmdline for secure kernel");
>> +
> 
> This log line is wrong.

I will fix this 

Warm Regards
Thara
> 
> Wei


Reply via email to