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