1*c1d466d2SRoy Hopkins /* 2*c1d466d2SRoy Hopkins * QEMU IGVM interface 3*c1d466d2SRoy Hopkins * 4*c1d466d2SRoy Hopkins * Copyright (C) 2024 SUSE 5*c1d466d2SRoy Hopkins * 6*c1d466d2SRoy Hopkins * Authors: 7*c1d466d2SRoy Hopkins * Roy Hopkins <roy.hopkins@randomman.co.uk> 8*c1d466d2SRoy Hopkins * 9*c1d466d2SRoy Hopkins * SPDX-License-Identifier: GPL-2.0-or-later 10*c1d466d2SRoy Hopkins */ 11*c1d466d2SRoy Hopkins 12*c1d466d2SRoy Hopkins #ifndef QEMU_IGVM_CFG_H 13*c1d466d2SRoy Hopkins #define QEMU_IGVM_CFG_H 14*c1d466d2SRoy Hopkins 15*c1d466d2SRoy Hopkins #include "qom/object.h" 16*c1d466d2SRoy Hopkins 17*c1d466d2SRoy Hopkins typedef struct IgvmCfg { 18*c1d466d2SRoy Hopkins ObjectClass parent_class; 19*c1d466d2SRoy Hopkins 20*c1d466d2SRoy Hopkins /* 21*c1d466d2SRoy Hopkins * filename: Filename that specifies a file that contains the configuration 22*c1d466d2SRoy Hopkins * of the guest in Independent Guest Virtual Machine (IGVM) 23*c1d466d2SRoy Hopkins * format. 24*c1d466d2SRoy Hopkins */ 25*c1d466d2SRoy Hopkins char *filename; 26*c1d466d2SRoy Hopkins } IgvmCfg; 27*c1d466d2SRoy Hopkins 28*c1d466d2SRoy Hopkins typedef struct IgvmCfgClass { 29*c1d466d2SRoy Hopkins ObjectClass parent_class; 30*c1d466d2SRoy Hopkins 31*c1d466d2SRoy Hopkins /* 32*c1d466d2SRoy Hopkins * If an IGVM filename has been specified then process the IGVM file. 33*c1d466d2SRoy Hopkins * Performs a no-op if no filename has been specified. 34*c1d466d2SRoy Hopkins * 35*c1d466d2SRoy Hopkins * Returns 0 for ok and -1 on error. 36*c1d466d2SRoy Hopkins */ 37*c1d466d2SRoy Hopkins int (*process)(IgvmCfg *cfg, ConfidentialGuestSupport *cgs, 38*c1d466d2SRoy Hopkins Error **errp); 39*c1d466d2SRoy Hopkins 40*c1d466d2SRoy Hopkins } IgvmCfgClass; 41*c1d466d2SRoy Hopkins 42*c1d466d2SRoy Hopkins #define TYPE_IGVM_CFG "igvm-cfg" 43*c1d466d2SRoy Hopkins 44*c1d466d2SRoy Hopkins OBJECT_DECLARE_TYPE(IgvmCfg, IgvmCfgClass, IGVM_CFG) 45*c1d466d2SRoy Hopkins 46*c1d466d2SRoy Hopkins #endif 47