diff options
author | Alex Chiang <achiang@hp.com> | 2010-02-25 16:09:52 -0500 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2010-02-25 18:15:13 -0500 |
commit | d868080d2a1c95526cb01e3d0c14096721cbb87a (patch) | |
tree | d87e4a8c2807beb582b20e296ff6dd694172ed18 /arch | |
parent | 60b341b778cc2929df16c0a504c91621b3c6a4ad (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>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/ia64/include/asm/acpi.h | 25 | ||||
-rw-r--r-- | arch/ia64/kernel/Makefile | 3 | ||||
-rw-r--r-- | arch/ia64/kernel/acpi.c | 33 | ||||
-rw-r--r-- | arch/ia64/kernel/process.c | 4 |
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 :) */ |
100 | static inline void disable_acpi(void) { } | 100 | static inline void disable_acpi(void) { } |
101 | 101 | ||
102 | #ifdef CONFIG_IA64_GENERIC | ||
102 | const char *acpi_get_sysname (void); | 103 | const char *acpi_get_sysname (void); |
104 | #else | ||
105 | static 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 | ||
103 | int acpi_request_vector (u32 int_type); | 128 | int acpi_request_vector (u32 int_type); |
104 | int acpi_gsi_to_irq (u32 gsi, unsigned int *irq); | 129 | int 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 | ||
9 | extra-y := head.o init_task.o vmlinux.lds | 9 | extra-y := head.o init_task.o vmlinux.lds |
10 | 10 | ||
11 | obj-y := acpi.o entry.o efi.o efi_stub.o gate-data.o fsys.o ia64_ksyms.o irq.o irq_ia64.o \ | 11 | obj-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 | ||
16 | obj-$(CONFIG_ACPI) += acpi.o | ||
16 | obj-$(CONFIG_IA64_BRL_EMU) += brl_emu.o | 17 | obj-$(CONFIG_IA64_BRL_EMU) += brl_emu.o |
17 | obj-$(CONFIG_IA64_GENERIC) += acpi-ext.o | 18 | obj-$(CONFIG_IA64_GENERIC) += acpi-ext.o |
18 | obj-$(CONFIG_IA64_HP_ZX1) += acpi-ext.o | 19 | obj-$(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 | ||
63 | void (*pm_idle) (void); | ||
64 | EXPORT_SYMBOL(pm_idle); | ||
65 | void (*pm_power_off) (void); | ||
66 | EXPORT_SYMBOL(pm_power_off); | ||
67 | |||
68 | u32 acpi_rsdt_forced; | 63 | u32 acpi_rsdt_forced; |
69 | unsigned int acpi_cpei_override; | 64 | unsigned int acpi_cpei_override; |
70 | unsigned int acpi_cpei_phys_cpuid; | 65 | unsigned 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 | ||
88 | const char __init * | 82 | const char __init * |
89 | acpi_get_sysname(void) | 83 | acpi_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 | */ |
1062 | void do_suspend_lowlevel(void) {} | 1033 | void 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; | |||
60 | EXPORT_SYMBOL(idle_halt); | 60 | EXPORT_SYMBOL(idle_halt); |
61 | unsigned long idle_nomwait; | 61 | unsigned long idle_nomwait; |
62 | EXPORT_SYMBOL(idle_nomwait); | 62 | EXPORT_SYMBOL(idle_nomwait); |
63 | void (*pm_idle) (void); | ||
64 | EXPORT_SYMBOL(pm_idle); | ||
65 | void (*pm_power_off) (void); | ||
66 | EXPORT_SYMBOL(pm_power_off); | ||
63 | 67 | ||
64 | void | 68 | void |
65 | ia64_do_show_stack (struct unw_frame_info *info, void *arg) | 69 | ia64_do_show_stack (struct unw_frame_info *info, void *arg) |