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