xref: /openbmc/qemu/backends/confidential-guest-support.c (revision b92b39af4219df4250f121f64d215506909c7404)
1 /*
2  * QEMU Confidential Guest support
3  *
4  * Copyright Red Hat.
5  *
6  * Authors:
7  *  David Gibson <david@gibson.dropbear.id.au>
8  *
9  * This work is licensed under the terms of the GNU GPL, version 2 or
10  * later.  See the COPYING file in the top-level directory.
11  *
12  */
13 
14 #include "qemu/osdep.h"
15 
16 #include "system/confidential-guest-support.h"
17 #include "qapi/error.h"
18 
OBJECT_DEFINE_ABSTRACT_TYPE(ConfidentialGuestSupport,confidential_guest_support,CONFIDENTIAL_GUEST_SUPPORT,OBJECT)19 OBJECT_DEFINE_ABSTRACT_TYPE(ConfidentialGuestSupport,
20                             confidential_guest_support,
21                             CONFIDENTIAL_GUEST_SUPPORT,
22                             OBJECT)
23 
24 static bool check_support(ConfidentialGuestPlatformType platform,
25                          uint16_t platform_version, uint8_t highest_vtl,
26                          uint64_t shared_gpa_boundary)
27 {
28     /* Default: no support. */
29     return false;
30 }
31 
set_guest_state(hwaddr gpa,uint8_t * ptr,uint64_t len,ConfidentialGuestPageType memory_type,uint16_t cpu_index,Error ** errp)32 static int set_guest_state(hwaddr gpa, uint8_t *ptr, uint64_t len,
33                            ConfidentialGuestPageType memory_type,
34                            uint16_t cpu_index, Error **errp)
35 {
36     error_setg(errp,
37                "Setting confidential guest state is not supported for this platform");
38     return -1;
39 }
40 
set_guest_policy(ConfidentialGuestPolicyType policy_type,uint64_t policy,void * policy_data1,uint32_t policy_data1_size,void * policy_data2,uint32_t policy_data2_size,Error ** errp)41 static int set_guest_policy(ConfidentialGuestPolicyType policy_type,
42                             uint64_t policy,
43                             void *policy_data1, uint32_t policy_data1_size,
44                             void *policy_data2, uint32_t policy_data2_size,
45                             Error **errp)
46 {
47     error_setg(errp,
48                "Setting confidential guest policy is not supported for this platform");
49     return -1;
50 }
51 
get_mem_map_entry(int index,ConfidentialGuestMemoryMapEntry * entry,Error ** errp)52 static int get_mem_map_entry(int index, ConfidentialGuestMemoryMapEntry *entry,
53                              Error **errp)
54 {
55     error_setg(
56         errp,
57         "Obtaining the confidential guest memory map is not supported for this platform");
58     return -1;
59 }
60 
confidential_guest_support_class_init(ObjectClass * oc,const void * data)61 static void confidential_guest_support_class_init(ObjectClass *oc,
62                                                   const void *data)
63 {
64     ConfidentialGuestSupportClass *cgsc = CONFIDENTIAL_GUEST_SUPPORT_CLASS(oc);
65     cgsc->check_support = check_support;
66     cgsc->set_guest_state = set_guest_state;
67     cgsc->set_guest_policy = set_guest_policy;
68     cgsc->get_mem_map_entry = get_mem_map_entry;
69 }
70 
confidential_guest_support_init(Object * obj)71 static void confidential_guest_support_init(Object *obj)
72 {
73 }
74 
confidential_guest_support_finalize(Object * obj)75 static void confidential_guest_support_finalize(Object *obj)
76 {
77 }
78