]> git.proxmox.com Git - mirror_qemu.git/blame - scripts/xen-detect.c
hw/arm/aspeed: Introduce aspeed_soc_cpu_type() helper
[mirror_qemu.git] / scripts / xen-detect.c
CommitLineData
14efd8d3
PB
1/* SPDX-License-Identifier: GPL-2.0-or-later */
2
3/* Test programs for various Xen versions that QEMU supports. */
4#if CONFIG_XEN_CTRL_INTERFACE_VERSION == 41100
5 #undef XC_WANT_COMPAT_DEVICEMODEL_API
6 #define __XEN_TOOLS__
7 #include <xendevicemodel.h>
8 #include <xenforeignmemory.h>
9 int main(void) {
10 xendevicemodel_handle *xd;
11 xenforeignmemory_handle *xfmem;
12
13 xd = xendevicemodel_open(0, 0);
14 xendevicemodel_pin_memory_cacheattr(xd, 0, 0, 0, 0);
15
16 xfmem = xenforeignmemory_open(0, 0);
17 xenforeignmemory_map_resource(xfmem, 0, 0, 0, 0, 0, NULL, 0, 0);
18
19 return 0;
20 }
21
22#elif CONFIG_XEN_CTRL_INTERFACE_VERSION == 41000
23 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
24 #include <xenforeignmemory.h>
25 #include <xentoolcore.h>
26 int main(void) {
27 xenforeignmemory_handle *xfmem;
28
29 xfmem = xenforeignmemory_open(0, 0);
30 xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0);
31 xentoolcore_restrict_all(0);
32
33 return 0;
34 }
35
36#elif CONFIG_XEN_CTRL_INTERFACE_VERSION == 40900
37 #undef XC_WANT_COMPAT_DEVICEMODEL_API
38 #define __XEN_TOOLS__
39 #include <xendevicemodel.h>
40 int main(void) {
41 xendevicemodel_handle *xd;
42
43 xd = xendevicemodel_open(0, 0);
44 xendevicemodel_close(xd);
45
46 return 0;
47 }
48
49#elif CONFIG_XEN_CTRL_INTERFACE_VERSION == 40800
50 /*
51 * If we have stable libs the we don't want the libxc compat
52 * layers, regardless of what CFLAGS we may have been given.
53 *
54 * Also, check if xengnttab_grant_copy_segment_t is defined and
55 * grant copy operation is implemented.
56 */
57 #undef XC_WANT_COMPAT_EVTCHN_API
58 #undef XC_WANT_COMPAT_GNTTAB_API
59 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
60 #include <xenctrl.h>
61 #include <xenstore.h>
62 #include <xenevtchn.h>
63 #include <xengnttab.h>
64 #include <xenforeignmemory.h>
65 #include <stdint.h>
66 #include <xen/hvm/hvm_info_table.h>
67 #if !defined(HVM_MAX_VCPUS)
68 # error HVM_MAX_VCPUS not defined
69 #endif
70 int main(void) {
71 xc_interface *xc = NULL;
72 xenforeignmemory_handle *xfmem;
73 xenevtchn_handle *xe;
74 xengnttab_handle *xg;
75 xengnttab_grant_copy_segment_t* seg = NULL;
76
77 xs_daemon_open();
78
79 xc = xc_interface_open(0, 0, 0);
80 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
81 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
82 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
83 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
84
85 xfmem = xenforeignmemory_open(0, 0);
86 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
87
88 xe = xenevtchn_open(0, 0);
89 xenevtchn_fd(xe);
90
91 xg = xengnttab_open(0, 0);
92 xengnttab_grant_copy(xg, 0, seg);
93
94 return 0;
95 }
96
97#elif CONFIG_XEN_CTRL_INTERFACE_VERSION == 40701
98 /*
99 * If we have stable libs the we don't want the libxc compat
100 * layers, regardless of what CFLAGS we may have been given.
101 */
102 #undef XC_WANT_COMPAT_EVTCHN_API
103 #undef XC_WANT_COMPAT_GNTTAB_API
104 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
105 #include <xenctrl.h>
106 #include <xenstore.h>
107 #include <xenevtchn.h>
108 #include <xengnttab.h>
109 #include <xenforeignmemory.h>
110 #include <stdint.h>
111 #include <xen/hvm/hvm_info_table.h>
112 #if !defined(HVM_MAX_VCPUS)
113 # error HVM_MAX_VCPUS not defined
114 #endif
115 int main(void) {
116 xc_interface *xc = NULL;
117 xenforeignmemory_handle *xfmem;
118 xenevtchn_handle *xe;
119 xengnttab_handle *xg;
120
121 xs_daemon_open();
122
123 xc = xc_interface_open(0, 0, 0);
124 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
125 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
126 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
127 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
128
129 xfmem = xenforeignmemory_open(0, 0);
130 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
131
132 xe = xenevtchn_open(0, 0);
133 xenevtchn_fd(xe);
134
135 xg = xengnttab_open(0, 0);
136 xengnttab_map_grant_ref(xg, 0, 0, 0);
137
138 return 0;
139 }
140
14efd8d3
PB
141#else
142#error invalid CONFIG_XEN_CTRL_INTERFACE_VERSION
143#endif