123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- /* SPDX-License-Identifier: GPL-2.0-or-later */
- /* Test programs for various Xen versions that QEMU supports. */
- #if CONFIG_XEN_CTRL_INTERFACE_VERSION == 41100
- #undef XC_WANT_COMPAT_DEVICEMODEL_API
- #define __XEN_TOOLS__
- #include <xendevicemodel.h>
- #include <xenforeignmemory.h>
- int main(void) {
- xendevicemodel_handle *xd;
- xenforeignmemory_handle *xfmem;
- xd = xendevicemodel_open(0, 0);
- xendevicemodel_pin_memory_cacheattr(xd, 0, 0, 0, 0);
- xfmem = xenforeignmemory_open(0, 0);
- xenforeignmemory_map_resource(xfmem, 0, 0, 0, 0, 0, NULL, 0, 0);
- return 0;
- }
- #elif CONFIG_XEN_CTRL_INTERFACE_VERSION == 41000
- #undef XC_WANT_COMPAT_MAP_FOREIGN_API
- #include <xenforeignmemory.h>
- #include <xentoolcore.h>
- int main(void) {
- xenforeignmemory_handle *xfmem;
- xfmem = xenforeignmemory_open(0, 0);
- xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0);
- xentoolcore_restrict_all(0);
- return 0;
- }
- #elif CONFIG_XEN_CTRL_INTERFACE_VERSION == 40900
- #undef XC_WANT_COMPAT_DEVICEMODEL_API
- #define __XEN_TOOLS__
- #include <xendevicemodel.h>
- int main(void) {
- xendevicemodel_handle *xd;
- xd = xendevicemodel_open(0, 0);
- xendevicemodel_close(xd);
- return 0;
- }
- #elif CONFIG_XEN_CTRL_INTERFACE_VERSION == 40800
- /*
- * If we have stable libs the we don't want the libxc compat
- * layers, regardless of what CFLAGS we may have been given.
- *
- * Also, check if xengnttab_grant_copy_segment_t is defined and
- * grant copy operation is implemented.
- */
- #undef XC_WANT_COMPAT_EVTCHN_API
- #undef XC_WANT_COMPAT_GNTTAB_API
- #undef XC_WANT_COMPAT_MAP_FOREIGN_API
- #include <xenctrl.h>
- #include <xenstore.h>
- #include <xenevtchn.h>
- #include <xengnttab.h>
- #include <xenforeignmemory.h>
- #include <stdint.h>
- #include <xen/hvm/hvm_info_table.h>
- #if !defined(HVM_MAX_VCPUS)
- # error HVM_MAX_VCPUS not defined
- #endif
- int main(void) {
- xc_interface *xc = NULL;
- xenforeignmemory_handle *xfmem;
- xenevtchn_handle *xe;
- xengnttab_handle *xg;
- xengnttab_grant_copy_segment_t* seg = NULL;
- xs_daemon_open();
- xc = xc_interface_open(0, 0, 0);
- xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
- xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
- xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
- xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
- xfmem = xenforeignmemory_open(0, 0);
- xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
- xe = xenevtchn_open(0, 0);
- xenevtchn_fd(xe);
- xg = xengnttab_open(0, 0);
- xengnttab_grant_copy(xg, 0, seg);
- return 0;
- }
- #elif CONFIG_XEN_CTRL_INTERFACE_VERSION == 40701
- /*
- * If we have stable libs the we don't want the libxc compat
- * layers, regardless of what CFLAGS we may have been given.
- */
- #undef XC_WANT_COMPAT_EVTCHN_API
- #undef XC_WANT_COMPAT_GNTTAB_API
- #undef XC_WANT_COMPAT_MAP_FOREIGN_API
- #include <xenctrl.h>
- #include <xenstore.h>
- #include <xenevtchn.h>
- #include <xengnttab.h>
- #include <xenforeignmemory.h>
- #include <stdint.h>
- #include <xen/hvm/hvm_info_table.h>
- #if !defined(HVM_MAX_VCPUS)
- # error HVM_MAX_VCPUS not defined
- #endif
- int main(void) {
- xc_interface *xc = NULL;
- xenforeignmemory_handle *xfmem;
- xenevtchn_handle *xe;
- xengnttab_handle *xg;
- xs_daemon_open();
- xc = xc_interface_open(0, 0, 0);
- xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
- xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
- xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
- xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
- xfmem = xenforeignmemory_open(0, 0);
- xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
- xe = xenevtchn_open(0, 0);
- xenevtchn_fd(xe);
- xg = xengnttab_open(0, 0);
- xengnttab_map_grant_ref(xg, 0, 0, 0);
- return 0;
- }
- #else
- #error invalid CONFIG_XEN_CTRL_INTERFACE_VERSION
- #endif
|