aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2009-10-12 12:56:00 +0100
committerKeir Fraser <keir.fraser@citrix.com>2009-10-12 12:56:00 +0100
commit5a153a9f8ca72b91d05aa123fedfe11a582a56f4 (patch)
tree49daca531216c90380c1e4aae8d29c276622a1e8
parentf98ee759c5e0209ae78dbf416df792339ced9e2e (diff)
downloadxen-5a153a9f8ca72b91d05aa123fedfe11a582a56f4.tar.gz
xen-5a153a9f8ca72b91d05aa123fedfe11a582a56f4.tar.bz2
xen-5a153a9f8ca72b91d05aa123fedfe11a582a56f4.zip
x86: reduce the uses of CONFIG_COMPAT
... to where it really is needed and meaningful (i.e. in some places it seems to make more sense to use __x86_64__ instead). Signed-off-by: Jan Beulich <jbeulich@novell.com>
-rw-r--r--xen/arch/x86/domain.c12
-rw-r--r--xen/arch/x86/mm.c10
-rw-r--r--xen/arch/x86/setup.c22
-rw-r--r--xen/arch/x86/smpboot.c2
-rw-r--r--xen/arch/x86/x86_64/Makefile14
-rw-r--r--xen/arch/x86/x86_64/asm-offsets.c4
-rw-r--r--xen/arch/x86/x86_64/compat/mm.c4
-rw-r--r--xen/arch/x86/x86_64/compat/traps.c4
-rw-r--r--xen/arch/x86/x86_64/mm.c2
-rw-r--r--xen/include/asm-x86/domain.h8
-rw-r--r--xen/include/asm-x86/hypercall.h22
-rw-r--r--xen/include/asm-x86/mm.h4
12 files changed, 31 insertions, 77 deletions
diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index d9d6fb075e..20d3e3fc80 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -208,7 +208,7 @@ void free_vcpu_struct(struct vcpu *v)
free_xenheap_pages(v, get_order_from_bytes(sizeof(*v)));
}
-#ifdef CONFIG_COMPAT
+#ifdef __x86_64__
static int setup_compat_l4(struct vcpu *v)
{
@@ -445,12 +445,10 @@ int arch_domain_create(struct domain *d, unsigned int domcr_flags)
l3e_from_page(virt_to_page(d->arch.mm_perdomain_l2),
__PAGE_HYPERVISOR);
-#endif /* __x86_64__ */
-
-#ifdef CONFIG_COMPAT
HYPERVISOR_COMPAT_VIRT_START(d) =
is_hvm_domain(d) ? ~0u : __HYPERVISOR_COMPAT_VIRT_START;
-#endif
+
+#endif /* __x86_64__ */
if ( (rc = paging_domain_init(d)) != 0 )
goto fail;
@@ -768,9 +766,7 @@ int arch_set_info_guest(
v->arch.guest_table_user = pagetable_from_pfn(cr3_pfn);
}
-#endif
}
-#ifdef CONFIG_COMPAT
else
{
l4_pgentry_t *l4tab;
@@ -790,8 +786,8 @@ int arch_set_info_guest(
l4tab = __va(pagetable_get_paddr(v->arch.guest_table));
*l4tab = l4e_from_pfn(
cr3_pfn, _PAGE_PRESENT|_PAGE_RW|_PAGE_USER|_PAGE_ACCESSED);
- }
#endif
+ }
if ( v->vcpu_id == 0 )
update_domain_wallclock_time(d);
diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index 96a3db1472..f30d9ca2fd 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -158,7 +158,7 @@ boolean_param("allowhugepage", opt_allow_hugepage);
!has_arch_pdevs(d)) ? \
L1_DISALLOW_MASK : (L1_DISALLOW_MASK & ~PAGE_CACHE_ATTRS))
-#ifdef CONFIG_COMPAT
+#ifdef __x86_64__
l2_pgentry_t *compat_idle_pg_table_l2 = NULL;
#define l3_disallow_mask(d) (!is_pv_32on64_domain(d) ? \
L3_DISALLOW_MASK : \
@@ -1002,7 +1002,7 @@ get_page_from_l4e(
#endif
-#ifdef CONFIG_COMPAT
+#ifdef __x86_64__
#define unadjust_guest_l3e(pl3e, d) \
do { \
if ( unlikely(is_pv_32on64_domain(d)) && \
@@ -1330,7 +1330,7 @@ static int alloc_l2_table(struct page_info *page, unsigned long type,
__PAGE_HYPERVISOR));
pl2e[l2_table_offset(LINEAR_PT_VIRT_START)] =
l2e_from_pfn(pfn, __PAGE_HYPERVISOR);
-#elif defined(CONFIG_COMPAT)
+#else
memcpy(&pl2e[COMPAT_L2_PAGETABLE_FIRST_XEN_SLOT(d)],
&compat_idle_pg_table_l2[
l2_table_offset(HIRO_COMPAT_MPT_VIRT_START)],
@@ -1511,7 +1511,7 @@ static void free_l1_table(struct page_info *page)
static int free_l2_table(struct page_info *page, int preemptible)
{
-#ifdef CONFIG_COMPAT
+#ifdef __x86_64__
struct domain *d = page_get_owner(page);
#endif
unsigned long pfn = page_to_mfn(page);
@@ -2446,7 +2446,7 @@ int new_guest_cr3(unsigned long mfn)
int okay;
unsigned long old_base_mfn;
-#ifdef CONFIG_COMPAT
+#ifdef __x86_64__
if ( is_pv_32on64_domain(d) )
{
okay = paging_mode_refcounts(d)
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 608b67a320..c9727468d2 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1154,37 +1154,23 @@ void arch_get_xen_caps(xen_capabilities_info_t *info)
(*info)[0] = '\0';
-#if defined(CONFIG_X86_32)
-
- snprintf(s, sizeof(s), "xen-%d.%d-x86_32p ", major, minor);
- safe_strcat(*info, s);
- if ( hvm_enabled )
- {
- snprintf(s, sizeof(s), "hvm-%d.%d-x86_32 ", major, minor);
- safe_strcat(*info, s);
- snprintf(s, sizeof(s), "hvm-%d.%d-x86_32p ", major, minor);
- safe_strcat(*info, s);
- }
-
-#elif defined(CONFIG_X86_64)
-
+#ifdef CONFIG_X86_64
snprintf(s, sizeof(s), "xen-%d.%d-x86_64 ", major, minor);
safe_strcat(*info, s);
-#ifdef CONFIG_COMPAT
+#endif
snprintf(s, sizeof(s), "xen-%d.%d-x86_32p ", major, minor);
safe_strcat(*info, s);
-#endif
if ( hvm_enabled )
{
snprintf(s, sizeof(s), "hvm-%d.%d-x86_32 ", major, minor);
safe_strcat(*info, s);
snprintf(s, sizeof(s), "hvm-%d.%d-x86_32p ", major, minor);
safe_strcat(*info, s);
+#ifdef CONFIG_X86_64
snprintf(s, sizeof(s), "hvm-%d.%d-x86_64 ", major, minor);
safe_strcat(*info, s);
- }
-
#endif
+ }
}
int xen_in_range(paddr_t start, paddr_t end)
diff --git a/xen/arch/x86/smpboot.c b/xen/arch/x86/smpboot.c
index 2a64bd5f27..99836ef65a 100644
--- a/xen/arch/x86/smpboot.c
+++ b/xen/arch/x86/smpboot.c
@@ -864,14 +864,12 @@ static int __devinit do_boot_cpu(int apicid, int cpu)
if (gdt == boot_cpu_gdt_table) {
order = get_order_from_pages(NR_RESERVED_GDT_PAGES);
#ifdef __x86_64__
-#ifdef CONFIG_COMPAT
page = alloc_domheap_pages(NULL, order,
MEMF_node(cpu_to_node(cpu)));
per_cpu(compat_gdt_table, cpu) = gdt = page_to_virt(page);
memcpy(gdt, boot_cpu_compat_gdt_table,
NR_RESERVED_GDT_PAGES * PAGE_SIZE);
gdt[PER_CPU_GDT_ENTRY - FIRST_RESERVED_GDT_ENTRY].a = cpu;
-#endif
page = alloc_domheap_pages(NULL, order,
MEMF_node(cpu_to_node(cpu)));
per_cpu(gdt_table, cpu) = gdt = page_to_virt(page);
diff --git a/xen/arch/x86/x86_64/Makefile b/xen/arch/x86/x86_64/Makefile
index dd340c48c3..5d1335c460 100644
--- a/xen/arch/x86/x86_64/Makefile
+++ b/xen/arch/x86/x86_64/Makefile
@@ -9,12 +9,12 @@ obj-y += pci.o
obj-y += acpi_mmcfg.o
obj-y += mmconfig_64.o
obj-y += mmconfig-shared.o
+obj-y += compat.o
+obj-y += compat_kexec.o
+obj-y += domain.o
+obj-y += physdev.o
+obj-y += platform_hypercall.o
+obj-y += cpu_idle.o
+obj-y += cpufreq.o
obj-$(crash_debug) += gdbstub.o
-obj-$(CONFIG_COMPAT) += compat.o
-obj-$(CONFIG_COMPAT) += compat_kexec.o
-obj-$(CONFIG_COMPAT) += domain.o
-obj-$(CONFIG_COMPAT) += physdev.o
-obj-$(CONFIG_COMPAT) += platform_hypercall.o
-obj-$(CONFIG_COMPAT) += cpu_idle.o
-obj-$(CONFIG_COMPAT) += cpufreq.o
diff --git a/xen/arch/x86/x86_64/asm-offsets.c b/xen/arch/x86/x86_64/asm-offsets.c
index d4c4262f1f..eec4e3c7ed 100644
--- a/xen/arch/x86/x86_64/asm-offsets.c
+++ b/xen/arch/x86/x86_64/asm-offsets.c
@@ -7,9 +7,7 @@
#include <xen/config.h>
#include <xen/perfc.h>
#include <xen/sched.h>
-#ifdef CONFIG_COMPAT
#include <compat/xen.h>
-#endif
#include <asm/fixmap.h>
#include <asm/hardirq.h>
@@ -128,11 +126,9 @@ void __dummy__(void)
OFFSET(VCPUINFO_upcall_mask, struct vcpu_info, evtchn_upcall_mask);
BLANK();
-#ifdef CONFIG_COMPAT
OFFSET(COMPAT_VCPUINFO_upcall_pending, struct compat_vcpu_info, evtchn_upcall_pending);
OFFSET(COMPAT_VCPUINFO_upcall_mask, struct compat_vcpu_info, evtchn_upcall_mask);
BLANK();
-#endif
OFFSET(CPUINFO_current_vcpu, struct cpu_info, current_vcpu);
DEFINE(CPUINFO_sizeof, sizeof(struct cpu_info));
diff --git a/xen/arch/x86/x86_64/compat/mm.c b/xen/arch/x86/x86_64/compat/mm.c
index e444aa097b..27b6227bfe 100644
--- a/xen/arch/x86/x86_64/compat/mm.c
+++ b/xen/arch/x86/x86_64/compat/mm.c
@@ -1,5 +1,3 @@
-#ifdef CONFIG_COMPAT
-
#include <xen/event.h>
#include <xen/multicall.h>
#include <compat/memory.h>
@@ -343,8 +341,6 @@ int compat_mmuext_op(XEN_GUEST_HANDLE(mmuext_op_compat_t) cmp_uops,
return rc;
}
-#endif /* CONFIG_COMPAT */
-
/*
* Local variables:
* mode: C
diff --git a/xen/arch/x86/x86_64/compat/traps.c b/xen/arch/x86/x86_64/compat/traps.c
index 67fd3e0a09..f44aadec29 100644
--- a/xen/arch/x86/x86_64/compat/traps.c
+++ b/xen/arch/x86/x86_64/compat/traps.c
@@ -1,5 +1,3 @@
-#ifdef CONFIG_COMPAT
-
#include <xen/event.h>
#include <asm/regs.h>
#include <compat/callback.h>
@@ -361,8 +359,6 @@ int compat_set_trap_table(XEN_GUEST_HANDLE(trap_info_compat_t) traps)
return rc;
}
-#endif /* CONFIG_COMPAT */
-
static void hypercall_page_initialise_ring1_kernel(void *hypercall_page)
{
char *p;
diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index 45831bdd1c..66f00b5a61 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -43,9 +43,7 @@ unsigned long __read_mostly ma_top_mask = 0;
unsigned long __read_mostly pfn_hole_mask = 0;
unsigned int __read_mostly pfn_pdx_hole_shift = 0;
-#ifdef CONFIG_COMPAT
unsigned int m2p_compat_vstart = __HYPERVISOR_COMPAT_VIRT_START;
-#endif
DEFINE_PER_CPU_READ_MOSTLY(void *, compat_arg_xlat);
diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h
index 2f045d50d4..b5888505eb 100644
--- a/xen/include/asm-x86/domain.h
+++ b/xen/include/asm-x86/domain.h
@@ -234,19 +234,15 @@ struct arch_domain
struct page_info **mm_perdomain_pt_pages;
l2_pgentry_t *mm_perdomain_l2;
l3_pgentry_t *mm_perdomain_l3;
+
+ unsigned int hv_compat_vstart;
#else
l1_pgentry_t *mm_perdomain_pt;
-#endif
-#ifdef CONFIG_X86_32
/* map_domain_page() mapping cache. */
struct mapcache_domain mapcache;
#endif
-#ifdef CONFIG_COMPAT
- unsigned int hv_compat_vstart;
-#endif
-
bool_t s3_integrity;
/* I/O-port admin-specified access capabilities. */
diff --git a/xen/include/asm-x86/hypercall.h b/xen/include/asm-x86/hypercall.h
index fc7ccc0be5..86377862f1 100644
--- a/xen/include/asm-x86/hypercall.h
+++ b/xen/include/asm-x86/hypercall.h
@@ -127,19 +127,6 @@ do_set_segment_base(
unsigned int which,
unsigned long base);
-#else
-
-extern long
-do_set_callbacks(
- unsigned long event_selector,
- unsigned long event_address,
- unsigned long failsafe_selector,
- unsigned long failsafe_address);
-
-#endif
-
-#ifdef CONFIG_COMPAT
-
extern int
compat_physdev_op(
int cmd,
@@ -149,6 +136,15 @@ extern int
arch_compat_vcpu_op(
int cmd, struct vcpu *v, XEN_GUEST_HANDLE(void) arg);
+#else
+
+extern long
+do_set_callbacks(
+ unsigned long event_selector,
+ unsigned long event_address,
+ unsigned long failsafe_selector,
+ unsigned long failsafe_address);
+
#endif
#endif /* __ASM_X86_HYPERCALL_H__ */
diff --git a/xen/include/asm-x86/mm.h b/xen/include/asm-x86/mm.h
index c569573446..14505a5a36 100644
--- a/xen/include/asm-x86/mm.h
+++ b/xen/include/asm-x86/mm.h
@@ -455,10 +455,8 @@ TYPE_SAFE(unsigned long,mfn);
#define INVALID_MFN (~0UL)
-#ifdef CONFIG_COMPAT
#define compat_pfn_to_cr3(pfn) (((unsigned)(pfn) << 12) | ((unsigned)(pfn) >> 20))
#define compat_cr3_to_pfn(cr3) (((unsigned)(cr3) >> 12) | ((unsigned)(cr3) << 20))
-#endif
#ifdef MEMORY_GUARD
void memguard_init(void);
@@ -506,10 +504,8 @@ int __sync_lazy_execstate(void);
/* Arch-specific portion of memory_op hypercall. */
long arch_memory_op(int op, XEN_GUEST_HANDLE(void) arg);
long subarch_memory_op(int op, XEN_GUEST_HANDLE(void) arg);
-#ifdef CONFIG_COMPAT
int compat_arch_memory_op(int op, XEN_GUEST_HANDLE(void));
int compat_subarch_memory_op(int op, XEN_GUEST_HANDLE(void));
-#endif
int steal_page(
struct domain *d, struct page_info *page, unsigned int memflags);