qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 6/9] i386/pc: Skip initialization of system FW when using IGV


From: Ani Sinha
Subject: Re: [PATCH 6/9] i386/pc: Skip initialization of system FW when using IGVM
Date: Thu, 28 Mar 2024 16:33:18 +0530


> On 28 Mar 2024, at 16:04, Ani Sinha <anisinha@redhat.com> wrote:
> 
> 
> 
>> On 27 Mar 2024, at 19:43, Roy Hopkins <roy.hopkins@suse.com> wrote:
>> 
>> On Wed, 2024-03-27 at 18:58 +0530, Ani Sinha wrote:
>>> 
>>> 
>>>> On 27 Feb 2024, at 20:20, Roy Hopkins <roy.hopkins@suse.com> wrote:
>>>> 
>>>> When using an IGVM file the configuration of the system firmware is
>>>> defined by IGVM directives contained in the file. Therefore the default
>>>> system firmware should not be initialized when an IGVM file has been
>>>> provided.
>>>> 
>>>> This commit checks to see if an IGVM file has been provided and, if it
>>>> has then the standard system firmware initialization is skipped and any
>>>> prepared flash devices are cleaned up.
>>>> 
>>>> Signed-off-by: Roy Hopkins <roy.hopkins@suse.com>
>>>> ---
>>>> hw/i386/pc.c | 12 ++++++++++--
>>>> 1 file changed, 10 insertions(+), 2 deletions(-)
>>>> 
>>>> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
>>>> index f8eb684a49..17bb211708 100644
>>>> --- a/hw/i386/pc.c
>>>> +++ b/hw/i386/pc.c
>>>> @@ -63,6 +63,7 @@
>>>> #include "e820_memory_layout.h"
>>>> #include "trace.h"
>>>> #include CONFIG_DEVICES
>>>> +#include "exec/confidential-guest-support.h"
>>>> 
>>>> #ifdef CONFIG_XEN_EMU
>>>> #include "hw/xen/xen-legacy-backend.h"
>>>> @@ -1023,8 +1024,15 @@ void pc_memory_init(PCMachineState *pcms,
>>>>        }
>>>>    }
>>>> 
>>>> -    /* Initialize PC system firmware */
>>>> -    pc_system_firmware_init(pcms, rom_memory);
>>>> +    /*
>>>> +     * If this is a confidential guest configured using IGVM then the IGVM
>>>> +     * configuration will include the system firmware. In this case do not
>>>> +     * initialise PC system firmware.
>>>> +     */
>>>> +    if (!cgs_is_igvm(machine->cgs)) {
>>>> +        /* Initialize PC system firmware */
>>>> +        pc_system_firmware_init(pcms, rom_memory);
>>>> +    }
>>> 
>>> Ok so this makes QEMU mot load the default fw as provided in the QEMU 
>>> command
>>> line. It does not specify how the packaged fw specified within IGVM would be
>>> processed and loaded. Am I understanding this right?
>>> 
>> Yes. Although as suggested by Daniel, I've now changed this so if firmware is
>> specified on the command line in conflict with the IGVM file then an error is
>> displayed.
> 
> Does IGVM _must_ mandatorily contain a firmware? If not, then before error is 
> displayed, we should check if the file does have a firmware.
> 
>> The IGVM file itself describes how the firmware binary is populated
>> into guest memory and launched.
> 
> Ok so I looked at the doc here: https://docs.rs/igvm_defs/0.1.7/igvm_defs/
> I do not see anything related to firmware in the spec.
> Secondly, how the firmware is to be loaded is hypervisor specific. So there 
> must be QEMU specific implementation to load the firmware from IGVM. 
> Secondly, should a new directive (and associated definitions) be introduced 
> that instructs hypervisors to load the firmware present in IGVM?
> Something is missing here it seems and I am willing to dive into filling the 
> missing parts.

I guess what I was missing was 
https://github.com/roy-hopkins/buildigvm/blob/main/src/ovmf_firmware.rs . 
Seems something like this is supposed to load ovmf image into memory.






reply via email to

[Prev in Thread] Current Thread [Next in Thread]