xref: /openbmc/qemu/backends/igvm-cfg.c (revision c1d466d267cf40093c9489075906b385459a195f)
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 
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 
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 
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 
45*c1d466d2SRoy Hopkins static void igvm_cfg_init(Object *obj)
46*c1d466d2SRoy Hopkins {
47*c1d466d2SRoy Hopkins }
48*c1d466d2SRoy Hopkins 
49*c1d466d2SRoy Hopkins static void igvm_cfg_finalize(Object *obj)
50*c1d466d2SRoy Hopkins {
51*c1d466d2SRoy Hopkins }
52