10d09e41aSPaolo Bonzini /* 20d09e41aSPaolo Bonzini * public xen header 30d09e41aSPaolo Bonzini * stuff needed outside xen-*.c, i.e. interfaces to qemu. 40d09e41aSPaolo Bonzini * must not depend on any xen headers being present in 50d09e41aSPaolo Bonzini * /usr/include/xen, so it can be included unconditionally. 60d09e41aSPaolo Bonzini */ 750c88402SJoao Martins #ifndef QEMU_HW_XEN_H 850c88402SJoao Martins #define QEMU_HW_XEN_H 950c88402SJoao Martins 1050c88402SJoao Martins /* 11e2abfe5eSDavid Woodhouse * C files using Xen toolstack libraries will have included those headers 12e2abfe5eSDavid Woodhouse * already via xen_native.h, and having __XEM_TOOLS__ defined will have 13e2abfe5eSDavid Woodhouse * automatically set __XEN_INTERFACE_VERSION__ to the latest supported 14e2abfe5eSDavid Woodhouse * by the *system* Xen headers which were transitively included. 15e2abfe5eSDavid Woodhouse * 16e2abfe5eSDavid Woodhouse * C files which are part of the internal emulation, and which did not 17e2abfe5eSDavid Woodhouse * include xen_native.h, may need this defined so that the Xen headers 18e2abfe5eSDavid Woodhouse * imported to include/hw/xen/interface/ will expose the appropriate API 19e2abfe5eSDavid Woodhouse * version. 20e2abfe5eSDavid Woodhouse * 21e2abfe5eSDavid Woodhouse * This is why there's a rule that xen_native.h must be included first. 2250c88402SJoao Martins */ 23e2abfe5eSDavid Woodhouse #ifndef __XEN_INTERFACE_VERSION__ 24e2abfe5eSDavid Woodhouse #define __XEN_INTERFACE_VERSION__ 0x00040e00 25e2abfe5eSDavid Woodhouse #endif 260d09e41aSPaolo Bonzini 2733c11879SPaolo Bonzini #include "exec/cpu-common.h" 280d09e41aSPaolo Bonzini 290d09e41aSPaolo Bonzini /* xen-machine.c */ 300d09e41aSPaolo Bonzini enum xen_mode { 31faa4e800SDavid Woodhouse XEN_DISABLED = 0, /* xen support disabled (default) */ 32faa4e800SDavid Woodhouse XEN_ATTACH, /* attach to xen domain created by libxl */ 33faa4e800SDavid Woodhouse XEN_EMULATE, /* emulate Xen within QEMU */ 340d09e41aSPaolo Bonzini }; 350d09e41aSPaolo Bonzini 360d09e41aSPaolo Bonzini extern uint32_t xen_domid; 370d09e41aSPaolo Bonzini extern enum xen_mode xen_mode; 381c599472SPaul Durrant extern bool xen_domid_restrict; 390d09e41aSPaolo Bonzini 400d09e41aSPaolo Bonzini int xen_pci_slot_get_pirq(PCIDevice *pci_dev, int irq_num); 4121d87050SBernhard Beschow int xen_set_pci_link_route(uint8_t link, uint8_t irq); 4227047bd2SBernhard Beschow void xen_intx_set_irq(void *opaque, int irq_num, int level); 430d09e41aSPaolo Bonzini void xen_hvm_inject_msi(uint64_t addr, uint32_t data); 44428c3eceSStefano Stabellini int xen_is_pirq_msi(uint32_t msi_data); 450d09e41aSPaolo Bonzini 460d09e41aSPaolo Bonzini qemu_irq *xen_interrupt_controller_init(void); 470d09e41aSPaolo Bonzini 480d09e41aSPaolo Bonzini void xen_register_framebuffer(struct MemoryRegion *mr); 490d09e41aSPaolo Bonzini 500d09e41aSPaolo Bonzini #endif /* QEMU_HW_XEN_H */ 51