diff options
| author | Jeremy Fitzhardinge <jeremy@goop.org> | 2009-02-06 16:35:44 -0500 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-02-16 02:55:50 -0500 |
| commit | 9033304a1520df346862c95743a6c2023f21f057 (patch) | |
| tree | f5a89819a38878d92f6234f3aa6f7c4b1726ab68 | |
| parent | 7032e8696726354d6180d8a2d17191f958cd93ae (diff) | |
x86, xen: short-circuit tests for dom0
When testing for a dom0/initial/privileged domain, make sure the
predicate evaluates to a compile-time 0 if CONFIG_XEN_DOM0 isn't
enabled. This will make most of the dom0 code evaporate without
much more effort.
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
| -rw-r--r-- | arch/x86/include/asm/xen/hypervisor.h | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/arch/x86/include/asm/xen/hypervisor.h b/arch/x86/include/asm/xen/hypervisor.h index 81fbd735aec4..d5b7e90c0edf 100644 --- a/arch/x86/include/asm/xen/hypervisor.h +++ b/arch/x86/include/asm/xen/hypervisor.h | |||
| @@ -38,22 +38,30 @@ extern struct shared_info *HYPERVISOR_shared_info; | |||
| 38 | extern struct start_info *xen_start_info; | 38 | extern struct start_info *xen_start_info; |
| 39 | 39 | ||
| 40 | enum xen_domain_type { | 40 | enum xen_domain_type { |
| 41 | XEN_NATIVE, | 41 | XEN_NATIVE, /* running on bare hardware */ |
| 42 | XEN_PV_DOMAIN, | 42 | XEN_PV_DOMAIN, /* running in a PV domain */ |
| 43 | XEN_HVM_DOMAIN, | 43 | XEN_HVM_DOMAIN, /* running in a Xen hvm domain */ |
| 44 | }; | 44 | }; |
| 45 | 45 | ||
| 46 | extern enum xen_domain_type xen_domain_type; | ||
| 47 | |||
| 48 | #ifdef CONFIG_XEN | 46 | #ifdef CONFIG_XEN |
| 49 | #define xen_domain() (xen_domain_type != XEN_NATIVE) | 47 | extern enum xen_domain_type xen_domain_type; |
| 50 | #else | 48 | #else |
| 51 | #define xen_domain() (0) | 49 | #define xen_domain_type XEN_NATIVE |
| 52 | #endif | 50 | #endif |
| 53 | 51 | ||
| 54 | #define xen_pv_domain() (xen_domain() && xen_domain_type == XEN_PV_DOMAIN) | 52 | #define xen_domain() (xen_domain_type != XEN_NATIVE) |
| 55 | #define xen_hvm_domain() (xen_domain() && xen_domain_type == XEN_HVM_DOMAIN) | 53 | #define xen_pv_domain() (xen_domain() && \ |
| 54 | xen_domain_type == XEN_PV_DOMAIN) | ||
| 55 | #define xen_hvm_domain() (xen_domain() && \ | ||
| 56 | xen_domain_type == XEN_HVM_DOMAIN) | ||
| 57 | |||
| 58 | #ifdef CONFIG_XEN_DOM0 | ||
| 59 | #include <xen/interface/xen.h> | ||
| 56 | 60 | ||
| 57 | #define xen_initial_domain() (xen_pv_domain() && xen_start_info->flags & SIF_INITDOMAIN) | 61 | #define xen_initial_domain() (xen_pv_domain() && \ |
| 62 | xen_start_info->flags & SIF_INITDOMAIN) | ||
| 63 | #else /* !CONFIG_XEN_DOM0 */ | ||
| 64 | #define xen_initial_domain() (0) | ||
| 65 | #endif /* CONFIG_XEN_DOM0 */ | ||
| 58 | 66 | ||
| 59 | #endif /* _ASM_X86_XEN_HYPERVISOR_H */ | 67 | #endif /* _ASM_X86_XEN_HYPERVISOR_H */ |
