xen.h 1010 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #ifndef _XEN_XEN_H
  3. #define _XEN_XEN_H
  4. enum xen_domain_type {
  5. XEN_NATIVE, /* running on bare hardware */
  6. XEN_PV_DOMAIN, /* running in a PV domain */
  7. XEN_HVM_DOMAIN, /* running in a Xen hvm domain */
  8. };
  9. #ifdef CONFIG_XEN
  10. extern enum xen_domain_type xen_domain_type;
  11. #else
  12. #define xen_domain_type XEN_NATIVE
  13. #endif
  14. #ifdef CONFIG_XEN_PVH
  15. extern bool xen_pvh;
  16. #else
  17. #define xen_pvh 0
  18. #endif
  19. #define xen_domain() (xen_domain_type != XEN_NATIVE)
  20. #define xen_pv_domain() (xen_domain_type == XEN_PV_DOMAIN)
  21. #define xen_hvm_domain() (xen_domain_type == XEN_HVM_DOMAIN)
  22. #define xen_pvh_domain() (xen_pvh)
  23. #include <linux/types.h>
  24. extern uint32_t xen_start_flags;
  25. #ifdef CONFIG_XEN_DOM0
  26. #include <xen/interface/xen.h>
  27. #include <asm/xen/hypervisor.h>
  28. #define xen_initial_domain() (xen_domain() && \
  29. (xen_start_flags & SIF_INITDOMAIN))
  30. #else /* !CONFIG_XEN_DOM0 */
  31. #define xen_initial_domain() (0)
  32. #endif /* CONFIG_XEN_DOM0 */
  33. #endif /* _XEN_XEN_H */