xref: /openbmc/qemu/include/system/igvm-cfg.h (revision c1d466d267cf40093c9489075906b385459a195f)
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