Message ID | 217c09a6da321b56c2bf9a1ed0b3b53b68e36b97.1723560001.git.roy.hopkins@suse.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Introduce support for IGVM files | expand |
On Tue, Aug 13, 2024 at 04:01:15PM GMT, Roy Hopkins wrote: >The initialization sections in IGVM files contain configuration that >should be applied to the guest platform before it is started. This >includes guest policy and other information that can affect the security >level and the startup measurement of a guest. > >This commit introduces handling of the initialization sections during >processing of the IGVM file. > >Signed-off-by: Roy Hopkins <roy.hopkins@suse.com> >Acked-by: Michael S. Tsirkin <mst@redhat.com> >--- > backends/igvm.c | 21 +++++++++++++++++++++ > 1 file changed, 21 insertions(+) Reviewed-by: Stefano Garzarella <sgarzare@redhat.com> > >diff --git a/backends/igvm.c b/backends/igvm.c >index 7a3fedcc76..9120922a95 100644 >--- a/backends/igvm.c >+++ b/backends/igvm.c >@@ -787,6 +787,27 @@ int qigvm_process_file(IgvmCfg *cfg, ConfidentialGuestSupport *cgs, > } > } > >+ header_count = >+ igvm_header_count(ctx.file, IGVM_HEADER_SECTION_INITIALIZATION); >+ if (header_count < 0) { >+ error_setg( >+ errp, >+ "Invalid initialization header count in IGVM file. Error code: %X", >+ header_count); >+ return -1; >+ } >+ >+ for (ctx.current_header_index = 0; >+ ctx.current_header_index < (unsigned)header_count; >+ ctx.current_header_index++) { >+ IgvmVariableHeaderType type = >+ igvm_get_header_type(ctx.file, IGVM_HEADER_SECTION_INITIALIZATION, >+ ctx.current_header_index); >+ if (qigvm_handler(&ctx, type, errp) < 0) { >+ goto cleanup; >+ } >+ } >+ > /* > * Contiguous pages of data with compatible flags are grouped together in > * order to reduce the number of memory regions we create. Make sure the >-- >2.43.0 >
diff --git a/backends/igvm.c b/backends/igvm.c index 7a3fedcc76..9120922a95 100644 --- a/backends/igvm.c +++ b/backends/igvm.c @@ -787,6 +787,27 @@ int qigvm_process_file(IgvmCfg *cfg, ConfidentialGuestSupport *cgs, } } + header_count = + igvm_header_count(ctx.file, IGVM_HEADER_SECTION_INITIALIZATION); + if (header_count < 0) { + error_setg( + errp, + "Invalid initialization header count in IGVM file. Error code: %X", + header_count); + return -1; + } + + for (ctx.current_header_index = 0; + ctx.current_header_index < (unsigned)header_count; + ctx.current_header_index++) { + IgvmVariableHeaderType type = + igvm_get_header_type(ctx.file, IGVM_HEADER_SECTION_INITIALIZATION, + ctx.current_header_index); + if (qigvm_handler(&ctx, type, errp) < 0) { + goto cleanup; + } + } + /* * Contiguous pages of data with compatible flags are grouped together in * order to reduce the number of memory regions we create. Make sure the