igvm: Move structs to internal header
Move QIgvm and QIgvmParameter struct definitions from the source file into an IGVM internal header file to allow implementing architecture specific IGVM code in other places, for example target/i386/igvm.c. Signed-off-by: Oliver Steffen <osteffen@redhat.com> Message-ID: <20260130054714.715928-5-osteffen@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
committed by
Gerd Hoffmann
parent
403b7db067
commit
2b0cb58451
@@ -25,12 +25,6 @@
|
||||
#include <igvm/igvm.h>
|
||||
#include <igvm/igvm_defs.h>
|
||||
|
||||
typedef struct QIgvmParameterData {
|
||||
QTAILQ_ENTRY(QIgvmParameterData) next;
|
||||
uint8_t *data;
|
||||
uint32_t size;
|
||||
uint32_t index;
|
||||
} QIgvmParameterData;
|
||||
|
||||
/*
|
||||
* Some directives are specific to particular confidential computing platforms.
|
||||
@@ -66,37 +60,6 @@ struct QEMU_PACKED sev_id_authentication {
|
||||
|
||||
#define IGVM_SEV_ID_BLOCK_VERSION 1
|
||||
|
||||
/*
|
||||
* QIgvm contains the information required during processing
|
||||
* of a single IGVM file.
|
||||
*/
|
||||
typedef struct QIgvm {
|
||||
IgvmHandle file;
|
||||
ConfidentialGuestSupport *cgs;
|
||||
ConfidentialGuestSupportClass *cgsc;
|
||||
uint32_t compatibility_mask;
|
||||
unsigned current_header_index;
|
||||
QTAILQ_HEAD(, QIgvmParameterData) parameter_data;
|
||||
IgvmPlatformType platform_type;
|
||||
|
||||
/*
|
||||
* SEV-SNP platforms can contain an ID block and authentication
|
||||
* that should be verified by the guest.
|
||||
*/
|
||||
struct sev_id_block *id_block;
|
||||
struct sev_id_authentication *id_auth;
|
||||
|
||||
/* Define the guest policy for SEV guests */
|
||||
uint64_t sev_policy;
|
||||
|
||||
/* These variables keep track of contiguous page regions */
|
||||
IGVM_VHS_PAGE_DATA region_prev_page_data;
|
||||
uint64_t region_start;
|
||||
unsigned region_start_index;
|
||||
unsigned region_last_index;
|
||||
unsigned region_page_count;
|
||||
} QIgvm;
|
||||
|
||||
static int qigvm_directive_page_data(QIgvm *ctx, const uint8_t *header_data,
|
||||
Error **errp);
|
||||
static int qigvm_directive_vp_context(QIgvm *ctx, const uint8_t *header_data,
|
||||
|
||||
@@ -9,10 +9,12 @@
|
||||
#ifndef QEMU_IGVM_INTERNAL_H
|
||||
#define QEMU_IGVM_INTERNAL_H
|
||||
|
||||
#include "qemu/queue.h"
|
||||
#include "qemu/typedefs.h"
|
||||
#include "qom/object.h"
|
||||
#include "hw/core/resettable.h"
|
||||
|
||||
#include "system/confidential-guest-support.h"
|
||||
#include <igvm/igvm.h>
|
||||
|
||||
struct IgvmCfg {
|
||||
@@ -28,6 +30,44 @@ struct IgvmCfg {
|
||||
ResettableState reset_state;
|
||||
};
|
||||
|
||||
typedef struct QIgvmParameterData {
|
||||
QTAILQ_ENTRY(QIgvmParameterData) next;
|
||||
uint8_t *data;
|
||||
uint32_t size;
|
||||
uint32_t index;
|
||||
} QIgvmParameterData;
|
||||
|
||||
/*
|
||||
* QIgvm contains the information required during processing of a single IGVM
|
||||
* file.
|
||||
*/
|
||||
typedef struct QIgvm {
|
||||
IgvmHandle file;
|
||||
ConfidentialGuestSupport *cgs;
|
||||
ConfidentialGuestSupportClass *cgsc;
|
||||
uint32_t compatibility_mask;
|
||||
unsigned current_header_index;
|
||||
QTAILQ_HEAD(, QIgvmParameterData) parameter_data;
|
||||
IgvmPlatformType platform_type;
|
||||
|
||||
/*
|
||||
* SEV-SNP platforms can contain an ID block and authentication
|
||||
* that should be verified by the guest.
|
||||
*/
|
||||
struct sev_id_block *id_block;
|
||||
struct sev_id_authentication *id_auth;
|
||||
|
||||
/* Define the guest policy for SEV guests */
|
||||
uint64_t sev_policy;
|
||||
|
||||
/* These variables keep track of contiguous page regions */
|
||||
IGVM_VHS_PAGE_DATA region_prev_page_data;
|
||||
uint64_t region_start;
|
||||
unsigned region_start_index;
|
||||
unsigned region_last_index;
|
||||
unsigned region_page_count;
|
||||
} QIgvm;
|
||||
|
||||
IgvmHandle qigvm_file_init(char *filename, Error **errp);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user