aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Chiang <achiang@hp.com>2010-02-25 16:09:52 -0500
committerTony Luck <tony.luck@intel.com>2010-02-25 18:15:13 -0500
commitd868080d2a1c95526cb01e3d0c14096721cbb87a (patch)
treed87e4a8c2807beb582b20e296ff6dd694172ed18
parent60b341b778cc2929df16c0a504c91621b3c6a4ad (diff)
[IA64] Only build arch/ia64/kernel/acpi.o when CONFIG_ACPI
The following commit broke the ia64 sim_defconfig build: 3b2b84c0b81108a9a869a88bf2beeb5a95d81dd1 ACPI: processor: driver doesn't need to evaluate _PDC This is because it added: +#include <acpi/processor.h> To arch/ia64/kernel/acpi.c. Unfortunately, the ia64_simdefconfig does not turn on CONFIG_ACPI, and we get build errors. The fix described in $subject seems to be the most sensible way to untangle the mess. The other issue is that acpi_get_sysname() is required for all configs, most of which define CONFIG_ACPI, but are not CONFIG_IA64_GENERIC. Turn it into an inline to cover the "non generic" ia64 configs; to prevent a duplicate definition build error, we need to wrap the definition in acpi.o inside an #ifdef. Finally, move the pm_idle and pm_power_off exports into process.c (which is always built), similar to other architectures, and allow the sim defconfig to link. Signed-off-by: Alex Chiang <achiang@hp.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
-rw-r--r--arch/ia64/include/asm/acpi.h25
-rw-r--r--arch/ia64/kernel/Makefile3
-rw-r--r--arch/ia64/kernel/acpi.c33
-rw-r--r--arch/ia64/kernel/process.c4
4 files changed, 32 insertions, 33 deletions
diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h
index e97b255d97bc..d3b48305a08f 100644
--- a/arch/ia64/include/asm/acpi.h
+++ b/arch/ia64/include/asm/acpi.h
@@ -99,7 +99,32 @@ ia64_acpi_release_global_lock (unsigned int *lock)
99#define acpi_processor_cstate_check(x) (x) /* no idle limits on IA64 :) */ 99#define acpi_processor_cstate_check(x) (x) /* no idle limits on IA64 :) */
100static inline void disable_acpi(void) { } 100static inline void disable_acpi(void) { }
101 101
102#ifdef CONFIG_IA64_GENERIC
102const char *acpi_get_sysname (void); 103const char *acpi_get_sysname (void);
104#else
105static inline const char *acpi_get_sysname (void)
106{
107# if defined (CONFIG_IA64_HP_SIM)
108 return "hpsim";
109# elif defined (CONFIG_IA64_HP_ZX1)
110 return "hpzx1";
111# elif defined (CONFIG_IA64_HP_ZX1_SWIOTLB)
112 return "hpzx1_swiotlb";
113# elif defined (CONFIG_IA64_SGI_SN2)
114 return "sn2";
115# elif defined (CONFIG_IA64_SGI_UV)
116 return "uv";
117# elif defined (CONFIG_IA64_DIG)
118 return "dig";
119# elif defined (CONFIG_IA64_XEN_GUEST)
120 return "xen";
121# elif defined(CONFIG_IA64_DIG_VTD)
122 return "dig_vtd";
123# else
124# error Unknown platform. Fix acpi.c.
125# endif
126}
127#endif
103int acpi_request_vector (u32 int_type); 128int acpi_request_vector (u32 int_type);
104int acpi_gsi_to_irq (u32 gsi, unsigned int *irq); 129int acpi_gsi_to_irq (u32 gsi, unsigned int *irq);
105 130
diff --git a/arch/ia64/kernel/Makefile b/arch/ia64/kernel/Makefile
index e1236349c99f..78ad418df97c 100644
--- a/arch/ia64/kernel/Makefile
+++ b/arch/ia64/kernel/Makefile
@@ -8,11 +8,12 @@ endif
8 8
9extra-y := head.o init_task.o vmlinux.lds 9extra-y := head.o init_task.o vmlinux.lds
10 10
11obj-y := acpi.o entry.o efi.o efi_stub.o gate-data.o fsys.o ia64_ksyms.o irq.o irq_ia64.o \ 11obj-y := entry.o efi.o efi_stub.o gate-data.o fsys.o ia64_ksyms.o irq.o irq_ia64.o \
12 irq_lsapic.o ivt.o machvec.o pal.o paravirt_patchlist.o patch.o process.o perfmon.o ptrace.o sal.o \ 12 irq_lsapic.o ivt.o machvec.o pal.o paravirt_patchlist.o patch.o process.o perfmon.o ptrace.o sal.o \
13 salinfo.o setup.o signal.o sys_ia64.o time.o traps.o unaligned.o \ 13 salinfo.o setup.o signal.o sys_ia64.o time.o traps.o unaligned.o \
14 unwind.o mca.o mca_asm.o topology.o dma-mapping.o 14 unwind.o mca.o mca_asm.o topology.o dma-mapping.o
15 15
16obj-$(CONFIG_ACPI) += acpi.o
16obj-$(CONFIG_IA64_BRL_EMU) += brl_emu.o 17obj-$(CONFIG_IA64_BRL_EMU) += brl_emu.o
17obj-$(CONFIG_IA64_GENERIC) += acpi-ext.o 18obj-$(CONFIG_IA64_GENERIC) += acpi-ext.o
18obj-$(CONFIG_IA64_HP_ZX1) += acpi-ext.o 19obj-$(CONFIG_IA64_HP_ZX1) += acpi-ext.o
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c
index 40574ae11401..c16fb03037d4 100644
--- a/arch/ia64/kernel/acpi.c
+++ b/arch/ia64/kernel/acpi.c
@@ -60,11 +60,6 @@
60 60
61#define PREFIX "ACPI: " 61#define PREFIX "ACPI: "
62 62
63void (*pm_idle) (void);
64EXPORT_SYMBOL(pm_idle);
65void (*pm_power_off) (void);
66EXPORT_SYMBOL(pm_power_off);
67
68u32 acpi_rsdt_forced; 63u32 acpi_rsdt_forced;
69unsigned int acpi_cpei_override; 64unsigned int acpi_cpei_override;
70unsigned int acpi_cpei_phys_cpuid; 65unsigned int acpi_cpei_phys_cpuid;
@@ -83,12 +78,10 @@ static unsigned long __init acpi_find_rsdp(void)
83 "v1.0/r0.71 tables no longer supported\n"); 78 "v1.0/r0.71 tables no longer supported\n");
84 return rsdp_phys; 79 return rsdp_phys;
85} 80}
86#endif
87 81
88const char __init * 82const char __init *
89acpi_get_sysname(void) 83acpi_get_sysname(void)
90{ 84{
91#ifdef CONFIG_IA64_GENERIC
92 unsigned long rsdp_phys; 85 unsigned long rsdp_phys;
93 struct acpi_table_rsdp *rsdp; 86 struct acpi_table_rsdp *rsdp;
94 struct acpi_table_xsdt *xsdt; 87 struct acpi_table_xsdt *xsdt;
@@ -143,30 +136,8 @@ acpi_get_sysname(void)
143#endif 136#endif
144 137
145 return "dig"; 138 return "dig";
146#else
147# if defined (CONFIG_IA64_HP_SIM)
148 return "hpsim";
149# elif defined (CONFIG_IA64_HP_ZX1)
150 return "hpzx1";
151# elif defined (CONFIG_IA64_HP_ZX1_SWIOTLB)
152 return "hpzx1_swiotlb";
153# elif defined (CONFIG_IA64_SGI_SN2)
154 return "sn2";
155# elif defined (CONFIG_IA64_SGI_UV)
156 return "uv";
157# elif defined (CONFIG_IA64_DIG)
158 return "dig";
159# elif defined (CONFIG_IA64_XEN_GUEST)
160 return "xen";
161# elif defined(CONFIG_IA64_DIG_VTD)
162 return "dig_vtd";
163# else
164# error Unknown platform. Fix acpi.c.
165# endif
166#endif
167} 139}
168 140#endif /* CONFIG_IA64_GENERIC */
169#ifdef CONFIG_ACPI
170 141
171#define ACPI_MAX_PLATFORM_INTERRUPTS 256 142#define ACPI_MAX_PLATFORM_INTERRUPTS 256
172 143
@@ -1060,5 +1031,3 @@ void acpi_restore_state_mem(void) {}
1060 * do_suspend_lowlevel() 1031 * do_suspend_lowlevel()
1061 */ 1032 */
1062void do_suspend_lowlevel(void) {} 1033void do_suspend_lowlevel(void) {}
1063
1064#endif /* CONFIG_ACPI */
diff --git a/arch/ia64/kernel/process.c b/arch/ia64/kernel/process.c
index 9bcec9945c12..454a6a448f5a 100644
--- a/arch/ia64/kernel/process.c
+++ b/arch/ia64/kernel/process.c
@@ -60,6 +60,10 @@ unsigned long idle_halt;
60EXPORT_SYMBOL(idle_halt); 60EXPORT_SYMBOL(idle_halt);
61unsigned long idle_nomwait; 61unsigned long idle_nomwait;
62EXPORT_SYMBOL(idle_nomwait); 62EXPORT_SYMBOL(idle_nomwait);
63void (*pm_idle) (void);
64EXPORT_SYMBOL(pm_idle);
65void (*pm_power_off) (void);
66EXPORT_SYMBOL(pm_power_off);
63 67
64void 68void
65ia64_do_show_stack (struct unw_frame_info *info, void *arg) 69ia64_do_show_stack (struct unw_frame_info *info, void *arg)