Skip to content
Snippets Groups Projects
  • Daniel P. Berrangé's avatar
    2720ceda
    docs: expand firmware descriptor to allow flash without NVRAM · 2720ceda
    Daniel P. Berrangé authored
    
    The current firmware descriptor schema for flash requires that both the
    executable to NVRAM template paths be provided. This is fine for the
    most common usage of EDK2 builds in virtualization where the separate
    _CODE and _VARS files are provided.
    
    With confidential computing technology like AMD SEV, persistent storage
    of variables may be completely disabled because the firmware requires a
    known clean state on every cold boot. There is no way to express this
    in the firmware descriptor today.
    
    Even with regular EDK2 builds it is possible to create a firmware that
    has both executable code and variable persistence in a single file. This
    hasn't been commonly used, since it would mean every guest bootup would
    need to clone the full firmware file, leading to redundant duplicate
    storage of the code portion. In some scenarios this may not matter and
    might even be beneficial. For example if a public cloud allows users to
    bring their own firmware, such that the user can pre-enroll their own
    secure boot keys, you're going to have this copied on disk for each
    tenant already. At this point the it can be simpler to just deal with
    a single file rather than split builds. The firmware descriptor ought
    to be able to express this combined firmware model too.
    
    This all points towards expanding the schema for flash with a 'mode'
    concept:
    
     - "split" - the current implicit behaviour with separate files
       for code and variables.
    
     - "combined" - the alternate behaviour where a single file contains
       both code and variables.
    
     - "stateless" - the confidential computing use case where storage
       of variables is completely disable, leaving only the code.
    
    Reviewed-by: default avatarKashyap Chamarthy <kchamart@redhat.com>
    Reviewed-by: default avatarPhilippe Mathieu-Daudé <f4bug@amsat.org>
    Signed-off-by: default avatarDaniel P. Berrangé <berrange@redhat.com>
    2720ceda
    History
    docs: expand firmware descriptor to allow flash without NVRAM
    Daniel P. Berrangé authored
    
    The current firmware descriptor schema for flash requires that both the
    executable to NVRAM template paths be provided. This is fine for the
    most common usage of EDK2 builds in virtualization where the separate
    _CODE and _VARS files are provided.
    
    With confidential computing technology like AMD SEV, persistent storage
    of variables may be completely disabled because the firmware requires a
    known clean state on every cold boot. There is no way to express this
    in the firmware descriptor today.
    
    Even with regular EDK2 builds it is possible to create a firmware that
    has both executable code and variable persistence in a single file. This
    hasn't been commonly used, since it would mean every guest bootup would
    need to clone the full firmware file, leading to redundant duplicate
    storage of the code portion. In some scenarios this may not matter and
    might even be beneficial. For example if a public cloud allows users to
    bring their own firmware, such that the user can pre-enroll their own
    secure boot keys, you're going to have this copied on disk for each
    tenant already. At this point the it can be simpler to just deal with
    a single file rather than split builds. The firmware descriptor ought
    to be able to express this combined firmware model too.
    
    This all points towards expanding the schema for flash with a 'mode'
    concept:
    
     - "split" - the current implicit behaviour with separate files
       for code and variables.
    
     - "combined" - the alternate behaviour where a single file contains
       both code and variables.
    
     - "stateless" - the confidential computing use case where storage
       of variables is completely disable, leaving only the code.
    
    Reviewed-by: default avatarKashyap Chamarthy <kchamart@redhat.com>
    Reviewed-by: default avatarPhilippe Mathieu-Daudé <f4bug@amsat.org>
    Signed-off-by: default avatarDaniel P. Berrangé <berrange@redhat.com>