diff options
Diffstat (limited to 'arch/ia64')
-rw-r--r-- | arch/ia64/Makefile | 2 | ||||
-rw-r--r-- | arch/ia64/include/asm/machvec.h | 2 | ||||
-rw-r--r-- | arch/ia64/include/asm/machvec_xen.h | 22 | ||||
-rw-r--r-- | arch/ia64/kernel/acpi.c | 5 | ||||
-rw-r--r-- | arch/ia64/xen/Makefile | 2 | ||||
-rw-r--r-- | arch/ia64/xen/machvec.c | 4 |
6 files changed, 37 insertions, 0 deletions
diff --git a/arch/ia64/Makefile b/arch/ia64/Makefile index 905d25b13d5a..40242501bcdd 100644 --- a/arch/ia64/Makefile +++ b/arch/ia64/Makefile | |||
@@ -56,9 +56,11 @@ core-$(CONFIG_IA64_DIG) += arch/ia64/dig/ | |||
56 | core-$(CONFIG_IA64_GENERIC) += arch/ia64/dig/ | 56 | core-$(CONFIG_IA64_GENERIC) += arch/ia64/dig/ |
57 | core-$(CONFIG_IA64_HP_ZX1) += arch/ia64/dig/ | 57 | core-$(CONFIG_IA64_HP_ZX1) += arch/ia64/dig/ |
58 | core-$(CONFIG_IA64_HP_ZX1_SWIOTLB) += arch/ia64/dig/ | 58 | core-$(CONFIG_IA64_HP_ZX1_SWIOTLB) += arch/ia64/dig/ |
59 | core-$(CONFIG_IA64_XEN_GUEST) += arch/ia64/dig/ | ||
59 | core-$(CONFIG_IA64_SGI_SN2) += arch/ia64/sn/ | 60 | core-$(CONFIG_IA64_SGI_SN2) += arch/ia64/sn/ |
60 | core-$(CONFIG_IA64_SGI_UV) += arch/ia64/uv/ | 61 | core-$(CONFIG_IA64_SGI_UV) += arch/ia64/uv/ |
61 | core-$(CONFIG_KVM) += arch/ia64/kvm/ | 62 | core-$(CONFIG_KVM) += arch/ia64/kvm/ |
63 | core-$(CONFIG_XEN) += arch/ia64/xen/ | ||
62 | 64 | ||
63 | drivers-$(CONFIG_PCI) += arch/ia64/pci/ | 65 | drivers-$(CONFIG_PCI) += arch/ia64/pci/ |
64 | drivers-$(CONFIG_IA64_HP_SIM) += arch/ia64/hp/sim/ | 66 | drivers-$(CONFIG_IA64_HP_SIM) += arch/ia64/hp/sim/ |
diff --git a/arch/ia64/include/asm/machvec.h b/arch/ia64/include/asm/machvec.h index 2b850ccafef5..de99cb2799cf 100644 --- a/arch/ia64/include/asm/machvec.h +++ b/arch/ia64/include/asm/machvec.h | |||
@@ -128,6 +128,8 @@ extern void machvec_tlb_migrate_finish (struct mm_struct *); | |||
128 | # include <asm/machvec_sn2.h> | 128 | # include <asm/machvec_sn2.h> |
129 | # elif defined (CONFIG_IA64_SGI_UV) | 129 | # elif defined (CONFIG_IA64_SGI_UV) |
130 | # include <asm/machvec_uv.h> | 130 | # include <asm/machvec_uv.h> |
131 | # elif defined (CONFIG_IA64_XEN_GUEST) | ||
132 | # include <asm/machvec_xen.h> | ||
131 | # elif defined (CONFIG_IA64_GENERIC) | 133 | # elif defined (CONFIG_IA64_GENERIC) |
132 | 134 | ||
133 | # ifdef MACHVEC_PLATFORM_HEADER | 135 | # ifdef MACHVEC_PLATFORM_HEADER |
diff --git a/arch/ia64/include/asm/machvec_xen.h b/arch/ia64/include/asm/machvec_xen.h new file mode 100644 index 000000000000..55f9228056cd --- /dev/null +++ b/arch/ia64/include/asm/machvec_xen.h | |||
@@ -0,0 +1,22 @@ | |||
1 | #ifndef _ASM_IA64_MACHVEC_XEN_h | ||
2 | #define _ASM_IA64_MACHVEC_XEN_h | ||
3 | |||
4 | extern ia64_mv_setup_t dig_setup; | ||
5 | extern ia64_mv_cpu_init_t xen_cpu_init; | ||
6 | extern ia64_mv_irq_init_t xen_irq_init; | ||
7 | extern ia64_mv_send_ipi_t xen_platform_send_ipi; | ||
8 | |||
9 | /* | ||
10 | * This stuff has dual use! | ||
11 | * | ||
12 | * For a generic kernel, the macros are used to initialize the | ||
13 | * platform's machvec structure. When compiling a non-generic kernel, | ||
14 | * the macros are used directly. | ||
15 | */ | ||
16 | #define platform_name "xen" | ||
17 | #define platform_setup dig_setup | ||
18 | #define platform_cpu_init xen_cpu_init | ||
19 | #define platform_irq_init xen_irq_init | ||
20 | #define platform_send_ipi xen_platform_send_ipi | ||
21 | |||
22 | #endif /* _ASM_IA64_MACHVEC_XEN_h */ | ||
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c index 5d1eb7ee2bf6..00936491933e 100644 --- a/arch/ia64/kernel/acpi.c +++ b/arch/ia64/kernel/acpi.c | |||
@@ -52,6 +52,7 @@ | |||
52 | #include <asm/numa.h> | 52 | #include <asm/numa.h> |
53 | #include <asm/sal.h> | 53 | #include <asm/sal.h> |
54 | #include <asm/cyclone.h> | 54 | #include <asm/cyclone.h> |
55 | #include <asm/xen/hypervisor.h> | ||
55 | 56 | ||
56 | #define BAD_MADT_ENTRY(entry, end) ( \ | 57 | #define BAD_MADT_ENTRY(entry, end) ( \ |
57 | (!entry) || (unsigned long)entry + sizeof(*entry) > end || \ | 58 | (!entry) || (unsigned long)entry + sizeof(*entry) > end || \ |
@@ -121,6 +122,8 @@ acpi_get_sysname(void) | |||
121 | return "uv"; | 122 | return "uv"; |
122 | else | 123 | else |
123 | return "sn2"; | 124 | return "sn2"; |
125 | } else if (xen_pv_domain() && !strcmp(hdr->oem_id, "XEN")) { | ||
126 | return "xen"; | ||
124 | } | 127 | } |
125 | 128 | ||
126 | return "dig"; | 129 | return "dig"; |
@@ -137,6 +140,8 @@ acpi_get_sysname(void) | |||
137 | return "uv"; | 140 | return "uv"; |
138 | # elif defined (CONFIG_IA64_DIG) | 141 | # elif defined (CONFIG_IA64_DIG) |
139 | return "dig"; | 142 | return "dig"; |
143 | # elif defined (CONFIG_IA64_XEN_GUEST) | ||
144 | return "xen"; | ||
140 | # else | 145 | # else |
141 | # error Unknown platform. Fix acpi.c. | 146 | # error Unknown platform. Fix acpi.c. |
142 | # endif | 147 | # endif |
diff --git a/arch/ia64/xen/Makefile b/arch/ia64/xen/Makefile index ed31c76d2bf0..972d085567d9 100644 --- a/arch/ia64/xen/Makefile +++ b/arch/ia64/xen/Makefile | |||
@@ -5,6 +5,8 @@ | |||
5 | obj-y := hypercall.o xenivt.o xensetup.o xen_pv_ops.o irq_xen.o \ | 5 | obj-y := hypercall.o xenivt.o xensetup.o xen_pv_ops.o irq_xen.o \ |
6 | hypervisor.o xencomm.o xcom_hcall.o grant-table.o time.o | 6 | hypervisor.o xencomm.o xcom_hcall.o grant-table.o time.o |
7 | 7 | ||
8 | obj-$(CONFIG_IA64_GENERIC) += machvec.o | ||
9 | |||
8 | AFLAGS_xenivt.o += -D__IA64_ASM_PARAVIRTUALIZED_XEN | 10 | AFLAGS_xenivt.o += -D__IA64_ASM_PARAVIRTUALIZED_XEN |
9 | 11 | ||
10 | # xen multi compile | 12 | # xen multi compile |
diff --git a/arch/ia64/xen/machvec.c b/arch/ia64/xen/machvec.c new file mode 100644 index 000000000000..4ad588a7c279 --- /dev/null +++ b/arch/ia64/xen/machvec.c | |||
@@ -0,0 +1,4 @@ | |||
1 | #define MACHVEC_PLATFORM_NAME xen | ||
2 | #define MACHVEC_PLATFORM_HEADER <asm/machvec_xen.h> | ||
3 | #include <asm/machvec_init.h> | ||
4 | |||