7243b93345
Start PVH guest at XEN_ELFNOTE_PHYS32_ENTRY address. Setup hypercall page, initialize boot_params, enable early page tables. Since this stub is executed before kernel entry point we cannot use variables in .bss which is cleared by kernel. We explicitly place variables that are initialized here into .data. While adjusting xen_hvm_init_shared_info() make it use cpuid_e?x() instead of cpuid() (wherever possible). Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> Reviewed-by: Juergen Gross <jgross@suse.com>
40 lines
1012 B
C
40 lines
1012 B
C
#ifndef _XEN_XEN_H
|
|
#define _XEN_XEN_H
|
|
|
|
enum xen_domain_type {
|
|
XEN_NATIVE, /* running on bare hardware */
|
|
XEN_PV_DOMAIN, /* running in a PV domain */
|
|
XEN_HVM_DOMAIN, /* running in a Xen hvm domain */
|
|
};
|
|
|
|
#ifdef CONFIG_XEN
|
|
extern enum xen_domain_type xen_domain_type;
|
|
#else
|
|
#define xen_domain_type XEN_NATIVE
|
|
#endif
|
|
|
|
#define xen_domain() (xen_domain_type != XEN_NATIVE)
|
|
#define xen_pv_domain() (xen_domain() && \
|
|
xen_domain_type == XEN_PV_DOMAIN)
|
|
#define xen_hvm_domain() (xen_domain() && \
|
|
xen_domain_type == XEN_HVM_DOMAIN)
|
|
|
|
#ifdef CONFIG_XEN_DOM0
|
|
#include <xen/interface/xen.h>
|
|
#include <asm/xen/hypervisor.h>
|
|
|
|
#define xen_initial_domain() (xen_domain() && \
|
|
xen_start_info && xen_start_info->flags & SIF_INITDOMAIN)
|
|
#else /* !CONFIG_XEN_DOM0 */
|
|
#define xen_initial_domain() (0)
|
|
#endif /* CONFIG_XEN_DOM0 */
|
|
|
|
#ifdef CONFIG_XEN_PVH
|
|
extern bool xen_pvh;
|
|
#define xen_pvh_domain() (xen_hvm_domain() && xen_pvh)
|
|
#else
|
|
#define xen_pvh_domain() (0)
|
|
#endif
|
|
|
|
#endif /* _XEN_XEN_H */
|