Hi,
> +static int qigvm_initialization_madt(QIgvm *ctx,
> + const uint8_t *header_data, Error
> **errp)
> +{
> + const IGVM_VHS_PARAMETER *param = (const IGVM_VHS_PARAMETER
> *)header_data;
> + QIgvmParameterData *param_entry;
> +
> + if (ctx->madt == NULL) {
> + return 0;
> + }
> +
> + /* Find the parameter area that should hold the device tree */
cut+paste error in the comment.
> + QTAILQ_FOREACH(param_entry, &ctx->parameter_data, next)
> + {
> + if (param_entry->index == param->parameter_area_index) {
Hmm, that is a pattern repeated a number of times already in the igvm
code. Should we factor that out into a helper function?
> static int qigvm_supported_platform_compat_mask(QIgvm *ctx, Error **errp)
> {
> int32_t header_count;
> @@ -892,7 +925,7 @@ IgvmHandle qigvm_file_init(char *filename, Error **errp)
> }
>
> int qigvm_process_file(IgvmCfg *cfg, ConfidentialGuestSupport *cgs,
> - bool onlyVpContext, Error **errp)
> + bool onlyVpContext, GArray *madt, Error **errp)
I'd like to see less parameters for this function, not more.
I think sensible options here are:
(a) store the madt pointer in IgvmCfg, or
(b) pass MachineState instead of ConfidentialGuestSupport, so
we can use the MachineState here to generate the madt.
Luigi, any opinion? I think device tree support will need access to
MachineState too, and I think both madt and dt should take the same
approach here.
Long-term I'd like to also get rid of the onlyVpContext parameter.
That cleanup is something for another patch series though.
take care,
Gerd