]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/vmspawn/vmspawn-util.h
vmspawn: add swtpm feature
[thirdparty/systemd.git] / src / vmspawn / vmspawn-util.h
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
2 #pragma once
3
4 #include <stdbool.h>
5 #include "macro.h"
6
7 #if defined(__x86_64__) || defined(__i386__) || defined(__arm__) || defined(__aarch64__)
8 #define ARCHITECTURE_SUPPORTS_SMBIOS 1
9 #else
10 #define ARCHITECTURE_SUPPORTS_SMBIOS 0
11 #endif
12
13 #if defined(__x86_64__) || defined(__arm__) || defined(__aarch64__)
14 #define ARCHITECTURE_SUPPORTS_TPM 1
15 #else
16 #define ARCHITECTURE_SUPPORTS_TPM 0
17 #endif
18
19 #if defined(__arm__) || defined(__aarch64__)
20 #define DEFAULT_SERIAL_TTY "ttyAMA0"
21 #elif defined(__s390__) || defined(__s390x__)
22 #define DEFAULT_SERIAL_TTY "ttysclp0"
23 #elif defined(__powerpc__) || defined(__powerpc64__)
24 #define DEFAULT_SERIAL_TTY "hvc0"
25 #else
26 #define DEFAULT_SERIAL_TTY "ttyS0"
27 #endif
28
29 typedef struct OvmfConfig {
30 char *path;
31 char *format;
32 char *vars;
33 char *vars_format;
34 bool supports_sb;
35 } OvmfConfig;
36
37 static inline const char *ovmf_config_format(const OvmfConfig *c) {
38 return ASSERT_PTR(c)->format ?: "raw";
39 }
40
41 static inline const char *ovmf_config_vars_format(const OvmfConfig *c) {
42 return ASSERT_PTR(c)->vars_format ?: "raw";
43 }
44
45 OvmfConfig* ovmf_config_free(OvmfConfig *ovmf_config);
46 DEFINE_TRIVIAL_CLEANUP_FUNC(OvmfConfig*, ovmf_config_free);
47
48 int qemu_check_kvm_support(void);
49 int qemu_check_vsock_support(void);
50 int list_ovmf_config(char ***ret);
51 int load_ovmf_config(const char *path, OvmfConfig **ret);
52 int find_ovmf_config(int search_sb, OvmfConfig **ret);
53 int find_qemu_binary(char **ret_qemu_binary);
54 int vsock_fix_child_cid(unsigned *machine_cid, const char *machine, int *ret_child_sock);