xref: /openbmc/qemu/backends/igvm-cfg.c (revision b92b39af4219df4250f121f64d215506909c7404)
1*c1d466d2SRoy Hopkins /*
2*c1d466d2SRoy Hopkins  * QEMU IGVM interface
3*c1d466d2SRoy Hopkins  *
4*c1d466d2SRoy Hopkins  * Copyright (C) 2023-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 #include "qemu/osdep.h"
13*c1d466d2SRoy Hopkins 
14*c1d466d2SRoy Hopkins #include "system/igvm-cfg.h"
15*c1d466d2SRoy Hopkins #include "igvm.h"
16*c1d466d2SRoy Hopkins #include "qom/object_interfaces.h"
17*c1d466d2SRoy Hopkins 
get_igvm(Object * obj,Error ** errp)18*c1d466d2SRoy Hopkins static char *get_igvm(Object *obj, Error **errp)
19*c1d466d2SRoy Hopkins {
20*c1d466d2SRoy Hopkins     IgvmCfg *igvm = IGVM_CFG(obj);
21*c1d466d2SRoy Hopkins     return g_strdup(igvm->filename);
22*c1d466d2SRoy Hopkins }
23*c1d466d2SRoy Hopkins 
set_igvm(Object * obj,const char * value,Error ** errp)24*c1d466d2SRoy Hopkins static void set_igvm(Object *obj, const char *value, Error **errp)
25*c1d466d2SRoy Hopkins {
26*c1d466d2SRoy Hopkins     IgvmCfg *igvm = IGVM_CFG(obj);
27*c1d466d2SRoy Hopkins     g_free(igvm->filename);
28*c1d466d2SRoy Hopkins     igvm->filename = g_strdup(value);
29*c1d466d2SRoy Hopkins }
30*c1d466d2SRoy Hopkins 
31*c1d466d2SRoy Hopkins OBJECT_DEFINE_TYPE_WITH_INTERFACES(IgvmCfg, igvm_cfg, IGVM_CFG, OBJECT,
32*c1d466d2SRoy Hopkins                                    { TYPE_USER_CREATABLE }, { NULL })
33*c1d466d2SRoy Hopkins 
igvm_cfg_class_init(ObjectClass * oc,const void * data)34*c1d466d2SRoy Hopkins static void igvm_cfg_class_init(ObjectClass *oc, const void *data)
35*c1d466d2SRoy Hopkins {
36*c1d466d2SRoy Hopkins     IgvmCfgClass *igvmc = IGVM_CFG_CLASS(oc);
37*c1d466d2SRoy Hopkins 
38*c1d466d2SRoy Hopkins     object_class_property_add_str(oc, "file", get_igvm, set_igvm);
39*c1d466d2SRoy Hopkins     object_class_property_set_description(oc, "file",
40*c1d466d2SRoy Hopkins                                           "Set the IGVM filename to use");
41*c1d466d2SRoy Hopkins 
42*c1d466d2SRoy Hopkins     igvmc->process = qigvm_process_file;
43*c1d466d2SRoy Hopkins }
44*c1d466d2SRoy Hopkins 
igvm_cfg_init(Object * obj)45*c1d466d2SRoy Hopkins static void igvm_cfg_init(Object *obj)
46*c1d466d2SRoy Hopkins {
47*c1d466d2SRoy Hopkins }
48*c1d466d2SRoy Hopkins 
igvm_cfg_finalize(Object * obj)49*c1d466d2SRoy Hopkins static void igvm_cfg_finalize(Object *obj)
50*c1d466d2SRoy Hopkins {
51*c1d466d2SRoy Hopkins }
52